#nullable disable
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.MediaInfo;
namespace MediaBrowser.Controller.MediaEncoding
{
///
/// Interface IMediaEncoder.
///
public interface IMediaEncoder : ITranscoderSupport
{
///
/// Gets the encoder path.
///
/// The encoder path.
string EncoderPath { get; }
///
/// Whether given encoder codec is supported.
///
/// The encoder.
/// true if XXXX, false otherwise.
bool SupportsEncoder(string encoder);
///
/// Whether given decoder codec is supported.
///
/// The decoder.
/// true if XXXX, false otherwise.
bool SupportsDecoder(string decoder);
///
/// Whether given hardware acceleration type is supported.
///
/// The hwaccel.
/// true if XXXX, false otherwise.
bool SupportsHwaccel(string hwaccel);
///
/// Whether given filter is supported.
///
/// The filter.
/// true if the filter is supported, false otherwise.
bool SupportsFilter(string filter);
///
/// Whether filter is supported with the given option.
///
/// The option.
/// true if the filter is supported, false otherwise.
bool SupportsFilterWithOption(FilterOptionType option);
///
/// Get the version of media encoder.
///
/// The version of media encoder.
Version GetMediaEncoderVersion();
///
/// Extracts the audio image.
///
/// The path.
/// Index of the image stream.
/// The cancellation token.
/// Task{Stream}.
Task ExtractAudioImage(string path, int? imageStreamIndex, CancellationToken cancellationToken);
///
/// Extracts the video image.
///
/// Input file.
/// Video container type.
/// Media source information.
/// Media stream information.
/// Video 3D format.
/// Time offset.
/// CancellationToken to use for operation.
/// Location of video image.
Task ExtractVideoImage(string inputFile, string container, MediaSourceInfo mediaSource, MediaStream videoStream, Video3DFormat? threedFormat, TimeSpan? offset, CancellationToken cancellationToken);
///
/// Extracts the video image.
///
/// Input file.
/// Video container type.
/// Media source information.
/// Media stream information.
/// Index of the stream to extract from.
/// The extension of the file to write.
/// CancellationToken to use for operation.
/// Location of video image.
Task ExtractVideoImage(string inputFile, string container, MediaSourceInfo mediaSource, MediaStream imageStream, int? imageStreamIndex, string outputExtension, CancellationToken cancellationToken);
///
/// Extracts the video images on interval.
///
/// Input file.
/// Video container type.
/// Media stream information.
/// Media source information.
/// Video 3D format.
/// Time interval.
/// Directory to write images.
/// Filename prefix to use.
/// Maximum width of image.
/// CancellationToken to use for operation.
/// A task.
Task ExtractVideoImagesOnInterval(
string inputFile,
string container,
MediaStream videoStream,
MediaSourceInfo mediaSource,
Video3DFormat? threedFormat,
TimeSpan interval,
string targetDirectory,
string filenamePrefix,
int? maxWidth,
CancellationToken cancellationToken);
///
/// Gets the media info.
///
/// The request.
/// The cancellation token.
/// Task.
Task GetMediaInfo(MediaInfoRequest request, CancellationToken cancellationToken);
///
/// Gets the input argument.
///
/// The input file.
/// The mediaSource.
/// System.String.
string GetInputArgument(string inputFile, MediaSourceInfo mediaSource);
///
/// Gets the time parameter.
///
/// The ticks.
/// System.String.
string GetTimeParameter(long ticks);
Task ConvertImage(string inputPath, string outputPath);
///
/// Escapes the subtitle filter path.
///
/// The path.
/// System.String.
string EscapeSubtitleFilterPath(string path);
///
/// Sets the path to find FFmpeg.
///
void SetFFmpegPath();
///
/// Updates the encoder path.
///
/// The path.
/// The type of path.
void UpdateEncoderPath(string path, string pathType);
///
/// Gets the primary playlist of .vob files.
///
/// The to the .vob files.
/// The title number to start with.
/// A playlist.
IEnumerable GetPrimaryPlaylistVobFiles(string path, uint? titleNumber);
}
}