// <copyright file="MediaStreamInfoView.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>

namespace Jellyfin.Database.Implementations.Entities.Views;

#pragma warning disable CS1591
#pragma warning disable SA1600

using System;

/// <summary>
/// Read-only projection of library."MediaStreamInfos_v".
/// Flat view of all media streams with audio- and video-specific columns merged.
/// </summary>
public class MediaStreamInfoView
{
    public Guid? ItemId { get; set; }

    public int? StreamIndex { get; set; }

    public int? StreamType { get; set; }

    public string? Codec { get; set; }

    public string? Language { get; set; }

    public string? Profile { get; set; }

    public string? Path { get; set; }

    public int? BitRate { get; set; }

    public bool? IsDefault { get; set; }

    public bool? IsForced { get; set; }

    public bool? IsExternal { get; set; }

    public float? Level { get; set; }

    public string? CodecTag { get; set; }

    public string? Comment { get; set; }

    public bool? IsAvc { get; set; }

    public string? Title { get; set; }

    public string? TimeBase { get; set; }

    public string? CodecTimeBase { get; set; }

    // audio-specific
    public string? ChannelLayout { get; set; }

    public int? Channels { get; set; }

    public int? SampleRate { get; set; }

    public bool? IsHearingImpaired { get; set; }

    // video-specific
    public string? AspectRatio { get; set; }

    public bool? IsInterlaced { get; set; }

    public int? Height { get; set; }

    public int? Width { get; set; }

    public float? AverageFrameRate { get; set; }

    public float? RealFrameRate { get; set; }

    public string? PixelFormat { get; set; }

    public int? BitDepth { get; set; }

    public bool? IsAnamorphic { get; set; }

    public int? RefFrames { get; set; }

    public string? NalLengthSize { get; set; }

    public string? ColorPrimaries { get; set; }

    public string? ColorSpace { get; set; }

    public string? ColorTransfer { get; set; }

    public int? DvVersionMajor { get; set; }

    public int? DvVersionMinor { get; set; }

    public int? DvProfile { get; set; }

    public int? DvLevel { get; set; }

    public int? RpuPresentFlag { get; set; }

    public int? ElPresentFlag { get; set; }

    public int? BlPresentFlag { get; set; }

    public int? DvBlSignalCompatibilityId { get; set; }

    public int? Rotation { get; set; }

    public string? KeyFrames { get; set; }

    public bool? Hdr10PlusPresentFlag { get; set; }
}
