#nullable disable
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace MediaBrowser.MediaEncoding.Probing
{
    /// 
    /// Represents a stream within the output.
    /// 
    public class MediaStreamInfo
    {
        /// 
        /// Gets or sets the index.
        /// 
        /// The index.
        [JsonPropertyName("index")]
        public int Index { get; set; }
        /// 
        /// Gets or sets the profile.
        /// 
        /// The profile.
        [JsonPropertyName("profile")]
        public string Profile { get; set; }
        /// 
        /// Gets or sets the codec_name.
        /// 
        /// The codec_name.
        [JsonPropertyName("codec_name")]
        public string CodecName { get; set; }
        /// 
        /// Gets or sets the codec_long_name.
        /// 
        /// The codec_long_name.
        [JsonPropertyName("codec_long_name")]
        public string CodecLongName { get; set; }
        /// 
        /// Gets or sets the codec_type.
        /// 
        /// The codec_type.
        [JsonPropertyName("codec_type")]
        public string CodecType { get; set; }
        /// 
        /// Gets or sets the sample_rate.
        /// 
        /// The sample_rate.
        [JsonPropertyName("sample_rate")]
        public string SampleRate { get; set; }
        /// 
        /// Gets or sets the channels.
        /// 
        /// The channels.
        [JsonPropertyName("channels")]
        public int Channels { get; set; }
        /// 
        /// Gets or sets the channel_layout.
        /// 
        /// The channel_layout.
        [JsonPropertyName("channel_layout")]
        public string ChannelLayout { get; set; }
        /// 
        /// Gets or sets the avg_frame_rate.
        /// 
        /// The avg_frame_rate.
        [JsonPropertyName("avg_frame_rate")]
        public string AverageFrameRate { get; set; }
        /// 
        /// Gets or sets the duration.
        /// 
        /// The duration.
        [JsonPropertyName("duration")]
        public string Duration { get; set; }
        /// 
        /// Gets or sets the bit_rate.
        /// 
        /// The bit_rate.
        [JsonPropertyName("bit_rate")]
        public string BitRate { get; set; }
        /// 
        /// Gets or sets the width.
        /// 
        /// The width.
        [JsonPropertyName("width")]
        public int Width { get; set; }
        /// 
        /// Gets or sets the refs.
        /// 
        /// The refs.
        [JsonPropertyName("refs")]
        public int Refs { get; set; }
        /// 
        /// Gets or sets the height.
        /// 
        /// The height.
        [JsonPropertyName("height")]
        public int Height { get; set; }
        /// 
        /// Gets or sets the display_aspect_ratio.
        /// 
        /// The display_aspect_ratio.
        [JsonPropertyName("display_aspect_ratio")]
        public string DisplayAspectRatio { get; set; }
        /// 
        /// Gets or sets the tags.
        /// 
        /// The tags.
        [JsonPropertyName("tags")]
        public IReadOnlyDictionary Tags { get; set; }
        /// 
        /// Gets or sets the bits_per_sample.
        /// 
        /// The bits_per_sample.
        [JsonPropertyName("bits_per_sample")]
        public int BitsPerSample { get; set; }
        /// 
        /// Gets or sets the bits_per_raw_sample.
        /// 
        /// The bits_per_raw_sample.
        [JsonPropertyName("bits_per_raw_sample")]
        public int BitsPerRawSample { get; set; }
        /// 
        /// Gets or sets the r_frame_rate.
        /// 
        /// The r_frame_rate.
        [JsonPropertyName("r_frame_rate")]
        public string RFrameRate { get; set; }
        /// 
        /// Gets or sets the has_b_frames.
        /// 
        /// The has_b_frames.
        [JsonPropertyName("has_b_frames")]
        public int HasBFrames { get; set; }
        /// 
        /// Gets or sets the sample_aspect_ratio.
        /// 
        /// The sample_aspect_ratio.
        [JsonPropertyName("sample_aspect_ratio")]
        public string SampleAspectRatio { get; set; }
        /// 
        /// Gets or sets the pix_fmt.
        /// 
        /// The pix_fmt.
        [JsonPropertyName("pix_fmt")]
        public string PixelFormat { get; set; }
        /// 
        /// Gets or sets the level.
        /// 
        /// The level.
        [JsonPropertyName("level")]
        public int Level { get; set; }
        /// 
        /// Gets or sets the time_base.
        /// 
        /// The time_base.
        [JsonPropertyName("time_base")]
        public string TimeBase { get; set; }
        /// 
        /// Gets or sets the start_time.
        /// 
        /// The start_time.
        [JsonPropertyName("start_time")]
        public string StartTime { get; set; }
        /// 
        /// Gets or sets the codec_time_base.
        /// 
        /// The codec_time_base.
        [JsonPropertyName("codec_time_base")]
        public string CodecTimeBase { get; set; }
        /// 
        /// Gets or sets the codec_tag.
        /// 
        /// The codec_tag.
        [JsonPropertyName("codec_tag")]
        public string CodecTag { get; set; }
        /// 
        /// Gets or sets the codec_tag_string.
        /// 
        /// The codec_tag_string.
        [JsonPropertyName("codec_tag_string")]
        public string CodecTagString { get; set; }
        /// 
        /// Gets or sets the sample_fmt.
        /// 
        /// The sample_fmt.
        [JsonPropertyName("sample_fmt")]
        public string SampleFmt { get; set; }
        /// 
        /// Gets or sets the dmix_mode.
        /// 
        /// The dmix_mode.
        [JsonPropertyName("dmix_mode")]
        public string DmixMode { get; set; }
        /// 
        /// Gets or sets the start_pts.
        /// 
        /// The start_pts.
        [JsonPropertyName("start_pts")]
        public long StartPts { get; set; }
        /// 
        /// Gets or sets the is_avc.
        /// 
        /// The is_avc.
        [JsonPropertyName("is_avc")]
        public string IsAvc { get; set; }
        /// 
        /// Gets or sets the nal_length_size.
        /// 
        /// The nal_length_size.
        [JsonPropertyName("nal_length_size")]
        public string NalLengthSize { get; set; }
        /// 
        /// Gets or sets the ltrt_cmixlev.
        /// 
        /// The ltrt_cmixlev.
        [JsonPropertyName("ltrt_cmixlev")]
        public string LtrtCmixlev { get; set; }
        /// 
        /// Gets or sets the ltrt_surmixlev.
        /// 
        /// The ltrt_surmixlev.
        [JsonPropertyName("ltrt_surmixlev")]
        public string LtrtSurmixlev { get; set; }
        /// 
        /// Gets or sets the loro_cmixlev.
        /// 
        /// The loro_cmixlev.
        [JsonPropertyName("loro_cmixlev")]
        public string LoroCmixlev { get; set; }
        /// 
        /// Gets or sets the loro_surmixlev.
        /// 
        /// The loro_surmixlev.
        [JsonPropertyName("loro_surmixlev")]
        public string LoroSurmixlev { get; set; }
        /// 
        /// Gets or sets the field_order.
        /// 
        /// The field_order.
        [JsonPropertyName("field_order")]
        public string FieldOrder { get; set; }
        /// 
        /// Gets or sets the disposition.
        /// 
        /// The disposition.
        [JsonPropertyName("disposition")]
        public IReadOnlyDictionary Disposition { get; set; }
        /// 
        /// Gets or sets the color range.
        /// 
        /// The color range.
        [JsonPropertyName("color_range")]
        public string ColorRange { get; set; }
        /// 
        /// Gets or sets the color space.
        /// 
        /// The color space.
        [JsonPropertyName("color_space")]
        public string ColorSpace { get; set; }
        /// 
        /// Gets or sets the color transfer.
        /// 
        /// The color transfer.
        [JsonPropertyName("color_transfer")]
        public string ColorTransfer { get; set; }
        /// 
        /// Gets or sets the color primaries.
        /// 
        /// The color primaries.
        [JsonPropertyName("color_primaries")]
        public string ColorPrimaries { get; set; }
    }
}