diff --git a/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java b/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java index cdbf0357..0e5f48fa 100644 --- a/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java +++ b/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java @@ -100,10 +100,11 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer { // for even required levels of HEVC. MediaCodecInfo decoderInfo = MediaCodecHelper.findProbableSafeDecoder("video/hevc", -1); if (decoderInfo != null) { - if (!MediaCodecHelper.decoderIsWhitelistedForHevc(decoderInfo.getName(), meteredNetwork, requestedHdr)) { + if (!MediaCodecHelper.decoderIsWhitelistedForHevc(decoderInfo.getName(), meteredNetwork)) { LimeLog.info("Found HEVC decoder, but it's not whitelisted - "+decoderInfo.getName()); - if (prefs.videoFormat == PreferenceConfiguration.FORCE_H265_ON) { + // HDR implies HEVC forced on, since HEVCMain10HDR10 is required for HDR + if (prefs.videoFormat == PreferenceConfiguration.FORCE_H265_ON || requestedHdr) { LimeLog.info("Forcing H265 enabled despite non-whitelisted decoder"); } else { diff --git a/app/src/main/java/com/limelight/binding/video/MediaCodecHelper.java b/app/src/main/java/com/limelight/binding/video/MediaCodecHelper.java index 6bc1d788..36b082f8 100644 --- a/app/src/main/java/com/limelight/binding/video/MediaCodecHelper.java +++ b/app/src/main/java/com/limelight/binding/video/MediaCodecHelper.java @@ -299,7 +299,7 @@ public class MediaCodecHelper { return isDecoderInList(refFrameInvalidationHevcPrefixes, decoderName); } - public static boolean decoderIsWhitelistedForHevc(String decoderName, boolean meteredData, boolean willStreamHdr) { + public static boolean decoderIsWhitelistedForHevc(String decoderName, boolean meteredData) { // TODO: Shield Tablet K1/LTE? // // NVIDIA does partial HEVC acceleration on the Shield Tablet. I don't know @@ -335,7 +335,7 @@ public class MediaCodecHelper { // typically because it can't support reference frame invalidation. // However, we will use it for HDR and for streaming over mobile networks // since it works fine otherwise. - if ((meteredData || willStreamHdr) && isDecoderInList(deprioritizedHevcDecoders, decoderName)) { + if (meteredData && isDecoderInList(deprioritizedHevcDecoders, decoderName)) { LimeLog.info("Selected deprioritized decoder"); return true; }