Clarify format is supported by encoder.

#cleanup
#minor-release

PiperOrigin-RevId: 460688226
This commit is contained in:
samrobinson 2022-07-13 12:16:59 +00:00 committed by Rohit Singh
parent 40fd3ffa6c
commit a88426ae58

View File

@ -231,24 +231,34 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
} }
MediaCodecInfo encoderInfo = encoderAndClosestFormatSupport.encoder; MediaCodecInfo encoderInfo = encoderAndClosestFormatSupport.encoder;
format = encoderAndClosestFormatSupport.supportedFormat; Format encoderSupportedFormat = encoderAndClosestFormatSupport.supportedFormat;
VideoEncoderSettings supportedVideoEncoderSettings = VideoEncoderSettings supportedVideoEncoderSettings =
encoderAndClosestFormatSupport.supportedEncoderSettings; encoderAndClosestFormatSupport.supportedEncoderSettings;
String mimeType = checkNotNull(format.sampleMimeType); String mimeType = checkNotNull(encoderSupportedFormat.sampleMimeType);
MediaFormat mediaFormat = MediaFormat.createVideoFormat(mimeType, format.width, format.height); MediaFormat mediaFormat =
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, round(format.frameRate)); MediaFormat.createVideoFormat(
mimeType, encoderSupportedFormat.width, encoderSupportedFormat.height);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, round(encoderSupportedFormat.frameRate));
int bitrate; int bitrate;
if (supportedVideoEncoderSettings.enableHighQualityTargeting) { if (supportedVideoEncoderSettings.enableHighQualityTargeting) {
bitrate = bitrate =
new DeviceMappedEncoderBitrateProvider() new DeviceMappedEncoderBitrateProvider()
.getBitrate(encoderInfo.getName(), format.width, format.height, format.frameRate); .getBitrate(
encoderInfo.getName(),
encoderSupportedFormat.width,
encoderSupportedFormat.height,
encoderSupportedFormat.frameRate);
} else if (supportedVideoEncoderSettings.bitrate != VideoEncoderSettings.NO_VALUE) { } else if (supportedVideoEncoderSettings.bitrate != VideoEncoderSettings.NO_VALUE) {
bitrate = supportedVideoEncoderSettings.bitrate; bitrate = supportedVideoEncoderSettings.bitrate;
} else { } else {
bitrate = getSuggestedBitrate(format.width, format.height, format.frameRate); bitrate =
getSuggestedBitrate(
encoderSupportedFormat.width,
encoderSupportedFormat.height,
encoderSupportedFormat.frameRate);
} }
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, bitrate); mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, bitrate);
@ -267,7 +277,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
adjustMediaFormatForH264EncoderSettings(mediaFormat, encoderInfo); adjustMediaFormatForH264EncoderSettings(mediaFormat, encoderInfo);
} }
MediaFormatUtil.maybeSetColorInfo(mediaFormat, format.colorInfo); MediaFormatUtil.maybeSetColorInfo(mediaFormat, encoderSupportedFormat.colorInfo);
mediaFormat.setInteger( mediaFormat.setInteger(
MediaFormat.KEY_COLOR_FORMAT, supportedVideoEncoderSettings.colorProfile); MediaFormat.KEY_COLOR_FORMAT, supportedVideoEncoderSettings.colorProfile);
@ -303,7 +313,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
return new DefaultCodec( return new DefaultCodec(
context, context,
format, encoderSupportedFormat,
mediaFormat, mediaFormat,
encoderInfo.getName(), encoderInfo.getName(),
/* isDecoder= */ false, /* isDecoder= */ false,
@ -396,7 +406,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
VideoEncoderSettings.NO_VALUE, VideoEncoderSettings.NO_VALUE); VideoEncoderSettings.NO_VALUE, VideoEncoderSettings.NO_VALUE);
} }
Format supportedEncoderFormat = Format encoderSupportedFormat =
requestedFormat requestedFormat
.buildUpon() .buildUpon()
.setSampleMimeType(mimeType) .setSampleMimeType(mimeType)
@ -405,7 +415,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
.setAverageBitrate(closestSupportedBitrate) .setAverageBitrate(closestSupportedBitrate)
.build(); .build();
return new VideoEncoderQueryResult( return new VideoEncoderQueryResult(
pickedEncoderInfo, supportedEncoderFormat, supportedEncodingSettingBuilder.build()); pickedEncoderInfo, encoderSupportedFormat, supportedEncodingSettingBuilder.build());
} }
/** Returns a list of encoders that support the requested resolution most closely. */ /** Returns a list of encoders that support the requested resolution most closely. */