From a371f434acca086e7e38959ef7067277c6e4a014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Velad=20Galv=C3=A1n?= Date: Tue, 9 Jan 2024 08:47:31 +0100 Subject: [PATCH] fix(DASH): Fix bad error on DASH DAI (#6047) Fixes https://github.com/shaka-project/shaka-player/issues/6010 --- lib/util/periods.js | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/util/periods.js b/lib/util/periods.js index 37115ab31d..d6ed896504 100644 --- a/lib/util/periods.js +++ b/lib/util/periods.js @@ -790,11 +790,34 @@ shaka.util.PeriodCombiner = class { for (const codec of match.codecs.split(',')) { codecs.add(codec); } - outputStream.codecs = Array.from(codecs).join(','); + const PeriodCombiner = shaka.util.PeriodCombiner; + outputStream.codecs = PeriodCombiner.filterDuplicateCodecs_( + Array.from(codecs)).join(','); } } } + /** + * @param {!Array.} codecs + * @return {!Array.} codecs + * @private + */ + static filterDuplicateCodecs_(codecs) { + // Filter out duplicate codecs. + const seen = new Set(); + const ret = []; + for (const codec of codecs) { + const shortCodec = shaka.util.MimeUtils.getCodecBase(codec); + if (!seen.has(shortCodec)) { + ret.push(codec); + seen.add(shortCodec); + } else { + shaka.log.debug('Ignoring duplicate codec'); + } + } + return ret; + } + /** * Clone a Stream to make an output Stream for combining others across * periods.