diff --git a/RELEASENOTES.md b/RELEASENOTES.md index e085209e2d..8cd1e5fdd1 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -70,6 +70,13 @@ must be released without restoring them first. * Ensure `DefaultDrmSession` instances keep working even after their `DefaultDrmSessionManager` instance is released. + * Keep secure `MediaCodec` instances initialized when disabling (but not + resetting) `MediaCodecRenderer`. This helps re-use secure decoders in + more contexts, which avoids the 'black flash' caused by detaching a + `Surface` from a secure decoder on some devices + ([#8842](https://github.com/google/ExoPlayer/issues/8842)). It will also + result in DRM license refresh network requests while the player is + stopped if `Player#setForegroundMode` is true. * UI: * Keep subtitle language features embedded (e.g. rubies & tate-chu-yoko) in `Cue.text` even when `SubtitleView#setApplyEmbeddedStyles()` is 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 4eb750ecb6..bd9312798a 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 @@ -745,12 +745,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer { outputStreamStartPositionUs = C.TIME_UNSET; outputStreamOffsetUs = C.TIME_UNSET; pendingOutputStreamOffsetCount = 0; - if (sourceDrmSession != null || codecDrmSession != null) { - // TODO: Do something better with this case. - onReset(); - } else { - flushOrReleaseCodec(); - } + flushOrReleaseCodec(); } @Override