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, MediaItemVideoVersion videoVersion, MediaItemAudioVersion audioVersion, string videoPath, string audioPath, Func>> getSubtitles, string preferredAudioLanguage, string preferredAudioTitle, string preferredSubtitleLanguage, ChannelSubtitleMode subtitleMode, DateTimeOffset start, DateTimeOffset finish, DateTimeOffset now, TimeSpan originalContentDuration, List watermarks, List graphicsElements, string vaapiDisplay, VaapiDriver vaapiDriver, string vaapiDevice, Option qsvExtraHardwareFrames, bool hlsRealtime, StreamInputKind streamInputKind, FillerKind fillerKind, TimeSpan inPoint, DateTimeOffset channelStartTime, TimeSpan ptsOffset, Option targetFramerate, Option customReportsFolder, Action pipelineAction, bool canProxy, CancellationToken cancellationToken); Task ForError( string ffmpegPath, Channel channel, DateTimeOffset now, Option duration, string errorMessage, bool hlsRealtime, TimeSpan ptsOffset, string vaapiDisplay, VaapiDriver vaapiDriver, string vaapiDevice, Option qsvExtraHardwareFrames, CancellationToken cancellationToken); Task Slug( string ffmpegPath, Channel channel, DateTimeOffset now, TimeSpan duration, bool hlsRealtime, TimeSpan ptsOffset, CancellationToken cancellationToken); Task ConcatChannel( string ffmpegPath, bool saveReports, Channel channel, string scheme, string host, CancellationToken cancellationToken); Task WrapSegmenter( string ffmpegPath, bool saveReports, Channel channel, string scheme, string host, string accessToken, CancellationToken cancellationToken); Task ResizeImage( string ffmpegPath, string inputFile, string outputFile, int height, CancellationToken cancellationToken); Task> GenerateSongImage( string ffmpegPath, string ffprobePath, Option subtitleFile, Channel channel, MediaVersion videoVersion, string videoPath, bool boxBlur, Option watermarkPath, WatermarkLocation watermarkLocation, int horizontalMarginPercent, int verticalMarginPercent, int watermarkWidthPercent, CancellationToken cancellationToken); Task SeekTextSubtitle( string ffmpegPath, string inputFile, string codec, TimeSpan seek, CancellationToken cancellationToken); }