// <copyright file="VideoItemView.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."VideoItems_v".
/// Every non-folder, non-virtual item with at least one video stream.
/// </summary>
public class VideoItemView
{
    public Guid? ItemId { get; set; }

    public string? Type { get; set; }

    public string? Name { get; set; }

    public string? OriginalTitle { get; set; }

    public int? ProductionYear { get; set; }

    public string? OfficialRating { get; set; }

    public float? CommunityRating { get; set; }

    public long? RunTimeTicks { get; set; }

    public string? Path { get; set; }

    public DateTimeOffset? DateCreated { get; set; }

    public DateTimeOffset? DateModified { get; set; }

    public string? SeriesName { get; set; }

    public string? SeasonName { get; set; }

    public int? EpisodeNumber { get; set; }

    public int? SeasonNumber { get; set; }

    public int? TotalBitrate { get; set; }

    public long? Size { get; set; }

    public string? VideoCodec { get; set; }

    public string? VideoProfile { get; set; }

    public int? Width { get; set; }

    public int? Height { get; set; }

    public float? AverageFrameRate { get; set; }

    public int? BitDepth { get; set; }

    public string? PixelFormat { get; set; }

    public string? ColorSpace { get; set; }

    public string? ColorTransfer { get; set; }

    public string? ColorPrimaries { get; set; }

    public bool? IsInterlaced { get; set; }

    public bool? IsAnamorphic { get; set; }

    public string? AspectRatio { get; set; }

    public bool? IsDolbyVision { get; set; }

    public bool? IsHDR10Plus { get; set; }

    /// <summary>Gets or sets derived HDR format: "Dolby Vision", "HDR10+", "HDR10", "HLG", or "SDR".</summary>
    public string? HDRFormat { get; set; }

    public long? AudioTrackCount { get; set; }

    public long? SubtitleTrackCount { get; set; }
}
