From 0d4e5877ca834c09a9a91279b6b0287d970af7cc Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Tue, 18 Nov 2025 10:00:57 +0000 Subject: [PATCH] fix: Allow enhancement codecs to be re-tested in Capabilities.js if Settings change Remove enhancement codecs from tested configurations so that they can be re-tested if the enhancement settings change. This PR aims to fix a minor issue that we are seeing in the Reference Player, if a stream is loaded, and afterwards the Enhancement Layer is enabled, enhancement codecs would still be filtered out due to them being in the testedCodecConfigurations. This PR removes them out from testedCodecConfigurations so they can be re-tested on next stream load. --- src/streaming/utils/Capabilities.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/streaming/utils/Capabilities.js b/src/streaming/utils/Capabilities.js index a7bd5e2c8f..19c0c349f8 100644 --- a/src/streaming/utils/Capabilities.js +++ b/src/streaming/utils/Capabilities.js @@ -138,8 +138,11 @@ function Capabilities() { return Promise.resolve(); } - const enhancementCodecs = settings.get().streaming.enhancement.codecs; - if (settings.get().streaming.enhancement.enabled && enhancementCodecs.some(cdc => basicConfiguration.codec.includes(cdc))) { + if (settings.get().streaming.enhancement.enabled && _isEnhancementCodec(basicConfiguration.codec)) { + // Remove enhancement codecs from tested configurations so that they can be re-tested if the enhancement settings change + testedCodecConfigurations = testedCodecConfigurations.filter((configuration) => { + return !_isEnhancementCodec(configuration.mediaSourceCodecString); + }); return Promise.resolve(true); } @@ -355,6 +358,18 @@ function Capabilities() { }) } + /** + * Check if codec is an enhancement layer codec, e.g. LCEVC + * Enhancement layer codecs can be configured via settings. + * @param {string} codec + * @return {boolean} true if enhancement codec + * @private + */ + function _isEnhancementCodec(codec) { + const enhancementCodecs = settings.get().streaming.enhancement.codecs; + return enhancementCodecs.some((c) => codec.includes(c)); + } + function _isConfigSupported(testedConfigurations) { return testedConfigurations.some((testedConfiguration) => { return testedConfiguration && testedConfiguration.decodingInfo && testedConfiguration.decodingInfo.supported