From 87436bb67fb56e7efa8c475d56a0cc8f97cf79da Mon Sep 17 00:00:00 2001 From: Lajos Molnar Date: Tue, 31 May 2016 16:02:57 -0700 Subject: [PATCH] media: avoid recursion when evaluating profile support Bug: 28671284 Bug: 29041205 Change-Id: Ia9b3596a122bd5ba554a4b4ede875ebcadc67b67 --- media/java/android/media/MediaCodecInfo.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java index 349d67ec91459..72fb1e9cad709 100644 --- a/media/java/android/media/MediaCodecInfo.java +++ b/media/java/android/media/MediaCodecInfo.java @@ -591,7 +591,12 @@ public final class MediaCodecInfo { } } levelCaps = createFromProfileLevel(mMime, profile, maxLevel); - if (levelCaps != null && !levelCaps.isFormatSupported(format)) { + // remove profile from this format otherwise levelCaps.isFormatSupported will + // get into this same conditon and loop forever. + Map mapWithoutProfile = new HashMap<>(map); + mapWithoutProfile.remove(MediaFormat.KEY_PROFILE); + MediaFormat formatWithoutProfile = new MediaFormat(mapWithoutProfile); + if (levelCaps != null && !levelCaps.isFormatSupported(formatWithoutProfile)) { return false; } }