DdcUtil.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using CliWrap;
  2. using CliWrap.Buffered;
  3. using Ips.Library.Basic;
  4. using Ips.Library.Entity;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. namespace Ips.Ddc
  12. {
  13. public static class DdcUtil
  14. {
  15. static readonly string CliFile = Path.Combine(IpsPath.CliRootDir, "ddc", "ddc.exe");
  16. public static async Task<ExeResult<string>> ExecAsync(string fileIn, long fs, string outDir, IEnumerable<DdcSigItem> items, bool real = false, bool useGpu = false, CancellationToken token = default)
  17. {
  18. var ddcItems = string.Join(" ", items);
  19. var cli = Cli.Wrap(CliFile)
  20. .WithArguments(args =>
  21. {
  22. args.Add(fileIn, true);
  23. args.Add(fs);
  24. args.Add(outDir);
  25. args.Add("--items").Add(ddcItems, false);
  26. if(real)
  27. {
  28. args.Add("--real");
  29. }
  30. if (useGpu)
  31. {
  32. args.Add("--gpu");
  33. }
  34. });
  35. var res = await cli.ExecuteBufferedAsync(token);
  36. return ExeResult.Create(res.StandardOutput, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  37. }
  38. }
  39. }