From 5f39b93d304e77b5d44f8f9c46a688bd0c8dc28c Mon Sep 17 00:00:00 2001 From: olly Date: Tue, 6 Sep 2016 03:31:09 -0700 Subject: [PATCH] Properly release sample streams for DASH ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=132301223 --- .../google/android/exoplayer2/ExoPlayerImplInternal.java | 4 ++-- .../android/exoplayer2/source/dash/DashMediaPeriod.java | 6 ++++++ .../android/exoplayer2/source/dash/DashMediaSource.java | 4 +++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java b/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java index 373f17c3c8..75af1eb242 100644 --- a/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java +++ b/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java @@ -626,12 +626,12 @@ import java.io.IOException; } } enabledRenderers = new Renderer[0]; + releasePeriodHoldersFrom(playingPeriodHolder != null ? playingPeriodHolder + : loadingPeriodHolder); if (mediaSource != null) { mediaSource.releaseSource(); mediaSource = null; } - releasePeriodHoldersFrom(playingPeriodHolder != null ? playingPeriodHolder - : loadingPeriodHolder); isTimelineReady = false; isTimelineEnded = false; playingPeriodHolder = null; diff --git a/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java b/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java index 7ae8d45591..c5a18b9d2b 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java @@ -91,6 +91,12 @@ import java.util.List; } } + public void release() { + for (ChunkSampleStream sampleStream : sampleStreams) { + sampleStream.release(); + } + } + @Override public void maybeThrowPrepareError() throws IOException { manifestLoaderErrorThrower.maybeThrowError(); diff --git a/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java index 61dbe4732a..a6e54ef4a1 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java @@ -182,7 +182,9 @@ public final class DashMediaSource implements MediaSource { @Override public void releasePeriod(MediaPeriod mediaPeriod) { - periodsById.remove(((DashMediaPeriod) mediaPeriod).id); + DashMediaPeriod dashMediaPeriod = (DashMediaPeriod) mediaPeriod; + dashMediaPeriod.release(); + periodsById.remove(dashMediaPeriod.id); } @Override