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 CodecType 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 a value indicating whether the stream is AVC.
///
/// The is_avc.
[JsonPropertyName("is_avc")]
public bool? 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; }
///
/// Gets or sets the side_data_list.
///
/// The side_data_list.
[JsonPropertyName("side_data_list")]
public IReadOnlyList? SideDataList { get; set; }
}
}