From 7e5d6debccc1406de14a353934b3659e52bfe1eb Mon Sep 17 00:00:00 2001 From: olly Date: Thu, 9 Jan 2020 17:28:05 +0000 Subject: [PATCH] Avoid OMX.qti.audio.decoder.flac Unfortunately devices such as the MI 8 do not provide an alternative working decoder. Some Vivo devices do provide one though. PiperOrigin-RevId: 288911897 --- .../exoplayer2/mediacodec/MediaCodecUtil.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecUtil.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecUtil.java index 07836672e5..b187e2cf72 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecUtil.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecUtil.java @@ -566,7 +566,9 @@ public final class MediaCodecUtil { } return 0; }); - } else if (Util.SDK_INT < 21 && decoderInfos.size() > 1) { + } + + if (Util.SDK_INT < 21 && decoderInfos.size() > 1) { String firstCodecName = decoderInfos.get(0).name; if ("OMX.SEC.mp3.dec".equals(firstCodecName) || "OMX.SEC.MP3.Decoder".equals(firstCodecName) @@ -578,6 +580,15 @@ public final class MediaCodecUtil { sortByScore(decoderInfos, decoderInfo -> decoderInfo.name.startsWith("OMX.google") ? 1 : 0); } } + + if (Util.SDK_INT < 30 && decoderInfos.size() > 1) { + String firstCodecName = decoderInfos.get(0).name; + // Prefer anything other than OMX.qti.audio.decoder.flac on older devices. See [Internal + // ref: b/147278539] and [Internal ref: b/147354613]. + if ("OMX.qti.audio.decoder.flac".equals(firstCodecName)) { + decoderInfos.add(decoderInfos.remove(0)); + } + } } /**