From 0f5aca60f77aa6e085844c47508be4103986cdde Mon Sep 17 00:00:00 2001 From: v-nova-romas Date: Wed, 14 May 2025 11:38:51 +0100 Subject: [PATCH] fix(LCEVC): Create segmentIndex on makeAbortDecision_ The `NetworkInformation.downlink` API is unavailable on Firefox. Without this API, the player starts playback in a lower quality and performs an ABR switch once sufficient network data is available. This PR ensures the switch / abort logic creates the `segmentIndex` for `dependencyStream` correctly in this edge case --- lib/media/streaming_engine.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/media/streaming_engine.js b/lib/media/streaming_engine.js index eb42b78d26..c63c4f07c2 100644 --- a/lib/media/streaming_engine.js +++ b/lib/media/streaming_engine.js @@ -811,6 +811,11 @@ shaka.media.StreamingEngine = class { await originalStream.createSegmentIndex(); } + const dependencyStream = originalStream.dependencyStream; + if (dependencyStream && !dependencyStream.segmentIndex) { + await dependencyStream.createSegmentIndex(); + } + if (mediaState.operation != originalOperation) { // The original operation completed while we were getting a segment index, // so there's nothing to do now. @@ -1374,6 +1379,18 @@ shaka.media.StreamingEngine = class { } } + // If the stream has a dependency, make sure its segment index exists. + if (mediaState.dependencyMediaState) { + if (!mediaState.dependencyMediaState.stream.segmentIndex) { + try { + await mediaState.dependencyMediaState.stream.createSegmentIndex(); + } catch (error) { + shaka.log.warning( + 'Could not create segment index for dependency', error); + } + } + } + // Update the MediaState. try { const delay = this.update_(mediaState);