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);
///
/// Extracts the video images on interval.
///
/// The input files.
/// The protocol.
/// The threed format.
/// The interval.
/// The target directory.
/// The filename prefix.
/// The maximum width.
/// The cancellation token.
/// Task.
Task ExtractVideoImagesOnInterval(string[] inputFiles,
MediaProtocol protocol,
Video3DFormat? threedFormat,
TimeSpan interval,
string targetDirectory,
string filenamePrefix,
int? maxWidth,
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);
///
/// Gets the time parameter.
///
/// The ticks.
/// System.String.
string GetTimeParameter(long ticks);
}
}