diff --git a/libraries/common/src/main/java/androidx/media3/common/util/Util.java b/libraries/common/src/main/java/androidx/media3/common/util/Util.java index ef82b4e062..24f48712d0 100644 --- a/libraries/common/src/main/java/androidx/media3/common/util/Util.java +++ b/libraries/common/src/main/java/androidx/media3/common/util/Util.java @@ -2792,11 +2792,11 @@ public final class Util { } /** - * Returns the number of maximum pending input frames that are allowed on a {@link MediaCodec} - * encoder. + * Returns the number of maximum pending output frames that are allowed on a {@link MediaCodec} + * decoder. */ @UnstableApi - public static int getMaxPendingFramesCountForMediaCodecEncoders( + public static int getMaxPendingFramesCountForMediaCodecDecoders( Context context, String codecName, boolean requestedHdrToneMapping) { if (SDK_INT < 29 || context.getApplicationContext().getApplicationInfo().targetSdkVersion < 29) { @@ -2818,11 +2818,9 @@ public final class Util { // OMX video codecs should no longer exist from android.os.Build.DEVICE_INITIAL_SDK_INT 31+. return 5; } - if (requestedHdrToneMapping - && codecName.equals("c2.qti.hevc.decoder") - && MODEL.equals("SM-F936B")) { - // This decoder gets stuck if too many frames are rendered without being processed when - // tone-mapping HDR10. This value is experimentally determined. See also b/260408846. + if (requestedHdrToneMapping && codecName.equals("c2.qti.hevc.decoder")) { + // This decoder drops frames if too many frames are rendered without being processed when + // tone-mapping HDR. This value is experimentally determined. See also b/260408846. // TODO(b/260713009): Add API version check after bug is fixed on new API versions. return 12; } 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 23e96b6c9b..999d559e9d 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 @@ -2181,7 +2181,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { */ public void onCodecInitialized(String codecName) { videoFrameProcessorMaxPendingFrameCount = - Util.getMaxPendingFramesCountForMediaCodecEncoders( + Util.getMaxPendingFramesCountForMediaCodecDecoders( renderer.context, codecName, /* requestedHdrToneMapping= */ false); } diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java index 025aa20f8e..dda340e855 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java @@ -153,7 +153,7 @@ public final class DefaultCodec implements Codec { this.mediaCodec = mediaCodec; this.inputSurface = inputSurface; maxPendingFrameCount = - Util.getMaxPendingFramesCountForMediaCodecEncoders( + Util.getMaxPendingFramesCountForMediaCodecDecoders( context, mediaCodecName, requestedHdrToneMapping); }