Skip to content

Commit

Permalink
Retry aligning audio playlist with main playlist if levelloaded came …
Browse files Browse the repository at this point in the history
…too early (#4600)

* Retry align audio playlist with main playlist if levelloaded came too early

Fixes #4288.

* Revert "Retry align audio playlist with main playlist if levelloaded came too early"

This reverts commit b1a2d82.

* Emit AUDIO_TRACK_LOADED event if LEVEL_LOADED came too early

Fixes #4288.

* Mock mainDetails in test
  • Loading branch information
Frenzie committed May 20, 2022
1 parent 06c5dfc commit 07ec82c
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/controller/audio-stream-controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class AudioStreamController
private waitingData: WaitingForPTSData | null = null;
private mainDetails: LevelDetails | null = null;
private bufferFlushed: boolean = false;
private cachedTrackLoadedData: TrackLoadedData | null = null;

constructor(hls: Hls, fragmentTracker: FragmentTracker) {
super(hls, fragmentTracker, '[audio-stream-controller]');
Expand Down Expand Up @@ -413,9 +414,17 @@ class AudioStreamController

onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData) {
this.mainDetails = data.details;
if (this.cachedTrackLoadedData !== null) {
this.hls.trigger(Events.AUDIO_TRACK_LOADED, this.cachedTrackLoadedData);
this.cachedTrackLoadedData = null;
}
}

onAudioTrackLoaded(event: Events.AUDIO_TRACK_LOADED, data: TrackLoadedData) {
if (this.mainDetails == null) {
this.cachedTrackLoadedData = data;
return;
}
const { levels } = this;
const { details: newDetails, id: trackId } = data;
if (!levels) {
Expand Down
1 change: 1 addition & 0 deletions tests/unit/controller/audio-stream-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ describe('AudioStreamController', function () {
};

audioStreamController.levels = tracks;
audioStreamController.mainDetails = details;
audioStreamController.tick = () => {};

audioStreamController.onAudioTrackLoaded(Events.AUDIO_TRACK_LOADED, {
Expand Down

0 comments on commit 07ec82c

Please sign in to comment.