cdm_adapter.h revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef MEDIA_CDM_PPAPI_CDM_ADAPTER_H_ 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define MEDIA_CDM_PPAPI_CDM_ADAPTER_H_ 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 8424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include <string> 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <vector> 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/basictypes.h" 12424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "base/compiler_specific.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "build/build_config.h" 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "media/cdm/ppapi/api/content_decryption_module.h" 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "media/cdm/ppapi/cdm_helpers.h" 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "media/cdm/ppapi/cdm_wrapper.h" 17424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "media/cdm/ppapi/linked_ptr.h" 18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 19424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "ppapi/c/private/pp_content_decryptor.h" 20424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "ppapi/cpp/completion_callback.h" 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ppapi/cpp/private/content_decryptor_private.h" 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ppapi/cpp/var.h" 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ppapi/cpp/var_array_buffer.h" 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ppapi/utility/completion_callback_factory.h" 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_CHROMEOS) 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ppapi/cpp/private/output_protection_private.h" 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ppapi/cpp/private/platform_verification.h" 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace media { 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// GetCdmHostFunc implementation. 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void* GetCdmHost(int host_interface_version, void* user_data); 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// An adapter class for abstracting away PPAPI interaction and threading for a 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Content Decryption Module (CDM). 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class CdmAdapter : public pp::Instance, 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public pp::ContentDecryptor_Private, 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public cdm::Host_1, 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public cdm::Host_2, 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public cdm::Host_3 { 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public: 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) CdmAdapter(PP_Instance instance, pp::Module* module); 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual ~CdmAdapter(); 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // pp::Instance implementation. 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]) { 49424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return true; 50424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // PPP_ContentDecryptor_Private implementation. 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Note: Results of calls to these methods must be reported through the 54558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // PPB_ContentDecryptor_Private interface. 55558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual void Initialize(const std::string& key_system) OVERRIDE; 56558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual void CreateSession(uint32_t session_id, 57558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const std::string& type, 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) pp::VarArrayBuffer init_data) OVERRIDE; 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void UpdateSession(uint32_t session_id, 60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::VarArrayBuffer response) OVERRIDE; 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void ReleaseSession(uint32_t session_id) OVERRIDE; 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void Decrypt( 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) pp::Buffer_Dev encrypted_buffer, 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const PP_EncryptedBlockInfo& encrypted_block_info) OVERRIDE; 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void InitializeAudioDecoder( 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const PP_AudioDecoderConfig& decoder_config, 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::Buffer_Dev extra_data_buffer) OVERRIDE; 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void InitializeVideoDecoder( 69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const PP_VideoDecoderConfig& decoder_config, 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::Buffer_Dev extra_data_buffer) OVERRIDE; 71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void DeinitializeDecoder(PP_DecryptorStreamType decoder_type, 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t request_id) OVERRIDE; 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void ResetDecoder(PP_DecryptorStreamType decoder_type, 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint32_t request_id) OVERRIDE; 75424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual void DecryptAndDecode( 76424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) PP_DecryptorStreamType decoder_type, 77424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) pp::Buffer_Dev encrypted_buffer, 78424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const PP_EncryptedBlockInfo& encrypted_block_info) OVERRIDE; 79424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 80424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // cdm::Host implementation. 81424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual cdm::Buffer* Allocate(uint32_t capacity) OVERRIDE; 82424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual void SetTimer(int64_t delay_ms, void* context) OVERRIDE; 83424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual double GetCurrentWallTimeInSeconds() OVERRIDE; 84424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual void SendKeyMessage( 85424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const char* session_id, uint32_t session_id_length, 86424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const char* message, uint32_t message_length, 87eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const char* default_url, uint32_t default_url_length) OVERRIDE; 88eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SendKeyError(const char* session_id, 89eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t session_id_length, 90eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch cdm::MediaKeyError error_code, 91558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch uint32_t system_code) OVERRIDE; 92558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual void GetPrivateData(int32_t* instance, 93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetPrivateInterface* get_interface) OVERRIDE; 94eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 95ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // cdm::Host_2 implementation. 96eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SendPlatformChallenge( 97eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const char* service_id, uint32_t service_id_length, 98ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const char* challenge, uint32_t challenge_length) OVERRIDE; 99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void EnableOutputProtection( 100ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch uint32_t desired_protection_mask) OVERRIDE; 101ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual void QueryOutputProtectionStatus() OVERRIDE; 102eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnDeferredInitializationDone( 103eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch cdm::StreamType stream_type, 104eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch cdm::Status decoder_status) OVERRIDE; 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // cdm::Host_3 implementation. 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void OnSessionCreated(uint32_t session_id, 108ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const char* web_session_id, 109ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch uint32_t web_session_id_length) OVERRIDE; 110ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual void OnSessionMessage(uint32_t session_id, 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char* message, 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint32_t message_length, 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const char* destination_url, 114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t destination_url_length) OVERRIDE; 115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSessionReady(uint32_t session_id) OVERRIDE; 116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSessionClosed(uint32_t session_id) OVERRIDE; 117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void OnSessionError(uint32_t session_id, 118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch cdm::MediaKeyError error_code, 119424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) uint32_t system_code) OVERRIDE; 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private: 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) typedef linked_ptr<DecryptedBlockImpl> LinkedDecryptedBlock; 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) typedef linked_ptr<VideoFrameImpl> LinkedVideoFrame; 1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) typedef linked_ptr<AudioFramesImpl> LinkedAudioFrames; 1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool CreateCdmInstance(const std::string& key_system); 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // <code>PPB_ContentDecryptor_Private</code> dispatchers. These are passed to 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // <code>callback_factory_</code> to ensure that calls into 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // <code>PPP_ContentDecryptor_Private</code> are asynchronous. 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SendSessionCreatedInternal(int32_t result, 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint32_t session_id, 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& web_session_id); 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SendSessionMessageInternal(int32_t result, 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint32_t session_id, 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::vector<uint8>& message, 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& default_url); 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SendSessionReadyInternal(int32_t result, uint32_t session_id); 139a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void SendSessionClosedInternal(int32_t result, uint32_t session_id); 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SendSessionErrorInternal(int32_t result, 141eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t session_id, 142eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch cdm::MediaKeyError error_code, 1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint32_t system_code); 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void DeliverBlock(int32_t result, 1465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const cdm::Status& status, 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const LinkedDecryptedBlock& decrypted_block, 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const PP_DecryptTrackingInfo& tracking_info); 1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void DecoderInitializeDone(int32_t result, 1505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_DecryptorStreamType decoder_type, 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint32_t request_id, 152eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool success); 153eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void DecoderDeinitializeDone(int32_t result, 154eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_DecryptorStreamType decoder_type, 155eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t request_id); 156eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void DecoderResetDone(int32_t result, 157eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_DecryptorStreamType decoder_type, 158eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t request_id); 159eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void DeliverFrame(int32_t result, 160424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const cdm::Status& status, 161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const LinkedVideoFrame& video_frame, 162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const PP_DecryptTrackingInfo& tracking_info); 163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void DeliverSamples(int32_t result, 164424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const cdm::Status& status, 165424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const LinkedAudioFrames& audio_frames, 166424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const PP_DecryptTrackingInfo& tracking_info); 167424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 168424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Helper for SetTimer(). 169eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void TimerExpired(int32_t result, void* context); 170eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 171eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool IsValidVideoFrame(const LinkedVideoFrame& video_frame); 172eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 173eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_CHROMEOS) 174eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void SendPlatformChallengeDone(int32_t result); 175424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void EnableProtectionDone(int32_t result); 176424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void QueryOutputProtectionStatusDone(int32_t result); 177424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 178424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) pp::OutputProtection_Private output_protection_; 179424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) pp::PlatformVerification platform_verification_; 180424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 181eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Since PPAPI doesn't provide handlers for CompletionCallbacks with more than 182eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // one output we need to manage our own. These values are only read by 183eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // SendPlatformChallengeDone(). 184eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::Var signed_data_output_; 185eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::Var signed_data_signature_output_; 186eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::Var platform_key_certificate_output_; 187eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool challenge_in_progress_; 1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 189424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Same as above, these are only read by QueryOutputProtectionStatusDone(). 190424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) uint32_t output_link_mask_; 191424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) uint32_t output_protection_mask_; 192eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool query_output_protection_in_progress_; 193eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif 194eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 195eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PpbBufferAllocator allocator_; 196eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::CompletionCallbackFactory<CdmAdapter> callback_factory_; 197eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch linked_ptr<CdmWrapper> cdm_; 198eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string key_system_; 199eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 200eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // If the CDM returned kDeferredInitialization during InitializeAudioDecoder() 201eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // or InitializeVideoDecoder(), the (Audio|Video)DecoderConfig.request_id is 202eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // saved for the future call to OnDeferredInitializationDone(). 203eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool deferred_initialize_audio_decoder_; 204eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t deferred_audio_decoder_config_id_; 205eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool deferred_initialize_video_decoder_; 206eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t deferred_video_decoder_config_id_; 207eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DISALLOW_COPY_AND_ASSIGN(CdmAdapter); 209eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 210ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace media 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // MEDIA_CDM_PPAPI_CDM_ADAPTER_H_ 2145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)