Index: media/base/android/java/src/org/chromium/media/MediaCodecUtil.java |
diff --git a/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java b/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java |
index 0c0d469e25459f0c6cf0efae2148e2345b3aa2c8..1ea6aa2b57a9dd7285383333c261335a58cf9677 100644 |
--- a/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java |
+++ b/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java |
@@ -68,8 +68,13 @@ class MediaCodecUtil { |
private static class MediaCodecListHelper implements Iterable<MediaCodecInfo> { |
@TargetApi(Build.VERSION_CODES.LOLLIPOP) |
public MediaCodecListHelper() { |
- if (hasNewMediaCodecList()) { |
- mCodecList = new MediaCodecList(MediaCodecList.ALL_CODECS).getCodecInfos(); |
+ if (supportsNewMediaCodecList()) { |
+ try { |
+ mCodecList = new MediaCodecList(MediaCodecList.ALL_CODECS).getCodecInfos(); |
+ } catch (RuntimeException e) { |
+ // Swallow the exception due to bad Android implementation and pretend |
+ // MediaCodecList is not supported. |
+ } |
} |
} |
@@ -90,10 +95,14 @@ class MediaCodecUtil { |
return MediaCodecList.getCodecInfoAt(index); |
} |
- private boolean hasNewMediaCodecList() { |
+ private static boolean supportsNewMediaCodecList() { |
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP; |
} |
+ private boolean hasNewMediaCodecList() { |
+ return supportsNewMediaCodecList() && mCodecList != null; |
+ } |
+ |
private MediaCodecInfo[] mCodecList; |
private class CodecInfoIterator implements Iterator<MediaCodecInfo> { |