Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1025)

Unified Diff: media/cdm/ppapi/cdm_wrapper.h

Issue 1402413005: Rename cdm_adapter to ppapi_cdm_adapter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rename flag Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/cdm/ppapi/cdm_adapter.gni ('k') | media/cdm/ppapi/ppapi_cdm_adapter.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/cdm/ppapi/cdm_wrapper.h
diff --git a/media/cdm/ppapi/cdm_wrapper.h b/media/cdm/ppapi/cdm_wrapper.h
deleted file mode 100644
index d7a86b3b7b37e663c4c8a1bf69e07960e82f22b4..0000000000000000000000000000000000000000
--- a/media/cdm/ppapi/cdm_wrapper.h
+++ /dev/null
@@ -1,316 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef MEDIA_CDM_PPAPI_CDM_WRAPPER_H_
-#define MEDIA_CDM_PPAPI_CDM_WRAPPER_H_
-
-#include <map>
-#include <queue>
-#include <string>
-
-#include "base/basictypes.h"
-#include "media/cdm/api/content_decryption_module.h"
-#include "media/cdm/ppapi/cdm_helpers.h"
-#include "media/cdm/ppapi/supported_cdm_versions.h"
-#include "ppapi/cpp/logging.h"
-
-namespace media {
-
-// CdmWrapper wraps different versions of ContentDecryptionModule interfaces and
-// exposes a common interface to the caller.
-//
-// The caller should call CdmWrapper::Create() to create a CDM instance.
-// CdmWrapper will first try to create a CDM instance that supports the latest
-// CDM interface (ContentDecryptionModule). If such an instance cannot be
-// created (e.g. an older CDM was loaded), CdmWrapper will try to create a CDM
-// that supports an older version of CDM interface (e.g.
-// ContentDecryptionModule_*). Internally CdmWrapper converts the CdmWrapper
-// calls to corresponding ContentDecryptionModule calls.
-//
-// Note that CdmWrapper interface always reflects the latest state of content
-// decryption related PPAPI APIs (e.g. pp::ContentDecryptor_Private).
-//
-// Since this file is highly templated and default implementations are short
-// (just a shim layer in most cases), everything is done in this header file.
-class CdmWrapper {
- public:
- static CdmWrapper* Create(const char* key_system,
- uint32_t key_system_size,
- GetCdmHostFunc get_cdm_host_func,
- void* user_data);
-
- virtual ~CdmWrapper() {};
-
- virtual void Initialize(bool allow_distinctive_identifier,
- bool allow_persistent_state) = 0;
- virtual void SetServerCertificate(uint32_t promise_id,
- const uint8_t* server_certificate_data,
- uint32_t server_certificate_data_size) = 0;
- virtual void CreateSessionAndGenerateRequest(uint32_t promise_id,
- cdm::SessionType session_type,
- cdm::InitDataType init_data_type,
- const uint8_t* init_data,
- uint32_t init_data_size) = 0;
- virtual void LoadSession(uint32_t promise_id,
- cdm::SessionType session_type,
- const char* session_id,
- uint32_t session_id_size) = 0;
- virtual void UpdateSession(uint32_t promise_id,
- const char* session_id,
- uint32_t session_id_size,
- const uint8_t* response,
- uint32_t response_size) = 0;
- virtual void CloseSession(uint32_t promise_id,
- const char* session_id,
- uint32_t session_id_size) = 0;
- virtual void RemoveSession(uint32_t promise_id,
- const char* session_id,
- uint32_t session_id_size) = 0;
- virtual void TimerExpired(void* context) = 0;
- virtual cdm::Status Decrypt(const cdm::InputBuffer& encrypted_buffer,
- cdm::DecryptedBlock* decrypted_buffer) = 0;
- virtual cdm::Status InitializeAudioDecoder(
- const cdm::AudioDecoderConfig& audio_decoder_config) = 0;
- virtual cdm::Status InitializeVideoDecoder(
- const cdm::VideoDecoderConfig& video_decoder_config) = 0;
- virtual void DeinitializeDecoder(cdm::StreamType decoder_type) = 0;
- virtual void ResetDecoder(cdm::StreamType decoder_type) = 0;
- virtual cdm::Status DecryptAndDecodeFrame(
- const cdm::InputBuffer& encrypted_buffer,
- cdm::VideoFrame* video_frame) = 0;
- virtual cdm::Status DecryptAndDecodeSamples(
- const cdm::InputBuffer& encrypted_buffer,
- cdm::AudioFrames* audio_frames) = 0;
- virtual void OnPlatformChallengeResponse(
- const cdm::PlatformChallengeResponse& response) = 0;
- virtual void OnQueryOutputProtectionStatus(
- cdm::QueryResult result,
- uint32_t link_mask,
- uint32_t output_protection_mask) = 0;
-
- protected:
- CdmWrapper() {}
-
- private:
- DISALLOW_COPY_AND_ASSIGN(CdmWrapper);
-};
-
-// Template class that does the CdmWrapper -> CdmInterface conversion. Default
-// implementations are provided. Any methods that need special treatment should
-// be specialized.
-template <class CdmInterface>
-class CdmWrapperImpl : public CdmWrapper {
- public:
- static CdmWrapper* Create(const char* key_system,
- uint32_t key_system_size,
- GetCdmHostFunc get_cdm_host_func,
- void* user_data) {
- void* cdm_instance = ::CreateCdmInstance(
- CdmInterface::kVersion, key_system, key_system_size, get_cdm_host_func,
- user_data);
- if (!cdm_instance)
- return NULL;
-
- return new CdmWrapperImpl<CdmInterface>(
- static_cast<CdmInterface*>(cdm_instance));
- }
-
- ~CdmWrapperImpl() override {
- cdm_->Destroy();
- }
-
- void Initialize(bool allow_distinctive_identifier,
- bool allow_persistent_state) override {
- cdm_->Initialize(allow_distinctive_identifier, allow_persistent_state);
- }
-
- void SetServerCertificate(
- uint32_t promise_id,
- const uint8_t* server_certificate_data,
- uint32_t server_certificate_data_size) override {
- cdm_->SetServerCertificate(
- promise_id, server_certificate_data, server_certificate_data_size);
- }
-
- void CreateSessionAndGenerateRequest(
- uint32_t promise_id,
- cdm::SessionType session_type,
- cdm::InitDataType init_data_type,
- const uint8_t* init_data,
- uint32_t init_data_size) override {
- cdm_->CreateSessionAndGenerateRequest(
- promise_id, session_type, init_data_type, init_data, init_data_size);
- }
-
- void LoadSession(uint32_t promise_id,
- cdm::SessionType session_type,
- const char* session_id,
- uint32_t session_id_size) override {
- cdm_->LoadSession(promise_id, session_type, session_id, session_id_size);
- }
-
- void UpdateSession(uint32_t promise_id,
- const char* session_id,
- uint32_t session_id_size,
- const uint8_t* response,
- uint32_t response_size) override {
- cdm_->UpdateSession(promise_id, session_id, session_id_size, response,
- response_size);
- }
-
- void CloseSession(uint32_t promise_id,
- const char* session_id,
- uint32_t session_id_size) override {
- cdm_->CloseSession(promise_id, session_id, session_id_size);
- }
-
- void RemoveSession(uint32_t promise_id,
- const char* session_id,
- uint32_t session_id_size) override {
- cdm_->RemoveSession(promise_id, session_id, session_id_size);
- }
-
- void TimerExpired(void* context) override {
- cdm_->TimerExpired(context);
- }
-
- cdm::Status Decrypt(const cdm::InputBuffer& encrypted_buffer,
- cdm::DecryptedBlock* decrypted_buffer) override {
- return cdm_->Decrypt(encrypted_buffer, decrypted_buffer);
- }
-
- cdm::Status InitializeAudioDecoder(
- const cdm::AudioDecoderConfig& audio_decoder_config) override {
- return cdm_->InitializeAudioDecoder(audio_decoder_config);
- }
-
- cdm::Status InitializeVideoDecoder(
- const cdm::VideoDecoderConfig& video_decoder_config) override {
- return cdm_->InitializeVideoDecoder(video_decoder_config);
- }
-
- void DeinitializeDecoder(cdm::StreamType decoder_type) override {
- cdm_->DeinitializeDecoder(decoder_type);
- }
-
- void ResetDecoder(cdm::StreamType decoder_type) override {
- cdm_->ResetDecoder(decoder_type);
- }
-
- cdm::Status DecryptAndDecodeFrame(
- const cdm::InputBuffer& encrypted_buffer,
- cdm::VideoFrame* video_frame) override {
- return cdm_->DecryptAndDecodeFrame(encrypted_buffer, video_frame);
- }
-
- cdm::Status DecryptAndDecodeSamples(
- const cdm::InputBuffer& encrypted_buffer,
- cdm::AudioFrames* audio_frames) override {
- return cdm_->DecryptAndDecodeSamples(encrypted_buffer, audio_frames);
- }
-
- void OnPlatformChallengeResponse(
- const cdm::PlatformChallengeResponse& response) override {
- cdm_->OnPlatformChallengeResponse(response);
- }
-
- void OnQueryOutputProtectionStatus(
- cdm::QueryResult result,
- uint32_t link_mask,
- uint32_t output_protection_mask) override {
- cdm_->OnQueryOutputProtectionStatus(result, link_mask,
- output_protection_mask);
- }
-
- private:
- CdmWrapperImpl(CdmInterface* cdm) : cdm_(cdm) {
- PP_DCHECK(cdm_);
- }
-
- CdmInterface* cdm_;
-
- DISALLOW_COPY_AND_ASSIGN(CdmWrapperImpl);
-};
-
-// Overrides for the cdm::Host_7 methods.
-// TODO(jrummell): Remove these once Host_7 interface is removed.
-
-template <>
-void CdmWrapperImpl<cdm::ContentDecryptionModule_7>::Initialize(
- bool allow_distinctive_identifier,
- bool allow_persistent_state) {
-}
-
-template <>
-void CdmWrapperImpl<cdm::ContentDecryptionModule_7>::
- CreateSessionAndGenerateRequest(uint32_t promise_id,
- cdm::SessionType session_type,
- cdm::InitDataType init_data_type,
- const uint8_t* init_data,
- uint32_t init_data_size) {
- std::string init_data_type_as_string = "unknown";
- switch (init_data_type) {
- case cdm::kCenc:
- init_data_type_as_string = "cenc";
- break;
- case cdm::kKeyIds:
- init_data_type_as_string = "keyids";
- break;
- case cdm::kWebM:
- init_data_type_as_string = "webm";
- break;
- }
-
- cdm_->CreateSessionAndGenerateRequest(
- promise_id, session_type, &init_data_type_as_string[0],
- init_data_type_as_string.length(), init_data, init_data_size);
-}
-
-CdmWrapper* CdmWrapper::Create(const char* key_system,
- uint32_t key_system_size,
- GetCdmHostFunc get_cdm_host_func,
- void* user_data) {
- static_assert(cdm::ContentDecryptionModule::kVersion ==
- cdm::ContentDecryptionModule_8::kVersion,
- "update the code below");
-
- // Ensure IsSupportedCdmInterfaceVersion() matches this implementation.
- // Always update this DCHECK when updating this function.
- // If this check fails, update this function and DCHECK or update
- // IsSupportedCdmInterfaceVersion().
- PP_DCHECK(!IsSupportedCdmInterfaceVersion(
- cdm::ContentDecryptionModule_8::kVersion + 1) &&
- IsSupportedCdmInterfaceVersion(
- cdm::ContentDecryptionModule_8::kVersion) &&
- IsSupportedCdmInterfaceVersion(
- cdm::ContentDecryptionModule_7::kVersion) &&
- !IsSupportedCdmInterfaceVersion(
- cdm::ContentDecryptionModule_7::kVersion - 1));
-
- // Try to create the CDM using the latest CDM interface version.
- CdmWrapper* cdm_wrapper =
- CdmWrapperImpl<cdm::ContentDecryptionModule>::Create(
- key_system, key_system_size, get_cdm_host_func, user_data);
-
- // If |cdm_wrapper| is NULL, try to create the CDM using older supported
- // versions of the CDM interface here.
- if (!cdm_wrapper) {
- cdm_wrapper = CdmWrapperImpl<cdm::ContentDecryptionModule_7>::Create(
- key_system, key_system_size, get_cdm_host_func, user_data);
- }
-
- return cdm_wrapper;
-}
-
-// When updating the CdmAdapter, ensure you've updated the CdmWrapper to contain
-// stub implementations for new or modified methods that the older CDM interface
-// does not have.
-// Also update supported_cdm_versions.h.
-static_assert(cdm::ContentDecryptionModule::kVersion ==
- cdm::ContentDecryptionModule_8::kVersion,
- "ensure cdm wrapper templates have old version support");
-
-} // namespace media
-
-#endif // MEDIA_CDM_PPAPI_CDM_WRAPPER_H_
« no previous file with comments | « media/cdm/ppapi/cdm_adapter.gni ('k') | media/cdm/ppapi/ppapi_cdm_adapter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698