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

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

Issue 1544313002: Convert Pass()→std::move() in //media (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 unified diff | Download patch
« no previous file with comments | « media/cdm/aes_decryptor_unittest.cc ('k') | media/cdm/cdm_adapter_unittest.cc » ('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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/cdm_adapter.h" 5 #include "media/cdm/cdm_adapter.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility>
8 9
9 #include "base/bind.h" 10 #include "base/bind.h"
10 #include "base/callback_helpers.h" 11 #include "base/callback_helpers.h"
11 #include "base/logging.h" 12 #include "base/logging.h"
12 #include "base/message_loop/message_loop.h" 13 #include "base/message_loop/message_loop.h"
13 #include "base/thread_task_runner_handle.h" 14 #include "base/thread_task_runner_handle.h"
14 #include "base/time/time.h" 15 #include "base/time/time.h"
15 #include "media/base/audio_decoder_config.h" 16 #include "media/base/audio_decoder_config.h"
16 #include "media/base/cdm_initialized_promise.h" 17 #include "media/base/cdm_initialized_promise.h"
17 #include "media/base/cdm_key_information.h" 18 #include "media/base/cdm_key_information.h"
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 340
340 scoped_refptr<CdmAdapter> cdm = 341 scoped_refptr<CdmAdapter> cdm =
341 new CdmAdapter(key_system, cdm_config, session_message_cb, 342 new CdmAdapter(key_system, cdm_config, session_message_cb,
342 session_closed_cb, legacy_session_error_cb, 343 session_closed_cb, legacy_session_error_cb,
343 session_keys_change_cb, session_expiration_update_cb); 344 session_keys_change_cb, session_expiration_update_cb);
344 345
345 // |cdm| ownership passed to the promise. 346 // |cdm| ownership passed to the promise.
346 scoped_ptr<CdmInitializedPromise> cdm_created_promise( 347 scoped_ptr<CdmInitializedPromise> cdm_created_promise(
347 new CdmInitializedPromise(cdm_created_cb, cdm)); 348 new CdmInitializedPromise(cdm_created_cb, cdm));
348 349
349 cdm->Initialize(cdm_path, cdm_created_promise.Pass()); 350 cdm->Initialize(cdm_path, std::move(cdm_created_promise));
350 } 351 }
351 352
352 CdmAdapter::CdmAdapter( 353 CdmAdapter::CdmAdapter(
353 const std::string& key_system, 354 const std::string& key_system,
354 const CdmConfig& cdm_config, 355 const CdmConfig& cdm_config,
355 const SessionMessageCB& session_message_cb, 356 const SessionMessageCB& session_message_cb,
356 const SessionClosedCB& session_closed_cb, 357 const SessionClosedCB& session_closed_cb,
357 const LegacySessionErrorCB& legacy_session_error_cb, 358 const LegacySessionErrorCB& legacy_session_error_cb,
358 const SessionKeysChangeCB& session_keys_change_cb, 359 const SessionKeysChangeCB& session_keys_change_cb,
359 const SessionExpirationUpdateCB& session_expiration_update_cb) 360 const SessionExpirationUpdateCB& session_expiration_update_cb)
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 scoped_ptr<SimpleCdmPromise> promise) { 427 scoped_ptr<SimpleCdmPromise> promise) {
427 DCHECK(task_runner_->BelongsToCurrentThread()); 428 DCHECK(task_runner_->BelongsToCurrentThread());
428 429
429 if (certificate.size() < limits::kMinCertificateLength || 430 if (certificate.size() < limits::kMinCertificateLength ||
430 certificate.size() > limits::kMaxCertificateLength) { 431 certificate.size() > limits::kMaxCertificateLength) {
431 promise->reject(MediaKeys::INVALID_ACCESS_ERROR, 0, 432 promise->reject(MediaKeys::INVALID_ACCESS_ERROR, 0,
432 "Incorrect certificate."); 433 "Incorrect certificate.");
433 return; 434 return;
434 } 435 }
435 436
436 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); 437 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise));
437 cdm_->SetServerCertificate(promise_id, certificate.data(), 438 cdm_->SetServerCertificate(promise_id, certificate.data(),
438 certificate.size()); 439 certificate.size());
439 } 440 }
440 441
441 void CdmAdapter::CreateSessionAndGenerateRequest( 442 void CdmAdapter::CreateSessionAndGenerateRequest(
442 SessionType session_type, 443 SessionType session_type,
443 EmeInitDataType init_data_type, 444 EmeInitDataType init_data_type,
444 const std::vector<uint8_t>& init_data, 445 const std::vector<uint8_t>& init_data,
445 scoped_ptr<NewSessionCdmPromise> promise) { 446 scoped_ptr<NewSessionCdmPromise> promise) {
446 DCHECK(task_runner_->BelongsToCurrentThread()); 447 DCHECK(task_runner_->BelongsToCurrentThread());
447 448
448 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); 449 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise));
449 cdm_->CreateSessionAndGenerateRequest( 450 cdm_->CreateSessionAndGenerateRequest(
450 promise_id, ToCdmSessionType(session_type), 451 promise_id, ToCdmSessionType(session_type),
451 ToCdmInitDataType(init_data_type), init_data.data(), init_data.size()); 452 ToCdmInitDataType(init_data_type), init_data.data(), init_data.size());
452 } 453 }
453 454
454 void CdmAdapter::LoadSession(SessionType session_type, 455 void CdmAdapter::LoadSession(SessionType session_type,
455 const std::string& session_id, 456 const std::string& session_id,
456 scoped_ptr<NewSessionCdmPromise> promise) { 457 scoped_ptr<NewSessionCdmPromise> promise) {
457 DCHECK(task_runner_->BelongsToCurrentThread()); 458 DCHECK(task_runner_->BelongsToCurrentThread());
458 459
459 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); 460 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise));
460 cdm_->LoadSession(promise_id, ToCdmSessionType(session_type), 461 cdm_->LoadSession(promise_id, ToCdmSessionType(session_type),
461 session_id.data(), session_id.size()); 462 session_id.data(), session_id.size());
462 } 463 }
463 464
464 void CdmAdapter::UpdateSession(const std::string& session_id, 465 void CdmAdapter::UpdateSession(const std::string& session_id,
465 const std::vector<uint8_t>& response, 466 const std::vector<uint8_t>& response,
466 scoped_ptr<SimpleCdmPromise> promise) { 467 scoped_ptr<SimpleCdmPromise> promise) {
467 DCHECK(task_runner_->BelongsToCurrentThread()); 468 DCHECK(task_runner_->BelongsToCurrentThread());
468 DCHECK(!session_id.empty()); 469 DCHECK(!session_id.empty());
469 DCHECK(!response.empty()); 470 DCHECK(!response.empty());
470 471
471 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); 472 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise));
472 cdm_->UpdateSession(promise_id, session_id.data(), session_id.size(), 473 cdm_->UpdateSession(promise_id, session_id.data(), session_id.size(),
473 response.data(), response.size()); 474 response.data(), response.size());
474 } 475 }
475 476
476 void CdmAdapter::CloseSession(const std::string& session_id, 477 void CdmAdapter::CloseSession(const std::string& session_id,
477 scoped_ptr<SimpleCdmPromise> promise) { 478 scoped_ptr<SimpleCdmPromise> promise) {
478 DCHECK(task_runner_->BelongsToCurrentThread()); 479 DCHECK(task_runner_->BelongsToCurrentThread());
479 DCHECK(!session_id.empty()); 480 DCHECK(!session_id.empty());
480 481
481 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); 482 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise));
482 cdm_->CloseSession(promise_id, session_id.data(), session_id.size()); 483 cdm_->CloseSession(promise_id, session_id.data(), session_id.size());
483 } 484 }
484 485
485 void CdmAdapter::RemoveSession(const std::string& session_id, 486 void CdmAdapter::RemoveSession(const std::string& session_id,
486 scoped_ptr<SimpleCdmPromise> promise) { 487 scoped_ptr<SimpleCdmPromise> promise) {
487 DCHECK(task_runner_->BelongsToCurrentThread()); 488 DCHECK(task_runner_->BelongsToCurrentThread());
488 DCHECK(!session_id.empty()); 489 DCHECK(!session_id.empty());
489 490
490 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); 491 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise));
491 cdm_->RemoveSession(promise_id, session_id.data(), session_id.size()); 492 cdm_->RemoveSession(promise_id, session_id.data(), session_id.size());
492 } 493 }
493 494
494 CdmContext* CdmAdapter::GetCdmContext() { 495 CdmContext* CdmAdapter::GetCdmContext() {
495 DCHECK(task_runner_->BelongsToCurrentThread()); 496 DCHECK(task_runner_->BelongsToCurrentThread());
496 return this; 497 return this;
497 } 498 }
498 499
499 Decryptor* CdmAdapter::GetDecryptor() { 500 Decryptor* CdmAdapter::GetDecryptor() {
500 DCHECK(task_runner_->BelongsToCurrentThread()); 501 DCHECK(task_runner_->BelongsToCurrentThread());
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 639
639 const Decryptor::AudioFrames empty_frames; 640 const Decryptor::AudioFrames empty_frames;
640 if (status != cdm::kSuccess) { 641 if (status != cdm::kSuccess) {
641 DVLOG(1) << __FUNCTION__ << " failed with cdm::Error " << status; 642 DVLOG(1) << __FUNCTION__ << " failed with cdm::Error " << status;
642 audio_decode_cb.Run(ToMediaDecryptorStatus(status), empty_frames); 643 audio_decode_cb.Run(ToMediaDecryptorStatus(status), empty_frames);
643 return; 644 return;
644 } 645 }
645 646
646 Decryptor::AudioFrames audio_frame_list; 647 Decryptor::AudioFrames audio_frame_list;
647 DCHECK(audio_frames->FrameBuffer()); 648 DCHECK(audio_frames->FrameBuffer());
648 if (!AudioFramesDataToAudioFrames(audio_frames.Pass(), &audio_frame_list)) { 649 if (!AudioFramesDataToAudioFrames(std::move(audio_frames),
650 &audio_frame_list)) {
649 DVLOG(1) << __FUNCTION__ << " unable to convert Audio Frames"; 651 DVLOG(1) << __FUNCTION__ << " unable to convert Audio Frames";
650 audio_decode_cb.Run(Decryptor::kError, empty_frames); 652 audio_decode_cb.Run(Decryptor::kError, empty_frames);
651 return; 653 return;
652 } 654 }
653 655
654 audio_decode_cb.Run(Decryptor::kSuccess, audio_frame_list); 656 audio_decode_cb.Run(Decryptor::kSuccess, audio_frame_list);
655 } 657 }
656 658
657 void CdmAdapter::DecryptAndDecodeVideo( 659 void CdmAdapter::DecryptAndDecodeVideo(
658 const scoped_refptr<DecoderBuffer>& encrypted, 660 const scoped_refptr<DecoderBuffer>& encrypted,
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 // TODO(jrummell): Handling resume playback should be done in the media 803 // TODO(jrummell): Handling resume playback should be done in the media
802 // player, not in the Decryptors. http://crbug.com/413413. 804 // player, not in the Decryptors. http://crbug.com/413413.
803 if (has_additional_usable_key) { 805 if (has_additional_usable_key) {
804 if (!new_audio_key_cb_.is_null()) 806 if (!new_audio_key_cb_.is_null())
805 new_audio_key_cb_.Run(); 807 new_audio_key_cb_.Run();
806 if (!new_video_key_cb_.is_null()) 808 if (!new_video_key_cb_.is_null())
807 new_video_key_cb_.Run(); 809 new_video_key_cb_.Run();
808 } 810 }
809 811
810 session_keys_change_cb_.Run(std::string(session_id, session_id_size), 812 session_keys_change_cb_.Run(std::string(session_id, session_id_size),
811 has_additional_usable_key, keys.Pass()); 813 has_additional_usable_key, std::move(keys));
812 } 814 }
813 815
814 void CdmAdapter::OnExpirationChange(const char* session_id, 816 void CdmAdapter::OnExpirationChange(const char* session_id,
815 uint32_t session_id_size, 817 uint32_t session_id_size,
816 cdm::Time new_expiry_time) { 818 cdm::Time new_expiry_time) {
817 DCHECK(task_runner_->BelongsToCurrentThread()); 819 DCHECK(task_runner_->BelongsToCurrentThread());
818 820
819 session_expiration_update_cb_.Run(std::string(session_id, session_id_size), 821 session_expiration_update_cb_.Run(std::string(session_id, session_id_size),
820 base::Time::FromDoubleT(new_expiry_time)); 822 base::Time::FromDoubleT(new_expiry_time));
821 } 823 }
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 result_frames->push_back(frame); 951 result_frames->push_back(frame);
950 952
951 data += frame_size; 953 data += frame_size;
952 bytes_left -= frame_size; 954 bytes_left -= frame_size;
953 } while (bytes_left > 0); 955 } while (bytes_left > 0);
954 956
955 return true; 957 return true;
956 } 958 }
957 959
958 } // namespace media 960 } // namespace media
OLDNEW
« no previous file with comments | « media/cdm/aes_decryptor_unittest.cc ('k') | media/cdm/cdm_adapter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698