diff --git a/src/scripts/browserDeviceProfile.js b/src/scripts/browserDeviceProfile.js index d112da7cf1..d5430fe013 100644 --- a/src/scripts/browserDeviceProfile.js +++ b/src/scripts/browserDeviceProfile.js @@ -838,6 +838,29 @@ import browser from './browser'; hevcProfiles = 'main|main 10'; } + const h264VideoRangeTypes = 'SDR'; + let hevcVideoRangeTypes = 'SDR'; + let vp9VideoRangeTypes = 'SDR'; + let av1VideoRangeTypes = 'SDR'; + + if (browser.safari && ((browser.iOS && browser.iOSVersion >= 11) || browser.osx)) { + hevcVideoRangeTypes += '|HDR10|HLG'; + if ((browser.iOS && browser.iOSVersion >= 13) || browser.osx) { + hevcVideoRangeTypes += '|DOVI'; + } + } + + if (browser.tizen || browser.web0s) { + hevcVideoRangeTypes += '|HDR10|HLG|DOVI'; + vp9VideoRangeTypes += '|HDR10|HLG'; + av1VideoRangeTypes += '|HDR10|HLG'; + } + + if (browser.edgeChromium || browser.chrome || browser.firefox) { + vp9VideoRangeTypes += '|HDR10|HLG'; + av1VideoRangeTypes += '|HDR10|HLG'; + } + const h264CodecProfileConditions = [ { Condition: 'NotEquals', @@ -851,6 +874,12 @@ import browser from './browser'; Value: h264Profiles, IsRequired: false }, + { + Condition: 'EqualsAny', + Property: 'VideoRangeType', + Value: h264VideoRangeTypes, + IsRequired: false + }, { Condition: 'LessThanEqual', Property: 'VideoLevel', @@ -872,6 +901,12 @@ import browser from './browser'; Value: hevcProfiles, IsRequired: false }, + { + Condition: 'EqualsAny', + Property: 'VideoRangeType', + Value: hevcVideoRangeTypes, + IsRequired: false + }, { Condition: 'LessThanEqual', Property: 'VideoLevel', @@ -880,6 +915,24 @@ import browser from './browser'; } ]; + const vp9CodecProfileConditions = [ + { + Condition: 'EqualsAny', + Property: 'VideoRangeType', + Value: vp9VideoRangeTypes, + IsRequired: false + } + ]; + + const av1CodecProfileConditions = [ + { + Condition: 'EqualsAny', + Property: 'VideoRangeType', + Value: av1VideoRangeTypes, + IsRequired: false + } + ]; + if (!browser.edgeUwp && !browser.tizen && !browser.web0s) { h264CodecProfileConditions.push({ Condition: 'NotEquals', @@ -969,6 +1022,18 @@ import browser from './browser'; Conditions: hevcCodecProfileConditions }); + profile.CodecProfiles.push({ + Type: 'Video', + Codec: 'vp9', + Conditions: vp9CodecProfileConditions + }); + + profile.CodecProfiles.push({ + Type: 'Video', + Codec: 'av1', + Conditions: av1CodecProfileConditions + }); + const globalVideoConditions = []; if (globalMaxVideoBitrate) {