diff options
| author | Henry Fang <quxiangfang@google.com> | 2019-01-31 22:36:48 +0000 |
|---|---|---|
| committer | Henry Fang <quxiangfang@google.com> | 2019-01-31 22:36:48 +0000 |
| commit | f6fff6b6ce376f1e44cd588c7b44c117e461183a (patch) | |
| tree | 0386759dcf8a17d372e26f4a9d2c16f37f22a12e /drm | |
| parent | a4f9d509c0283c1ba0c65b7839948356e30e8f88 (diff) | |
| download | frameworks_av-f6fff6b6ce376f1e44cd588c7b44c117e461183a.tar.gz frameworks_av-f6fff6b6ce376f1e44cd588c7b44c117e461183a.tar.bz2 frameworks_av-f6fff6b6ce376f1e44cd588c7b44c117e461183a.zip | |
Revert "Revert "Update plugin to use cas@1.1 hal""
This reverts commit a4f9d509c0283c1ba0c65b7839948356e30e8f88.
Reason for revert: <original CL isn't related to public API which triggered this revert, so revert this revert>
Change-Id: I31fda92c2915dc04bc100cb97d36cf4bead234b7
Diffstat (limited to 'drm')
| -rw-r--r-- | drm/mediacas/plugins/clearkey/ClearKeyCasPlugin.cpp | 42 | ||||
| -rw-r--r-- | drm/mediacas/plugins/clearkey/ClearKeyCasPlugin.h | 11 | ||||
| -rw-r--r-- | drm/mediacas/plugins/mock/MockCasPlugin.cpp | 23 | ||||
| -rw-r--r-- | drm/mediacas/plugins/mock/MockCasPlugin.h | 11 |
4 files changed, 84 insertions, 3 deletions
diff --git a/drm/mediacas/plugins/clearkey/ClearKeyCasPlugin.cpp b/drm/mediacas/plugins/clearkey/ClearKeyCasPlugin.cpp index 1558e8b8da..27bd631afe 100644 --- a/drm/mediacas/plugins/clearkey/ClearKeyCasPlugin.cpp +++ b/drm/mediacas/plugins/clearkey/ClearKeyCasPlugin.cpp @@ -65,7 +65,20 @@ status_t ClearKeyCasFactory::createPlugin( *plugin = new ClearKeyCasPlugin(appData, callback); return OK; } -/////////////////////////////////////////////////////////////////////////////// + +status_t ClearKeyCasFactory::createPlugin( + int32_t CA_system_id, + void *appData, + CasPluginCallbackExt callback, + CasPlugin **plugin) { + if (!isSystemIdSupported(CA_system_id)) { + return BAD_VALUE; + } + + *plugin = new ClearKeyCasPlugin(appData, callback); + return OK; +} +//////////////////////////////////////////////////////////////////////////////// bool ClearKeyDescramblerFactory::isSystemIdSupported( int32_t CA_system_id) const { return CA_system_id == sClearKeySystemId; @@ -88,6 +101,12 @@ ClearKeyCasPlugin::ClearKeyCasPlugin( ALOGV("CTOR"); } +ClearKeyCasPlugin::ClearKeyCasPlugin( + void *appData, CasPluginCallbackExt callback) + : mCallbackExt(callback), mAppData(appData) { + ALOGV("CTOR"); +} + ClearKeyCasPlugin::~ClearKeyCasPlugin() { ALOGV("DTOR"); ClearKeySessionLibrary::get()->destroyPlugin(this); @@ -167,8 +186,27 @@ status_t ClearKeyCasPlugin::sendEvent( // Echo the received event to the callback. // Clear key plugin doesn't use any event, echo'ing for testing only. if (mCallback != NULL) { - mCallback((void*)mAppData, event, arg, (uint8_t*)eventData.data(), eventData.size()); + mCallback((void*)mAppData, event, arg, (uint8_t*)eventData.data(), + eventData.size()); + } else if (mCallbackExt != NULL) { + mCallbackExt((void*)mAppData, event, arg, (uint8_t*)eventData.data(), + eventData.size(), NULL); + } + return OK; +} + +status_t ClearKeyCasPlugin::sendSessionEvent( + const CasSessionId &sessionId, int32_t event, + int arg, const CasData &eventData) { + ALOGV("sendSessionEvent: sessionId=%s, event=%d, arg=%d", + sessionIdToString(sessionId).string(), event, arg); + // Echo the received event to the callback. + // Clear key plugin doesn't use any event, echo'ing for testing only. + if (mCallbackExt != NULL) { + mCallbackExt((void*)mAppData, event, arg, (uint8_t*)eventData.data(), + eventData.size(), &sessionId); } + return OK; } diff --git a/drm/mediacas/plugins/clearkey/ClearKeyCasPlugin.h b/drm/mediacas/plugins/clearkey/ClearKeyCasPlugin.h index 389e1728d7..f48d5b1d13 100644 --- a/drm/mediacas/plugins/clearkey/ClearKeyCasPlugin.h +++ b/drm/mediacas/plugins/clearkey/ClearKeyCasPlugin.h @@ -47,6 +47,11 @@ public: void *appData, CasPluginCallback callback, CasPlugin **plugin) override; + virtual status_t createPlugin( + int32_t CA_system_id, + void *appData, + CasPluginCallbackExt callback, + CasPlugin **plugin) override; }; class ClearKeyDescramblerFactory : public DescramblerFactory { @@ -63,6 +68,7 @@ public: class ClearKeyCasPlugin : public CasPlugin { public: ClearKeyCasPlugin(void *appData, CasPluginCallback callback); + ClearKeyCasPlugin(void *appData, CasPluginCallbackExt callback); virtual ~ClearKeyCasPlugin(); virtual status_t setPrivateData( @@ -85,6 +91,10 @@ public: virtual status_t sendEvent( int32_t event, int32_t arg, const CasData &eventData) override; + virtual status_t sendSessionEvent( + const CasSessionId &sessionId, + int32_t event, int32_t arg, const CasData &eventData) override; + virtual status_t provision(const String8 &str) override; virtual status_t refreshEntitlements( @@ -94,6 +104,7 @@ private: Mutex mKeyFetcherLock; std::unique_ptr<KeyFetcher> mKeyFetcher; CasPluginCallback mCallback; + CasPluginCallbackExt mCallbackExt; void* mAppData; }; diff --git a/drm/mediacas/plugins/mock/MockCasPlugin.cpp b/drm/mediacas/plugins/mock/MockCasPlugin.cpp index 8404a83935..2964791413 100644 --- a/drm/mediacas/plugins/mock/MockCasPlugin.cpp +++ b/drm/mediacas/plugins/mock/MockCasPlugin.cpp @@ -60,6 +60,19 @@ status_t MockCasFactory::createPlugin( return OK; } +status_t MockCasFactory::createPlugin( + int32_t CA_system_id, + void* /*appData*/, + CasPluginCallbackExt /*callback*/, + CasPlugin **plugin) { + if (!isSystemIdSupported(CA_system_id)) { + return BAD_VALUE; + } + + *plugin = new MockCasPlugin(); + return OK; +} + /////////////////////////////////////////////////////////////////////////////// bool MockDescramblerFactory::isSystemIdSupported(int32_t CA_system_id) const { @@ -170,6 +183,16 @@ status_t MockCasPlugin::sendEvent( return OK; } +status_t MockCasPlugin::sendSessionEvent( + const CasSessionId &sessionId, int32_t event, + int /*arg*/, const CasData& /*eventData*/) { + ALOGV("sendSessionEvent: sessionId=%s, event=%d", + arrayToString(sessionId).string(), event); + Mutex::Autolock lock(mLock); + + return OK; +} + status_t MockCasPlugin::provision(const String8 &str) { ALOGV("provision: provisionString=%s", str.string()); Mutex::Autolock lock(mLock); diff --git a/drm/mediacas/plugins/mock/MockCasPlugin.h b/drm/mediacas/plugins/mock/MockCasPlugin.h index 81069906ed..74b540cc82 100644 --- a/drm/mediacas/plugins/mock/MockCasPlugin.h +++ b/drm/mediacas/plugins/mock/MockCasPlugin.h @@ -42,6 +42,11 @@ public: void *appData, CasPluginCallback callback, CasPlugin **plugin) override; + virtual status_t createPlugin( + int32_t CA_system_id, + void *appData, + CasPluginCallbackExt callback, + CasPlugin **plugin) override; }; class MockDescramblerFactory : public DescramblerFactory { @@ -80,7 +85,11 @@ public: virtual status_t sendEvent( int32_t event, int32_t arg, const CasData &eventData) override; - virtual status_t provision(const String8 &str) override; + virtual status_t sendSessionEvent( + const CasSessionId &sessionId, + int32_t event, int32_t arg, const CasData &eventData) override; + + virtual status_t provision(const String8 &str) override; virtual status_t refreshEntitlements( int32_t refreshType, const CasData &refreshData) override; |
