Commit 1f47fa83 by claincly Committed by Marc Baechinger

Round the frame rate in MediaFormat

Although MediaCodec claims supporting float frame rate, encoder init failed on
API21 Nexus 5. Since it's just a performance hint to the codec, it's OK to
generalize it to other API versions.

PiperOrigin-RevId: 458434650
parent da0a208b
......@@ -23,6 +23,7 @@ import static androidx.media3.common.util.Assertions.checkStateNotNull;
import static androidx.media3.common.util.Util.SDK_INT;
import static java.lang.Math.abs;
import static java.lang.Math.floor;
import static java.lang.Math.round;
import android.content.Context;
import android.media.MediaCodecInfo;
......@@ -231,7 +232,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
String mimeType = checkNotNull(format.sampleMimeType);
MediaFormat mediaFormat = MediaFormat.createVideoFormat(mimeType, format.width, format.height);
mediaFormat.setFloat(MediaFormat.KEY_FRAME_RATE, format.frameRate);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, round(format.frameRate));
mediaFormat.setInteger(
MediaFormat.KEY_BIT_RATE,
supportedVideoEncoderSettings.bitrate != VideoEncoderSettings.NO_VALUE
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment