diff options
author | 2014-07-28 19:38:29 -0700 | |
---|---|---|
committer | 2014-07-30 20:15:03 +0000 | |
commit | cad266aad9a07206a59cebfadae3c9f9ec17fbcc (patch) | |
tree | 14ad478c756445064a21b306855311d3a1a65b91 | |
parent | fdcdd203fff09642aa3ba60e594e6efb3bdef88a (diff) |
fix for MediaCodecList bitrate range exception
Bug: 16627391
Change-Id: I8c5ba580d7b875d1e2a0ebbf398cf65dd5c4555f
-rw-r--r-- | media/java/android/media/MediaCodecInfo.java | 18 | ||||
-rw-r--r-- | media/java/android/media/MediaCodecList.java | 2 |
2 files changed, 16 insertions, 4 deletions
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java index 2a68510dcb55..b6e03f5b973b 100644 --- a/media/java/android/media/MediaCodecInfo.java +++ b/media/java/android/media/MediaCodecInfo.java @@ -1293,8 +1293,15 @@ public final class MediaCodecInfo { FR = 30; W = 22; H = 18; MBPS = 5940; FS = 396; BR = 128; break; case CodecProfileLevel.MPEG4Level3: FR = 30; W = 22; H = 18; MBPS = 11880; FS = 396; BR = 384; break; - // TODO while MPEG4 SP does not have level 4 or 5, - // some vendors report it + case CodecProfileLevel.MPEG4Level4: + case CodecProfileLevel.MPEG4Level4a: + case CodecProfileLevel.MPEG4Level5: + // While MPEG4 SP does not have level 4 or 5, some vendors + // report it. Use the same limits as level 3, but mark as + // unsupported. + FR = 30; W = 22; H = 18; MBPS = 11880; FS = 396; BR = 384; + supported = false; + break; default: Log.w(TAG, "Unrecognized profile/level " + profileLevel.profile + "/" @@ -1429,7 +1436,11 @@ public final class MediaCodecInfo { mFrameRateRange = Range.create(1, maxRate); } else if (mime.equalsIgnoreCase(MediaFormat.MIMETYPE_VIDEO_VP8) || mime.equalsIgnoreCase(MediaFormat.MIMETYPE_VIDEO_VP9)) { - maxBlocks = maxBlocksPerSecond = maxBps = Integer.MAX_VALUE; + maxBlocks = maxBlocksPerSecond = Integer.MAX_VALUE; + + // TODO: set to 100Mbps for now, need a number for VPX + maxBps = 100000000; + // profile levels are not indicative for VPx, but verify // them nonetheless for (CodecProfileLevel profileLevel: profileLevels) { @@ -1549,6 +1560,7 @@ public final class MediaCodecInfo { maxBlocks, maxBlocksPerSecond, 8, 8, 1, 1); } else { Log.w(TAG, "Unsupported mime " + mime); + maxBps = 64000; errors |= ERROR_UNSUPPORTED; } mBitrateRange = Range.create(1, maxBps); diff --git a/media/java/android/media/MediaCodecList.java b/media/java/android/media/MediaCodecList.java index f5d99e4f564e..d74f22d3f332 100644 --- a/media/java/android/media/MediaCodecList.java +++ b/media/java/android/media/MediaCodecList.java @@ -95,7 +95,7 @@ final public class MediaCodecList { new MediaCodecInfo.CodecCapabilities[supportedTypes.length]; int typeIx = 0; for (String type: supportedTypes) { - caps[typeIx] = getCodecCapabilities(index, type); + caps[typeIx++] = getCodecCapabilities(index, type); } return new MediaCodecInfo( getCodecName(index), isEncoder(index), caps); |