namespace MediaBrowser.Model.Dto
{
    /// 
    /// Class VideoStreamOptions
    /// 
    public class VideoStreamOptions : StreamOptions
    {
        /// 
        /// Gets or sets the video codec.
        /// Omit to copy
        /// 
        /// The video codec.
        public VideoCodecs? VideoCodec { get; set; }
        /// 
        /// Gets or sets the video bit rate.
        /// 
        /// The video bit rate.
        public int? VideoBitRate { get; set; }
        /// 
        /// Gets or sets the width.
        /// 
        /// The width.
        public int? Width { get; set; }
        /// 
        /// Gets or sets the height.
        /// 
        /// The height.
        public int? Height { get; set; }
        /// 
        /// Gets or sets the width of the max.
        /// 
        /// The width of the max.
        public int? MaxWidth { get; set; }
        /// 
        /// Gets or sets the height of the max.
        /// 
        /// The height of the max.
        public int? MaxHeight { get; set; }
        /// 
        /// Gets or sets the frame rate.
        /// 
        /// The frame rate.
        public double? FrameRate { get; set; }
        /// 
        /// Gets or sets the index of the audio stream.
        /// 
        /// The index of the audio stream.
        public int? AudioStreamIndex { get; set; }
        /// 
        /// Gets or sets the index of the video stream.
        /// 
        /// The index of the video stream.
        public int? VideoStreamIndex { get; set; }
        /// 
        /// Gets or sets the index of the subtitle stream.
        /// 
        /// The index of the subtitle stream.
        public int? SubtitleStreamIndex { get; set; }
        /// 
        /// Gets or sets the profile.
        /// 
        /// The profile.
        public string Profile { get; set; }
        /// 
        /// Gets or sets the level.
        /// 
        /// The level.
        public string Level { get; set; }
    }
    /// 
    /// Class StreamOptions
    /// 
    public abstract class StreamOptions
    {
        /// 
        /// Gets or sets the audio bit rate.
        /// 
        /// The audio bit rate.
        public int? AudioBitRate { get; set; }
        /// 
        /// Gets or sets the audio codec.
        /// Omit to copy the original stream
        /// 
        /// The audio encoding format.
        public AudioCodecs? AudioCodec { get; set; }
        /// 
        /// Gets or sets the item id.
        /// 
        /// The item id.
        public string ItemId { get; set; }
        /// 
        /// Gets or sets the max audio channels.
        /// 
        /// The max audio channels.
        public int? MaxAudioChannels { get; set; }
        /// 
        /// Gets or sets the max audio sample rate.
        /// 
        /// The max audio sample rate.
        public int? MaxAudioSampleRate { get; set; }
        /// 
        /// Gets or sets the start time ticks.
        /// 
        /// The start time ticks.
        public long? StartTimeTicks { get; set; }
        /// 
        /// Gets or sets a value indicating whether the original media should be served statically
        /// Only used with progressive streaming
        /// 
        /// true if static; otherwise, false.
        public bool? Static { get; set; }
        /// 
        /// Gets or sets the output file extension.
        /// 
        /// The output file extension.
        public string OutputFileExtension { get; set; }
    }
    /// 
    /// These are the codecs the api is capable of encoding to
    /// 
    public enum AudioCodecs
    {
        /// 
        /// The aac
        /// 
        Aac,
        /// 
        /// The MP3
        /// 
        Mp3,
        /// 
        /// The vorbis
        /// 
        Vorbis,
        /// 
        /// The wma
        /// 
        Wma
    }
    /// 
    /// Enum VideoCodecs
    /// 
    public enum VideoCodecs
    {
        H263,
        /// 
        /// The H264
        /// 
        H264,
        /// 
        /// The mpeg4
        /// 
        Mpeg4,
        /// 
        /// The theora
        /// 
        Theora,
        /// 
        /// The VPX
        /// 
        Vpx,
        /// 
        /// The WMV
        /// 
        Wmv
    }
}