media: avoid recursion when evaluating profile support

Bug: 28671284
Bug: 29041205
Change-Id: Ia9b3596a122bd5ba554a4b4ede875ebcadc67b67
This commit is contained in:
Lajos Molnar
2016-05-31 16:02:57 -07:00
parent cd0aa9cda8
commit 87436bb67f

View File

@@ -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<String, Object> mapWithoutProfile = new HashMap<>(map);
mapWithoutProfile.remove(MediaFormat.KEY_PROFILE);
MediaFormat formatWithoutProfile = new MediaFormat(mapWithoutProfile);
if (levelCaps != null && !levelCaps.isFormatSupported(formatWithoutProfile)) {
return false;
}
}