Commit e4617567 by olly Committed by Oliver Woodman

Rename DefaultTrackOutput to SampleQueue

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=158842843
parent 6362dfeb
...@@ -23,14 +23,13 @@ import com.google.android.exoplayer2.Format; ...@@ -23,14 +23,13 @@ import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.FormatHolder; import com.google.android.exoplayer2.FormatHolder;
import com.google.android.exoplayer2.decoder.DecoderInputBuffer; import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
import com.google.android.exoplayer2.extractor.DefaultExtractorInput; import com.google.android.exoplayer2.extractor.DefaultExtractorInput;
import com.google.android.exoplayer2.extractor.DefaultTrackOutput;
import com.google.android.exoplayer2.extractor.DefaultTrackOutput.UpstreamFormatChangedListener;
import com.google.android.exoplayer2.extractor.Extractor; import com.google.android.exoplayer2.extractor.Extractor;
import com.google.android.exoplayer2.extractor.ExtractorInput; import com.google.android.exoplayer2.extractor.ExtractorInput;
import com.google.android.exoplayer2.extractor.ExtractorOutput; import com.google.android.exoplayer2.extractor.ExtractorOutput;
import com.google.android.exoplayer2.extractor.PositionHolder; import com.google.android.exoplayer2.extractor.PositionHolder;
import com.google.android.exoplayer2.extractor.SeekMap; import com.google.android.exoplayer2.extractor.SeekMap;
import com.google.android.exoplayer2.extractor.TrackOutput; import com.google.android.exoplayer2.extractor.TrackOutput;
import com.google.android.exoplayer2.source.SampleQueue.UpstreamFormatChangedListener;
import com.google.android.exoplayer2.trackselection.TrackSelection; import com.google.android.exoplayer2.trackselection.TrackSelection;
import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.Allocator;
import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DataSource;
...@@ -71,7 +70,7 @@ import java.io.IOException; ...@@ -71,7 +70,7 @@ import java.io.IOException;
private final Runnable maybeFinishPrepareRunnable; private final Runnable maybeFinishPrepareRunnable;
private final Runnable onContinueLoadingRequestedRunnable; private final Runnable onContinueLoadingRequestedRunnable;
private final Handler handler; private final Handler handler;
private final SparseArray<DefaultTrackOutput> sampleQueues; private final SparseArray<SampleQueue> sampleQueues;
private Callback callback; private Callback callback;
private SeekMap seekMap; private SeekMap seekMap;
...@@ -345,7 +344,7 @@ import java.io.IOException; ...@@ -345,7 +344,7 @@ import java.io.IOException;
} }
/* package */ void skipData(int track, long positionUs) { /* package */ void skipData(int track, long positionUs) {
DefaultTrackOutput sampleQueue = sampleQueues.valueAt(track); SampleQueue sampleQueue = sampleQueues.valueAt(track);
if (loadingFinished && positionUs > sampleQueue.getLargestQueuedTimestampUs()) { if (loadingFinished && positionUs > sampleQueue.getLargestQueuedTimestampUs()) {
sampleQueue.skipAll(); sampleQueue.skipAll();
} else { } else {
...@@ -402,9 +401,9 @@ import java.io.IOException; ...@@ -402,9 +401,9 @@ import java.io.IOException;
@Override @Override
public TrackOutput track(int id, int type) { public TrackOutput track(int id, int type) {
DefaultTrackOutput trackOutput = sampleQueues.get(id); SampleQueue trackOutput = sampleQueues.get(id);
if (trackOutput == null) { if (trackOutput == null) {
trackOutput = new DefaultTrackOutput(allocator); trackOutput = new SampleQueue(allocator);
trackOutput.setUpstreamFormatChangeListener(this); trackOutput.setUpstreamFormatChangeListener(this);
sampleQueues.put(id, trackOutput); sampleQueues.put(id, trackOutput);
} }
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.google.android.exoplayer2.extractor; package com.google.android.exoplayer2.source;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
......
...@@ -13,14 +13,16 @@ ...@@ -13,14 +13,16 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.google.android.exoplayer2.extractor; package com.google.android.exoplayer2.source;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.FormatHolder; import com.google.android.exoplayer2.FormatHolder;
import com.google.android.exoplayer2.decoder.DecoderInputBuffer; import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
import com.google.android.exoplayer2.extractor.SampleMetadataQueue.SampleExtrasHolder; import com.google.android.exoplayer2.extractor.ExtractorInput;
import com.google.android.exoplayer2.extractor.TrackOutput;
import com.google.android.exoplayer2.source.SampleMetadataQueue.SampleExtrasHolder;
import com.google.android.exoplayer2.upstream.Allocation; import com.google.android.exoplayer2.upstream.Allocation;
import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.Allocator;
import com.google.android.exoplayer2.util.ParsableByteArray; import com.google.android.exoplayer2.util.ParsableByteArray;
...@@ -30,10 +32,9 @@ import java.nio.ByteBuffer; ...@@ -30,10 +32,9 @@ import java.nio.ByteBuffer;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
/** /**
* A {@link TrackOutput} that buffers extracted samples in a queue and allows for consumption from * A queue of media samples.
* that queue.
*/ */
public final class DefaultTrackOutput implements TrackOutput { public final class SampleQueue implements TrackOutput {
/** /**
* A listener for changes to the upstream format. * A listener for changes to the upstream format.
...@@ -81,7 +82,7 @@ public final class DefaultTrackOutput implements TrackOutput { ...@@ -81,7 +82,7 @@ public final class DefaultTrackOutput implements TrackOutput {
/** /**
* @param allocator An {@link Allocator} from which allocations for sample data can be obtained. * @param allocator An {@link Allocator} from which allocations for sample data can be obtained.
*/ */
public DefaultTrackOutput(Allocator allocator) { public SampleQueue(Allocator allocator) {
this.allocator = allocator; this.allocator = allocator;
allocationLength = allocator.getIndividualAllocationLength(); allocationLength = allocator.getIndividualAllocationLength();
metadataQueue = new SampleMetadataQueue(); metadataQueue = new SampleMetadataQueue();
......
...@@ -16,9 +16,9 @@ ...@@ -16,9 +16,9 @@
package com.google.android.exoplayer2.source.chunk; package com.google.android.exoplayer2.source.chunk;
import android.util.Log; import android.util.Log;
import com.google.android.exoplayer2.extractor.DefaultTrackOutput;
import com.google.android.exoplayer2.extractor.DummyTrackOutput; import com.google.android.exoplayer2.extractor.DummyTrackOutput;
import com.google.android.exoplayer2.extractor.TrackOutput; import com.google.android.exoplayer2.extractor.TrackOutput;
import com.google.android.exoplayer2.source.SampleQueue;
import com.google.android.exoplayer2.source.chunk.ChunkExtractorWrapper.TrackOutputProvider; import com.google.android.exoplayer2.source.chunk.ChunkExtractorWrapper.TrackOutputProvider;
/** /**
...@@ -29,22 +29,22 @@ import com.google.android.exoplayer2.source.chunk.ChunkExtractorWrapper.TrackOut ...@@ -29,22 +29,22 @@ import com.google.android.exoplayer2.source.chunk.ChunkExtractorWrapper.TrackOut
private static final String TAG = "BaseMediaChunkOutput"; private static final String TAG = "BaseMediaChunkOutput";
private final int[] trackTypes; private final int[] trackTypes;
private final DefaultTrackOutput[] trackOutputs; private final SampleQueue[] sampleQueues;
/** /**
* @param trackTypes The track types of the individual track outputs. * @param trackTypes The track types of the individual track outputs.
* @param trackOutputs The individual track outputs. * @param sampleQueues The individual sample queues.
*/ */
public BaseMediaChunkOutput(int[] trackTypes, DefaultTrackOutput[] trackOutputs) { public BaseMediaChunkOutput(int[] trackTypes, SampleQueue[] sampleQueues) {
this.trackTypes = trackTypes; this.trackTypes = trackTypes;
this.trackOutputs = trackOutputs; this.sampleQueues = sampleQueues;
} }
@Override @Override
public TrackOutput track(int id, int type) { public TrackOutput track(int id, int type) {
for (int i = 0; i < trackTypes.length; i++) { for (int i = 0; i < trackTypes.length; i++) {
if (type == trackTypes[i]) { if (type == trackTypes[i]) {
return trackOutputs[i]; return sampleQueues[i];
} }
} }
Log.e(TAG, "Unmatched track of type: " + type); Log.e(TAG, "Unmatched track of type: " + type);
...@@ -52,13 +52,13 @@ import com.google.android.exoplayer2.source.chunk.ChunkExtractorWrapper.TrackOut ...@@ -52,13 +52,13 @@ import com.google.android.exoplayer2.source.chunk.ChunkExtractorWrapper.TrackOut
} }
/** /**
* Returns the current absolute write indices of the individual track outputs. * Returns the current absolute write indices of the individual sample queues.
*/ */
public int[] getWriteIndices() { public int[] getWriteIndices() {
int[] writeIndices = new int[trackOutputs.length]; int[] writeIndices = new int[sampleQueues.length];
for (int i = 0; i < trackOutputs.length; i++) { for (int i = 0; i < sampleQueues.length; i++) {
if (trackOutputs[i] != null) { if (sampleQueues[i] != null) {
writeIndices[i] = trackOutputs[i].getWriteIndex(); writeIndices[i] = sampleQueues[i].getWriteIndex();
} }
} }
return writeIndices; return writeIndices;
...@@ -66,12 +66,12 @@ import com.google.android.exoplayer2.source.chunk.ChunkExtractorWrapper.TrackOut ...@@ -66,12 +66,12 @@ import com.google.android.exoplayer2.source.chunk.ChunkExtractorWrapper.TrackOut
/** /**
* Sets an offset that will be added to the timestamps (and sub-sample timestamps) of samples * Sets an offset that will be added to the timestamps (and sub-sample timestamps) of samples
* subsequently written to the track outputs. * subsequently written to the sample queues.
*/ */
public void setSampleOffsetUs(long sampleOffsetUs) { public void setSampleOffsetUs(long sampleOffsetUs) {
for (DefaultTrackOutput trackOutput : trackOutputs) { for (SampleQueue sampleQueue : sampleQueues) {
if (trackOutput != null) { if (sampleQueue != null) {
trackOutput.setSampleOffsetUs(sampleOffsetUs); sampleQueue.setSampleOffsetUs(sampleOffsetUs);
} }
} }
} }
......
...@@ -19,8 +19,8 @@ import com.google.android.exoplayer2.C; ...@@ -19,8 +19,8 @@ import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.FormatHolder; import com.google.android.exoplayer2.FormatHolder;
import com.google.android.exoplayer2.decoder.DecoderInputBuffer; import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
import com.google.android.exoplayer2.extractor.DefaultTrackOutput;
import com.google.android.exoplayer2.source.AdaptiveMediaSourceEventListener.EventDispatcher; import com.google.android.exoplayer2.source.AdaptiveMediaSourceEventListener.EventDispatcher;
import com.google.android.exoplayer2.source.SampleQueue;
import com.google.android.exoplayer2.source.SampleStream; import com.google.android.exoplayer2.source.SampleStream;
import com.google.android.exoplayer2.source.SequenceableLoader; import com.google.android.exoplayer2.source.SequenceableLoader;
import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.Allocator;
...@@ -49,8 +49,8 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S ...@@ -49,8 +49,8 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
private final ChunkHolder nextChunkHolder; private final ChunkHolder nextChunkHolder;
private final LinkedList<BaseMediaChunk> mediaChunks; private final LinkedList<BaseMediaChunk> mediaChunks;
private final List<BaseMediaChunk> readOnlyMediaChunks; private final List<BaseMediaChunk> readOnlyMediaChunks;
private final DefaultTrackOutput primarySampleQueue; private final SampleQueue primarySampleQueue;
private final DefaultTrackOutput[] embeddedSampleQueues; private final SampleQueue[] embeddedSampleQueues;
private final BaseMediaChunkOutput mediaChunkOutput; private final BaseMediaChunkOutput mediaChunkOutput;
private Format primaryDownstreamTrackFormat; private Format primaryDownstreamTrackFormat;
...@@ -85,19 +85,19 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S ...@@ -85,19 +85,19 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
readOnlyMediaChunks = Collections.unmodifiableList(mediaChunks); readOnlyMediaChunks = Collections.unmodifiableList(mediaChunks);
int embeddedTrackCount = embeddedTrackTypes == null ? 0 : embeddedTrackTypes.length; int embeddedTrackCount = embeddedTrackTypes == null ? 0 : embeddedTrackTypes.length;
embeddedSampleQueues = new DefaultTrackOutput[embeddedTrackCount]; embeddedSampleQueues = new SampleQueue[embeddedTrackCount];
embeddedTracksSelected = new boolean[embeddedTrackCount]; embeddedTracksSelected = new boolean[embeddedTrackCount];
int[] trackTypes = new int[1 + embeddedTrackCount]; int[] trackTypes = new int[1 + embeddedTrackCount];
DefaultTrackOutput[] sampleQueues = new DefaultTrackOutput[1 + embeddedTrackCount]; SampleQueue[] sampleQueues = new SampleQueue[1 + embeddedTrackCount];
primarySampleQueue = new DefaultTrackOutput(allocator); primarySampleQueue = new SampleQueue(allocator);
trackTypes[0] = primaryTrackType; trackTypes[0] = primaryTrackType;
sampleQueues[0] = primarySampleQueue; sampleQueues[0] = primarySampleQueue;
for (int i = 0; i < embeddedTrackCount; i++) { for (int i = 0; i < embeddedTrackCount; i++) {
DefaultTrackOutput trackOutput = new DefaultTrackOutput(allocator); SampleQueue sampleQueue = new SampleQueue(allocator);
embeddedSampleQueues[i] = trackOutput; embeddedSampleQueues[i] = sampleQueue;
sampleQueues[i + 1] = trackOutput; sampleQueues[i + 1] = sampleQueue;
trackTypes[i + 1] = embeddedTrackTypes[i]; trackTypes[i + 1] = embeddedTrackTypes[i];
} }
...@@ -192,7 +192,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S ...@@ -192,7 +192,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
} }
// TODO: For this to work correctly, the embedded streams must not discard anything from their // TODO: For this to work correctly, the embedded streams must not discard anything from their
// sample queues beyond the current read position of the primary stream. // sample queues beyond the current read position of the primary stream.
for (DefaultTrackOutput embeddedSampleQueue : embeddedSampleQueues) { for (SampleQueue embeddedSampleQueue : embeddedSampleQueues) {
embeddedSampleQueue.skipToKeyframeBefore(positionUs, true); embeddedSampleQueue.skipToKeyframeBefore(positionUs, true);
} }
} else { } else {
...@@ -204,7 +204,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S ...@@ -204,7 +204,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
loader.cancelLoading(); loader.cancelLoading();
} else { } else {
primarySampleQueue.reset(true); primarySampleQueue.reset(true);
for (DefaultTrackOutput embeddedSampleQueue : embeddedSampleQueues) { for (SampleQueue embeddedSampleQueue : embeddedSampleQueues) {
embeddedSampleQueue.reset(true); embeddedSampleQueue.reset(true);
} }
} }
...@@ -218,7 +218,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S ...@@ -218,7 +218,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
*/ */
public void release() { public void release() {
primarySampleQueue.disable(); primarySampleQueue.disable();
for (DefaultTrackOutput embeddedSampleQueue : embeddedSampleQueues) { for (SampleQueue embeddedSampleQueue : embeddedSampleQueues) {
embeddedSampleQueue.disable(); embeddedSampleQueue.disable();
} }
loader.release(); loader.release();
...@@ -280,7 +280,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S ...@@ -280,7 +280,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
loadable.bytesLoaded()); loadable.bytesLoaded());
if (!released) { if (!released) {
primarySampleQueue.reset(true); primarySampleQueue.reset(true);
for (DefaultTrackOutput embeddedSampleQueue : embeddedSampleQueues) { for (SampleQueue embeddedSampleQueue : embeddedSampleQueues) {
embeddedSampleQueue.reset(true); embeddedSampleQueue.reset(true);
} }
callback.onContinueLoadingRequested(this); callback.onContinueLoadingRequested(this);
...@@ -439,10 +439,10 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S ...@@ -439,10 +439,10 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
public final ChunkSampleStream<T> parent; public final ChunkSampleStream<T> parent;
private final DefaultTrackOutput sampleQueue; private final SampleQueue sampleQueue;
private final int index; private final int index;
public EmbeddedSampleStream(ChunkSampleStream<T> parent, DefaultTrackOutput sampleQueue, public EmbeddedSampleStream(ChunkSampleStream<T> parent, SampleQueue sampleQueue,
int index) { int index) {
this.parent = parent; this.parent = parent;
this.sampleQueue = sampleQueue; this.sampleQueue = sampleQueue;
......
...@@ -22,11 +22,11 @@ import com.google.android.exoplayer2.C; ...@@ -22,11 +22,11 @@ import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.FormatHolder; import com.google.android.exoplayer2.FormatHolder;
import com.google.android.exoplayer2.decoder.DecoderInputBuffer; import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
import com.google.android.exoplayer2.extractor.DefaultTrackOutput;
import com.google.android.exoplayer2.extractor.DefaultTrackOutput.UpstreamFormatChangedListener;
import com.google.android.exoplayer2.extractor.ExtractorOutput; import com.google.android.exoplayer2.extractor.ExtractorOutput;
import com.google.android.exoplayer2.extractor.SeekMap; import com.google.android.exoplayer2.extractor.SeekMap;
import com.google.android.exoplayer2.source.AdaptiveMediaSourceEventListener.EventDispatcher; import com.google.android.exoplayer2.source.AdaptiveMediaSourceEventListener.EventDispatcher;
import com.google.android.exoplayer2.source.SampleQueue;
import com.google.android.exoplayer2.source.SampleQueue.UpstreamFormatChangedListener;
import com.google.android.exoplayer2.source.SampleStream; import com.google.android.exoplayer2.source.SampleStream;
import com.google.android.exoplayer2.source.SequenceableLoader; import com.google.android.exoplayer2.source.SequenceableLoader;
import com.google.android.exoplayer2.source.TrackGroup; import com.google.android.exoplayer2.source.TrackGroup;
...@@ -81,7 +81,7 @@ import java.util.LinkedList; ...@@ -81,7 +81,7 @@ import java.util.LinkedList;
private final Loader loader; private final Loader loader;
private final EventDispatcher eventDispatcher; private final EventDispatcher eventDispatcher;
private final HlsChunkSource.HlsChunkHolder nextChunkHolder; private final HlsChunkSource.HlsChunkHolder nextChunkHolder;
private final SparseArray<DefaultTrackOutput> sampleQueues; private final SparseArray<SampleQueue> sampleQueues;
private final LinkedList<HlsMediaChunk> mediaChunks; private final LinkedList<HlsMediaChunk> mediaChunks;
private final Runnable maybeFinishPrepareRunnable; private final Runnable maybeFinishPrepareRunnable;
private final Handler handler; private final Handler handler;
...@@ -315,7 +315,7 @@ import java.util.LinkedList; ...@@ -315,7 +315,7 @@ import java.util.LinkedList;
} }
/* package */ void skipData(int group, long positionUs) { /* package */ void skipData(int group, long positionUs) {
DefaultTrackOutput sampleQueue = sampleQueues.valueAt(group); SampleQueue sampleQueue = sampleQueues.valueAt(group);
if (loadingFinished && positionUs > sampleQueue.getLargestQueuedTimestampUs()) { if (loadingFinished && positionUs > sampleQueue.getLargestQueuedTimestampUs()) {
sampleQueue.skipAll(); sampleQueue.skipAll();
} else { } else {
...@@ -471,15 +471,15 @@ import java.util.LinkedList; ...@@ -471,15 +471,15 @@ import java.util.LinkedList;
// ExtractorOutput implementation. Called by the loading thread. // ExtractorOutput implementation. Called by the loading thread.
@Override @Override
public DefaultTrackOutput track(int id, int type) { public SampleQueue track(int id, int type) {
if (sampleQueues.indexOfKey(id) >= 0) { if (sampleQueues.indexOfKey(id) >= 0) {
return sampleQueues.get(id); return sampleQueues.get(id);
} }
DefaultTrackOutput trackOutput = new DefaultTrackOutput(allocator); SampleQueue sampleQueue = new SampleQueue(allocator);
trackOutput.setUpstreamFormatChangeListener(this); sampleQueue.setUpstreamFormatChangeListener(this);
trackOutput.sourceId(upstreamChunkUid); sampleQueue.sourceId(upstreamChunkUid);
sampleQueues.put(id, trackOutput); sampleQueues.put(id, sampleQueue);
return trackOutput; return sampleQueue;
} }
@Override @Override
......
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