aboutsummaryrefslogtreecommitdiff
path: root/tuner
diff options
context:
space:
mode:
authorLive Channels Team <no-reply@google.com>2018-02-27 09:29:49 -0800
committerNick Chalko <nchalko@google.com>2018-03-13 21:01:47 +0000
commit16747f29f825cedc42aa69c42045ad00ef75b00a (patch)
tree8367ca333e78a6d7eb0604a5771ac24baff70e14 /tuner
parentdcb947689aac85a73a9a28c66f3e04a90a31b2df (diff)
downloadTV-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.java16
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();