diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2021-10-05 17:33:32 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-10-05 17:33:32 +0000 |
commit | 31d3ee21882f14cd86cc5e9b8c056486a99c5248 (patch) | |
tree | 565dbb95c2e0d026e1822e79d4ef8a397ec54c17 | |
parent | d34ebacb369bf99f0f1a5388f3d6e0b79dcc808d (diff) | |
parent | b721e9b48db8fe7ab49cd4d1d6b7e3de929c079b (diff) | |
download | base-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.java | 26 |
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( |