libwvhidl: upgrade to android.hardware.drm@1.4
Bug: 136119370 Test: GtsMediaTestCases MediaDrmTest#testRequiresSecureDecoder Change-Id: Iaaa7c225c0056904b5fd98c4557ec47f661b2c7d
This commit is contained in:
@@ -93,6 +93,7 @@ cc_defaults {
|
|||||||
"android.hardware.drm@1.1",
|
"android.hardware.drm@1.1",
|
||||||
"android.hardware.drm@1.2",
|
"android.hardware.drm@1.2",
|
||||||
"android.hardware.drm@1.3",
|
"android.hardware.drm@1.3",
|
||||||
|
"android.hardware.drm@1.4",
|
||||||
"libbase",
|
"libbase",
|
||||||
"libhidlbase",
|
"libhidlbase",
|
||||||
"liblog",
|
"liblog",
|
||||||
@@ -168,6 +169,39 @@ cc_binary {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Builds android.hardware.drm@1.4-service.widevine
|
||||||
|
//
|
||||||
|
cc_binary {
|
||||||
|
name: "android.hardware.drm@1.4-service.widevine",
|
||||||
|
defaults: [
|
||||||
|
"common_widevine_service-multilib-first",
|
||||||
|
"common_widevine_service-multilib-defaults",
|
||||||
|
],
|
||||||
|
|
||||||
|
srcs: ["src_hidl/service.cpp"],
|
||||||
|
init_rc: ["src_hidl/android.hardware.drm@1.4-service.widevine.rc"],
|
||||||
|
vintf_fragments: ["manifest_android.hardware.drm@1.4-service.widevine.xml"],
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Builds android.hardware.drm@1.4-service-lazy.widevine
|
||||||
|
//
|
||||||
|
cc_binary {
|
||||||
|
name: "android.hardware.drm@1.4-service-lazy.widevine",
|
||||||
|
defaults: [
|
||||||
|
"common_widevine_service-multilib-first",
|
||||||
|
"common_widevine_service-multilib-defaults",
|
||||||
|
],
|
||||||
|
|
||||||
|
srcs: ["src_hidl/serviceLazy.cpp"],
|
||||||
|
overrides: ["android.hardware.drm@1.4-service.widevine"],
|
||||||
|
init_rc: ["src_hidl/android.hardware.drm@1.4-service-lazy.widevine.rc"],
|
||||||
|
vintf_fragments: ["manifest_android.hardware.drm@1.4-service.widevine.xml"],
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// Builds libcdm_utils.a
|
// Builds libcdm_utils.a
|
||||||
//
|
//
|
||||||
@@ -323,6 +357,7 @@ cc_library_shared {
|
|||||||
"android.hardware.drm@1.1",
|
"android.hardware.drm@1.1",
|
||||||
"android.hardware.drm@1.2",
|
"android.hardware.drm@1.2",
|
||||||
"android.hardware.drm@1.3",
|
"android.hardware.drm@1.3",
|
||||||
|
"android.hardware.drm@1.4",
|
||||||
"android.hidl.memory@1.0",
|
"android.hidl.memory@1.0",
|
||||||
"libbase",
|
"libbase",
|
||||||
"libcrypto",
|
"libcrypto",
|
||||||
|
|||||||
@@ -8,12 +8,12 @@
|
|||||||
#define HIDL_TYPES_H_
|
#define HIDL_TYPES_H_
|
||||||
|
|
||||||
#include <android/hardware/drm/1.1/types.h>
|
#include <android/hardware/drm/1.1/types.h>
|
||||||
#include <android/hardware/drm/1.2/ICryptoPlugin.h>
|
|
||||||
#include <android/hardware/drm/1.2/IDrmPlugin.h>
|
|
||||||
#include <android/hardware/drm/1.2/IDrmPluginListener.h>
|
|
||||||
#include <android/hardware/drm/1.2/types.h>
|
#include <android/hardware/drm/1.2/types.h>
|
||||||
#include <android/hardware/drm/1.3/ICryptoFactory.h>
|
#include <android/hardware/drm/1.2/IDrmPluginListener.h>
|
||||||
#include <android/hardware/drm/1.3/IDrmFactory.h>
|
#include <android/hardware/drm/1.4/ICryptoFactory.h>
|
||||||
|
#include <android/hardware/drm/1.4/ICryptoPlugin.h>
|
||||||
|
#include <android/hardware/drm/1.4/IDrmFactory.h>
|
||||||
|
#include <android/hardware/drm/1.4/IDrmPlugin.h>
|
||||||
#include <hidl/HidlTransportSupport.h>
|
#include <hidl/HidlTransportSupport.h>
|
||||||
|
|
||||||
using ::android::hardware::configureRpcThreadpool;
|
using ::android::hardware::configureRpcThreadpool;
|
||||||
|
|||||||
@@ -12,16 +12,16 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_3 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
IDrmFactory* createDrmFactory();
|
::drm::V1_4::IDrmFactory* createDrmFactory();
|
||||||
ICryptoFactory* createCryptoFactory();
|
::drm::V1_4::ICryptoFactory* createCryptoFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_3
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -13,10 +13,10 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_3 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
struct WVCryptoFactory : public ICryptoFactory {
|
struct WVCryptoFactory : public ::drm::V1_4::ICryptoFactory {
|
||||||
public:
|
public:
|
||||||
WVCryptoFactory() {}
|
WVCryptoFactory() {}
|
||||||
virtual ~WVCryptoFactory() {}
|
virtual ~WVCryptoFactory() {}
|
||||||
@@ -34,7 +34,7 @@ struct WVCryptoFactory : public ICryptoFactory {
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_3
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -14,13 +14,13 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_3 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using ::android::hardware::hidl_handle;
|
using ::android::hardware::hidl_handle;
|
||||||
using ::android::hardware::hidl_vec;
|
using ::android::hardware::hidl_vec;
|
||||||
|
|
||||||
struct WVDrmFactory : public IDrmFactory {
|
struct WVDrmFactory : public ::drm::V1_4::IDrmFactory {
|
||||||
WVDrmFactory() {}
|
WVDrmFactory() {}
|
||||||
virtual ~WVDrmFactory() {}
|
virtual ~WVDrmFactory() {}
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ struct WVDrmFactory : public IDrmFactory {
|
|||||||
extern "C" IDrmFactory* HIDL_FETCH_IDrmFactory(const char* name);
|
extern "C" IDrmFactory* HIDL_FETCH_IDrmFactory(const char* name);
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_3
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2021 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.
|
||||||
|
-->
|
||||||
|
<manifest version="1.0" type="device">
|
||||||
|
<hal format="hidl">
|
||||||
|
<name>android.hardware.drm</name>
|
||||||
|
<transport>hwbinder</transport>
|
||||||
|
<fqname>@1.4::ICryptoFactory/widevine</fqname>
|
||||||
|
<fqname>@1.4::IDrmFactory/widevine</fqname>
|
||||||
|
</hal>
|
||||||
|
</manifest>
|
||||||
@@ -83,6 +83,7 @@ cc_library_static {
|
|||||||
"android.hardware.drm@1.1",
|
"android.hardware.drm@1.1",
|
||||||
"android.hardware.drm@1.2",
|
"android.hardware.drm@1.2",
|
||||||
"android.hardware.drm@1.3",
|
"android.hardware.drm@1.3",
|
||||||
|
"android.hardware.drm@1.4",
|
||||||
"android.hidl.memory@1.0",
|
"android.hidl.memory@1.0",
|
||||||
"libcrypto",
|
"libcrypto",
|
||||||
"libhidlmemory",
|
"libhidlmemory",
|
||||||
|
|||||||
@@ -16,12 +16,12 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_2 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using ::android::hidl::memory::V1_0::IMemory;
|
using ::android::hidl::memory::V1_0::IMemory;
|
||||||
|
|
||||||
struct WVCryptoPlugin : public ICryptoPlugin {
|
struct WVCryptoPlugin : public ::drm::V1_4::ICryptoPlugin {
|
||||||
WVCryptoPlugin(const void* data, size_t size,
|
WVCryptoPlugin(const void* data, size_t size,
|
||||||
const sp<wvcdm::WvContentDecryptionModule>& cdm);
|
const sp<wvcdm::WvContentDecryptionModule>& cdm);
|
||||||
virtual ~WVCryptoPlugin() {}
|
virtual ~WVCryptoPlugin() {}
|
||||||
@@ -75,7 +75,7 @@ struct WVCryptoPlugin : public ICryptoPlugin {
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_2
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ inline Status toStatus_1_0(Status_V1_2 status) {
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_2 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using android::hardware::drm::V1_2::widevine::toVector;
|
using android::hardware::drm::V1_2::widevine::toVector;
|
||||||
@@ -345,7 +345,7 @@ Status_V1_2 WVCryptoPlugin::attemptDecrypt(
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_2
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ LOCAL_SHARED_LIBRARIES := \
|
|||||||
android.hardware.drm@1.1 \
|
android.hardware.drm@1.1 \
|
||||||
android.hardware.drm@1.2 \
|
android.hardware.drm@1.2 \
|
||||||
android.hardware.drm@1.3 \
|
android.hardware.drm@1.3 \
|
||||||
|
android.hardware.drm@1.4 \
|
||||||
android.hidl.memory@1.0 \
|
android.hidl.memory@1.0 \
|
||||||
libbase \
|
libbase \
|
||||||
libbinder \
|
libbinder \
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_2 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using ::android::MemoryDealer;
|
using ::android::MemoryDealer;
|
||||||
@@ -637,7 +637,7 @@ TEST_F(WVCryptoPluginTest, DisallowsUnopenedSessionIdChanges) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_2
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ cc_library_static {
|
|||||||
"android.hardware.drm@1.1",
|
"android.hardware.drm@1.1",
|
||||||
"android.hardware.drm@1.2",
|
"android.hardware.drm@1.2",
|
||||||
"android.hardware.drm@1.3",
|
"android.hardware.drm@1.3",
|
||||||
|
"android.hardware.drm@1.4",
|
||||||
"android.hidl.memory@1.0",
|
"android.hidl.memory@1.0",
|
||||||
"libcrypto",
|
"libcrypto",
|
||||||
"liblog",
|
"liblog",
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_2 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using std::map;
|
using std::map;
|
||||||
@@ -34,7 +34,7 @@ using wvcdm::WvContentDecryptionModule;
|
|||||||
const OEMCrypto_Algorithm kInvalidCryptoAlgorithm =
|
const OEMCrypto_Algorithm kInvalidCryptoAlgorithm =
|
||||||
static_cast<OEMCrypto_Algorithm>(-1);
|
static_cast<OEMCrypto_Algorithm>(-1);
|
||||||
|
|
||||||
struct WVDrmPlugin : public IDrmPlugin, IDrmPluginListener,
|
struct WVDrmPlugin : public ::drm::V1_4::IDrmPlugin, IDrmPluginListener,
|
||||||
wvcdm::WvCdmEventListener {
|
wvcdm::WvCdmEventListener {
|
||||||
|
|
||||||
WVDrmPlugin(const sp<WvContentDecryptionModule>& cdm,
|
WVDrmPlugin(const sp<WvContentDecryptionModule>& cdm,
|
||||||
@@ -220,6 +220,11 @@ struct WVDrmPlugin : public IDrmPlugin, IDrmPluginListener,
|
|||||||
Return<void> sendSessionLostState(
|
Return<void> sendSessionLostState(
|
||||||
const hidl_vec<uint8_t>& sessionId) override;
|
const hidl_vec<uint8_t>& sessionId) override;
|
||||||
|
|
||||||
|
Return<bool> requiresSecureDecoder(const hidl_string& mime, SecurityLevel level)
|
||||||
|
override;
|
||||||
|
|
||||||
|
Return<bool> requiresSecureDecoderDefault(const hidl_string& mime) override;
|
||||||
|
|
||||||
// The following methods do not use hidl interface, it is used internally.
|
// The following methods do not use hidl interface, it is used internally.
|
||||||
virtual Status unprovisionDevice();
|
virtual Status unprovisionDevice();
|
||||||
|
|
||||||
@@ -484,7 +489,7 @@ struct WVDrmPlugin : public IDrmPlugin, IDrmPluginListener,
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_2
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ static const std::string kKeyOrigin = "origin";
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_2 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using android::hardware::drm::V1_2::widevine::toHidlVec;
|
using android::hardware::drm::V1_2::widevine::toHidlVec;
|
||||||
@@ -1926,6 +1926,35 @@ Return<void> WVDrmPlugin::sendSessionLostState(
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Return<bool> WVDrmPlugin::requiresSecureDecoder(
|
||||||
|
const hidl_string& mime, SecurityLevel level) {
|
||||||
|
if (!strncasecmp(mime.c_str(), "video/", 6)) {
|
||||||
|
// Type is video, so check level to see if we require a secure decoder.
|
||||||
|
return level == SecurityLevel::HW_SECURE_ALL
|
||||||
|
|| level == SecurityLevel::HW_SECURE_DECODE;
|
||||||
|
} else {
|
||||||
|
// Type is not video, so never require a secure decoder.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Return<bool> WVDrmPlugin::requiresSecureDecoderDefault(const hidl_string& mime) {
|
||||||
|
if (!strncasecmp(mime.c_str(), "video/", 6)) {
|
||||||
|
// Type is video, so check level to see if we require a secure decoder.
|
||||||
|
std::string level(mPropertySet.security_level());
|
||||||
|
|
||||||
|
if (level == kResetSecurityLevel) {
|
||||||
|
mCDM->QueryStatus(wvcdm::kLevelDefault,
|
||||||
|
wvcdm::QUERY_KEY_SECURITY_LEVEL, &level);
|
||||||
|
}
|
||||||
|
|
||||||
|
return level == wvcdm::QUERY_VALUE_SECURITY_LEVEL_L1;
|
||||||
|
} else {
|
||||||
|
// Type is not video, so never require a secure decoder.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void WVDrmPlugin::OnSessionRenewalNeeded(const CdmSessionId& cdmSessionId) {
|
void WVDrmPlugin::OnSessionRenewalNeeded(const CdmSessionId& cdmSessionId) {
|
||||||
const std::vector<uint8_t> sessionId = StrToVector(cdmSessionId);
|
const std::vector<uint8_t> sessionId = StrToVector(cdmSessionId);
|
||||||
const hidl_vec<uint8_t> data; // data is ignored
|
const hidl_vec<uint8_t> data; // data is ignored
|
||||||
@@ -2313,7 +2342,7 @@ uint32_t WVDrmPlugin::CdmIdentifierBuilder::getNextUniqueId() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_2
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ LOCAL_SHARED_LIBRARIES := \
|
|||||||
android.hardware.drm@1.1 \
|
android.hardware.drm@1.1 \
|
||||||
android.hardware.drm@1.2 \
|
android.hardware.drm@1.2 \
|
||||||
android.hardware.drm@1.3 \
|
android.hardware.drm@1.3 \
|
||||||
|
android.hardware.drm@1.4 \
|
||||||
android.hidl.memory@1.0 \
|
android.hidl.memory@1.0 \
|
||||||
libbinder \
|
libbinder \
|
||||||
libbase \
|
libbase \
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_2 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using android::hardware::drm::V1_2::widevine::toHidlVec;
|
using android::hardware::drm::V1_2::widevine::toHidlVec;
|
||||||
@@ -3427,7 +3427,7 @@ TEST_F(WVDrmPluginTest, RemoveOfflineLicense) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_2
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -12,22 +12,22 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_3 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
IDrmFactory* createDrmFactory() {
|
::drm::V1_4::IDrmFactory* createDrmFactory() {
|
||||||
return new WVDrmFactory();
|
return new WVDrmFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
ICryptoFactory* createCryptoFactory() {
|
::drm::V1_4::ICryptoFactory* createCryptoFactory() {
|
||||||
return new WVCryptoFactory();
|
return new WVCryptoFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_3
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_3 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using wvdrm::hardware::drm::V1_2::widevine::WVCryptoPlugin;
|
using wvdrm::hardware::drm::V1_4::widevine::WVCryptoPlugin;
|
||||||
|
|
||||||
Return<bool> WVCryptoFactory::isCryptoSchemeSupported(
|
Return<bool> WVCryptoFactory::isCryptoSchemeSupported(
|
||||||
const hidl_array<uint8_t, 16>& uuid) {
|
const hidl_array<uint8_t, 16>& uuid) {
|
||||||
@@ -54,7 +54,7 @@ Return<void> WVCryptoFactory::createPlugin(
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_3
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -24,10 +24,10 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_3 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using wvdrm::hardware::drm::V1_2::widevine::WVDrmPlugin;
|
using wvdrm::hardware::drm::V1_4::widevine::WVDrmPlugin;
|
||||||
|
|
||||||
WVGenericCryptoInterface WVDrmFactory::sOemCryptoInterface;
|
WVGenericCryptoInterface WVDrmFactory::sOemCryptoInterface;
|
||||||
|
|
||||||
@@ -269,7 +269,7 @@ Return<void> WVDrmFactory::debug(const hidl_handle& fd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_3
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
on property:init.svc.mediadrm=running
|
||||||
|
mkdir /data/vendor/mediadrm 0770 media mediadrm
|
||||||
|
start vendor.move_data_sh
|
||||||
|
|
||||||
|
service vendor.move_data_sh /system/bin/move_widevine_data.sh
|
||||||
|
class late_start
|
||||||
|
user media
|
||||||
|
group media mediadrm system
|
||||||
|
disabled
|
||||||
|
oneshot
|
||||||
|
|
||||||
|
service vendor.drm-widevine-hal-1-4 /vendor/bin/hw/android.hardware.drm@1.4-service-lazy.widevine
|
||||||
|
interface android.hardware.drm@1.0::ICryptoFactory widevine
|
||||||
|
interface android.hardware.drm@1.0::IDrmFactory widevine
|
||||||
|
interface android.hardware.drm@1.1::ICryptoFactory widevine
|
||||||
|
interface android.hardware.drm@1.1::IDrmFactory widevine
|
||||||
|
interface android.hardware.drm@1.2::ICryptoFactory widevine
|
||||||
|
interface android.hardware.drm@1.2::IDrmFactory widevine
|
||||||
|
interface android.hardware.drm@1.3::ICryptoFactory widevine
|
||||||
|
interface android.hardware.drm@1.3::IDrmFactory widevine
|
||||||
|
interface android.hardware.drm@1.4::ICryptoFactory widevine
|
||||||
|
interface android.hardware.drm@1.4::IDrmFactory widevine
|
||||||
|
interface android.hidl.base@1.0::IBase widevine
|
||||||
|
oneshot
|
||||||
|
disabled
|
||||||
|
class hal
|
||||||
|
user media
|
||||||
|
group media mediadrm drmrpc system
|
||||||
|
ioprio rt 4
|
||||||
|
writepid /dev/cpuset/foreground/tasks
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
on property:init.svc.mediadrm=running
|
||||||
|
mkdir /data/vendor/mediadrm 0770 media mediadrm
|
||||||
|
start vendor.move_data_sh
|
||||||
|
|
||||||
|
service vendor.move_data_sh /system/bin/move_widevine_data.sh
|
||||||
|
class late_start
|
||||||
|
user media
|
||||||
|
group media mediadrm system
|
||||||
|
disabled
|
||||||
|
oneshot
|
||||||
|
|
||||||
|
service vendor.drm-widevine-hal-1-4 /vendor/bin/hw/android.hardware.drm@1.4-service.widevine
|
||||||
|
interface android.hardware.drm@1.0::ICryptoFactory widevine
|
||||||
|
interface android.hardware.drm@1.0::IDrmFactory widevine
|
||||||
|
interface android.hardware.drm@1.1::ICryptoFactory widevine
|
||||||
|
interface android.hardware.drm@1.1::IDrmFactory widevine
|
||||||
|
interface android.hardware.drm@1.2::ICryptoFactory widevine
|
||||||
|
interface android.hardware.drm@1.2::IDrmFactory widevine
|
||||||
|
interface android.hardware.drm@1.3::ICryptoFactory widevine
|
||||||
|
interface android.hardware.drm@1.3::IDrmFactory widevine
|
||||||
|
interface android.hardware.drm@1.4::ICryptoFactory widevine
|
||||||
|
interface android.hardware.drm@1.4::IDrmFactory widevine
|
||||||
|
interface android.hidl.base@1.0::IBase widevine
|
||||||
|
class hal
|
||||||
|
user media
|
||||||
|
group media mediadrm drmrpc system
|
||||||
|
ioprio rt 4
|
||||||
|
writepid /dev/cpuset/foreground/tasks
|
||||||
@@ -22,8 +22,8 @@
|
|||||||
#include "WVCryptoFactory.h"
|
#include "WVCryptoFactory.h"
|
||||||
#include "WVDrmFactory.h"
|
#include "WVDrmFactory.h"
|
||||||
|
|
||||||
using wvdrm::hardware::drm::V1_3::widevine::WVCryptoFactory;
|
using wvdrm::hardware::drm::V1_4::widevine::WVCryptoFactory;
|
||||||
using wvdrm::hardware::drm::V1_3::widevine::WVDrmFactory;
|
using wvdrm::hardware::drm::V1_4::widevine::WVDrmFactory;
|
||||||
|
|
||||||
int main(int /* argc */, char** /* argv */) {
|
int main(int /* argc */, char** /* argv */) {
|
||||||
sp<IDrmFactory> drmFactory = new WVDrmFactory;
|
sp<IDrmFactory> drmFactory = new WVDrmFactory;
|
||||||
|
|||||||
@@ -23,8 +23,8 @@
|
|||||||
#include "WVCryptoFactory.h"
|
#include "WVCryptoFactory.h"
|
||||||
#include "WVDrmFactory.h"
|
#include "WVDrmFactory.h"
|
||||||
|
|
||||||
using wvdrm::hardware::drm::V1_3::widevine::WVCryptoFactory;
|
using wvdrm::hardware::drm::V1_4::widevine::WVCryptoFactory;
|
||||||
using wvdrm::hardware::drm::V1_3::widevine::WVDrmFactory;
|
using wvdrm::hardware::drm::V1_4::widevine::WVDrmFactory;
|
||||||
using android::hardware::LazyServiceRegistrar;
|
using android::hardware::LazyServiceRegistrar;
|
||||||
|
|
||||||
int main(int /* argc */, char** /* argv */) {
|
int main(int /* argc */, char** /* argv */) {
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ LOCAL_SHARED_LIBRARIES := \
|
|||||||
android.hardware.drm@1.1 \
|
android.hardware.drm@1.1 \
|
||||||
android.hardware.drm@1.2 \
|
android.hardware.drm@1.2 \
|
||||||
android.hardware.drm@1.3 \
|
android.hardware.drm@1.3 \
|
||||||
|
android.hardware.drm@1.4 \
|
||||||
libbase \
|
libbase \
|
||||||
libcrypto \
|
libcrypto \
|
||||||
libdl \
|
libdl \
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_3 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using ::android::sp;
|
using ::android::sp;
|
||||||
@@ -32,7 +32,7 @@ TEST(CreatePluginFactoriesTest, CreatesCryptoFactory) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_3
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_3 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using ::android::sp;
|
using ::android::sp;
|
||||||
@@ -48,7 +48,7 @@ TEST(WVCryptoFactoryTest, DoesNotSupportUnsupportedCryptoSchemes) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_3
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
namespace wvdrm {
|
namespace wvdrm {
|
||||||
namespace hardware {
|
namespace hardware {
|
||||||
namespace drm {
|
namespace drm {
|
||||||
namespace V1_3 {
|
namespace V1_4 {
|
||||||
namespace widevine {
|
namespace widevine {
|
||||||
|
|
||||||
using namespace android;
|
using namespace android;
|
||||||
@@ -144,7 +144,7 @@ TEST(WVDrmFactoryTest, CalculatesBlankAppPackageNamePermissibilityCorrectly) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace widevine
|
} // namespace widevine
|
||||||
} // namespace V1_3
|
} // namespace V1_4
|
||||||
} // namespace drm
|
} // namespace drm
|
||||||
} // namespace hardware
|
} // namespace hardware
|
||||||
} // namespace wvdrm
|
} // namespace wvdrm
|
||||||
|
|||||||
Reference in New Issue
Block a user