From 8844694dfd0a033472b98c00e8cbaf023f69d596 Mon Sep 17 00:00:00 2001 From: olly Date: Mon, 5 Nov 2018 10:11:27 -0800 Subject: [PATCH] Automated g4 rollback of changelist 219585084. *** Reason for rollback *** Rolling forward again as [] should fix issue that prompted the rollback *** Original change description *** Automated g4 rollback of changelist 219130576. *** Original change description *** Re-enable codec re-use Issue: #2826 *** *** ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=220124362 --- .../mediacodec/MediaCodecRenderer.java | 16 +++++++++++++--- .../video/MediaCodecVideoRenderer.java | 4 ++++ 2 files changed, 17 insertions(+), 3 deletions(-) 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 6ba2557ede2..2d936afc2a3 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 @@ -552,6 +552,16 @@ public final void setOperatingRate(float operatingRate) throws ExoPlaybackExcept @Override protected void onDisabled() { inputFormat = null; + if (drmSession != null || pendingDrmSession != null) { + // TODO: Do something better with this case. + onReset(); + } else { + flushOrReleaseCodec(); + } + } + + @Override + protected void onReset() { try { releaseCodec(); } finally { @@ -575,14 +585,14 @@ protected void onDisabled() { protected void releaseCodec() { availableCodecInfos = null; if (codec != null) { + codecInfo = null; + codecFormat = null; resetInputBuffer(); resetOutputBuffer(); resetCodecBuffers(); - codecHotswapDeadlineMs = C.TIME_UNSET; waitingForKeys = false; + codecHotswapDeadlineMs = C.TIME_UNSET; decodeOnlyPresentationTimestamps.clear(); - codecInfo = null; - codecFormat = null; decoderCounters.decoderReleaseCount++; try { codec.stop(); 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 29a75f06e5a..2851325c752 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 @@ -283,8 +283,12 @@ protected int supportsFormat(MediaCodecSelector mediaCodecSelector, @Override protected void onEnabled(boolean joining) throws ExoPlaybackException { super.onEnabled(joining); + int oldTunnelingAudioSessionId = tunnelingAudioSessionId; tunnelingAudioSessionId = getConfiguration().tunnelingAudioSessionId; tunneling = tunnelingAudioSessionId != C.AUDIO_SESSION_ID_UNSET; + if (tunnelingAudioSessionId != oldTunnelingAudioSessionId) { + releaseCodec(); + } eventDispatcher.enabled(decoderCounters); frameReleaseTimeHelper.enable(); }