diff options
author | Glenn Kasten <gkasten@google.com> | 2011-03-23 14:34:31 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2011-03-23 16:08:18 -0700 |
commit | eabd34665adc284525fe7337ad5c56a8b92964ef (patch) | |
tree | b57c6292e86da2417332fee21a2b325413baf2c4 /media/libstagefright | |
parent | 975040cdfc9ffcae822e554faa8fc8e472b4c407 (diff) | |
download | frameworks_av-eabd34665adc284525fe7337ad5c56a8b92964ef.zip frameworks_av-eabd34665adc284525fe7337ad5c56a8b92964ef.tar.gz frameworks_av-eabd34665adc284525fe7337ad5c56a8b92964ef.tar.bz2 |
Bug 4159373 Use HDCP debug settings
Change-Id: Iefc0a0d4b574ee94fbc83bf74b57c1d3465c821c
Diffstat (limited to 'media/libstagefright')
-rw-r--r-- | media/libstagefright/AwesomePlayer.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 1f8de9f..bac1334 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 <utils/Log.h> @@ -50,6 +52,8 @@ #include <media/stagefright/foundation/ALooper.h> #include <media/stagefright/foundation/AMessage.h> +#include <cutils/properties.h> + #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(), |