diff options
author | Andreas Huber <andih@google.com> | 2012-09-18 10:36:32 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2012-09-19 09:28:08 -0700 |
commit | efbb781c15abf8e085f5ab8d39710bd58ea0b6e4 (patch) | |
tree | a2f28698970fc1b62495cee5d617e1037a0a957d /media/libmediaplayerservice | |
parent | 74e58c55bc5259b957a51f1bb44a5911ad1f8400 (diff) | |
download | frameworks_av-efbb781c15abf8e085f5ab8d39710bd58ea0b6e4.zip frameworks_av-efbb781c15abf8e085f5ab8d39710bd58ea0b6e4.tar.gz frameworks_av-efbb781c15abf8e085f5ab8d39710bd58ea0b6e4.tar.bz2 |
HDCP module binderized
Change-Id: I866768b1e3f3b232f1934a35b65f66befc12f3f6
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/Android.mk | 1 | ||||
-rw-r--r-- | media/libmediaplayerservice/HDCP.cpp | 18 | ||||
-rw-r--r-- | media/libmediaplayerservice/HDCP.h | 3 | ||||
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.cpp | 5 | ||||
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.h | 1 |
5 files changed, 26 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk index c7227b0..5b5ed71 100644 --- a/media/libmediaplayerservice/Android.mk +++ b/media/libmediaplayerservice/Android.mk @@ -9,6 +9,7 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ ActivityManager.cpp \ Crypto.cpp \ + HDCP.cpp \ MediaPlayerFactory.cpp \ MediaPlayerService.cpp \ MediaRecorderClient.cpp \ diff --git a/media/libmediaplayerservice/HDCP.cpp b/media/libmediaplayerservice/HDCP.cpp index 6f8a465..e7dea6e 100644 --- a/media/libmediaplayerservice/HDCP.cpp +++ b/media/libmediaplayerservice/HDCP.cpp @@ -36,13 +36,16 @@ HDCP::HDCP() return; } - typedef HDCPModule *(*CreateHDCPModuleFunc)(); + typedef HDCPModule *(*CreateHDCPModuleFunc)( + void *, HDCPModule::ObserverFunc); + CreateHDCPModuleFunc createHDCPModule = (CreateHDCPModuleFunc)dlsym(mLibHandle, "createHDCPModule"); if (createHDCPModule == NULL) { ALOGE("Unable to find symbol 'createHDCPModule'."); - } else if ((mHDCPModule = createHDCPModule()) == NULL) { + } else if ((mHDCPModule = createHDCPModule( + this, &HDCP::ObserveWrapper)) == NULL) { ALOGE("createHDCPModule failed."); } } @@ -97,5 +100,16 @@ status_t HDCP::encrypt( return mHDCPModule->encrypt(inData, size, streamCTR, outInputCTR, outData); } +// static +void HDCP::ObserveWrapper(void *me, int msg, int ext1, int ext2) { + static_cast<HDCP *>(me)->observe(msg, ext1, ext2); +} + +void HDCP::observe(int msg, int ext1, int ext2) { + if (mObserver != NULL) { + mObserver->notify(msg, ext1, ext2, NULL /* obj */); + } +} + } // namespace android diff --git a/media/libmediaplayerservice/HDCP.h b/media/libmediaplayerservice/HDCP.h index 2e27689..4ee664d 100644 --- a/media/libmediaplayerservice/HDCP.h +++ b/media/libmediaplayerservice/HDCP.h @@ -39,6 +39,9 @@ private: HDCPModule *mHDCPModule; sp<IHDCPObserver> mObserver; + static void ObserveWrapper(void *me, int msg, int ext1, int ext2); + void observe(int msg, int ext1, int ext2); + DISALLOW_EVIL_CONSTRUCTORS(HDCP); }; diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index 1be4edf..eaa44e2 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -72,6 +72,7 @@ #include <OMX.h> #include "Crypto.h" +#include "HDCP.h" #include "RemoteDisplay.h" namespace { @@ -281,6 +282,10 @@ sp<ICrypto> MediaPlayerService::makeCrypto() { return new Crypto; } +sp<IHDCP> MediaPlayerService::makeHDCP() { + return new HDCP; +} + sp<IRemoteDisplay> MediaPlayerService::listenForRemoteDisplay( const sp<IRemoteDisplayClient>& client, const String8& iface) { if (!checkPermission("android.permission.CONTROL_WIFI_DISPLAY")) { diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h index ca8a96f..6105ce4 100644 --- a/media/libmediaplayerservice/MediaPlayerService.h +++ b/media/libmediaplayerservice/MediaPlayerService.h @@ -250,6 +250,7 @@ public: virtual sp<IMemory> decode(int fd, int64_t offset, int64_t length, uint32_t *pSampleRate, int* pNumChannels, audio_format_t* pFormat); virtual sp<IOMX> getOMX(); virtual sp<ICrypto> makeCrypto(); + virtual sp<IHDCP> makeHDCP(); virtual sp<IRemoteDisplay> listenForRemoteDisplay(const sp<IRemoteDisplayClient>& client, const String8& iface); |