From ed188d1bc872cd1860a309e4131876b0a7fa9a87 Mon Sep 17 00:00:00 2001 From: olly Date: Fri, 15 Apr 2016 07:08:30 -0700 Subject: [PATCH] Apply video scaling mode correctly. Issue: #1428 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=119952373 --- .../android/exoplayer/MediaCodecAudioTrackRenderer.java | 2 +- .../google/android/exoplayer/MediaCodecTrackRenderer.java | 7 +++---- .../android/exoplayer/MediaCodecVideoTrackRenderer.java | 4 +++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java index d7bf9637d1..3e838ef087 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java @@ -254,7 +254,7 @@ public class MediaCodecAudioTrackRenderer extends MediaCodecTrackRenderer implem } @Override - protected void onOutputFormatChanged(MediaFormat outputFormat) { + protected void onOutputFormatChanged(MediaCodec codec, MediaFormat outputFormat) { boolean passthrough = passthroughMediaFormat != null; audioTrack.configure(passthrough ? passthroughMediaFormat : outputFormat, passthrough); } diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index c9b6b1f6d2..6af745647f 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -28,7 +28,6 @@ import android.media.MediaCodec; import android.media.MediaCodec.CodecException; import android.media.MediaCodec.CryptoException; import android.media.MediaCrypto; -import android.media.MediaFormat; import android.os.Handler; import android.os.SystemClock; @@ -705,10 +704,10 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { *

* The default implementation is a no-op. * + * @param codec The {@link MediaCodec} instance. * @param outputFormat The new output format. - * @throws ExoPlaybackException If an error occurs on output format change. */ - protected void onOutputFormatChanged(MediaFormat outputFormat) throws ExoPlaybackException { + protected void onOutputFormatChanged(MediaCodec codec, android.media.MediaFormat outputFormat) { // Do nothing. } @@ -849,7 +848,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { if (codecNeedsMonoChannelCountWorkaround) { format.setInteger(android.media.MediaFormat.KEY_CHANNEL_COUNT, 1); } - onOutputFormatChanged(format); + onOutputFormatChanged(codec, format); codecCounters.outputFormatChangedCount++; } diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java index a4c419fa71..cc00d701bb 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java @@ -391,7 +391,7 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { } @Override - protected void onOutputFormatChanged(MediaFormat outputFormat) { + protected void onOutputFormatChanged(MediaCodec codec, android.media.MediaFormat outputFormat) { boolean hasCrop = outputFormat.containsKey(KEY_CROP_RIGHT) && outputFormat.containsKey(KEY_CROP_LEFT) && outputFormat.containsKey(KEY_CROP_BOTTOM) && outputFormat.containsKey(KEY_CROP_TOP); @@ -416,6 +416,8 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { // On API level 20 and below the decoder does not apply the rotation. currentUnappliedRotationDegrees = pendingRotationDegrees; } + // Must be applied each time the output format changes. + codec.setVideoScalingMode(videoScalingMode); } @Override