Skip to content

Commit 3b324eb

Browse files
committed
chore: handle possible race condition
1 parent 885a18f commit 3b324eb

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

src/plugins/adaptive-streaming/quality-levels.js

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -291,13 +291,13 @@ const qualityLevels = (player, options) => {
291291
};
292292

293293
// Audio track handling
294-
const addAudioTrackVideojs = track => {
295-
var vjsTrack = new videojs.AudioTrack({
294+
const addAudioTrackVideojs = (track, hls) => {
295+
const vjsTrack = new videojs.AudioTrack({
296296
id: `${track.type}-id_${track.id}-groupId_${track.groupId}-${track.name}`,
297297
kind: 'translation',
298298
label: track.name,
299299
language: track.lang,
300-
enabled: track.enabled,
300+
enabled: hls.audioTrack === hls.audioTracks.indexOf(track),
301301
default: track.default
302302
});
303303

@@ -315,7 +315,7 @@ const qualityLevels = (player, options) => {
315315
const hls = tech.sourceHandler_.hls;
316316
const len = hls.audioTracks.length;
317317
for (let i = 0; i < len; i++) {
318-
addAudioTrackVideojs(hls.audioTracks[i]);
318+
addAudioTrackVideojs(hls.audioTracks[i], hls);
319319
}
320320
}
321321

@@ -354,11 +354,20 @@ const qualityLevels = (player, options) => {
354354
tech.sourceHandler_.hls != null
355355
) {
356356
const hls = tech.sourceHandler_.hls;
357-
hls.on(Hls.Events.MANIFEST_LOADED, (eventName, data) => {
357+
358+
const manifestLoadedHandler = (eventName, data) => {
358359
debugLog(`HLS event: ${eventName}`, data);
359360
populateLevels(hls.levels, 'hls');
360361
initAudioTrackInfo();
361-
});
362+
hls.off(Hls.Events.MANIFEST_LOADED, manifestLoadedHandler);
363+
};
364+
365+
// If manifest is already loaded, populate levels immediately.
366+
if (hls.levels && hls.levels.length > 0) {
367+
manifestLoadedHandler('MANUAL_MANIFEST_LOADED', {});
368+
} else {
369+
hls.on(Hls.Events.MANIFEST_LOADED, manifestLoadedHandler);
370+
}
362371

363372
hls.on(Hls.Events.LEVEL_SWITCHED, (eventName, data) => {
364373
debugLog(`HLS event: ${eventName}`, data);

0 commit comments

Comments
 (0)