mjpeg-player: keeping track of loaded fragments

This commit is contained in:
Trek H 2020-01-24 15:50:59 +10:30
parent 4e4eaf95d4
commit 445fc6bc71
1 changed files with 14 additions and 10 deletions

View File

@ -38,20 +38,30 @@ class StreamController extends EventHandler {
this.audioCodecSwap = false; this.audioCodecSwap = false;
this.stallReported = false; this.stallReported = false;
this.gapController = null; this.gapController = null;
this.currentFrag = 0; this.currentFragIndex = 0;
this.lastSN = 0;
this.fragments = [];
} }
_fetchPayloadOrEos(levelDetails) { _fetchPayloadOrEos(levelDetails) {
this.fragments = levelDetails.fragments; // Keep track of any new frags and load them.
for (let i = 0; i < levelDetails.fragments.length; i++) {
let frag = levelDetails.fragments[i];
if (frag.sn > this.lastSN) {
console.log("adding fragment: " + frag.sn);
this.fragments.push(frag);
this.lastSN = frag.sn;
}
}
this._loadFragment(); this._loadFragment();
} }
_loadFragment() { _loadFragment() {
let fragLen = this.fragments.length; let fragLen = this.fragments.length;
if (this.currentFrag >= fragLen) { if (this.currentFragIndex >= fragLen) {
return; return;
} }
this.hls.trigger(Event.FRAG_LOADING, { frag: this.fragments[this.currentFrag++] }); this.hls.trigger(Event.FRAG_LOADING, { frag: this.fragments[this.currentFragIndex++] });
} }
onLevelLoaded(data) { onLevelLoaded(data) {
@ -63,11 +73,6 @@ class StreamController extends EventHandler {
console.log(`level ${newLevelId} loaded [${newDetails.startSN},${newDetails.endSN}],duration:${duration}`); console.log(`level ${newLevelId} loaded [${newDetails.startSN},${newDetails.endSN}],duration:${duration}`);
if (newDetails.live) {
console.log("handling of this case is not implemented");
} else {
newDetails.PTSKnown = false;
}
// override level info // override level info
this.levelLastLoaded = newLevelId; this.levelLastLoaded = newLevelId;
this.hls.trigger(Event.LEVEL_UPDATED, { details: newDetails, level: newLevelId }); this.hls.trigger(Event.LEVEL_UPDATED, { details: newDetails, level: newLevelId });
@ -96,7 +101,6 @@ class StreamController extends EventHandler {
} }
this.nextLoadPosition = this.startPosition; this.nextLoadPosition = this.startPosition;
} }
this._fetchPayloadOrEos(levelDetails); this._fetchPayloadOrEos(levelDetails);
} }