diff options
author | Live Channels Team <no-reply@google.com> | 2018-02-27 09:29:49 -0800 |
---|---|---|
committer | Nick Chalko <nchalko@google.com> | 2018-03-13 21:01:47 +0000 |
commit | 16747f29f825cedc42aa69c42045ad00ef75b00a (patch) | |
tree | 8367ca333e78a6d7eb0604a5771ac24baff70e14 /tuner | |
parent | dcb947689aac85a73a9a28c66f3e04a90a31b2df (diff) | |
download | TV-16747f29f825cedc42aa69c42045ad00ef75b00a.tar.gz |
Allow parallel reuse of media sources.
This is achieved by adding a BaseMediaSource which keeps a reference count of the
number of times the source has been prepared and forwards to the actual implementations
only once, such that only minimal changes are needed for each media source.
Issue:#3498
PiperOrigin-RevId: 187186691
Change-Id: I13c57d8950e2b7a77ca72e4eb361fba4a8fffc2d
Diffstat (limited to 'tuner')
-rw-r--r-- | tuner/src/com/android/tv/tuner/exoplayer/ExoPlayerSampleExtractor.java | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/tuner/src/com/android/tv/tuner/exoplayer/ExoPlayerSampleExtractor.java b/tuner/src/com/android/tv/tuner/exoplayer/ExoPlayerSampleExtractor.java index e10a2991..1e96f6e2 100644 --- a/tuner/src/com/android/tv/tuner/exoplayer/ExoPlayerSampleExtractor.java +++ b/tuner/src/com/android/tv/tuner/exoplayer/ExoPlayerSampleExtractor.java @@ -204,6 +204,7 @@ public class ExoPlayerSampleExtractor implements SampleExtractor { private static final int RETRY_INTERVAL_MS = 50; private final MediaSource mSampleSource; + private final MediaSource.Listener mSampleSourceListener; private MediaPeriod mMediaPeriod; private SampleStream[] mStreams; private boolean[] mTrackMetEos; @@ -215,17 +216,16 @@ public class ExoPlayerSampleExtractor implements SampleExtractor { public SourceReaderWorker(MediaSource sampleSource) { mSampleSource = sampleSource; - mSampleSource.prepareSource( - null, - false, + mSampleSourceListener = new MediaSource.Listener() { @Override public void onSourceInfoRefreshed( - MediaSource source, Timeline timeline, Object manifest) { - // Dynamic stream change is not supported yet. b/28169263 - // For now, this will cause EOS and playback reset. + MediaSource source, Timeline timeline, Object manifest) { + // Dynamic stream change is not supported yet. b/28169263 + // For now, this will cause EOS and playback reset. } - }); + }; + mSampleSource.prepareSource(null, false, mSampleSourceListener); mDecoderInputBuffer = new DecoderInputBuffer(DecoderInputBuffer.BUFFER_REPLACEMENT_MODE_NORMAL); mSampleHolder = new SampleHolder(SampleHolder.BUFFER_REPLACEMENT_MODE_NORMAL); @@ -382,7 +382,7 @@ public class ExoPlayerSampleExtractor implements SampleExtractor { case MSG_RELEASE: if (mMediaPeriod != null) { mSampleSource.releasePeriod(mMediaPeriod); - mSampleSource.releaseSource(); + mSampleSource.releaseSource(mSampleSourceListener); mMediaPeriod = null; } cleanUp(); |