Add MediaCodecInfo to MediaCodecRenderer::onReadyToInitializeCodec

This commit is contained in:
Gilles Khouzam 2024-12-10 11:49:27 -08:00 committed by microkatz
parent 424b43d2eb
commit f149cb28a3
3 changed files with 7 additions and 5 deletions

View file

@ -1216,7 +1216,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
if (codecOperatingRate <= assumedMinimumCodecOperatingRate) { if (codecOperatingRate <= assumedMinimumCodecOperatingRate) {
codecOperatingRate = CODEC_OPERATING_RATE_UNSET; codecOperatingRate = CODEC_OPERATING_RATE_UNSET;
} }
onReadyToInitializeCodec(inputFormat); onReadyToInitializeCodec(codecInfo, inputFormat);
codecInitializingTimestamp = getClock().elapsedRealtime(); codecInitializingTimestamp = getClock().elapsedRealtime();
MediaCodecAdapter.Configuration configuration = MediaCodecAdapter.Configuration configuration =
getMediaCodecConfiguration(codecInfo, inputFormat, crypto, codecOperatingRate); getMediaCodecConfiguration(codecInfo, inputFormat, crypto, codecOperatingRate);
@ -1495,10 +1495,11 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
* *
* <p>The default implementation is a no-op. * <p>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. * @param format The {@link Format} for which the codec is being configured.
* @throws ExoPlaybackException If an error occurs preparing for initializing the codec. * @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. // Do nothing.
} }

View file

@ -1214,7 +1214,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer
@CallSuper @CallSuper
@Override @Override
protected void onReadyToInitializeCodec(Format format) throws ExoPlaybackException { protected void onReadyToInitializeCodec(MediaCodecInfo codecInfo, Format format) throws ExoPlaybackException {
if (videoSink != null && !videoSink.isInitialized()) { if (videoSink != null && !videoSink.isInitialized()) {
try { try {
videoSink.initialize(format); videoSink.initialize(format);

View file

@ -78,6 +78,7 @@ import androidx.media3.exoplayer.Renderer;
import androidx.media3.exoplayer.SeekParameters; import androidx.media3.exoplayer.SeekParameters;
import androidx.media3.exoplayer.analytics.AnalyticsListener; import androidx.media3.exoplayer.analytics.AnalyticsListener;
import androidx.media3.exoplayer.mediacodec.MediaCodecAdapter; import androidx.media3.exoplayer.mediacodec.MediaCodecAdapter;
import androidx.media3.exoplayer.mediacodec.MediaCodecInfo;
import androidx.media3.exoplayer.mediacodec.MediaCodecSelector; import androidx.media3.exoplayer.mediacodec.MediaCodecSelector;
import androidx.media3.exoplayer.source.MediaSource; import androidx.media3.exoplayer.source.MediaSource;
import androidx.media3.exoplayer.video.MediaCodecVideoRenderer; import androidx.media3.exoplayer.video.MediaCodecVideoRenderer;
@ -662,12 +663,12 @@ public final class ExperimentalFrameExtractor {
@CallSuper @CallSuper
@Override @Override
protected void onReadyToInitializeCodec(Format format) throws ExoPlaybackException { protected void onReadyToInitializeCodec(MediaCodecInfo codecInfo, Format format) throws ExoPlaybackException {
if (isTransferHdr(format.colorInfo) && toneMapHdrToSdr) { if (isTransferHdr(format.colorInfo) && toneMapHdrToSdr) {
// Setting the VideoSink format to SDR_BT709_LIMITED tone maps to SDR. // Setting the VideoSink format to SDR_BT709_LIMITED tone maps to SDR.
format = format.buildUpon().setColorInfo(SDR_BT709_LIMITED).build(); format = format.buildUpon().setColorInfo(SDR_BT709_LIMITED).build();
} }
super.onReadyToInitializeCodec(format); super.onReadyToInitializeCodec(codecInfo, format);
} }
@Override @Override