Inject toKeyframe discard parameter from ExoPlayerImplInternal

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=175805139
This commit is contained in:
olly 2017-11-15 03:27:35 -08:00 committed by Oliver Woodman
parent 28df0e133b
commit bd0bc03f64
13 changed files with 28 additions and 24 deletions

View File

@ -541,7 +541,7 @@ import java.io.IOException;
TraceUtil.beginSection("doSomeWork");
updatePlaybackPositions();
playingPeriodHolder.mediaPeriod.discardBuffer(playbackInfo.positionUs);
playingPeriodHolder.mediaPeriod.discardBuffer(playbackInfo.positionUs, false);
boolean allRenderersEnded = true;
boolean allRenderersReadyOrEnded = true;
@ -732,7 +732,7 @@ import java.io.IOException;
setPlayingPeriodHolder(newPlayingPeriodHolder);
if (playingPeriodHolder.hasEnabledTracks) {
periodPositionUs = playingPeriodHolder.mediaPeriod.seekToUs(periodPositionUs);
playingPeriodHolder.mediaPeriod.discardBuffer(periodPositionUs);
playingPeriodHolder.mediaPeriod.discardBuffer(periodPositionUs, false);
}
resetRendererPosition(periodPositionUs);
maybeContinueLoading();

View File

@ -121,8 +121,8 @@ public final class ClippingMediaPeriod implements MediaPeriod, MediaPeriod.Callb
}
@Override
public void discardBuffer(long positionUs) {
mediaPeriod.discardBuffer(positionUs + startUs);
public void discardBuffer(long positionUs, boolean toKeyframe) {
mediaPeriod.discardBuffer(positionUs + startUs, toKeyframe);
}
@Override

View File

@ -824,8 +824,8 @@ public final class DynamicConcatenatingMediaSource implements MediaSource, ExoPl
}
@Override
public void discardBuffer(long positionUs) {
mediaPeriod.discardBuffer(positionUs);
public void discardBuffer(long positionUs, boolean toKeyframe) {
mediaPeriod.discardBuffer(positionUs, toKeyframe);
}
@Override

View File

@ -276,10 +276,10 @@ import java.util.Arrays;
}
@Override
public void discardBuffer(long positionUs) {
public void discardBuffer(long positionUs, boolean toKeyframe) {
int trackCount = sampleQueues.length;
for (int i = 0; i < trackCount; i++) {
sampleQueues[i].discardTo(positionUs, false, trackEnabledStates[i]);
sampleQueues[i].discardTo(positionUs, toKeyframe, trackEnabledStates[i]);
}
}

View File

@ -116,8 +116,10 @@ public interface MediaPeriod extends SequenceableLoader {
* This method should only be called after the period has been prepared.
*
* @param positionUs The position in microseconds.
* @param toKeyframe If true then for each track discards samples up to the keyframe before or at
* the specified position, rather than any sample before or at that position.
*/
void discardBuffer(long positionUs);
void discardBuffer(long positionUs, boolean toKeyframe);
/**
* Attempts to read a discontinuity.

View File

@ -129,9 +129,9 @@ import java.util.IdentityHashMap;
}
@Override
public void discardBuffer(long positionUs) {
public void discardBuffer(long positionUs, boolean toKeyframe) {
for (MediaPeriod period : enabledPeriods) {
period.discardBuffer(positionUs);
period.discardBuffer(positionUs, toKeyframe);
}
}

View File

@ -116,7 +116,7 @@ import java.util.Arrays;
}
@Override
public void discardBuffer(long positionUs) {
public void discardBuffer(long positionUs, boolean toKeyframe) {
// Do nothing.
}

View File

@ -114,11 +114,13 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
* Discards buffered media up to the specified position.
*
* @param positionUs The position to discard up to, in microseconds.
* @param toKeyframe If true then for each track discards samples up to the keyframe before or at
* the specified position, rather than any sample before or at that position.
*/
public void discardBuffer(long positionUs) {
primarySampleQueue.discardTo(positionUs, false, true);
public void discardBuffer(long positionUs, boolean toKeyframe) {
primarySampleQueue.discardTo(positionUs, toKeyframe, true);
for (int i = 0; i < embeddedSampleQueues.length; i++) {
embeddedSampleQueues[i].discardTo(positionUs, true, embeddedTracksSelected[i]);
embeddedSampleQueues[i].discardTo(positionUs, toKeyframe, embeddedTracksSelected[i]);
}
discardDownstreamMediaChunks(primarySampleQueue.getFirstIndex());
}

View File

@ -259,9 +259,9 @@ import java.util.Map;
}
@Override
public void discardBuffer(long positionUs) {
public void discardBuffer(long positionUs, boolean toKeyframe) {
for (ChunkSampleStream<DashChunkSource> sampleStream : sampleStreams) {
sampleStream.discardBuffer(positionUs);
sampleStream.discardBuffer(positionUs, toKeyframe);
}
}

View File

@ -183,9 +183,9 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
}
@Override
public void discardBuffer(long positionUs) {
public void discardBuffer(long positionUs, boolean toKeyframe) {
for (HlsSampleStreamWrapper sampleStreamWrapper : enabledSampleStreamWrappers) {
sampleStreamWrapper.discardBuffer(positionUs);
sampleStreamWrapper.discardBuffer(positionUs, toKeyframe);
}
}

View File

@ -291,10 +291,10 @@ import java.util.LinkedList;
return seekRequired;
}
public void discardBuffer(long positionUs) {
public void discardBuffer(long positionUs, boolean toKeyframe) {
int sampleQueueCount = sampleQueues.length;
for (int i = 0; i < sampleQueueCount; i++) {
sampleQueues[i].discardTo(positionUs, false, sampleQueuesEnabledStates[i]);
sampleQueues[i].discardTo(positionUs, toKeyframe, sampleQueuesEnabledStates[i]);
}
}

View File

@ -138,9 +138,9 @@ import java.util.ArrayList;
}
@Override
public void discardBuffer(long positionUs) {
public void discardBuffer(long positionUs, boolean toKeyframe) {
for (ChunkSampleStream<SsChunkSource> sampleStream : sampleStreams) {
sampleStream.discardBuffer(positionUs);
sampleStream.discardBuffer(positionUs, toKeyframe);
}
}

View File

@ -85,7 +85,7 @@ public class FakeMediaPeriod implements MediaPeriod {
}
@Override
public void discardBuffer(long positionUs) {
public void discardBuffer(long positionUs, boolean toKeyframe) {
// Do nothing.
}