diff --git a/RELEASENOTES.md b/RELEASENOTES.md index fff06b960d5..a020a024b7a 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 34ca4594820..fddf1873f0a 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 @@ private void initCodec(MediaCodecInfo codecInfo, @Nullable MediaCrypto crypto) t 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,12 @@ private boolean feedInputBuffer() throws ExoPlaybackException { * *
The default implementation is a no-op.
*
+ * @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.
*/
- 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 569646c47f7..2e8725d7f02 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 @@ protected float getCodecOperatingRateV23(
@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 04f710866b7..a6748b65ae6 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.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,13 @@ public void setVideoEffects(List