From f149cb28a38cf6fc7a29ad0174b3dc10380c58cb Mon Sep 17 00:00:00 2001 From: Gilles Khouzam Date: Tue, 10 Dec 2024 11:49:27 -0800 Subject: [PATCH 1/3] Add MediaCodecInfo to MediaCodecRenderer::onReadyToInitializeCodec --- .../media3/exoplayer/mediacodec/MediaCodecRenderer.java | 5 +++-- .../media3/exoplayer/video/MediaCodecVideoRenderer.java | 2 +- .../media3/transformer/ExperimentalFrameExtractor.java | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java index 34ca459482..60c2c5611e 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java @@ -1216,7 +1216,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer { if (codecOperatingRate <= assumedMinimumCodecOperatingRate) { codecOperatingRate = CODEC_OPERATING_RATE_UNSET; } - onReadyToInitializeCodec(inputFormat); + onReadyToInitializeCodec(codecInfo, inputFormat); codecInitializingTimestamp = getClock().elapsedRealtime(); MediaCodecAdapter.Configuration configuration = getMediaCodecConfiguration(codecInfo, inputFormat, crypto, codecOperatingRate); @@ -1495,10 +1495,11 @@ public abstract class MediaCodecRenderer extends BaseRenderer { * *

The default implementation is a no-op. * + * @param codecInfo The {@link MediaCodecInfo} the codec which is being configured. * @param format The {@link Format} for which the codec is being configured. * @throws ExoPlaybackException If an error occurs preparing for initializing the codec. */ - protected void onReadyToInitializeCodec(Format format) throws ExoPlaybackException { + protected void onReadyToInitializeCodec(MediaCodecInfo codecInfo, Format format) throws ExoPlaybackException { // Do nothing. } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java index 569646c47f..e363df4a93 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java @@ -1214,7 +1214,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer @CallSuper @Override - protected void onReadyToInitializeCodec(Format format) throws ExoPlaybackException { + protected void onReadyToInitializeCodec(MediaCodecInfo codecInfo, Format format) throws ExoPlaybackException { if (videoSink != null && !videoSink.isInitialized()) { try { videoSink.initialize(format); diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ExperimentalFrameExtractor.java b/libraries/transformer/src/main/java/androidx/media3/transformer/ExperimentalFrameExtractor.java index 04f710866b..e9a645e4bc 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/ExperimentalFrameExtractor.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/ExperimentalFrameExtractor.java @@ -78,6 +78,7 @@ import androidx.media3.exoplayer.Renderer; import androidx.media3.exoplayer.SeekParameters; import androidx.media3.exoplayer.analytics.AnalyticsListener; import androidx.media3.exoplayer.mediacodec.MediaCodecAdapter; +import androidx.media3.exoplayer.mediacodec.MediaCodecInfo; import androidx.media3.exoplayer.mediacodec.MediaCodecSelector; import androidx.media3.exoplayer.source.MediaSource; import androidx.media3.exoplayer.video.MediaCodecVideoRenderer; @@ -662,12 +663,12 @@ public final class ExperimentalFrameExtractor { @CallSuper @Override - protected void onReadyToInitializeCodec(Format format) throws ExoPlaybackException { + protected void onReadyToInitializeCodec(MediaCodecInfo codecInfo, Format format) throws ExoPlaybackException { if (isTransferHdr(format.colorInfo) && toneMapHdrToSdr) { // Setting the VideoSink format to SDR_BT709_LIMITED tone maps to SDR. format = format.buildUpon().setColorInfo(SDR_BT709_LIMITED).build(); } - super.onReadyToInitializeCodec(format); + super.onReadyToInitializeCodec(codecInfo, format); } @Override From 55d9626b5aa3bf9dfbf76b510a8ab6744a579b4e Mon Sep 17 00:00:00 2001 From: microkatz Date: Wed, 11 Dec 2024 14:56:18 +0000 Subject: [PATCH 2/3] Format with google-java-format --- .../media3/exoplayer/mediacodec/MediaCodecRenderer.java | 3 ++- .../media3/exoplayer/video/MediaCodecVideoRenderer.java | 3 ++- .../media3/transformer/ExperimentalFrameExtractor.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java index 60c2c5611e..30daaf3d1e 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java @@ -1499,7 +1499,8 @@ public abstract class MediaCodecRenderer extends BaseRenderer { * @param format The {@link Format} for which the codec is being configured. * @throws ExoPlaybackException If an error occurs preparing for initializing the codec. */ - protected void onReadyToInitializeCodec(MediaCodecInfo codecInfo, Format format) throws ExoPlaybackException { + protected void onReadyToInitializeCodec(MediaCodecInfo codecInfo, Format format) + throws ExoPlaybackException { // Do nothing. } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java index e363df4a93..2e8725d7f0 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java @@ -1214,7 +1214,8 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer @CallSuper @Override - protected void onReadyToInitializeCodec(MediaCodecInfo codecInfo, Format format) throws ExoPlaybackException { + protected void onReadyToInitializeCodec(MediaCodecInfo codecInfo, Format format) + throws ExoPlaybackException { if (videoSink != null && !videoSink.isInitialized()) { try { videoSink.initialize(format); diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ExperimentalFrameExtractor.java b/libraries/transformer/src/main/java/androidx/media3/transformer/ExperimentalFrameExtractor.java index e9a645e4bc..a6748b65ae 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/ExperimentalFrameExtractor.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/ExperimentalFrameExtractor.java @@ -663,7 +663,8 @@ public final class ExperimentalFrameExtractor { @CallSuper @Override - protected void onReadyToInitializeCodec(MediaCodecInfo codecInfo, Format format) throws ExoPlaybackException { + protected void onReadyToInitializeCodec(MediaCodecInfo codecInfo, Format format) + throws ExoPlaybackException { if (isTransferHdr(format.colorInfo) && toneMapHdrToSdr) { // Setting the VideoSink format to SDR_BT709_LIMITED tone maps to SDR. format = format.buildUpon().setColorInfo(SDR_BT709_LIMITED).build(); From 2f880bf051d713026863a7e96af4bd34141e3878 Mon Sep 17 00:00:00 2001 From: microkatz Date: Wed, 11 Dec 2024 15:13:33 +0000 Subject: [PATCH 3/3] Added release note --- RELEASENOTES.md | 3 +++ .../media3/exoplayer/mediacodec/MediaCodecRenderer.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index fff06b960d..a020a024b7 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -30,6 +30,9 @@ * Enable sending `CmcdData` for manifest requests in adaptive streaming formats DASH, HLS, and SmoothStreaming ([#1951](https://github.com/androidx/media/issues/1951)). + * Provide `MediaCodecInfo` of the codec that will be initialized in + `MediaCodecRenderer.onReadyToInitializeCodec` + ([#1963](https://github.com/androidx/media/pull/1963)). * Transformer: * Update parameters of `VideoFrameProcessor.registerInputStream` and `VideoFrameProcessor.Listener.onInputStreamRegistered` to use `Format`. diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java index 30daaf3d1e..fddf1873f0 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java @@ -1495,7 +1495,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer { * *

The default implementation is a no-op. * - * @param codecInfo The {@link MediaCodecInfo} the codec which is being configured. + * @param codecInfo The {@link MediaCodecInfo} of the codec which will be initialized. * @param format The {@link Format} for which the codec is being configured. * @throws ExoPlaybackException If an error occurs preparing for initializing the codec. */