From 1b11b64bb66b624f1bcfef89c4b6f6af75a06ff1 Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Wed, 23 Mar 2011 14:34:31 -0700 Subject: [PATCH] Bug 4159373 Use HDCP debug settings Change-Id: Iefc0a0d4b574ee94fbc83bf74b57c1d3465c821c --- media/libstagefright/AwesomePlayer.cpp | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 1f8de9f2762b5..bac1334615d8d 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#define DEBUG_HDCP + //#define LOG_NDEBUG 0 #define LOG_TAG "AwesomePlayer" #include @@ -50,6 +52,8 @@ #include #include +#include + #define USE_SURFACE_ALLOC 1 #define FRAME_DROP_FREQ 0 @@ -1192,9 +1196,42 @@ status_t AwesomePlayer::initVideoDecoder(uint32_t flags) { // (USE_SURFACE_ALLOC && (mSurface != 0) && // (mSurface->getFlags() & ISurfaceComposer::eProtectedByApp)) // will be true, but that part is already handled by SurfaceFlinger. + +#ifdef DEBUG_HDCP + // For debugging, we allow a system property to control the protected usage. + // In case of uninitialized or unexpected property, we default to "DRM only". + bool setProtectionBit = false; + char value[PROPERTY_VALUE_MAX]; + if (property_get("persist.sys.hdcp_checking", value, NULL)) { + if (!strcmp(value, "never")) { + // nop + } else if (!strcmp(value, "always")) { + setProtectionBit = true; + } else if (!strcmp(value, "drm-only")) { + if (mDecryptHandle != NULL) { + setProtectionBit = true; + } + // property value is empty, or unexpected value + } else { + if (mDecryptHandle != NULL) { + setProtectionBit = true; + } + } + // can' read property value + } else { + if (mDecryptHandle != NULL) { + setProtectionBit = true; + } + } + // note that usage bit is already cleared, so no need to clear it in the "else" case + if (setProtectionBit) { + flags |= OMXCodec::kEnableGrallocUsageProtected; + } +#else if (mDecryptHandle != NULL) { flags |= OMXCodec::kEnableGrallocUsageProtected; } +#endif LOGV("initVideoDecoder flags=0x%x", flags); mVideoSource = OMXCodec::Create( mClient.interface(), mVideoTrack->getFormat(),