Commit 7fb296da by tonihei Committed by Oliver Woodman

Initialize sample streams in FakeAdaptiveMediaPeriod.

This prevents NPE when release or stop is called before
tracks have been selected.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=179911907
parent ec71c05e
...@@ -44,13 +44,18 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod ...@@ -44,13 +44,18 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod
private ChunkSampleStream<FakeChunkSource>[] sampleStreams; private ChunkSampleStream<FakeChunkSource>[] sampleStreams;
private SequenceableLoader sequenceableLoader; private SequenceableLoader sequenceableLoader;
public FakeAdaptiveMediaPeriod(TrackGroupArray trackGroupArray, EventDispatcher eventDispatcher, public FakeAdaptiveMediaPeriod(
Allocator allocator, FakeChunkSource.Factory chunkSourceFactory, long durationUs) { TrackGroupArray trackGroupArray,
EventDispatcher eventDispatcher,
Allocator allocator,
FakeChunkSource.Factory chunkSourceFactory,
long durationUs) {
super(trackGroupArray); super(trackGroupArray);
this.eventDispatcher = eventDispatcher; this.eventDispatcher = eventDispatcher;
this.allocator = allocator; this.allocator = allocator;
this.chunkSourceFactory = chunkSourceFactory; this.chunkSourceFactory = chunkSourceFactory;
this.durationUs = durationUs; this.durationUs = durationUs;
this.sampleStreams = newSampleStreamArray(0);
} }
@Override @Override
...@@ -62,13 +67,12 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod ...@@ -62,13 +67,12 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod
} }
@Override @Override
public void prepare(Callback callback, long positionUs) { public synchronized void prepare(Callback callback, long positionUs) {
super.prepare(callback, positionUs); super.prepare(callback, positionUs);
this.callback = callback; this.callback = callback;
} }
@Override @Override
@SuppressWarnings("unchecked")
public long selectTracks(TrackSelection[] selections, boolean[] mayRetainStreamFlags, public long selectTracks(TrackSelection[] selections, boolean[] mayRetainStreamFlags,
SampleStream[] streams, boolean[] streamResetFlags, long positionUs) { SampleStream[] streams, boolean[] streamResetFlags, long positionUs) {
long returnPositionUs = super.selectTracks(selections, mayRetainStreamFlags, streams, long returnPositionUs = super.selectTracks(selections, mayRetainStreamFlags, streams,
...@@ -79,7 +83,7 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod ...@@ -79,7 +83,7 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod
validStreams.add((ChunkSampleStream<FakeChunkSource>) stream); validStreams.add((ChunkSampleStream<FakeChunkSource>) stream);
} }
} }
this.sampleStreams = validStreams.toArray(new ChunkSampleStream[validStreams.size()]); this.sampleStreams = validStreams.toArray(newSampleStreamArray(validStreams.size()));
this.sequenceableLoader = new CompositeSequenceableLoader(sampleStreams); this.sequenceableLoader = new CompositeSequenceableLoader(sampleStreams);
return returnPositionUs; return returnPositionUs;
} }
...@@ -131,4 +135,8 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod ...@@ -131,4 +135,8 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod
callback.onContinueLoadingRequested(this); callback.onContinueLoadingRequested(this);
} }
@SuppressWarnings("unchecked")
private static ChunkSampleStream<FakeChunkSource>[] newSampleStreamArray(int length) {
return new ChunkSampleStream[length];
}
} }
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