From 368860e3baf4465515fc50003dc917a5f1babef1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Velad=20Galv=C3=A1n?= Date: Wed, 10 Jul 2024 07:40:14 +0200 Subject: [PATCH] fix(HLS): Propagate bandwidth to stream in audio-only and video-only (#7006) --- lib/hls/hls_parser.js | 15 ++++++++------- test/hls/hls_parser_unit.js | 3 +++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/hls/hls_parser.js b/lib/hls/hls_parser.js index b7592a372a..f6712dffba 100644 --- a/lib/hls/hls_parser.js +++ b/lib/hls/hls_parser.js @@ -1487,7 +1487,7 @@ shaka.hls.HlsParser = class { videoLayout = videoLayout || 'CH-MONO'; const streamInfos = this.createStreamInfosForVariantTags_(tags, - mediaTags, resolution, frameRate, bandwidth); + mediaTags, resolution, frameRate); goog.asserts.assert(streamInfos.audio.length || streamInfos.video.length, 'We should have created a stream!'); @@ -1515,12 +1515,10 @@ shaka.hls.HlsParser = class { * @param {!Array.} mediaTags * @param {?string} resolution * @param {?string} frameRate - * @param {number} bandwidth * @return {!shaka.hls.HlsParser.StreamInfos} * @private */ - createStreamInfosForVariantTags_( - tags, mediaTags, resolution, frameRate, bandwidth) { + createStreamInfosForVariantTags_(tags, mediaTags, resolution, frameRate) { const ContentType = shaka.util.ManifestParserUtils.ContentType; /** @type {shaka.hls.HlsParser.StreamInfos} */ @@ -1655,9 +1653,6 @@ shaka.hls.HlsParser = class { if (globalGroupId) { streamInfo.stream.groupId = globalGroupId; } - if (!streamInfos.length) { - streamInfo.stream.bandwidth = bandwidth; - } res[streamInfo.stream.type] = [streamInfo]; } return res; @@ -1879,6 +1874,12 @@ shaka.hls.HlsParser = class { videoStream.drmInfos = drmInfos; videoStream.keyIds = keyIds; } + if (videoStream && !audioStream) { + videoStream.bandwidth = bandwidth; + } + if (!videoStream && audioStream) { + audioStream.bandwidth = bandwidth; + } const audioDrmInfos = audioInfo ? audioInfo.stream.drmInfos : null; const videoDrmInfos = videoInfo ? videoInfo.stream.drmInfos : null; const videoStreamUri = diff --git a/test/hls/hls_parser_unit.js b/test/hls/hls_parser_unit.js index c13293aa0d..39efa1afc6 100644 --- a/test/hls/hls_parser_unit.js +++ b/test/hls/hls_parser_unit.js @@ -332,6 +332,7 @@ describe('HlsParser', () => { manifest.addPartialVariant((variant) => { variant.bandwidth = 100; variant.addPartialStream(ContentType.VIDEO, (stream) => { + stream.bandwidth = 100; stream.frameRate = 60; stream.mime('video/mp4', 'avc1'); stream.size(960, 540); @@ -496,8 +497,10 @@ describe('HlsParser', () => { const manifest = shaka.test.ManifestGenerator.generate((manifest) => { manifest.anyTimeline(); manifest.addPartialVariant((variant) => { + variant.bandwidth = 200; variant.addPartialStream(ContentType.AUDIO, (stream) => { stream.mime('audio/mp4', 'mp4a'); + stream.bandwidth = 200; }); }); manifest.sequenceMode = sequenceMode;