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

Side by Side Diff: content/renderer/media/android/media_source_delegate.cc

Issue 935243002: Decryptors can report kNoKey to WebMediaPlayer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Android changes Created 5 years, 9 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
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 "content/renderer/media/android/media_source_delegate.h" 5 #include "content/renderer/media/android/media_source_delegate.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 // |stop_cb|. 145 // |stop_cb|.
146 stop_cb.Run(); 146 stop_cb.Run();
147 } 147 }
148 148
149 void MediaSourceDelegate::InitializeMediaSource( 149 void MediaSourceDelegate::InitializeMediaSource(
150 const MediaSourceOpenedCB& media_source_opened_cb, 150 const MediaSourceOpenedCB& media_source_opened_cb,
151 const media::Demuxer::EncryptedMediaInitDataCB& 151 const media::Demuxer::EncryptedMediaInitDataCB&
152 encrypted_media_init_data_cb, 152 encrypted_media_init_data_cb,
153 const media::SetDecryptorReadyCB& set_decryptor_ready_cb, 153 const media::SetDecryptorReadyCB& set_decryptor_ready_cb,
154 const UpdateNetworkStateCB& update_network_state_cb, 154 const UpdateNetworkStateCB& update_network_state_cb,
155 const DurationChangeCB& duration_change_cb) { 155 const DurationChangeCB& duration_change_cb,
156 const base::Closure& waiting_for_decryption_key_cb) {
156 DCHECK(main_task_runner_->BelongsToCurrentThread()); 157 DCHECK(main_task_runner_->BelongsToCurrentThread());
157 DCHECK(!media_source_opened_cb.is_null()); 158 DCHECK(!media_source_opened_cb.is_null());
158 media_source_opened_cb_ = media_source_opened_cb; 159 media_source_opened_cb_ = media_source_opened_cb;
159 encrypted_media_init_data_cb_ = encrypted_media_init_data_cb; 160 encrypted_media_init_data_cb_ = encrypted_media_init_data_cb;
160 set_decryptor_ready_cb_ = media::BindToCurrentLoop(set_decryptor_ready_cb); 161 set_decryptor_ready_cb_ = media::BindToCurrentLoop(set_decryptor_ready_cb);
161 update_network_state_cb_ = media::BindToCurrentLoop(update_network_state_cb); 162 update_network_state_cb_ = media::BindToCurrentLoop(update_network_state_cb);
162 duration_change_cb_ = duration_change_cb; 163 duration_change_cb_ = duration_change_cb;
164 waiting_for_decryption_key_cb_ = waiting_for_decryption_key_cb;
163 access_unit_size_ = kAccessUnitSizeForMediaSource; 165 access_unit_size_ = kAccessUnitSizeForMediaSource;
164 166
165 chunk_demuxer_.reset(new media::ChunkDemuxer( 167 chunk_demuxer_.reset(new media::ChunkDemuxer(
166 media::BindToCurrentLoop( 168 media::BindToCurrentLoop(
167 base::Bind(&MediaSourceDelegate::OnDemuxerOpened, main_weak_this_)), 169 base::Bind(&MediaSourceDelegate::OnDemuxerOpened, main_weak_this_)),
168 media::BindToCurrentLoop(base::Bind( 170 media::BindToCurrentLoop(base::Bind(
169 &MediaSourceDelegate::OnEncryptedMediaInitData, main_weak_this_)), 171 &MediaSourceDelegate::OnEncryptedMediaInitData, main_weak_this_)),
170 base::Bind(&LogMediaSourceError, media_log_), media_log_, false)); 172 base::Bind(&LogMediaSourceError, media_log_), media_log_, false));
171 173
172 // |this| will be retained until StopDemuxer() is posted, so Unretained() is 174 // |this| will be retained until StopDemuxer() is posted, so Unretained() is
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 is_demuxer_ready_ = true; 516 is_demuxer_ready_ = true;
515 NotifyDemuxerReady(); 517 NotifyDemuxerReady();
516 } 518 }
517 519
518 void MediaSourceDelegate::InitAudioDecryptingDemuxerStream() { 520 void MediaSourceDelegate::InitAudioDecryptingDemuxerStream() {
519 DCHECK(media_task_runner_->BelongsToCurrentThread()); 521 DCHECK(media_task_runner_->BelongsToCurrentThread());
520 DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; 522 DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_;
521 DCHECK(!set_decryptor_ready_cb_.is_null()); 523 DCHECK(!set_decryptor_ready_cb_.is_null());
522 524
523 audio_decrypting_demuxer_stream_.reset(new media::DecryptingDemuxerStream( 525 audio_decrypting_demuxer_stream_.reset(new media::DecryptingDemuxerStream(
524 media_task_runner_, set_decryptor_ready_cb_)); 526 media_task_runner_, set_decryptor_ready_cb_,
527 waiting_for_decryption_key_cb_));
525 audio_decrypting_demuxer_stream_->Initialize( 528 audio_decrypting_demuxer_stream_->Initialize(
526 audio_stream_, 529 audio_stream_,
527 base::Bind(&MediaSourceDelegate::OnAudioDecryptingDemuxerStreamInitDone, 530 base::Bind(&MediaSourceDelegate::OnAudioDecryptingDemuxerStreamInitDone,
528 media_weak_factory_.GetWeakPtr())); 531 media_weak_factory_.GetWeakPtr()));
529 } 532 }
530 533
531 void MediaSourceDelegate::InitVideoDecryptingDemuxerStream() { 534 void MediaSourceDelegate::InitVideoDecryptingDemuxerStream() {
532 DCHECK(media_task_runner_->BelongsToCurrentThread()); 535 DCHECK(media_task_runner_->BelongsToCurrentThread());
533 DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; 536 DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_;
534 DCHECK(!set_decryptor_ready_cb_.is_null()); 537 DCHECK(!set_decryptor_ready_cb_.is_null());
535 538
536 video_decrypting_demuxer_stream_.reset(new media::DecryptingDemuxerStream( 539 video_decrypting_demuxer_stream_.reset(new media::DecryptingDemuxerStream(
537 media_task_runner_, set_decryptor_ready_cb_)); 540 media_task_runner_, set_decryptor_ready_cb_,
541 waiting_for_decryption_key_cb_));
xhwang 2015/03/02 22:04:14 This fixes the decrypting-only part (where AesDecr
jrummell 2015/03/02 22:25:18 Acknowledged.
538 video_decrypting_demuxer_stream_->Initialize( 542 video_decrypting_demuxer_stream_->Initialize(
539 video_stream_, 543 video_stream_,
540 base::Bind(&MediaSourceDelegate::OnVideoDecryptingDemuxerStreamInitDone, 544 base::Bind(&MediaSourceDelegate::OnVideoDecryptingDemuxerStreamInitDone,
541 media_weak_factory_.GetWeakPtr())); 545 media_weak_factory_.GetWeakPtr()));
542 } 546 }
543 547
544 void MediaSourceDelegate::OnAudioDecryptingDemuxerStreamInitDone( 548 void MediaSourceDelegate::OnAudioDecryptingDemuxerStreamInitDone(
545 media::PipelineStatus status) { 549 media::PipelineStatus status) {
546 DCHECK(media_task_runner_->BelongsToCurrentThread()); 550 DCHECK(media_task_runner_->BelongsToCurrentThread());
547 DVLOG(1) << __FUNCTION__ << "(" << status << ") : " << demuxer_client_id_; 551 DVLOG(1) << __FUNCTION__ << "(" << status << ") : " << demuxer_client_id_;
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 configs->video_size = config.natural_size(); 756 configs->video_size = config.natural_size();
753 configs->is_video_encrypted = config.is_encrypted(); 757 configs->is_video_encrypted = config.is_encrypted();
754 configs->video_extra_data = std::vector<uint8>( 758 configs->video_extra_data = std::vector<uint8>(
755 config.extra_data(), config.extra_data() + config.extra_data_size()); 759 config.extra_data(), config.extra_data() + config.extra_data_size());
756 return true; 760 return true;
757 } 761 }
758 return false; 762 return false;
759 } 763 }
760 764
761 } // namespace content 765 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/android/media_source_delegate.h ('k') | content/renderer/media/android/webmediaplayer_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698