Use the floor of the frame rate for capability checks

PiperOrigin-RevId: 255584000
This commit is contained in:
andrewlewis 2019-06-28 13:21:43 +01:00 committed by Oliver Woodman
parent ae0aeb046b
commit 6fe70ca43d

View File

@ -520,9 +520,15 @@ public final class MediaCodecInfo {
@TargetApi(21) @TargetApi(21)
private static boolean areSizeAndRateSupportedV21(VideoCapabilities capabilities, int width, private static boolean areSizeAndRateSupportedV21(VideoCapabilities capabilities, int width,
int height, double frameRate) { int height, double frameRate) {
return frameRate == Format.NO_VALUE || frameRate <= 0 if (frameRate == Format.NO_VALUE || frameRate <= 0) {
? capabilities.isSizeSupported(width, height) return capabilities.isSizeSupported(width, height);
: capabilities.areSizeAndRateSupported(width, height, frameRate); } else {
// The signaled frame rate may be slightly higher than the actual frame rate, so we take the
// floor to avoid situations where a range check in areSizeAndRateSupported fails due to
// slightly exceeding the limits for a standard format (e.g., 1080p at 30 fps).
double floorFrameRate = Math.floor(frameRate);
return capabilities.areSizeAndRateSupported(width, height, floorFrameRate);
}
} }
@TargetApi(23) @TargetApi(23)