diff options
author | Jeff Tinker <jtinker@google.com> | 2017-01-19 14:41:11 -0800 |
---|---|---|
committer | Jeff Tinker <jtinker@google.com> | 2017-01-20 10:48:50 -0800 |
commit | da002fe6415cee1e37cc3131aafb79ddb53f01e5 (patch) | |
tree | d0d0ba37bf5dc7081a8620f0b2e4b4c362ce713e /drm/1.0/default/CryptoPlugin.h | |
parent | f21cdafdaf36e5ab6dcf0c755809d7e3ad82d6ca (diff) | |
download | android_hardware_interfaces-da002fe6415cee1e37cc3131aafb79ddb53f01e5.tar.gz android_hardware_interfaces-da002fe6415cee1e37cc3131aafb79ddb53f01e5.tar.bz2 android_hardware_interfaces-da002fe6415cee1e37cc3131aafb79ddb53f01e5.zip |
Reorganize drm hal modules
Previously the drm and crypto plugins were separate hals.
This implied a separation of implementation libraries which
causes problems for some drm schemes. The reorganization
combines the hals into a single interface under drm.
Tests: basic gtests passing
Change-Id: I5cde6ff9f60625a0219731c4dbfcaefbd9f27f88
related-to-bug: 32815560
Diffstat (limited to 'drm/1.0/default/CryptoPlugin.h')
-rw-r--r-- | drm/1.0/default/CryptoPlugin.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/drm/1.0/default/CryptoPlugin.h b/drm/1.0/default/CryptoPlugin.h new file mode 100644 index 000000000..f805f09f2 --- /dev/null +++ b/drm/1.0/default/CryptoPlugin.h @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2016 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. + */ + +#ifndef ANDROID_HARDWARE_DRM_V1_0__CRYPTOPLUGIN_H +#define ANDROID_HARDWARE_DRM_V1_0__CRYPTOPLUGIN_H + +#include <android/hidl/memory/1.0/IMemory.h> +#include <android/hardware/drm/1.0/ICryptoPlugin.h> +#include <hidl/Status.h> +#include <media/hardware/CryptoAPI.h> + +namespace android { +namespace hardware { +namespace drm { +namespace V1_0 { +namespace implementation { + +using ::android::hardware::drm::V1_0::DestinationBuffer; +using ::android::hardware::drm::V1_0::ICryptoPlugin; +using ::android::hardware::drm::V1_0::Mode; +using ::android::hardware::drm::V1_0::Pattern; +using ::android::hardware::drm::V1_0::SubSample; +using ::android::hardware::hidl_array; +using ::android::hardware::hidl_string; +using ::android::hardware::hidl_vec; +using ::android::hardware::Return; +using ::android::hardware::Void; +using ::android::hidl::memory::V1_0::IMemory; +using ::android::sp; + +struct CryptoPlugin : public ICryptoPlugin { + CryptoPlugin(android::CryptoPlugin *plugin) : mLegacyPlugin(plugin) {} + + ~CryptoPlugin() {delete mLegacyPlugin;} + + // Methods from ::android::hardware::drm::V1_0::ICryptoPlugin + // follow. + + Return<bool> requiresSecureDecoderComponent(const hidl_string& mime) + override; + + Return<void> notifyResolution(uint32_t width, uint32_t height) override; + + Return<Status> setMediaDrmSession(const hidl_vec<uint8_t>& sessionId) + override; + + Return<void> setSharedBufferBase(const ::android::hardware::hidl_memory& base) + override; + + Return<void> decrypt(bool secure, const hidl_array<uint8_t, 16>& keyId, + const hidl_array<uint8_t, 16>& iv, Mode mode, const Pattern& pattern, + const hidl_vec<SubSample>& subSamples, const SharedBuffer& source, + uint64_t offset, const DestinationBuffer& destination, + decrypt_cb _hidl_cb) override; + +private: + android::CryptoPlugin *mLegacyPlugin; + sp<IMemory> mSharedBufferBase; + + CryptoPlugin() = delete; + CryptoPlugin(const CryptoPlugin &) = delete; + void operator=(const CryptoPlugin &) = delete; +}; + +} // namespace implementation +} // namespace V1_0 +} // namespace drm +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_DRM_V1_0__CRYPTOPLUGIN_H |