using CliWrap.Buffered; using Ips.Library.Basic; using Ips.Library.Entity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ips.DetAlgorithm { public static class DetNlUtil { static readonly string CliFile = Path.Combine(IpsPath.CliRootDir, "detnl", "detnl.exe"); public static async Task> Det(string filename, int fs = 96000, int averagecnt = 5, int timeout = 120, CancellationToken token = default) { var cli = CliWrap.Cli.Wrap(CliFile) .WithArguments(args => { args.Add(filename); args.Add(fs, false); args.Add(averagecnt, false); args.Add("-t").Add(timeout.ToString()); }); var res = await cli.ExecuteBufferedAsync(token.LinkTimeout(timeout)); var result = Timeslot.FromListString(res.StandardOutput); return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError); } } }