OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef MEDIA_CDM_PPAPI_CDM_WRAPPER_H_ | 5 #ifndef MEDIA_CDM_PPAPI_CDM_WRAPPER_H_ |
6 #define MEDIA_CDM_PPAPI_CDM_WRAPPER_H_ | 6 #define MEDIA_CDM_PPAPI_CDM_WRAPPER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <queue> | 9 #include <queue> |
10 #include <string> | 10 #include <string> |
(...skipping 24 matching lines...) Expand all Loading... |
35 // (just a shim layer in most cases), everything is done in this header file. | 35 // (just a shim layer in most cases), everything is done in this header file. |
36 class CdmWrapper { | 36 class CdmWrapper { |
37 public: | 37 public: |
38 static CdmWrapper* Create(const char* key_system, | 38 static CdmWrapper* Create(const char* key_system, |
39 uint32_t key_system_size, | 39 uint32_t key_system_size, |
40 GetCdmHostFunc get_cdm_host_func, | 40 GetCdmHostFunc get_cdm_host_func, |
41 void* user_data); | 41 void* user_data); |
42 | 42 |
43 virtual ~CdmWrapper() {}; | 43 virtual ~CdmWrapper() {}; |
44 | 44 |
| 45 // TODO(jrummell): Remove return value when CDM4/5 are removed. |
| 46 virtual bool SetServerCertificate(uint32_t promise_id, |
| 47 const uint8_t* server_certificate_data, |
| 48 uint32_t server_certificate_data_size) = 0; |
45 virtual void CreateSession(uint32_t promise_id, | 49 virtual void CreateSession(uint32_t promise_id, |
46 const char* init_data_type, | 50 const char* init_data_type, |
47 uint32_t init_data_type_size, | 51 uint32_t init_data_type_size, |
48 const uint8_t* init_data, | 52 const uint8_t* init_data, |
49 uint32_t init_data_size, | 53 uint32_t init_data_size, |
50 cdm::SessionType session_type) = 0; | 54 cdm::SessionType session_type) = 0; |
51 virtual void LoadSession(uint32_t promise_id, | 55 virtual void LoadSession(uint32_t promise_id, |
52 const char* web_session_id, | 56 const char* web_session_id, |
53 uint32_t web_session_id_size) = 0; | 57 uint32_t web_session_id_size) = 0; |
54 virtual void UpdateSession(uint32_t promise_id, | 58 virtual void UpdateSession(uint32_t promise_id, |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 | 172 |
169 // Returns true if |data| is prefixed with |header| and has data after the | 173 // Returns true if |data| is prefixed with |header| and has data after the |
170 // |header|. | 174 // |header|. |
171 bool HasHeader(const uint8* data, | 175 bool HasHeader(const uint8* data, |
172 int data_length, | 176 int data_length, |
173 const std::string& header) { | 177 const std::string& header) { |
174 return static_cast<size_t>(data_length) > header.length() && | 178 return static_cast<size_t>(data_length) > header.length() && |
175 std::equal(data, data + header.length(), header.begin()); | 179 std::equal(data, data + header.length(), header.begin()); |
176 } | 180 } |
177 | 181 |
| 182 virtual bool SetServerCertificate( |
| 183 uint32_t promise_id, |
| 184 const uint8_t* server_certificate_data, |
| 185 uint32_t server_certificate_data_size) OVERRIDE { |
| 186 cdm_->SetServerCertificate( |
| 187 promise_id, server_certificate_data, server_certificate_data_size); |
| 188 return true; |
| 189 } |
| 190 |
178 virtual void CreateSession(uint32_t promise_id, | 191 virtual void CreateSession(uint32_t promise_id, |
179 const char* init_data_type, | 192 const char* init_data_type, |
180 uint32_t init_data_type_size, | 193 uint32_t init_data_type_size, |
181 const uint8_t* init_data, | 194 const uint8_t* init_data, |
182 uint32_t init_data_size, | 195 uint32_t init_data_size, |
183 cdm::SessionType session_type) OVERRIDE { | 196 cdm::SessionType session_type) OVERRIDE { |
184 // TODO(jrummell): Remove this code once |session_type| is passed through | 197 // TODO(jrummell): Remove this code once |session_type| is passed through |
185 // Pepper. When removing, add the header back in for CDM4. | 198 // Pepper. When removing, add the header back in for CDM4. |
186 PP_DCHECK(session_type == cdm::kTemporary); | 199 PP_DCHECK(session_type == cdm::kTemporary); |
187 const char kPersistentSessionHeader[] = "PERSISTENT|"; | 200 const char kPersistentSessionHeader[] = "PERSISTENT|"; |
(...skipping 26 matching lines...) Expand all Loading... |
214 uint32_t web_session_id_size, | 227 uint32_t web_session_id_size, |
215 const uint8_t* response, | 228 const uint8_t* response, |
216 uint32_t response_size) OVERRIDE { | 229 uint32_t response_size) OVERRIDE { |
217 cdm_->UpdateSession(promise_id, | 230 cdm_->UpdateSession(promise_id, |
218 web_session_id, | 231 web_session_id, |
219 web_session_id_size, | 232 web_session_id_size, |
220 response, | 233 response, |
221 response_size); | 234 response_size); |
222 } | 235 } |
223 | 236 |
224 virtual bool GetUsableKeyIds(uint32_t promise_id, | |
225 const char* web_session_id, | |
226 uint32_t web_session_id_size) OVERRIDE { | |
227 cdm_->GetUsableKeyIds(promise_id, web_session_id, web_session_id_size); | |
228 return true; | |
229 } | |
230 | |
231 virtual bool CloseSession(uint32_t promise_id, | 237 virtual bool CloseSession(uint32_t promise_id, |
232 const char* web_session_id, | 238 const char* web_session_id, |
233 uint32_t web_session_id_size) OVERRIDE { | 239 uint32_t web_session_id_size) OVERRIDE { |
234 cdm_->CloseSession(promise_id, web_session_id, web_session_id_size); | 240 cdm_->CloseSession(promise_id, web_session_id, web_session_id_size); |
235 return true; | 241 return true; |
236 } | 242 } |
237 | 243 |
238 virtual void RemoveSession(uint32_t promise_id, | 244 virtual void RemoveSession(uint32_t promise_id, |
239 const char* web_session_id, | 245 const char* web_session_id, |
240 uint32_t web_session_id_size) OVERRIDE { | 246 uint32_t web_session_id_size) OVERRIDE { |
241 cdm_->RemoveSession(promise_id, web_session_id, web_session_id_size); | 247 cdm_->RemoveSession(promise_id, web_session_id, web_session_id_size); |
242 } | 248 } |
243 | 249 |
| 250 virtual bool GetUsableKeyIds(uint32_t promise_id, |
| 251 const char* web_session_id, |
| 252 uint32_t web_session_id_size) OVERRIDE { |
| 253 cdm_->GetUsableKeyIds(promise_id, web_session_id, web_session_id_size); |
| 254 return true; |
| 255 } |
| 256 |
244 virtual void TimerExpired(void* context) OVERRIDE { | 257 virtual void TimerExpired(void* context) OVERRIDE { |
245 cdm_->TimerExpired(context); | 258 cdm_->TimerExpired(context); |
246 } | 259 } |
247 | 260 |
248 virtual cdm::Status Decrypt(const cdm::InputBuffer& encrypted_buffer, | 261 virtual cdm::Status Decrypt(const cdm::InputBuffer& encrypted_buffer, |
249 cdm::DecryptedBlock* decrypted_buffer) OVERRIDE { | 262 cdm::DecryptedBlock* decrypted_buffer) OVERRIDE { |
250 return cdm_->Decrypt(encrypted_buffer, decrypted_buffer); | 263 return cdm_->Decrypt(encrypted_buffer, decrypted_buffer); |
251 } | 264 } |
252 | 265 |
253 virtual cdm::Status InitializeAudioDecoder( | 266 virtual cdm::Status InitializeAudioDecoder( |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 // LoadSession(), UpdateSession(), and ReleaseSession() pass in promise ids, | 412 // LoadSession(), UpdateSession(), and ReleaseSession() pass in promise ids, |
400 // but the CDM interface needs session ids. For create and load, we need to | 413 // but the CDM interface needs session ids. For create and load, we need to |
401 // create a new session_id to pass to the CDM. For update and release, we need | 414 // create a new session_id to pass to the CDM. For update and release, we need |
402 // to look up |web_session_id| and convert it into the existing |session_id|. | 415 // to look up |web_session_id| and convert it into the existing |session_id|. |
403 // Since the callbacks don't come through this interface, cdm_adapter needs to | 416 // Since the callbacks don't come through this interface, cdm_adapter needs to |
404 // create the mapping (and delete it on release). Finally, for create, we need | 417 // create the mapping (and delete it on release). Finally, for create, we need |
405 // to translate |init_data_type| to a MIME type. | 418 // to translate |init_data_type| to a MIME type. |
406 // TODO(jrummell): Remove these once Host_4 interface is removed. | 419 // TODO(jrummell): Remove these once Host_4 interface is removed. |
407 | 420 |
408 template <> | 421 template <> |
| 422 bool CdmWrapperImpl<cdm::ContentDecryptionModule_4>::SetServerCertificate( |
| 423 uint32_t promise_id, |
| 424 const uint8_t* server_certificate_data, |
| 425 uint32_t server_certificate_data_size) { |
| 426 return false; |
| 427 } |
| 428 |
| 429 template <> |
409 void CdmWrapperImpl<cdm::ContentDecryptionModule_4>::CreateSession( | 430 void CdmWrapperImpl<cdm::ContentDecryptionModule_4>::CreateSession( |
410 uint32_t promise_id, | 431 uint32_t promise_id, |
411 const char* init_data_type, | 432 const char* init_data_type, |
412 uint32_t init_data_type_size, | 433 uint32_t init_data_type_size, |
413 const uint8_t* init_data, | 434 const uint8_t* init_data, |
414 uint32_t init_data_size, | 435 uint32_t init_data_size, |
415 cdm::SessionType session_type) { | 436 cdm::SessionType session_type) { |
416 uint32_t session_id = CreateSessionId(); | 437 uint32_t session_id = CreateSessionId(); |
417 RegisterPromise(session_id, promise_id); | 438 RegisterPromise(session_id, promise_id); |
418 std::string converted_init_data_type = ConvertInitDataTypeToContentType( | 439 std::string converted_init_data_type = ConvertInitDataTypeToContentType( |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
550 // stub implementations for new or modified methods that the older CDM interface | 571 // stub implementations for new or modified methods that the older CDM interface |
551 // does not have. | 572 // does not have. |
552 // Also update supported_cdm_versions.h. | 573 // Also update supported_cdm_versions.h. |
553 COMPILE_ASSERT(cdm::ContentDecryptionModule::kVersion == | 574 COMPILE_ASSERT(cdm::ContentDecryptionModule::kVersion == |
554 cdm::ContentDecryptionModule_6::kVersion, | 575 cdm::ContentDecryptionModule_6::kVersion, |
555 ensure_cdm_wrapper_templates_have_old_version_support); | 576 ensure_cdm_wrapper_templates_have_old_version_support); |
556 | 577 |
557 } // namespace media | 578 } // namespace media |
558 | 579 |
559 #endif // MEDIA_CDM_PPAPI_CDM_WRAPPER_H_ | 580 #endif // MEDIA_CDM_PPAPI_CDM_WRAPPER_H_ |
OLD | NEW |