//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
    using LukeHagar.PlexAPI.SDK.Utils;
    using Newtonsoft.Json;
    
    public class GetSearchAllLibrariesStream
    {

        [JsonProperty("id")]
        public long Id { get; set; } = default!;

        /// <summary>
        /// Type of stream (1 = video, 2 = audio, 3 = subtitle)
        /// </summary>
        [JsonProperty("streamType")]
        public long StreamType { get; set; } = default!;

        /// <summary>
        /// Indicates if this is the default stream
        /// </summary>
        [JsonProperty("default")]
        public bool? Default { get; set; }

        /// <summary>
        /// Indicates if the stream is selected
        /// </summary>
        [JsonProperty("selected")]
        public bool? Selected { get; set; }

        /// <summary>
        /// Codec used by the stream
        /// </summary>
        [JsonProperty("codec")]
        public string Codec { get; set; } = default!;

        /// <summary>
        /// The index of the stream
        /// </summary>
        [JsonProperty("index")]
        public long Index { get; set; } = default!;

        /// <summary>
        /// The bitrate of the stream in kbps
        /// </summary>
        [JsonProperty("bitrate")]
        public long? Bitrate { get; set; }

        /// <summary>
        /// The color primaries of the video stream
        /// </summary>
        [JsonProperty("colorPrimaries")]
        public string? ColorPrimaries { get; set; }

        /// <summary>
        /// The color range of the video stream
        /// </summary>
        [JsonProperty("colorRange")]
        public string? ColorRange { get; set; }

        /// <summary>
        /// The color space of the video stream
        /// </summary>
        [JsonProperty("colorSpace")]
        public string? ColorSpace { get; set; }

        /// <summary>
        /// The transfer characteristics (TRC) of the video stream
        /// </summary>
        [JsonProperty("colorTrc")]
        public string? ColorTrc { get; set; }

        /// <summary>
        /// The bit depth of the video stream
        /// </summary>
        [JsonProperty("bitDepth")]
        public long? BitDepth { get; set; }

        /// <summary>
        /// The chroma location of the video stream
        /// </summary>
        [JsonProperty("chromaLocation")]
        public string? ChromaLocation { get; set; }

        /// <summary>
        /// The identifier of the video stream
        /// </summary>
        [JsonProperty("streamIdentifier")]
        public string? StreamIdentifier { get; set; }

        /// <summary>
        /// The chroma subsampling format
        /// </summary>
        [JsonProperty("chromaSubsampling")]
        public string? ChromaSubsampling { get; set; }

        /// <summary>
        /// The coded height of the video stream
        /// </summary>
        [JsonProperty("codedHeight")]
        public long? CodedHeight { get; set; }

        /// <summary>
        /// The coded width of the video stream
        /// </summary>
        [JsonProperty("codedWidth")]
        public long? CodedWidth { get; set; }

        /// <summary>
        /// The frame rate of the video stream
        /// </summary>
        [JsonProperty("frameRate")]
        public double? FrameRate { get; set; }

        /// <summary>
        /// Indicates if the stream has a scaling matrix
        /// </summary>
        [JsonProperty("hasScalingMatrix")]
        public bool? HasScalingMatrix { get; set; }

        [JsonProperty("hearingImpaired")]
        public bool? HearingImpaired { get; set; }

        [JsonProperty("closedCaptions")]
        public bool? ClosedCaptions { get; set; }

        [JsonProperty("embeddedInVideo")]
        public string? EmbeddedInVideo { get; set; }

        /// <summary>
        /// The height of the video stream
        /// </summary>
        [JsonProperty("height")]
        public long? Height { get; set; }

        /// <summary>
        /// The level of the video codec
        /// </summary>
        [JsonProperty("level")]
        public long? Level { get; set; }

        /// <summary>
        /// The profile of the video codec
        /// </summary>
        [JsonProperty("profile")]
        public string? Profile { get; set; }

        /// <summary>
        /// Number of reference frames
        /// </summary>
        [JsonProperty("refFrames")]
        public long? RefFrames { get; set; }

        /// <summary>
        /// The scan type (progressive or interlaced)
        /// </summary>
        [JsonProperty("scanType")]
        public string? ScanType { get; set; }

        /// <summary>
        /// The width of the video stream
        /// </summary>
        [JsonProperty("width")]
        public long? Width { get; set; }

        /// <summary>
        /// Display title of the stream
        /// </summary>
        [JsonProperty("displayTitle")]
        public string? DisplayTitle { get; set; }

        /// <summary>
        /// Extended display title of the stream
        /// </summary>
        [JsonProperty("extendedDisplayTitle")]
        public string? ExtendedDisplayTitle { get; set; }

        /// <summary>
        /// Number of audio channels (for audio streams)
        /// </summary>
        [JsonProperty("channels")]
        public long? Channels { get; set; }

        /// <summary>
        /// The language of the stream (for audio/subtitle streams)
        /// </summary>
        [JsonProperty("language")]
        public string? Language { get; set; }

        /// <summary>
        /// Language tag of the stream
        /// </summary>
        [JsonProperty("languageTag")]
        public string? LanguageTag { get; set; }

        /// <summary>
        /// Language code of the stream
        /// </summary>
        [JsonProperty("languageCode")]
        public string? LanguageCode { get; set; }

        /// <summary>
        /// The audio channel layout
        /// </summary>
        [JsonProperty("audioChannelLayout")]
        public string? AudioChannelLayout { get; set; }

        /// <summary>
        /// Sampling rate of the audio stream in Hz
        /// </summary>
        [JsonProperty("samplingRate")]
        public long? SamplingRate { get; set; }

        /// <summary>
        /// Title of the subtitle track (for subtitle streams)
        /// </summary>
        [JsonProperty("title")]
        public string? Title { get; set; }

        /// <summary>
        /// Indicates if the subtitle stream can auto-sync
        /// </summary>
        [JsonProperty("canAutoSync")]
        public bool? CanAutoSync { get; set; }
    }
}