using System.Collections.Generic;
namespace MediaBrowser.MediaEncoding.Probing
{
    /// 
    /// Class MediaInfoResult
    /// 
    public class InternalMediaInfoResult
    {
        /// 
        /// Gets or sets the streams.
        /// 
        /// The streams.
        public MediaStreamInfo[] streams { get; set; }
        /// 
        /// Gets or sets the format.
        /// 
        /// The format.
        public MediaFormatInfo format { get; set; }
        /// 
        /// Gets or sets the chapters.
        /// 
        /// The chapters.
        public MediaChapter[] Chapters { get; set; }
    }
    public class MediaChapter
    {
        public int id { get; set; }
        public string time_base { get; set; }
        public long start { get; set; }
        public string start_time { get; set; }
        public long end { get; set; }
        public string end_time { get; set; }
        public Dictionary tags { get; set; }
    }
    /// 
    /// Represents a stream within the output
    /// 
    public class MediaStreamInfo
    {
        /// 
        /// Gets or sets the index.
        /// 
        /// The index.
        public int index { get; set; }
        /// 
        /// Gets or sets the profile.
        /// 
        /// The profile.
        public string profile { get; set; }
        /// 
        /// Gets or sets the codec_name.
        /// 
        /// The codec_name.
        public string codec_name { get; set; }
        /// 
        /// Gets or sets the codec_long_name.
        /// 
        /// The codec_long_name.
        public string codec_long_name { get; set; }
        /// 
        /// Gets or sets the codec_type.
        /// 
        /// The codec_type.
        public string codec_type { get; set; }
        /// 
        /// Gets or sets the sample_rate.
        /// 
        /// The sample_rate.
        public string sample_rate { get; set; }
        /// 
        /// Gets or sets the channels.
        /// 
        /// The channels.
        public int channels { get; set; }
        /// 
        /// Gets or sets the channel_layout.
        /// 
        /// The channel_layout.
        public string channel_layout { get; set; }
        /// 
        /// Gets or sets the avg_frame_rate.
        /// 
        /// The avg_frame_rate.
        public string avg_frame_rate { get; set; }
        /// 
        /// Gets or sets the duration.
        /// 
        /// The duration.
        public string duration { get; set; }
        /// 
        /// Gets or sets the bit_rate.
        /// 
        /// The bit_rate.
        public string bit_rate { get; set; }
        /// 
        /// Gets or sets the width.
        /// 
        /// The width.
        public int width { get; set; }
        /// 
        /// Gets or sets the refs.
        /// 
        /// The refs.
        public int refs { get; set; }
        /// 
        /// Gets or sets the height.
        /// 
        /// The height.
        public int height { get; set; }
        /// 
        /// Gets or sets the display_aspect_ratio.
        /// 
        /// The display_aspect_ratio.
        public string display_aspect_ratio { get; set; }
        /// 
        /// Gets or sets the tags.
        /// 
        /// The tags.
        public Dictionary tags { get; set; }
        /// 
        /// Gets or sets the bits_per_sample.
        /// 
        /// The bits_per_sample.
        public int bits_per_sample { get; set; }
        /// 
        /// Gets or sets the bits_per_raw_sample.
        /// 
        /// The bits_per_raw_sample.
        public int bits_per_raw_sample { get; set; }
        /// 
        /// Gets or sets the r_frame_rate.
        /// 
        /// The r_frame_rate.
        public string r_frame_rate { get; set; }
        /// 
        /// Gets or sets the has_b_frames.
        /// 
        /// The has_b_frames.
        public int has_b_frames { get; set; }
        /// 
        /// Gets or sets the sample_aspect_ratio.
        /// 
        /// The sample_aspect_ratio.
        public string sample_aspect_ratio { get; set; }
        /// 
        /// Gets or sets the pix_fmt.
        /// 
        /// The pix_fmt.
        public string pix_fmt { get; set; }
        /// 
        /// Gets or sets the level.
        /// 
        /// The level.
        public int level { get; set; }
        /// 
        /// Gets or sets the time_base.
        /// 
        /// The time_base.
        public string time_base { get; set; }
        /// 
        /// Gets or sets the start_time.
        /// 
        /// The start_time.
        public string start_time { get; set; }
        /// 
        /// Gets or sets the codec_time_base.
        /// 
        /// The codec_time_base.
        public string codec_time_base { get; set; }
        /// 
        /// Gets or sets the codec_tag.
        /// 
        /// The codec_tag.
        public string codec_tag { get; set; }
        /// 
        /// Gets or sets the codec_tag_string.
        /// 
        /// The codec_tag_string.
        public string codec_tag_string { get; set; }
        /// 
        /// Gets or sets the sample_fmt.
        /// 
        /// The sample_fmt.
        public string sample_fmt { get; set; }
        /// 
        /// Gets or sets the dmix_mode.
        /// 
        /// The dmix_mode.
        public string dmix_mode { get; set; }
        /// 
        /// Gets or sets the start_pts.
        /// 
        /// The start_pts.
        public string start_pts { get; set; }
        /// 
        /// Gets or sets the is_avc.
        /// 
        /// The is_avc.
        public string is_avc { get; set; }
        /// 
        /// Gets or sets the nal_length_size.
        /// 
        /// The nal_length_size.
        public string nal_length_size { get; set; }
        /// 
        /// Gets or sets the ltrt_cmixlev.
        /// 
        /// The ltrt_cmixlev.
        public string ltrt_cmixlev { get; set; }
        /// 
        /// Gets or sets the ltrt_surmixlev.
        /// 
        /// The ltrt_surmixlev.
        public string ltrt_surmixlev { get; set; }
        /// 
        /// Gets or sets the loro_cmixlev.
        /// 
        /// The loro_cmixlev.
        public string loro_cmixlev { get; set; }
        /// 
        /// Gets or sets the loro_surmixlev.
        /// 
        /// The loro_surmixlev.
        public string loro_surmixlev { get; set; }
        public string field_order { get; set; }
        /// 
        /// Gets or sets the disposition.
        /// 
        /// The disposition.
        public Dictionary disposition { get; set; }
    }
    /// 
    /// Class MediaFormat
    /// 
    public class MediaFormatInfo
    {
        /// 
        /// Gets or sets the filename.
        /// 
        /// The filename.
        public string filename { get; set; }
        /// 
        /// Gets or sets the nb_streams.
        /// 
        /// The nb_streams.
        public int nb_streams { get; set; }
        /// 
        /// Gets or sets the format_name.
        /// 
        /// The format_name.
        public string format_name { get; set; }
        /// 
        /// Gets or sets the format_long_name.
        /// 
        /// The format_long_name.
        public string format_long_name { get; set; }
        /// 
        /// Gets or sets the start_time.
        /// 
        /// The start_time.
        public string start_time { get; set; }
        /// 
        /// Gets or sets the duration.
        /// 
        /// The duration.
        public string duration { get; set; }
        /// 
        /// Gets or sets the size.
        /// 
        /// The size.
        public string size { get; set; }
        /// 
        /// Gets or sets the bit_rate.
        /// 
        /// The bit_rate.
        public string bit_rate { get; set; }
        /// 
        /// Gets or sets the probe_score.
        /// 
        /// The probe_score.
        public int probe_score { get; set; }
        /// 
        /// Gets or sets the tags.
        /// 
        /// The tags.
        public Dictionary tags { get; set; }
    }
}