using MediaBrowser.Model.Entities;
using MediaBrowser.Model.MediaInfo;
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.MediaEncoding
{
///
/// Interface IMediaEncoder
///
public interface IMediaEncoder
{
///
/// Gets the encoder path.
///
/// The encoder path.
string EncoderPath { get; }
///
/// Gets the version.
///
/// The version.
string Version { get; }
///
/// Extracts the audio image.
///
/// The path.
/// The cancellation token.
/// Task{Stream}.
Task ExtractAudioImage(string path, CancellationToken cancellationToken);
///
/// Extracts the video image.
///
/// The input files.
/// The protocol.
/// The threed format.
/// The offset.
/// The cancellation token.
/// Task{Stream}.
Task ExtractVideoImage(string[] inputFiles, MediaProtocol protocol, Video3DFormat? threedFormat, TimeSpan? offset, CancellationToken cancellationToken);
///
/// Gets the media info.
///
/// The input files.
/// The protocol.
/// if set to true [is audio].
/// The cancellation token.
/// Task.
Task GetMediaInfo(string[] inputFiles, MediaProtocol protocol, bool isAudio, CancellationToken cancellationToken);
///
/// Gets the probe size argument.
///
/// The input files.
/// The protocol.
/// System.String.
string GetProbeSizeArgument(string[] inputFiles, MediaProtocol protocol);
///
/// Gets the input argument.
///
/// The input files.
/// The protocol.
/// System.String.
string GetInputArgument(string[] inputFiles, MediaProtocol protocol);
}
}