From 07d04171c3087d26d09c49c015a13ba20783b050 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Tue, 5 Dec 2017 17:38:25 -0800 Subject: [PATCH] Force HEVC enabled if HDR is requested --- .../limelight/binding/video/MediaCodecDecoderRenderer.java | 5 +++-- .../java/com/limelight/binding/video/MediaCodecHelper.java | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) 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; }