mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-04-18 19:25:00 -04:00
* Add support for bitstream filter to remove dynamic hdr metadata * Add support for ffprobe's only_first_vframe for HDR10+ detection * Add BitStreamFilterOptionType for metadata removal check * Map HDR10+ metadata to VideoRangeType.cs Current implementation uses a hack that abuses the EL flag to avoid database schema changes. Should add proper field once EFCore migration is merged. * Add more Dolby Vision Range types Out of spec ones are problematic and should be marked as a dedicated invalid type and handled by the server to not crash the player. Profile 7 videos should not be treated as normal HDR10 videos at all and should remove the metadata before serving. * Remove dynamic hdr metadata when necessary * Allow direct playback of HDR10+ videos on HDR10 clients * Only use dovi codec tag when dovi metadata is not removed * Handle DV Profile 7 Videos better * Fix HDR10+ with new bitmask * Indicate the presence of HDR10+ in HLS SUPPLEMENTAL-CODECS * Fix Dovi 8.4 not labeled as HLG in HLS * Fallback to dovi_rpu bsf for av1 when possible * Fix dovi_rpu cli for av1 * Use correct EFCore db column for HDR10+ * Undo outdated migration * Add proper hdr10+ migration * Remove outdated migration * Rebase to new db code * Add migrations for Hdr10PlusPresentFlag * Directly use bsf enum * Add xmldocs for SupportsBitStreamFilterWithOption * Make `VideoRangeType.Unknown` explicitly default on api models. * Unset default for non-api model class * Use tuples for bsf dictionary for now
104 lines
2.3 KiB
C#
104 lines
2.3 KiB
C#
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
|
|
|
|
using System;
|
|
|
|
namespace Jellyfin.Database.Implementations.Entities;
|
|
|
|
public class MediaStreamInfo
|
|
{
|
|
public required Guid ItemId { get; set; }
|
|
|
|
public required BaseItemEntity Item { get; set; }
|
|
|
|
public int StreamIndex { get; set; }
|
|
|
|
public required MediaStreamTypeEntity StreamType { get; set; }
|
|
|
|
public string? Codec { get; set; }
|
|
|
|
public string? Language { get; set; }
|
|
|
|
public string? ChannelLayout { get; set; }
|
|
|
|
public string? Profile { get; set; }
|
|
|
|
public string? AspectRatio { get; set; }
|
|
|
|
public string? Path { get; set; }
|
|
|
|
public bool? IsInterlaced { get; set; }
|
|
|
|
public int? BitRate { get; set; }
|
|
|
|
public int? Channels { get; set; }
|
|
|
|
public int? SampleRate { get; set; }
|
|
|
|
public bool IsDefault { get; set; }
|
|
|
|
public bool IsForced { get; set; }
|
|
|
|
public bool IsExternal { get; set; }
|
|
|
|
public int? Height { get; set; }
|
|
|
|
public int? Width { get; set; }
|
|
|
|
public float? AverageFrameRate { get; set; }
|
|
|
|
public float? RealFrameRate { get; set; }
|
|
|
|
public float? Level { get; set; }
|
|
|
|
public string? PixelFormat { get; set; }
|
|
|
|
public int? BitDepth { get; set; }
|
|
|
|
public bool? IsAnamorphic { get; set; }
|
|
|
|
public int? RefFrames { get; set; }
|
|
|
|
public string? CodecTag { get; set; }
|
|
|
|
public string? Comment { get; set; }
|
|
|
|
public string? NalLengthSize { get; set; }
|
|
|
|
public bool? IsAvc { get; set; }
|
|
|
|
public string? Title { get; set; }
|
|
|
|
public string? TimeBase { get; set; }
|
|
|
|
public string? CodecTimeBase { 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 bool? IsHearingImpaired { get; set; }
|
|
|
|
public int? Rotation { get; set; }
|
|
|
|
public string? KeyFrames { get; set; }
|
|
|
|
public bool? Hdr10PlusPresentFlag { get; set; }
|
|
}
|