From 30957df6355fcbfcd89e47e1df45492132855528 Mon Sep 17 00:00:00 2001 From: kimvde Date: Fri, 5 May 2023 14:36:50 +0000 Subject: [PATCH] Remove B-frame setting from DefaultEncoderFactory This setting is buggy on some devices (for example sm-n960f) PiperOrigin-RevId: 529712770 --- RELEASENOTES.md | 2 ++ .../androidx/media3/transformer/DefaultEncoderFactory.java | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 91e437b1d5..ac59972bec 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -121,6 +121,8 @@ an input frame was pending processing. * Query codecs via `MediaCodecList` instead of using `findDecoder/EncoderForFormat` utilities, to expand support. + * Remove B-frame configuration in `DefaultEncoderFactory` because it + doesn't work on some devices. * Muxer: * Add a new muxer library which can be used to create an MP4 container file. diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultEncoderFactory.java b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultEncoderFactory.java index 08259b5804..18d1936f07 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultEncoderFactory.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultEncoderFactory.java @@ -549,10 +549,10 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory { EncoderUtil.findHighestSupportedEncodingLevel( encoderInfo, mimeType, expectedEncodingProfile); if (supportedEncodingLevel != EncoderUtil.LEVEL_UNSET) { - // Use the highest supported profile and use B-frames. + // Use the highest supported profile. Don't configure B-frames, because it doesn't work on + // some devices. mediaFormat.setInteger(MediaFormat.KEY_PROFILE, expectedEncodingProfile); mediaFormat.setInteger(MediaFormat.KEY_LEVEL, supportedEncodingLevel); - mediaFormat.setInteger(MediaFormat.KEY_MAX_B_FRAMES, 1); } } else if (Util.SDK_INT >= 26) { int expectedEncodingProfile = MediaCodecInfo.CodecProfileLevel.AVCProfileHigh;