Skip to content

Commit

Permalink
move some functions around
Browse files Browse the repository at this point in the history
  • Loading branch information
wseymour15 committed Aug 7, 2024
1 parent 129b89c commit 4c3e8b2
Showing 1 changed file with 22 additions and 9 deletions.
31 changes: 22 additions & 9 deletions src/segment-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -424,9 +424,7 @@ export const shouldFixBadTimelineChanges = (timelineChangeController) => {
};

/**
* Fixes certain bad timeline scenarios. In some cases this may be
* resetting the loaders. In others, it may force a timeline change
* when a timeline is behind.
* Fixes certain bad timeline scenarios by resetting the loader.
*
* @param {SegmentLoader} segmentLoader
*/
Expand All @@ -435,18 +433,28 @@ export const fixBadTimelineChange = (segmentLoader) => {
return;
}

segmentLoader.pause();
segmentLoader.resetEverything();
segmentLoader.load();
};

/**
* Check if the pending audio timeline change is behind the
* pending main timeline change.
*
* @param {SegmentLoader} segmentLoader
* @return {boolean}
*/
const isAudioTimelineBehind = (segmentLoader) => {
const pendingAudioTimelineChange = segmentLoader.timelineChangeController_.pendingTimelineChange({ type: 'audio' });
const pendingMainTimelineChange = segmentLoader.timelineChangeController_.pendingTimelineChange({ type: 'main' });
const hasPendingTimelineChanges = pendingAudioTimelineChange && pendingMainTimelineChange;

if (hasPendingTimelineChanges && pendingAudioTimelineChange.to < pendingMainTimelineChange.to) {
segmentLoader.timelineChangeController_.trigger('audioTimelineBehind');
return;
return true;
}

segmentLoader.pause();
segmentLoader.resetEverything();
segmentLoader.load();
return false;
};

/**
Expand All @@ -455,7 +463,7 @@ export const fixBadTimelineChange = (segmentLoader) => {
*
* @param {SegmentLoader} segmentLoader
*/
export const checkAndFixTimelines = (segmentLoader) => {
const checkAndFixTimelines = (segmentLoader) => {
const segmentInfo = segmentLoader.pendingSegment_;

if (!segmentInfo) {
Expand All @@ -471,6 +479,11 @@ export const checkAndFixTimelines = (segmentLoader) => {
});

if (waitingForTimelineChange && shouldFixBadTimelineChanges(segmentLoader.timelineChangeController_)) {
if (isAudioTimelineBehind) {
segmentLoader.timelineChangeController_.trigger('audioTimelineBehind');
return;
}

fixBadTimelineChange(segmentLoader);
}
};
Expand Down

0 comments on commit 4c3e8b2

Please sign in to comment.