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