Commit 4e0638ce by olly Committed by Oliver Woodman

Remove unnecessary extension of DefaultTrackOutput.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=120123489
parent 4451be92
...@@ -26,7 +26,7 @@ import java.io.IOException; ...@@ -26,7 +26,7 @@ import java.io.IOException;
* A {@link TrackOutput} that buffers extracted samples in a queue, and allows for consumption from * A {@link TrackOutput} that buffers extracted samples in a queue, and allows for consumption from
* that queue. * that queue.
*/ */
public class DefaultTrackOutput implements TrackOutput { public final class DefaultTrackOutput implements TrackOutput {
private final RollingSampleBuffer rollingBuffer; private final RollingSampleBuffer rollingBuffer;
private final DecoderInputBuffer sampleBuffer; private final DecoderInputBuffer sampleBuffer;
......
...@@ -195,7 +195,7 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu ...@@ -195,7 +195,7 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu
private final ExtractorHolder extractorHolder; private final ExtractorHolder extractorHolder;
private final Allocator allocator; private final Allocator allocator;
private final int requestedBufferSize; private final int requestedBufferSize;
private final SparseArray<InternalTrackOutput> sampleQueues; private final SparseArray<DefaultTrackOutput> sampleQueues;
private final int minLoadableRetryCount; private final int minLoadableRetryCount;
private final Uri uri; private final Uri uri;
private final DataSource dataSource; private final DataSource dataSource;
...@@ -226,7 +226,7 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu ...@@ -226,7 +226,7 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu
private ExtractingLoadable loadable; private ExtractingLoadable loadable;
private IOException fatalException; private IOException fatalException;
private boolean currentLoadExtractedSamples; private int extractedSamplesCountAtStartOfLoad;
private boolean loadingFinished; private boolean loadingFinished;
/** /**
...@@ -474,7 +474,7 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu ...@@ -474,7 +474,7 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu
return TrackStream.NOTHING_READ; return TrackStream.NOTHING_READ;
} }
InternalTrackOutput sampleQueue = sampleQueues.valueAt(track); DefaultTrackOutput sampleQueue = sampleQueues.valueAt(track);
if (pendingMediaFormat[track]) { if (pendingMediaFormat[track]) {
formatHolder.format = sampleQueue.getFormat(); formatHolder.format = sampleQueue.getFormat();
formatHolder.drmInitData = drmInitData; formatHolder.drmInitData = drmInitData;
...@@ -528,18 +528,19 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu ...@@ -528,18 +528,19 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu
return Loader.DONT_RETRY; return Loader.DONT_RETRY;
} }
configureRetry(); configureRetry();
int retryAction = currentLoadExtractedSamples ? Loader.RETRY_RESET_ERROR_COUNT : Loader.RETRY; int extractedSamplesCount = getExtractedSamplesCount();
currentLoadExtractedSamples = false; boolean madeProgress = extractedSamplesCount > extractedSamplesCountAtStartOfLoad;
return retryAction; extractedSamplesCountAtStartOfLoad = extractedSamplesCount;
return madeProgress ? Loader.RETRY_RESET_ERROR_COUNT : Loader.RETRY;
} }
// ExtractorOutput implementation. // ExtractorOutput implementation.
@Override @Override
public TrackOutput track(int id) { public TrackOutput track(int id) {
InternalTrackOutput sampleQueue = sampleQueues.get(id); DefaultTrackOutput sampleQueue = sampleQueues.get(id);
if (sampleQueue == null) { if (sampleQueue == null) {
sampleQueue = new InternalTrackOutput(allocator); sampleQueue = new DefaultTrackOutput(allocator);
sampleQueues.put(id, sampleQueue); sampleQueues.put(id, sampleQueue);
} }
return sampleQueue; return sampleQueue;
...@@ -605,7 +606,7 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu ...@@ -605,7 +606,7 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu
loadable.setLoadPosition(seekMap.getPosition(pendingResetPositionUs)); loadable.setLoadPosition(seekMap.getPosition(pendingResetPositionUs));
pendingResetPositionUs = C.UNSET_TIME_US; pendingResetPositionUs = C.UNSET_TIME_US;
} }
currentLoadExtractedSamples = false; extractedSamplesCountAtStartOfLoad = getExtractedSamplesCount();
loader.startLoading(loadable, this); loader.startLoading(loadable, this);
} }
...@@ -638,6 +639,14 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu ...@@ -638,6 +639,14 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu
} }
} }
private int getExtractedSamplesCount() {
int extractedSamplesCount = 0;
for (int i = 0; i < sampleQueues.size(); i++) {
extractedSamplesCount += sampleQueues.valueAt(i).getWriteIndex();
}
return extractedSamplesCount;
}
private boolean haveFormatsForAllTracks() { private boolean haveFormatsForAllTracks() {
for (int i = 0; i < sampleQueues.size(); i++) { for (int i = 0; i < sampleQueues.size(); i++) {
if (sampleQueues.valueAt(i).getFormat() == null) { if (sampleQueues.valueAt(i).getFormat() == null) {
...@@ -713,24 +722,6 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu ...@@ -713,24 +722,6 @@ public final class ExtractorSampleSource implements SampleSource, ExtractorOutpu
} }
/** /**
* Extension of {@link DefaultTrackOutput} that increments a shared counter of the total number
* of extracted samples.
*/
private class InternalTrackOutput extends DefaultTrackOutput {
public InternalTrackOutput(Allocator allocator) {
super(allocator);
}
@Override
public void sampleMetadata(long timeUs, int flags, int size, int offset, byte[] encryptionKey) {
super.sampleMetadata(timeUs, flags, size, offset, encryptionKey);
currentLoadExtractedSamples = true;
}
}
/**
* Loads the media stream and extracts sample data from it. * Loads the media stream and extracts sample data from it.
*/ */
private static class ExtractingLoadable implements Loadable { private static class ExtractingLoadable implements Loadable {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment