using CliWrap; using ErsatzTV.Core.Domain; using ErsatzTV.Core.Domain.Filler; using ErsatzTV.Core.FFmpeg; using ErsatzTV.FFmpeg; using ErsatzTV.FFmpeg.State; namespace ErsatzTV.Core.Interfaces.FFmpeg; public interface IFFmpegProcessService { Task ForPlayoutItem( string ffmpegPath, string ffprobePath, bool saveReports, Channel channel, MediaVersion videoVersion, MediaItemAudioVersion audioVersion, string videoPath, string audioPath, Func>> getSubtitles, string preferredAudioLanguage, string preferredAudioTitle, string preferredSubtitleLanguage, ChannelSubtitleMode subtitleMode, DateTimeOffset start, DateTimeOffset finish, DateTimeOffset now, Option playoutItemWatermark, Option globalWatermark, VaapiDriver vaapiDriver, string vaapiDevice, Option qsvExtraHardwareFrames, bool hlsRealtime, FillerKind fillerKind, TimeSpan inPoint, TimeSpan outPoint, long ptsOffset, Option targetFramerate, bool disableWatermarks, Action pipelineAction); Task ForError( string ffmpegPath, Channel channel, Option duration, string errorMessage, bool hlsRealtime, long ptsOffset, VaapiDriver vaapiDriver, string vaapiDevice, Option qsvExtraHardwareFrames); Task ConcatChannel(string ffmpegPath, bool saveReports, Channel channel, string scheme, string host); Task WrapSegmenter(string ffmpegPath, bool saveReports, Channel channel, string scheme, string host); Task ResizeImage(string ffmpegPath, string inputFile, string outputFile, int height); Task> GenerateSongImage( string ffmpegPath, string ffprobePath, Option subtitleFile, Channel channel, Option playoutItemWatermark, Option globalWatermark, MediaVersion videoVersion, string videoPath, bool boxBlur, Option watermarkPath, WatermarkLocation watermarkLocation, int horizontalMarginPercent, int verticalMarginPercent, int watermarkWidthPercent, CancellationToken cancellationToken); }