Use HEVC by default on MediaTek SoCs with PowerVR graphics

This commit is contained in:
Cameron Gutman 2018-06-14 22:55:10 -07:00
parent d726d939f4
commit af41021271

View File

@ -131,8 +131,8 @@ public class MediaCodecHelper {
} }
// Sony ATVs have broken MediaTek codecs (decoder hangs after rendering the first frame). // Sony ATVs have broken MediaTek codecs (decoder hangs after rendering the first frame).
// I know the Fire TV 2 works, so I'll just whitelist Amazon devices which seem // I know the Fire TV 2 and 3 works, so I'll just whitelist Amazon devices which seem
// to actually be tested. Ugh... // to actually be tested.
if (Build.MANUFACTURER.equalsIgnoreCase("Amazon")) { if (Build.MANUFACTURER.equalsIgnoreCase("Amazon")) {
whitelistedHevcDecoders.add("omx.mtk"); whitelistedHevcDecoders.add("omx.mtk");
whitelistedHevcDecoders.add("omx.amlogic"); whitelistedHevcDecoders.add("omx.amlogic");
@ -166,6 +166,10 @@ public class MediaCodecHelper {
} }
} }
private static boolean isPowerVR(String glRenderer) {
return glRenderer.toLowerCase().contains("powervr");
}
private static String getAdrenoVersionString(String glRenderer) { private static String getAdrenoVersionString(String glRenderer) {
glRenderer = glRenderer.toLowerCase().trim(); glRenderer = glRenderer.toLowerCase().trim();
@ -259,6 +263,16 @@ public class MediaCodecHelper {
else { else {
blacklistedDecoderPrefixes.add("OMX.qcom.video.decoder.hevc"); blacklistedDecoderPrefixes.add("OMX.qcom.video.decoder.hevc");
} }
// Older MediaTek SoCs have issues with HEVC rendering but the newer chips with
// PowerVR GPUs have good HEVC support.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isPowerVR(glRenderer)) {
LimeLog.info("Added omx.mtk to HEVC decoders based on PowerVR GPU");
whitelistedHevcDecoders.add("omx.mtk");
LimeLog.info("Added omx.mtk to RFI list for HEVC");
refFrameInvalidationHevcPrefixes.add("omx.mtk");
}
} }
initialized = true; initialized = true;