using System.Diagnostics; using ErsatzTV.Core.Domain; using ErsatzTV.Core.Domain.Filler; using ErsatzTV.Core.FFmpeg; using ErsatzTV.FFmpeg.State; namespace ErsatzTV.Core.Interfaces.FFmpeg; public interface IFFmpegProcessService { Task ForPlayoutItem( string ffmpegPath, bool saveReports, Channel channel, MediaVersion videoVersion, MediaVersion audioVersion, string videoPath, string audioPath, DateTimeOffset start, DateTimeOffset finish, DateTimeOffset now, Option globalWatermark, VaapiDriver vaapiDriver, string vaapiDevice, bool hlsRealtime, FillerKind fillerKind, TimeSpan inPoint, TimeSpan outPoint, long ptsOffset, Option targetFramerate); Task ForError( string ffmpegPath, Channel channel, Option duration, string errorMessage, bool hlsRealtime, long ptsOffset); Process ConcatChannel(string ffmpegPath, bool saveReports, Channel channel, string scheme, string host); Process WrapSegmenter(string ffmpegPath, bool saveReports, Channel channel, string scheme, string host); Process ConvertToPng(string ffmpegPath, string inputFile, string outputFile); Process ExtractAttachedPicAsPng(string ffmpegPath, string inputFile, int streamIndex, string outputFile); Task> GenerateSongImage( string ffmpegPath, Option subtitleFile, Channel channel, Option globalWatermark, MediaVersion videoVersion, string videoPath, bool boxBlur, Option watermarkPath, WatermarkLocation watermarkLocation, int horizontalMarginPercent, int verticalMarginPercent, int watermarkWidthPercent, CancellationToken cancellationToken); }