namespace MediaBrowser.Model.Dto
{
    /// 
    /// Class VideoStreamOptions
    /// 
    public class VideoStreamOptions : StreamOptions
    {
        /// 
        /// Gets or sets the video codec.
        /// Omit to copy
        /// 
        /// The video codec.
        public string 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; }
        /// 
        /// Gets or sets the baseline stream audio bit rate.
        /// 
        /// The baseline stream audio bit rate.
        public int? BaselineStreamAudioBitRate { get; set; }
        /// 
        /// Gets or sets a value indicating whether [append baseline stream].
        /// 
        /// true if [append baseline stream]; otherwise, false.
        public bool AppendBaselineStream { get; set; }
        /// 
        /// Gets or sets the time stamp offset ms. Only used with HLS.
        /// 
        /// The time stamp offset ms.
        public int? TimeStampOffsetMs { get; set; }
    }
    /// 
    /// Class StreamOptions
    /// 
    public 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 string 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; }
        /// 
        /// Gets or sets the device id.
        /// 
        /// The device id.
        public string DeviceId { get; set; }
    }
    public class SubtitleOptions
    {
        /// 
        /// Gets or sets the item identifier.
        /// 
        /// The item identifier.
        public string ItemId { get; set; }
        /// 
        /// Gets or sets the index of the stream.
        /// 
        /// The index of the stream.
        public int StreamIndex { get; set; }
    }
}