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;