summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2021-10-05 17:33:32 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-10-05 17:33:32 +0000
commit31d3ee21882f14cd86cc5e9b8c056486a99c5248 (patch)
tree565dbb95c2e0d026e1822e79d4ef8a397ec54c17
parentd34ebacb369bf99f0f1a5388f3d6e0b79dcc808d (diff)
parentb721e9b48db8fe7ab49cd4d1d6b7e3de929c079b (diff)
downloadbase-31d3ee21882f14cd86cc5e9b8c056486a99c5248.tar.gz
Merge "media: use MediaProperties.resolution_limit_32bit()" am: b721e9b48d
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1840914 Change-Id: Ib8b212601771c279a90eb8c29fb30bd1e5ecd0a3
-rw-r--r--media/java/android/media/MediaCodecInfo.java26
1 files changed, 17 insertions, 9 deletions
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index 9a82ab168492..49477b94cbe0 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -28,6 +28,7 @@ import android.compat.annotation.UnsupportedAppUsage;
import android.os.Build;
import android.os.Process;
import android.os.SystemProperties;
+import android.sysprop.MediaProperties;
import android.util.Log;
import android.util.Pair;
import android.util.Range;
@@ -196,13 +197,20 @@ public final class MediaCodecInfo {
private static final Range<Rational> POSITIVE_RATIONALS =
Range.create(new Rational(1, Integer.MAX_VALUE),
new Rational(Integer.MAX_VALUE, 1));
- private static final Range<Integer> SIZE_RANGE =
- Process.is64Bit() ? Range.create(1, 32768) : Range.create(1, 4096);
private static final Range<Integer> FRAME_RATE_RANGE = Range.create(0, 960);
private static final Range<Integer> BITRATE_RANGE = Range.create(0, 500000000);
private static final int DEFAULT_MAX_SUPPORTED_INSTANCES = 32;
private static final int MAX_SUPPORTED_INSTANCES_LIMIT = 256;
+ private static final class LazyHolder {
+ private static final Range<Integer> SIZE_RANGE = Process.is64Bit()
+ ? Range.create(1, 32768)
+ : Range.create(1, MediaProperties.resolution_limit_32bit().orElse(4096));
+ }
+ private static Range<Integer> getSizeRange() {
+ return LazyHolder.SIZE_RANGE;
+ }
+
// found stuff that is not supported by framework (=> this should not happen)
private static final int ERROR_UNRECOGNIZED = (1 << 0);
// found profile/level for which we don't have capability estimates
@@ -2234,12 +2242,12 @@ public final class MediaCodecInfo {
private void initWithPlatformLimits() {
mBitrateRange = BITRATE_RANGE;
- mWidthRange = SIZE_RANGE;
- mHeightRange = SIZE_RANGE;
+ mWidthRange = getSizeRange();
+ mHeightRange = getSizeRange();
mFrameRateRange = FRAME_RATE_RANGE;
- mHorizontalBlockRange = SIZE_RANGE;
- mVerticalBlockRange = SIZE_RANGE;
+ mHorizontalBlockRange = getSizeRange();
+ mVerticalBlockRange = getSizeRange();
// full positive ranges are supported as these get calculated
mBlockCountRange = POSITIVE_INTEGERS;
@@ -2253,7 +2261,7 @@ public final class MediaCodecInfo {
mHeightAlignment = 2;
mBlockWidth = 2;
mBlockHeight = 2;
- mSmallerDimensionUpperLimit = SIZE_RANGE.getUpper();
+ mSmallerDimensionUpperLimit = getSizeRange().getUpper();
}
private @Nullable List<PerformancePoint> getPerformancePoints(Map<String, Object> map) {
@@ -2494,10 +2502,10 @@ public final class MediaCodecInfo {
// codec supports profiles that we don't know.
// Use supplied values clipped to platform limits
if (widths != null) {
- mWidthRange = SIZE_RANGE.intersect(widths);
+ mWidthRange = getSizeRange().intersect(widths);
}
if (heights != null) {
- mHeightRange = SIZE_RANGE.intersect(heights);
+ mHeightRange = getSizeRange().intersect(heights);
}
if (counts != null) {
mBlockCountRange = POSITIVE_INTEGERS.intersect(