using System.Diagnostics; using System.IO; namespace ytLive.Services; /// /// The real : a with stdout /// redirected as raw bytes for reading rawvideo frames. Constructed by /// for the media-file decoder subprocess. /// public sealed class FfmpegDecodeProcess : IDecodeProcess { private readonly Process _process; public FfmpegDecodeProcess() => _process = new Process { EnableRaisingEvents = true }; public void Start(ProcessStartInfo startInfo) { _process.StartInfo = startInfo; _process.Start(); } public Stream StandardOutput => _process.StandardOutput.BaseStream; public bool HasExited => _process.HasExited; public int ExitCode => _process.ExitCode; public void Kill() { if (!_process.HasExited) _process.Kill(); } public Task WaitForExitAsync(CancellationToken cancellationToken = default) => _process.WaitForExitAsync(cancellationToken); public void Dispose() => _process.Dispose(); }