Commit f1d4a4ca by claincly Committed by microkatz

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
(cherry picked from commit 821ab267)
parent d03fb394
...@@ -23,6 +23,7 @@ import static com.google.android.exoplayer2.util.Assertions.checkStateNotNull; ...@@ -23,6 +23,7 @@ import static com.google.android.exoplayer2.util.Assertions.checkStateNotNull;
import static com.google.android.exoplayer2.util.Util.SDK_INT; import static com.google.android.exoplayer2.util.Util.SDK_INT;
import static java.lang.Math.abs; import static java.lang.Math.abs;
import static java.lang.Math.floor; import static java.lang.Math.floor;
import static java.lang.Math.round;
import android.content.Context; import android.content.Context;
import android.media.MediaCodecInfo; import android.media.MediaCodecInfo;
...@@ -229,7 +230,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory { ...@@ -229,7 +230,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
String mimeType = checkNotNull(format.sampleMimeType); String mimeType = checkNotNull(format.sampleMimeType);
MediaFormat mediaFormat = MediaFormat.createVideoFormat(mimeType, format.width, format.height); 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.setInteger(
MediaFormat.KEY_BIT_RATE, MediaFormat.KEY_BIT_RATE,
supportedVideoEncoderSettings.bitrate != VideoEncoderSettings.NO_VALUE 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