diff --git a/source/utils/deviceCapabilities.bs b/source/utils/deviceCapabilities.bs index aa580e53a..384838972 100644 --- a/source/utils/deviceCapabilities.bs +++ b/source/utils/deviceCapabilities.bs @@ -416,12 +416,7 @@ end function function getCodecProfiles() as object myGlobal = m.global globalUserSettings = myGlobal.session.user.settings - displayMaxBitDepth = myGlobal.device.videoBitDepth - if displayMaxBitDepth = invalid - displayMaxBitDepth = "8" - else - displayMaxBitDepth = displayMaxBitDepth.toStr() - end if + codecProfiles = [] profileSupport = { "h264": {}, @@ -562,27 +557,44 @@ function getCodecProfiles() as object hevcVideoRangeTypes = "SDR" vp9VideoRangeTypes = "SDR" av1VideoRangeTypes = "SDR" + canPlayDovi = false if canPlay4k() dp = di.GetDisplayProperties() + + if dp.DolbyVision + canPlayDovi = true + + h264VideoRangeTypes = h264VideoRangeTypes + "|DOVI|DOVIWithSDR" + hevcVideoRangeTypes = hevcVideoRangeTypes + "|DOVI|DOVIWithSDR" + av1VideoRangeTypes = av1VideoRangeTypes + "|DOVI|DOVIWithSDR" + end if + if dp.Hdr10 hevcVideoRangeTypes = hevcVideoRangeTypes + "|HDR10" vp9VideoRangeTypes = vp9VideoRangeTypes + "|HDR10" av1VideoRangeTypes = av1VideoRangeTypes + "|HDR10" + + if canPlayDovi + hevcVideoRangeTypes = hevcVideoRangeTypes + "|DOVIWithHDR10" + av1VideoRangeTypes = av1VideoRangeTypes + "|DOVIWithHDR10" + end if end if + if dp.Hdr10Plus av1VideoRangeTypes = av1VideoRangeTypes + "|HDR10+" end if + if dp.HLG hevcVideoRangeTypes = hevcVideoRangeTypes + "|HLG" vp9VideoRangeTypes = vp9VideoRangeTypes + "|HLG" av1VideoRangeTypes = av1VideoRangeTypes + "|HLG" - end if - if dp.DolbyVision - h264VideoRangeTypes = h264VideoRangeTypes + "|DOVI" - hevcVideoRangeTypes = hevcVideoRangeTypes + "|DOVI" - 'vp9VideoRangeTypes = vp9VideoRangeTypes + ",DOVI" no evidence that vp9 can hold DOVI - av1VideoRangeTypes = av1VideoRangeTypes + "|DOVI" + + if canPlayDovi + hevcVideoRangeTypes = hevcVideoRangeTypes + "|DOVIWithHLG" + vp9VideoRangeTypes = vp9VideoRangeTypes + "|DOVIWithHLG" + av1VideoRangeTypes = av1VideoRangeTypes + "|DOVIWithHLG" + end if end if end if @@ -614,12 +626,6 @@ function getCodecProfiles() as object "Value": "true", "IsRequired": false }, - { - "Condition": "LessThanEqual", - "Property": "VideoBitDepth", - "Value": "8", - "IsRequired": false - }, { "Condition": "EqualsAny", "Property": "VideoProfile", @@ -679,13 +685,7 @@ function getCodecProfiles() as object "Property": "VideoLevel", "Value": mpeg2Levels.join("|"), "IsRequired": false - }, - { - "Condition": "LessThanEqual", - "Property": "VideoBitDepth", - "Value": displayMaxBitDepth, - "IsRequired": false - }, + } ] } @@ -721,12 +721,6 @@ function getCodecProfiles() as object "Type": "Video", "Codec": "av1", "Conditions": [ - { - "Condition": "LessThanEqual", - "Property": "VideoBitDepth", - "Value": displayMaxBitDepth, - "IsRequired": false - }, { "Condition": "EqualsAny", "Property": "VideoProfile", @@ -786,12 +780,6 @@ function getCodecProfiles() as object "Type": "Video", "Codec": "hevc", "Conditions": [ - { - "Condition": "LessThanEqual", - "Property": "VideoBitDepth", - "Value": displayMaxBitDepth, - "IsRequired": false - }, { "Condition": "NotEquals", "Property": "IsAnamorphic", @@ -861,12 +849,6 @@ function getCodecProfiles() as object "Type": "Video", "Codec": "vp9", "Conditions": [ - { - "Condition": "LessThanEqual", - "Property": "VideoBitDepth", - "Value": displayMaxBitDepth, - "IsRequired": false - }, { "Condition": "EqualsAny", "Property": "VideoProfile", diff --git a/source/utils/globals.bs b/source/utils/globals.bs index dc13af952..b9f924f18 100644 --- a/source/utils/globals.bs +++ b/source/utils/globals.bs @@ -97,11 +97,8 @@ sub SaveDeviceToGlobal() print "ERROR parsing deviceInfo.GetVideoMode()" end if videoWidth = heightToWidth[videoHeight] - if videoHeight = "2160" and extraData = "b10" - bitDepth = 10 - else if videoHeight = "4320" - bitDepth = 12 - end if + if extraData <> invalid and extraData = "b10" then bitDepth = 10 + if videoHeight = "4320" then bitDepth = 12 m.global.addFields({ device: {