Skip to content

Commit

Permalink
fix: Avoid reset iterator when seek into the buffer (#7004)
Browse files Browse the repository at this point in the history
When using HLS LL and making seek small this produces overlaps
  • Loading branch information
avelad authored Jul 9, 2024
1 parent 3cb40bf commit dc34ec4
Showing 1 changed file with 8 additions and 17 deletions.
25 changes: 8 additions & 17 deletions lib/media/streaming_engine.js
Original file line number Diff line number Diff line change
Expand Up @@ -769,25 +769,16 @@ shaka.media.StreamingEngine = class {
const mediaState = this.mediaStates_.get(type);
const logPrefix = shaka.media.StreamingEngine.logPrefix_(mediaState);

let segment = null;
if (mediaState.segmentIterator) {
segment = mediaState.segmentIterator.current();
}
if (mediaState.segmentPrefetch) {
mediaState.segmentPrefetch.resetPosition();
}
if (mediaState.type === ContentType.AUDIO) {
for (const prefetch of this.audioPrefetchMap_.values()) {
prefetch.resetPosition();
if (!newTimeIsBuffered(type)) {
if (mediaState.segmentPrefetch) {
mediaState.segmentPrefetch.resetPosition();
}
if (mediaState.type === ContentType.AUDIO) {
for (const prefetch of this.audioPrefetchMap_.values()) {
prefetch.resetPosition();
}
}
}
// Only reset the iterator if we seek outside the current segment.
if (!segment || segment.startTime > presentationTime ||
segment.endTime < presentationTime) {
mediaState.segmentIterator = null;
}

if (!newTimeIsBuffered(type)) {
const bufferEnd =
this.playerInterface_.mediaSourceEngine.bufferEnd(type);
const somethingBuffered = bufferEnd != null;
Expand Down

0 comments on commit dc34ec4

Please sign in to comment.