FFMpegCore/FFMpegCore/FFMpeg/Arguments/OutputPipeArgument.cs
Malte Rosenbjerg 8b45a6b680 Init
2020-12-03 20:47:20 +01:00

28 lines
816 B
C#

using System.IO.Pipes;
using System.Threading;
using System.Threading.Tasks;
using FFMpegCore.Pipes;
namespace FFMpegCore.Arguments
{
public class OutputPipeArgument : PipeArgument, IOutputArgument
{
public readonly IPipeSink Reader;
public OutputPipeArgument(IPipeSink reader) : base(PipeDirection.In)
{
Reader = reader;
}
public override string Text => $"\"{PipePath}\" -y";
protected override async Task ProcessDataAsync(CancellationToken token)
{
await Pipe.WaitForConnectionAsync(token).ConfigureAwait(false);
if (!Pipe.IsConnected)
throw new TaskCanceledException();
await Reader.ReadAsync(Pipe, token).ConfigureAwait(false);
Pipe.Disconnect();
}
}
}