From 32c5ea0643ce62d3c82cec65e3b633700ce40da4 Mon Sep 17 00:00:00 2001 From: olly Date: Tue, 20 Apr 2021 16:28:12 +0100 Subject: [PATCH] Adds Format to MediaCodecAdapter.Configuration. PiperOrigin-RevId: 369444747 --- .../android/exoplayer2/audio/MediaCodecAudioRenderer.java | 2 +- .../android/exoplayer2/mediacodec/MediaCodecAdapter.java | 7 ++++++- .../android/exoplayer2/video/MediaCodecVideoRenderer.java | 2 +- .../mediacodec/AsynchronousMediaCodecAdapterTest.java | 2 ++ .../exoplayer2/transformer/MediaCodecAdapterWrapper.java | 2 ++ 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java index 0d5379ed79..2fc8667bc5 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java @@ -362,7 +362,7 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media && !MimeTypes.AUDIO_RAW.equals(format.sampleMimeType); decryptOnlyCodecFormat = decryptOnlyCodecEnabled ? format : null; return new MediaCodecAdapter.Configuration( - codecInfo, mediaFormat, /* surface= */ null, crypto, /* flags= */ 0); + codecInfo, mediaFormat, format, /* surface= */ null, crypto, /* flags= */ 0); } @Override diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecAdapter.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecAdapter.java index 904ebba2d8..368444f81d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecAdapter.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecAdapter.java @@ -25,6 +25,7 @@ import android.view.Surface; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import com.google.android.exoplayer2.C; +import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.decoder.CryptoInfo; import java.io.IOException; import java.nio.ByteBuffer; @@ -37,11 +38,13 @@ import java.nio.ByteBuffer; */ public interface MediaCodecAdapter { /** Configuration parameters for a {@link MediaCodecAdapter}. */ - class Configuration { + final class Configuration { /** Information about the {@link MediaCodec} being configured. */ public final MediaCodecInfo codecInfo; /** The {@link MediaFormat} for which the codec is being configured. */ public final MediaFormat mediaFormat; + /** The {@link Format} for which the codec is being configured. */ + public final Format format; /** For video playbacks, the output where the object will render the decoded frames. */ @Nullable public final Surface surface; /** For DRM protected playbacks, a {@link MediaCrypto} to use for decryption. */ @@ -56,11 +59,13 @@ public interface MediaCodecAdapter { public Configuration( MediaCodecInfo codecInfo, MediaFormat mediaFormat, + Format format, @Nullable Surface surface, @Nullable MediaCrypto crypto, int flags) { this.codecInfo = codecInfo; this.mediaFormat = mediaFormat; + this.format = format; this.surface = surface; this.crypto = crypto; this.flags = flags; 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 56c53f3b26..26492bdf82 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 @@ -625,7 +625,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { surface = dummySurface; } return new MediaCodecAdapter.Configuration( - codecInfo, mediaFormat, surface, crypto, /* flags= */ 0); + codecInfo, mediaFormat, format, surface, crypto, /* flags= */ 0); } @Override diff --git a/library/core/src/test/java/com/google/android/exoplayer2/mediacodec/AsynchronousMediaCodecAdapterTest.java b/library/core/src/test/java/com/google/android/exoplayer2/mediacodec/AsynchronousMediaCodecAdapterTest.java index 0a19f7c9c5..74a7d1c987 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/mediacodec/AsynchronousMediaCodecAdapterTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/mediacodec/AsynchronousMediaCodecAdapterTest.java @@ -24,6 +24,7 @@ import android.media.MediaCodec; import android.media.MediaFormat; import android.os.HandlerThread; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.google.android.exoplayer2.Format; import java.lang.reflect.Constructor; import org.junit.After; import org.junit.Before; @@ -45,6 +46,7 @@ public class AsynchronousMediaCodecAdapterTest { new MediaCodecAdapter.Configuration( codecInfo, createMediaFormat("format"), + /* format= */ new Format.Builder().build(), /* surface= */ null, /* crypto= */ null, /* flags= */ 0); diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MediaCodecAdapterWrapper.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MediaCodecAdapterWrapper.java index c389fe9e40..3987fca812 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MediaCodecAdapterWrapper.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MediaCodecAdapterWrapper.java @@ -116,6 +116,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; new MediaCodecAdapter.Configuration( createPlaceholderMediaCodecInfo(), mediaFormat, + format, /* surface= */ null, /* crypto= */ null, /* flags= */ 0)); @@ -151,6 +152,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; new MediaCodecAdapter.Configuration( createPlaceholderMediaCodecInfo(), mediaFormat, + format, /* surface= */ null, /* crypto= */ null, /* flags= */ MediaCodec.CONFIGURE_FLAG_ENCODE));