From e595268e98ee609899c71c4114fc098daa2ee1f4 Mon Sep 17 00:00:00 2001 From: Ronghua Wu Date: Thu, 30 Jul 2015 10:54:47 -0700 Subject: [PATCH] media: use blocks number to find closest size Bug: 22504214 Change-Id: I056e19ac5fdbdff2c5d297b600210c07ae5ed4f4 --- media/java/android/media/MediaCodecInfo.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java index 65d04507db67..8243d4041da5 100644 --- a/media/java/android/media/MediaCodecInfo.java +++ b/media/java/android/media/MediaCodecInfo.java @@ -1198,15 +1198,20 @@ public final class MediaCodecInfo { (double) mFrameRateRange.getUpper())); } + private int getBlockCount(int width, int height) { + return Utils.divUp(width, mBlockWidth) * Utils.divUp(height, mBlockHeight); + } + @NonNull private Size findClosestSize(int width, int height) { - int targetPixels = width * height; + int targetBlockCount = getBlockCount(width, height); Size closestSize = null; - int mimPixelsDiff = Integer.MAX_VALUE; + int minDiff = Integer.MAX_VALUE; for (Size size : mMeasuredFrameRates.keySet()) { - int pixelsDiff = Math.abs(targetPixels - size.getWidth() * size.getHeight()); - if (pixelsDiff < mimPixelsDiff) { - mimPixelsDiff = pixelsDiff; + int diff = Math.abs(targetBlockCount - + getBlockCount(size.getWidth(), size.getHeight())); + if (diff < minDiff) { + minDiff = diff; closestSize = size; } } -- 2.11.0