diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java index 27b0d89a3f..a35240668e 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java @@ -558,18 +558,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer { @Override protected void onDisabled() { - if (drmSession != null || pendingDrmSession != null) { - // TODO: Do something better with this case. - onReset(); - } else { - flushOrReleaseCodec(); - } - } - - @Override - protected void onReset() { format = null; - availableCodecInfos = null; try { releaseCodec(); } finally { @@ -591,6 +580,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer { } protected void releaseCodec() { + availableCodecInfos = null; codecHotswapDeadlineMs = C.TIME_UNSET; resetInputBuffer(); resetOutputBuffer(); @@ -1307,7 +1297,6 @@ public abstract class MediaCodecRenderer extends BaseRenderer { * @throws ExoPlaybackException If an error occurs releasing or initializing a codec. */ private void reinitializeCodec(boolean release) throws ExoPlaybackException { - availableCodecInfos = null; if (codecReceivedBuffers) { // Signal end of stream and wait for any final output buffers before re-initialization. codecReinitializationState = REINITIALIZATION_STATE_SIGNAL_END_OF_STREAM; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java index 18aeada04b..a0e794764a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java @@ -436,9 +436,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { setOutputSurfaceV23(codec, surface); } else { releaseCodec(); - if (state == STATE_ENABLED || state == STATE_STARTED) { - maybeInitCodec(); - } + maybeInitCodec(); } } if (surface != null && surface != dummySurface) {