Loading drm/libmediadrm/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ cc_library_shared { "SharedLibrary.cpp", "DrmHal.cpp", "CryptoHal.cpp", "DrmUtils.cpp", ], local_include_dirs: [ Loading Loading @@ -58,6 +59,12 @@ cc_library_shared { "libhidlbase", ], export_shared_lib_headers: [ "android.hardware.drm@1.0", "android.hardware.drm@1.1", "android.hardware.drm@1.2", ], cflags: [ "-Werror", "-Wall", Loading drm/libmediadrm/DrmSessionManager.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <binder/IServiceManager.h> #include <cutils/properties.h> #include <media/MediaResource.h> #include <mediadrm/DrmUtils.h> #include <mediadrm/DrmSessionManager.h> #include <unistd.h> #include <utils/String8.h> Loading Loading @@ -62,7 +63,8 @@ static std::vector<MediaResourceParcel> toResourceVec( } static sp<IResourceManagerService> getResourceManagerService() { if (property_get_bool("persist.device_config.media_native.mediadrmserver", 1)) { if (DrmUtils::UseDrmService()) { // Create ResourceManagerService object in mediadrmserver process return new android::media::ResourceManagerService(); } sp<IServiceManager> sm = defaultServiceManager(); Loading drm/libmediadrm/DrmUtils.cpp 0 → 100644 +85 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //#define LOG_NDEBUG 0 #define LOG_TAG "DrmUtils" #include <utils/String16.h> #include <binder/IInterface.h> #include <binder/IServiceManager.h> #include <cutils/properties.h> #include <mediadrm/CryptoHal.h> #include <mediadrm/DrmHal.h> #include <mediadrm/DrmUtils.h> #include <mediadrm/ICrypto.h> #include <mediadrm/IDrm.h> #include <mediadrm/IMediaDrmService.h> namespace android { namespace DrmUtils { namespace { template<typename Iface> sp<Iface> MakeObjectWithService(status_t *pstatus) { status_t err = OK; status_t &status = pstatus ? *pstatus : err; sp<IServiceManager> sm = defaultServiceManager(); sp<IBinder> binder = sm->getService(String16("media.drm")); sp<IMediaDrmService> service = interface_cast<IMediaDrmService>(binder); if (service == NULL) { status = UNKNOWN_ERROR; return NULL; } auto obj = service->makeObject<Iface>(); if (obj == NULL) { status = UNKNOWN_ERROR; return NULL; } status = obj->initCheck(); if (status != OK && status != NO_INIT) { return NULL; } return obj; } template<typename Iface, typename Hal> sp<Iface> MakeObject(status_t *pstatus) { if (UseDrmService()) { return MakeObjectWithService<Iface>(pstatus); } else { return new Hal(); } } } // namespace bool UseDrmService() { return property_get_bool("persist.device_config.media_native.mediadrmserver", true); } sp<IDrm> MakeDrm(status_t *pstatus) { return MakeObject<IDrm, DrmHal>(pstatus); } sp<ICrypto> MakeCrypto(status_t *pstatus) { return MakeObject<ICrypto, CryptoHal>(pstatus); } } // namespace DrmUtils } // namespace android drm/libmediadrm/IMediaDrmService.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -85,4 +85,14 @@ status_t BnMediaDrmService::onTransact( // ---------------------------------------------------------------------------- template<> sp<IDrm> IMediaDrmService::makeObject<IDrm>() { return makeDrm(); } template<> sp<ICrypto> IMediaDrmService::makeObject<ICrypto>() { return makeCrypto(); } } // namespace android drm/libmediadrm/include/mediadrm/IMediaDrmService.h +4 −0 Original line number Diff line number Diff line Loading @@ -33,8 +33,12 @@ class IMediaDrmService: public IInterface public: DECLARE_META_INTERFACE(MediaDrmService); virtual sp<ICrypto> makeCrypto() = 0; virtual sp<IDrm> makeDrm() = 0; template<typename I> sp<I> makeObject(); }; // ---------------------------------------------------------------------------- Loading Loading
drm/libmediadrm/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ cc_library_shared { "SharedLibrary.cpp", "DrmHal.cpp", "CryptoHal.cpp", "DrmUtils.cpp", ], local_include_dirs: [ Loading Loading @@ -58,6 +59,12 @@ cc_library_shared { "libhidlbase", ], export_shared_lib_headers: [ "android.hardware.drm@1.0", "android.hardware.drm@1.1", "android.hardware.drm@1.2", ], cflags: [ "-Werror", "-Wall", Loading
drm/libmediadrm/DrmSessionManager.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <binder/IServiceManager.h> #include <cutils/properties.h> #include <media/MediaResource.h> #include <mediadrm/DrmUtils.h> #include <mediadrm/DrmSessionManager.h> #include <unistd.h> #include <utils/String8.h> Loading Loading @@ -62,7 +63,8 @@ static std::vector<MediaResourceParcel> toResourceVec( } static sp<IResourceManagerService> getResourceManagerService() { if (property_get_bool("persist.device_config.media_native.mediadrmserver", 1)) { if (DrmUtils::UseDrmService()) { // Create ResourceManagerService object in mediadrmserver process return new android::media::ResourceManagerService(); } sp<IServiceManager> sm = defaultServiceManager(); Loading
drm/libmediadrm/DrmUtils.cpp 0 → 100644 +85 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //#define LOG_NDEBUG 0 #define LOG_TAG "DrmUtils" #include <utils/String16.h> #include <binder/IInterface.h> #include <binder/IServiceManager.h> #include <cutils/properties.h> #include <mediadrm/CryptoHal.h> #include <mediadrm/DrmHal.h> #include <mediadrm/DrmUtils.h> #include <mediadrm/ICrypto.h> #include <mediadrm/IDrm.h> #include <mediadrm/IMediaDrmService.h> namespace android { namespace DrmUtils { namespace { template<typename Iface> sp<Iface> MakeObjectWithService(status_t *pstatus) { status_t err = OK; status_t &status = pstatus ? *pstatus : err; sp<IServiceManager> sm = defaultServiceManager(); sp<IBinder> binder = sm->getService(String16("media.drm")); sp<IMediaDrmService> service = interface_cast<IMediaDrmService>(binder); if (service == NULL) { status = UNKNOWN_ERROR; return NULL; } auto obj = service->makeObject<Iface>(); if (obj == NULL) { status = UNKNOWN_ERROR; return NULL; } status = obj->initCheck(); if (status != OK && status != NO_INIT) { return NULL; } return obj; } template<typename Iface, typename Hal> sp<Iface> MakeObject(status_t *pstatus) { if (UseDrmService()) { return MakeObjectWithService<Iface>(pstatus); } else { return new Hal(); } } } // namespace bool UseDrmService() { return property_get_bool("persist.device_config.media_native.mediadrmserver", true); } sp<IDrm> MakeDrm(status_t *pstatus) { return MakeObject<IDrm, DrmHal>(pstatus); } sp<ICrypto> MakeCrypto(status_t *pstatus) { return MakeObject<ICrypto, CryptoHal>(pstatus); } } // namespace DrmUtils } // namespace android
drm/libmediadrm/IMediaDrmService.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -85,4 +85,14 @@ status_t BnMediaDrmService::onTransact( // ---------------------------------------------------------------------------- template<> sp<IDrm> IMediaDrmService::makeObject<IDrm>() { return makeDrm(); } template<> sp<ICrypto> IMediaDrmService::makeObject<ICrypto>() { return makeCrypto(); } } // namespace android
drm/libmediadrm/include/mediadrm/IMediaDrmService.h +4 −0 Original line number Diff line number Diff line Loading @@ -33,8 +33,12 @@ class IMediaDrmService: public IInterface public: DECLARE_META_INTERFACE(MediaDrmService); virtual sp<ICrypto> makeCrypto() = 0; virtual sp<IDrm> makeDrm() = 0; template<typename I> sp<I> makeObject(); }; // ---------------------------------------------------------------------------- Loading