Modify Android mediadrm and mediacrypto glue layer to use HIDL interface. Test: Play Movies (streaming and offline playback) Test: ANDROID_BUILD_TOP= ./android-gts/tools/gts-tradefed run gts -m GtsMediaTestCases Test: adb shell /system/bin/libwvdrmengine_hidl_test Test: adb shell /system/bin/libwvdrmmediacrypto_hidl_test Test: adb shell /system/bin/libwvdrmdrmplugin_hidl_test bug: 34628973 Change-Id: Icd5f2dd556acb9874697963b4d7d62cb7c943e74
62 lines
1.5 KiB
C++
62 lines
1.5 KiB
C++
//
|
|
// Copyright 2017 Google Inc. All Rights Reserved.
|
|
//
|
|
|
|
//#define LOG_NDEBUG 0
|
|
#define LOG_TAG "WVCdm"
|
|
#include <utils/Log.h>
|
|
|
|
#include "WVDrmFactory.h"
|
|
|
|
#include "wv_cdm_constants.h"
|
|
#include "WVCDMSingleton.h"
|
|
#include "wv_content_decryption_module.h"
|
|
#include "WVDrmPlugin.h"
|
|
#include "WVUUID.h"
|
|
|
|
namespace wvdrm {
|
|
namespace hardware {
|
|
namespace drm {
|
|
namespace V1_0 {
|
|
namespace widevine {
|
|
|
|
using ::android::hardware::drm::V1_0::Status;
|
|
using ::android::hardware::Void;
|
|
|
|
WVGenericCryptoInterface WVDrmFactory::sOemCryptoInterface;
|
|
|
|
Return<bool> WVDrmFactory::isCryptoSchemeSupported(
|
|
const hidl_array<uint8_t, 16>& uuid) {
|
|
return isWidevineUUID(uuid.data());
|
|
}
|
|
|
|
Return<bool> WVDrmFactory::isContentTypeSupported(
|
|
const hidl_string& initDataType) {
|
|
return wvcdm::WvContentDecryptionModule::IsSupported(initDataType.c_str());
|
|
}
|
|
|
|
Return<void> WVDrmFactory::createPlugin(
|
|
const hidl_array<uint8_t, 16>& uuid,
|
|
const hidl_string& appPackageName,
|
|
createPlugin_cb _hidl_cb) {
|
|
|
|
WVDrmPlugin *plugin = NULL;
|
|
if (!isCryptoSchemeSupported(uuid.data())) {
|
|
ALOGE("Widevine Drm HAL: failed to create drm plugin, " \
|
|
"invalid crypto scheme");
|
|
_hidl_cb(Status::BAD_VALUE, plugin);
|
|
return Void();
|
|
}
|
|
|
|
plugin = new WVDrmPlugin(getCDM(), appPackageName.c_str(),
|
|
&sOemCryptoInterface);
|
|
_hidl_cb(Status::OK, plugin);
|
|
return Void();
|
|
}
|
|
|
|
} // namespace widevine
|
|
} // namespace V1_0
|
|
} // namespace drm
|
|
} // namespace hardware
|
|
} // namespace wvdrm
|