diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ce5c751760..4c8f7b4ca2 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -25,6 +25,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 2190e1fcd5..da97a60c0a 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 @@ -758,12 +758,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