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

Side by Side Diff: media/cdm/ppapi/cdm_adapter.cc

Issue 26592003: Switch CdmWrapper to use uint32_t for size types per style guide. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase over audio. Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/cdm/ppapi/cdm_adapter.h ('k') | media/cdm/ppapi/cdm_helpers.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "media/cdm/ppapi/cdm_adapter.h" 5 #include "media/cdm/ppapi/cdm_adapter.h"
6 6
7 #include "media/cdm/ppapi/cdm_helpers.h" 7 #include "media/cdm/ppapi/cdm_helpers.h"
8 8
9 #if defined(CHECK_DOCUMENT_URL) 9 #if defined(CHECK_DOCUMENT_URL)
10 #include "ppapi/cpp/dev/url_util_dev.h" 10 #include "ppapi/cpp/dev/url_util_dev.h"
(...skipping 28 matching lines...) Expand all
39 void ConfigureInputBuffer( 39 void ConfigureInputBuffer(
40 const pp::Buffer_Dev& encrypted_buffer, 40 const pp::Buffer_Dev& encrypted_buffer,
41 const PP_EncryptedBlockInfo& encrypted_block_info, 41 const PP_EncryptedBlockInfo& encrypted_block_info,
42 std::vector<cdm::SubsampleEntry>* subsamples, 42 std::vector<cdm::SubsampleEntry>* subsamples,
43 cdm::InputBuffer* input_buffer) { 43 cdm::InputBuffer* input_buffer) {
44 PP_DCHECK(subsamples); 44 PP_DCHECK(subsamples);
45 PP_DCHECK(!encrypted_buffer.is_null()); 45 PP_DCHECK(!encrypted_buffer.is_null());
46 46
47 input_buffer->data = static_cast<uint8_t*>(encrypted_buffer.data()); 47 input_buffer->data = static_cast<uint8_t*>(encrypted_buffer.data());
48 input_buffer->data_size = encrypted_block_info.data_size; 48 input_buffer->data_size = encrypted_block_info.data_size;
49 PP_DCHECK(encrypted_buffer.size() >= 49 PP_DCHECK(encrypted_buffer.size() >= input_buffer->data_size);
50 static_cast<uint32_t>(input_buffer->data_size));
51 input_buffer->data_offset = encrypted_block_info.data_offset; 50 input_buffer->data_offset = encrypted_block_info.data_offset;
52 51
53 PP_DCHECK(encrypted_block_info.key_id_size <= 52 PP_DCHECK(encrypted_block_info.key_id_size <=
54 arraysize(encrypted_block_info.key_id)); 53 arraysize(encrypted_block_info.key_id));
55 input_buffer->key_id_size = encrypted_block_info.key_id_size; 54 input_buffer->key_id_size = encrypted_block_info.key_id_size;
56 input_buffer->key_id = input_buffer->key_id_size > 0 ? 55 input_buffer->key_id = input_buffer->key_id_size > 0 ?
57 encrypted_block_info.key_id : NULL; 56 encrypted_block_info.key_id : NULL;
58 57
59 PP_DCHECK(encrypted_block_info.iv_size <= arraysize(encrypted_block_info.iv)); 58 PP_DCHECK(encrypted_block_info.iv_size <= arraysize(encrypted_block_info.iv));
60 input_buffer->iv_size = encrypted_block_info.iv_size; 59 input_buffer->iv_size = encrypted_block_info.iv_size;
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 pp::VarArrayBuffer key, 275 pp::VarArrayBuffer key,
277 pp::VarArrayBuffer init_data) { 276 pp::VarArrayBuffer init_data) {
278 // TODO(jrummell): In EME WD, AddKey() can only be called on valid sessions. 277 // TODO(jrummell): In EME WD, AddKey() can only be called on valid sessions.
279 // We should be able to DCHECK(cdm_) when addressing http://crbug.com/249976. 278 // We should be able to DCHECK(cdm_) when addressing http://crbug.com/249976.
280 if (!cdm_) { 279 if (!cdm_) {
281 SendUnknownKeyError(key_system_, session_id); 280 SendUnknownKeyError(key_system_, session_id);
282 return; 281 return;
283 } 282 }
284 283
285 const uint8_t* key_ptr = static_cast<const uint8_t*>(key.Map()); 284 const uint8_t* key_ptr = static_cast<const uint8_t*>(key.Map());
286 int key_size = key.ByteLength(); 285 const uint32_t key_size = key.ByteLength();
287 const uint8_t* init_data_ptr = static_cast<const uint8_t*>(init_data.Map()); 286 const uint8_t* init_data_ptr = static_cast<const uint8_t*>(init_data.Map());
288 int init_data_size = init_data.ByteLength(); 287 const uint32_t init_data_size = init_data.ByteLength();
289 PP_DCHECK(!init_data_ptr == !init_data_size); 288 PP_DCHECK(!init_data_ptr == !init_data_size);
290 289
291 if (!key_ptr || key_size <= 0) { 290 if (!key_ptr || !key_size) {
292 SendUnknownKeyError(key_system_, session_id); 291 SendUnknownKeyError(key_system_, session_id);
293 return; 292 return;
294 } 293 }
295 294
296 cdm::Status status = cdm_->AddKey(session_id.data(), session_id.size(), 295 cdm::Status status = cdm_->AddKey(session_id.data(), session_id.size(),
297 key_ptr, key_size, 296 key_ptr, key_size,
298 init_data_ptr, init_data_size); 297 init_data_ptr, init_data_size);
299 PP_DCHECK(status == cdm::kSuccess || status == cdm::kSessionError); 298 PP_DCHECK(status == cdm::kSuccess || status == cdm::kSessionError);
300 if (status != cdm::kSuccess) { 299 if (status != cdm::kSuccess) {
301 SendUnknownKeyError(key_system_, session_id); 300 SendUnknownKeyError(key_system_, session_id);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 cdm::Status status = cdm::kSessionError; 356 cdm::Status status = cdm::kSessionError;
358 if (cdm_) { 357 if (cdm_) {
359 cdm::AudioDecoderConfig cdm_decoder_config; 358 cdm::AudioDecoderConfig cdm_decoder_config;
360 cdm_decoder_config.codec = 359 cdm_decoder_config.codec =
361 PpAudioCodecToCdmAudioCodec(decoder_config.codec); 360 PpAudioCodecToCdmAudioCodec(decoder_config.codec);
362 cdm_decoder_config.channel_count = decoder_config.channel_count; 361 cdm_decoder_config.channel_count = decoder_config.channel_count;
363 cdm_decoder_config.bits_per_channel = decoder_config.bits_per_channel; 362 cdm_decoder_config.bits_per_channel = decoder_config.bits_per_channel;
364 cdm_decoder_config.samples_per_second = decoder_config.samples_per_second; 363 cdm_decoder_config.samples_per_second = decoder_config.samples_per_second;
365 cdm_decoder_config.extra_data = 364 cdm_decoder_config.extra_data =
366 static_cast<uint8_t*>(extra_data_buffer.data()); 365 static_cast<uint8_t*>(extra_data_buffer.data());
367 cdm_decoder_config.extra_data_size = 366 cdm_decoder_config.extra_data_size = extra_data_buffer.size();
368 static_cast<int32_t>(extra_data_buffer.size());
369 status = cdm_->InitializeAudioDecoder(cdm_decoder_config); 367 status = cdm_->InitializeAudioDecoder(cdm_decoder_config);
370 } 368 }
371 369
372 CallOnMain(callback_factory_.NewCallback( 370 CallOnMain(callback_factory_.NewCallback(
373 &CdmAdapter::DecoderInitializeDone, 371 &CdmAdapter::DecoderInitializeDone,
374 PP_DECRYPTORSTREAMTYPE_AUDIO, 372 PP_DECRYPTORSTREAMTYPE_AUDIO,
375 decoder_config.request_id, 373 decoder_config.request_id,
376 status == cdm::kSuccess)); 374 status == cdm::kSuccess));
377 } 375 }
378 376
379 void CdmAdapter::InitializeVideoDecoder( 377 void CdmAdapter::InitializeVideoDecoder(
380 const PP_VideoDecoderConfig& decoder_config, 378 const PP_VideoDecoderConfig& decoder_config,
381 pp::Buffer_Dev extra_data_buffer) { 379 pp::Buffer_Dev extra_data_buffer) {
382 cdm::Status status = cdm::kSessionError; 380 cdm::Status status = cdm::kSessionError;
383 if (cdm_) { 381 if (cdm_) {
384 cdm::VideoDecoderConfig cdm_decoder_config; 382 cdm::VideoDecoderConfig cdm_decoder_config;
385 cdm_decoder_config.codec = 383 cdm_decoder_config.codec =
386 PpVideoCodecToCdmVideoCodec(decoder_config.codec); 384 PpVideoCodecToCdmVideoCodec(decoder_config.codec);
387 cdm_decoder_config.profile = 385 cdm_decoder_config.profile =
388 PpVCProfileToCdmVCProfile(decoder_config.profile); 386 PpVCProfileToCdmVCProfile(decoder_config.profile);
389 cdm_decoder_config.format = 387 cdm_decoder_config.format =
390 PpDecryptedFrameFormatToCdmVideoFormat(decoder_config.format); 388 PpDecryptedFrameFormatToCdmVideoFormat(decoder_config.format);
391 cdm_decoder_config.coded_size.width = decoder_config.width; 389 cdm_decoder_config.coded_size.width = decoder_config.width;
392 cdm_decoder_config.coded_size.height = decoder_config.height; 390 cdm_decoder_config.coded_size.height = decoder_config.height;
393 cdm_decoder_config.extra_data = 391 cdm_decoder_config.extra_data =
394 static_cast<uint8_t*>(extra_data_buffer.data()); 392 static_cast<uint8_t*>(extra_data_buffer.data());
395 cdm_decoder_config.extra_data_size = 393 cdm_decoder_config.extra_data_size = extra_data_buffer.size();
396 static_cast<int32_t>(extra_data_buffer.size());
397 status = cdm_->InitializeVideoDecoder(cdm_decoder_config); 394 status = cdm_->InitializeVideoDecoder(cdm_decoder_config);
398 } 395 }
399 396
400 CallOnMain(callback_factory_.NewCallback( 397 CallOnMain(callback_factory_.NewCallback(
401 &CdmAdapter::DecoderInitializeDone, 398 &CdmAdapter::DecoderInitializeDone,
402 PP_DECRYPTORSTREAMTYPE_VIDEO, 399 PP_DECRYPTORSTREAMTYPE_VIDEO,
403 decoder_config.request_id, 400 decoder_config.request_id,
404 status == cdm::kSuccess)); 401 status == cdm::kSuccess));
405 } 402 }
406 403
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 encrypted_block_info.tracking_info)); 471 encrypted_block_info.tracking_info));
475 return; 472 return;
476 } 473 }
477 474
478 default: 475 default:
479 PP_NOTREACHED(); 476 PP_NOTREACHED();
480 return; 477 return;
481 } 478 }
482 } 479 }
483 480
484 cdm::Buffer* CdmAdapter::Allocate(int32_t capacity) { 481 cdm::Buffer* CdmAdapter::Allocate(uint32_t capacity) {
485 return allocator_.Allocate(capacity); 482 return allocator_.Allocate(capacity);
486 } 483 }
487 484
488 void CdmAdapter::SetTimer(int64_t delay_ms, void* context) { 485 void CdmAdapter::SetTimer(int64_t delay_ms, void* context) {
489 // NOTE: doesn't really need to run on the main thread; could just as well run 486 // NOTE: doesn't really need to run on the main thread; could just as well run
490 // on a helper thread if |cdm_| were thread-friendly and care was taken. We 487 // on a helper thread if |cdm_| were thread-friendly and care was taken. We
491 // only use CallOnMainThread() here to get delayed-execution behavior. 488 // only use CallOnMainThread() here to get delayed-execution behavior.
492 pp::Module::Get()->core()->CallOnMainThread( 489 pp::Module::Get()->core()->CallOnMainThread(
493 delay_ms, 490 delay_ms,
494 callback_factory_.NewCallback(&CdmAdapter::TimerExpired, context), 491 callback_factory_.NewCallback(&CdmAdapter::TimerExpired, context),
495 PP_OK); 492 PP_OK);
496 } 493 }
497 494
498 void CdmAdapter::TimerExpired(int32_t result, void* context) { 495 void CdmAdapter::TimerExpired(int32_t result, void* context) {
499 PP_DCHECK(result == PP_OK); 496 PP_DCHECK(result == PP_OK);
500 cdm_->TimerExpired(context); 497 cdm_->TimerExpired(context);
501 } 498 }
502 499
503 double CdmAdapter::GetCurrentWallTimeInSeconds() { 500 double CdmAdapter::GetCurrentWallTimeInSeconds() {
504 return pp::Module::Get()->core()->GetTime(); 501 return pp::Module::Get()->core()->GetTime();
505 } 502 }
506 503
507 void CdmAdapter::SendKeyMessage( 504 void CdmAdapter::SendKeyMessage(
508 const char* session_id, int32_t session_id_length, 505 const char* session_id, uint32_t session_id_length,
509 const char* message, int32_t message_length, 506 const char* message, uint32_t message_length,
510 const char* default_url, int32_t default_url_length) { 507 const char* default_url, uint32_t default_url_length) {
511 PP_DCHECK(!key_system_.empty()); 508 PP_DCHECK(!key_system_.empty());
512 PostOnMain(callback_factory_.NewCallback( 509 PostOnMain(callback_factory_.NewCallback(
513 &CdmAdapter::KeyMessage, 510 &CdmAdapter::KeyMessage,
514 SessionInfo(key_system_, 511 SessionInfo(key_system_,
515 std::string(session_id, session_id_length)), 512 std::string(session_id, session_id_length)),
516 std::vector<uint8>(message, message + message_length), 513 std::vector<uint8>(message, message + message_length),
517 std::string(default_url, default_url_length))); 514 std::string(default_url, default_url_length)));
518 } 515 }
519 516
520 void CdmAdapter::SendKeyError(const char* session_id, 517 void CdmAdapter::SendKeyError(const char* session_id,
521 int32_t session_id_length, 518 uint32_t session_id_length,
522 cdm::MediaKeyError error_code, 519 cdm::MediaKeyError error_code,
523 uint32_t system_code) { 520 uint32_t system_code) {
524 SendKeyErrorInternal(key_system_, 521 SendKeyErrorInternal(key_system_,
525 std::string(session_id, session_id_length), 522 std::string(session_id, session_id_length),
526 error_code, 523 error_code,
527 system_code); 524 system_code);
528 } 525 }
529 526
530 void CdmAdapter::GetPrivateData(int32_t* instance, 527 void CdmAdapter::GetPrivateData(int32_t* instance,
531 GetPrivateInterface* get_interface) { 528 GetPrivateInterface* get_interface) {
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 bool CdmAdapter::IsValidVideoFrame(const LinkedVideoFrame& video_frame) { 723 bool CdmAdapter::IsValidVideoFrame(const LinkedVideoFrame& video_frame) {
727 if (!video_frame.get() || 724 if (!video_frame.get() ||
728 !video_frame->FrameBuffer() || 725 !video_frame->FrameBuffer() ||
729 (video_frame->Format() != cdm::kI420 && 726 (video_frame->Format() != cdm::kI420 &&
730 video_frame->Format() != cdm::kYv12)) { 727 video_frame->Format() != cdm::kYv12)) {
731 return false; 728 return false;
732 } 729 }
733 730
734 PpbBuffer* ppb_buffer = static_cast<PpbBuffer*>(video_frame->FrameBuffer()); 731 PpbBuffer* ppb_buffer = static_cast<PpbBuffer*>(video_frame->FrameBuffer());
735 732
736 for (int i = 0; i < cdm::VideoFrame::kMaxPlanes; ++i) { 733 for (uint32_t i = 0; i < cdm::VideoFrame::kMaxPlanes; ++i) {
737 int plane_height = (i == cdm::VideoFrame::kYPlane) ? 734 int plane_height = (i == cdm::VideoFrame::kYPlane) ?
738 video_frame->Size().height : (video_frame->Size().height + 1) / 2; 735 video_frame->Size().height : (video_frame->Size().height + 1) / 2;
739 cdm::VideoFrame::VideoPlane plane = 736 cdm::VideoFrame::VideoPlane plane =
740 static_cast<cdm::VideoFrame::VideoPlane>(i); 737 static_cast<cdm::VideoFrame::VideoPlane>(i);
741 if (ppb_buffer->Size() < video_frame->PlaneOffset(plane) + 738 if (ppb_buffer->Size() < video_frame->PlaneOffset(plane) +
742 plane_height * video_frame->Stride(plane)) { 739 plane_height * video_frame->Stride(plane)) {
743 return false; 740 return false;
744 } 741 }
745 } 742 }
746 743
747 return true; 744 return true;
748 } 745 }
749 746
747 void CdmAdapter::OnDeferredInitializationDone(cdm::StreamType stream_type,
748 cdm::Status decoder_status) {
749 PP_NOTREACHED();
750 }
751
750 void CdmAdapter::SendPlatformChallenge( 752 void CdmAdapter::SendPlatformChallenge(
751 const char* service_id, int32_t service_id_length, 753 const char* service_id, uint32_t service_id_length,
752 const char* challenge, int32_t challenge_length) { 754 const char* challenge, uint32_t challenge_length) {
753 #if defined(OS_CHROMEOS) 755 #if defined(OS_CHROMEOS)
754 PP_DCHECK(!challenge_in_progress_); 756 PP_DCHECK(!challenge_in_progress_);
755 757
756 // Ensure member variables set by the callback are in a clean state. 758 // Ensure member variables set by the callback are in a clean state.
757 signed_data_output_ = pp::Var(); 759 signed_data_output_ = pp::Var();
758 signed_data_signature_output_ = pp::Var(); 760 signed_data_signature_output_ = pp::Var();
759 platform_key_certificate_output_ = pp::Var(); 761 platform_key_certificate_output_ = pp::Var();
760 762
761 pp::VarArrayBuffer challenge_var(challenge_length); 763 pp::VarArrayBuffer challenge_var(challenge_length);
762 uint8_t* var_data = static_cast<uint8_t*>(challenge_var.Map()); 764 uint8_t* var_data = static_cast<uint8_t*>(challenge_var.Map());
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 return; 827 return;
826 } 828 }
827 829
828 pp::VarArrayBuffer signed_data_var(signed_data_output_); 830 pp::VarArrayBuffer signed_data_var(signed_data_output_);
829 pp::VarArrayBuffer signed_data_signature_var(signed_data_signature_output_); 831 pp::VarArrayBuffer signed_data_signature_var(signed_data_signature_output_);
830 std::string platform_key_certificate_string = 832 std::string platform_key_certificate_string =
831 platform_key_certificate_output_.AsString(); 833 platform_key_certificate_output_.AsString();
832 834
833 cdm::PlatformChallengeResponse response = { 835 cdm::PlatformChallengeResponse response = {
834 static_cast<uint8_t*>(signed_data_var.Map()), 836 static_cast<uint8_t*>(signed_data_var.Map()),
835 static_cast<int32_t>(signed_data_var.ByteLength()), 837 signed_data_var.ByteLength(),
836 838
837 static_cast<uint8_t*>(signed_data_signature_var.Map()), 839 static_cast<uint8_t*>(signed_data_signature_var.Map()),
838 static_cast<int32_t>(signed_data_signature_var.ByteLength()), 840 signed_data_signature_var.ByteLength(),
839 841
840 reinterpret_cast<const uint8_t*>(platform_key_certificate_string.c_str()), 842 reinterpret_cast<const uint8_t*>(platform_key_certificate_string.c_str()),
841 static_cast<int32_t>(platform_key_certificate_string.length()) 843 static_cast<uint32_t>(platform_key_certificate_string.length())
842 }; 844 };
843 cdm_->OnPlatformChallengeResponse(response); 845 cdm_->OnPlatformChallengeResponse(response);
844 846
845 signed_data_var.Unmap(); 847 signed_data_var.Unmap();
846 signed_data_signature_var.Unmap(); 848 signed_data_signature_var.Unmap();
847 } 849 }
848 850
849 void CdmAdapter::EnableProtectionDone(int32_t result) { 851 void CdmAdapter::EnableProtectionDone(int32_t result) {
850 // Does nothing since clients must call QueryOutputProtectionStatus() to 852 // Does nothing since clients must call QueryOutputProtectionStatus() to
851 // inspect the protection status on a regular basis. 853 // inspect the protection status on a regular basis.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 } // namespace media 904 } // namespace media
903 905
904 namespace pp { 906 namespace pp {
905 907
906 // Factory function for your specialization of the Module object. 908 // Factory function for your specialization of the Module object.
907 Module* CreateModule() { 909 Module* CreateModule() {
908 return new media::CdmAdapterModule(); 910 return new media::CdmAdapterModule();
909 } 911 }
910 912
911 } // namespace pp 913 } // namespace pp
OLDNEW
« no previous file with comments | « media/cdm/ppapi/cdm_adapter.h ('k') | media/cdm/ppapi/cdm_helpers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698