From 9a97b2b668cc442247b4b28aace56dcd4dcd8efe Mon Sep 17 00:00:00 2001 From: Bogdan Date: Fri, 15 Dec 2023 03:23:54 +0200 Subject: [PATCH] New: Support for DV HDR10Plus from media info Co-authored-by: Chad A Simmons (cherry picked from commit 848c03f16ab25ff193ea9ed7e4b21e99c6fb3fa0) --- .../FormatVideoDynamicRangeTypeFixture.cs | 1 + .../MediaFiles/MediaInfo/VideoFileInfoReaderFixture.cs | 2 ++ src/NzbDrone.Core/MediaFiles/MediaInfo/HdrFormat.cs | 3 ++- .../MediaFiles/MediaInfo/MediaInfoFormatter.cs | 2 ++ .../MediaFiles/MediaInfo/VideoFileInfoReader.cs | 6 ++++-- 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/MediaInfoFormatterTests/FormatVideoDynamicRangeTypeFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/MediaInfoFormatterTests/FormatVideoDynamicRangeTypeFixture.cs index 3c37d0f34..aed6d0fc1 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/MediaInfoFormatterTests/FormatVideoDynamicRangeTypeFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/MediaInfoFormatterTests/FormatVideoDynamicRangeTypeFixture.cs @@ -15,6 +15,7 @@ namespace NzbDrone.Core.Test.MediaFiles.MediaInfo.MediaInfoFormatterTests [TestCase(HdrFormat.Hdr10Plus, "HDR10Plus")] [TestCase(HdrFormat.DolbyVision, "DV")] [TestCase(HdrFormat.DolbyVisionHdr10, "DV HDR10")] + [TestCase(HdrFormat.DolbyVisionHdr10Plus, "DV HDR10Plus")] [TestCase(HdrFormat.DolbyVisionHlg, "DV HLG")] [TestCase(HdrFormat.DolbyVisionSdr, "DV SDR")] public void should_format_video_dynamic_range_type(HdrFormat format, string expectedVideoDynamicRangeType) diff --git a/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/VideoFileInfoReaderFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/VideoFileInfoReaderFixture.cs index 40d9ea99c..c48f3a63d 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/VideoFileInfoReaderFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/VideoFileInfoReaderFixture.cs @@ -116,6 +116,8 @@ namespace NzbDrone.Core.Test.MediaFiles.MediaInfo [TestCase(10, "bt2020", "smpte2084", "FFMpegCore.HdrDynamicMetadataSpmte2094", null, HdrFormat.Hdr10Plus)] [TestCase(10, "bt2020", "smpte2084", "FFMpegCore.DoviConfigurationRecordSideData", null, HdrFormat.DolbyVision)] [TestCase(10, "bt2020", "smpte2084", "FFMpegCore.DoviConfigurationRecordSideData", 1, HdrFormat.DolbyVisionHdr10)] + [TestCase(10, "bt2020", "smpte2084", "FFMpegCore.DoviConfigurationRecordSideData,FFMpegCore.HdrDynamicMetadataSpmte2094", 1, HdrFormat.DolbyVisionHdr10Plus)] + [TestCase(10, "bt2020", "smpte2084", "FFMpegCore.DoviConfigurationRecordSideData,FFMpegCore.HdrDynamicMetadataSpmte2094", 6, HdrFormat.DolbyVisionHdr10Plus)] [TestCase(10, "bt2020", "smpte2084", "FFMpegCore.DoviConfigurationRecordSideData", 2, HdrFormat.DolbyVisionSdr)] [TestCase(10, "bt2020", "smpte2084", "FFMpegCore.DoviConfigurationRecordSideData", 4, HdrFormat.DolbyVisionHlg)] public void should_detect_hdr_correctly(int bitDepth, string colourPrimaries, string transferFunction, string sideDataTypes, int? doviConfigId, HdrFormat expected) diff --git a/src/NzbDrone.Core/MediaFiles/MediaInfo/HdrFormat.cs b/src/NzbDrone.Core/MediaFiles/MediaInfo/HdrFormat.cs index db109df81..d8a89784d 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaInfo/HdrFormat.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaInfo/HdrFormat.cs @@ -10,6 +10,7 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo DolbyVision, DolbyVisionHdr10, DolbyVisionSdr, - DolbyVisionHlg + DolbyVisionHlg, + DolbyVisionHdr10Plus } } diff --git a/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs b/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs index 686d1fd45..80160965f 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs @@ -320,6 +320,8 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo return "DV"; case HdrFormat.DolbyVisionHdr10: return "DV HDR10"; + case HdrFormat.DolbyVisionHdr10Plus: + return "DV HDR10Plus"; case HdrFormat.DolbyVisionHlg: return "DV HLG"; case HdrFormat.DolbyVisionSdr: diff --git a/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs b/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs index 078b7682c..24c24c1ff 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs @@ -188,12 +188,14 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo if (TryGetSideData(sideData, out var dovi)) { + var hasHdr10Plus = TryGetSideData(sideData, out _); + return dovi.DvBlSignalCompatibilityId switch { - 1 => HdrFormat.DolbyVisionHdr10, + 1 => hasHdr10Plus ? HdrFormat.DolbyVisionHdr10Plus : HdrFormat.DolbyVisionHdr10, 2 => HdrFormat.DolbyVisionSdr, 4 => HdrFormat.DolbyVisionHlg, - 6 => HdrFormat.DolbyVisionHdr10, + 6 => hasHdr10Plus ? HdrFormat.DolbyVisionHdr10Plus : HdrFormat.DolbyVisionHdr10, _ => HdrFormat.DolbyVision }; }