Chromium Code Reviews| Index: media/base/android/media_source_player.cc |
| diff --git a/media/base/android/media_source_player.cc b/media/base/android/media_source_player.cc |
| index 8aec0ab31f907c76f5cfcae34d2b4a707390bde8..38afb9a30850b3baf6ed80d26b0655f4c7adacf9 100644 |
| --- a/media/base/android/media_source_player.cc |
| +++ b/media/base/android/media_source_player.cc |
| @@ -266,11 +266,16 @@ void MediaSourcePlayer::OnDemuxerDurationChanged(base::TimeDelta duration) { |
| } |
| void MediaSourcePlayer::OnMediaCryptoReady( |
| - MediaDrmBridge::JavaObjectPtr /* media_crypto */, |
| + MediaDrmBridge::JavaObjectPtr media_crypto, |
| bool /* needs_protected_surface */) { |
| - // Callback parameters are ignored in this player. They are intended for |
| - // MediaCodecPlayer which uses a different threading scheme. |
| - DCHECK(!static_cast<MediaDrmBridge*>(cdm_.get())->GetMediaCrypto().is_null()); |
| + DCHECK(media_crypto); |
| + DCHECK(static_cast<MediaDrmBridge*>(cdm_.get())->GetMediaCrypto()); |
| + |
| + if (media_crypto->is_null()) { |
| + // TODO(xhwang): Fail playback nicely here. |
|
Tima Vaisburd
2015/12/11 19:31:24
The normal reaction to internal error seems to be
xhwang
2015/12/11 21:45:16
As discussed offline. Refined the TODO and we'll c
|
| + LOG(ERROR) << "MediaCrypto creation failed!"; |
| + return; |
| + } |
| // Retry decoder creation if the decoders are waiting for MediaCrypto. |
| RetryDecoderCreation(true, true); |
| @@ -306,16 +311,9 @@ void MediaSourcePlayer::SetCdm(const scoped_refptr<MediaKeys>& cdm) { |
| audio_decoder_job_->SetDrmBridge(drm_bridge); |
| video_decoder_job_->SetDrmBridge(drm_bridge); |
| - if (drm_bridge->GetMediaCrypto().is_null()) { |
| - // Use BindToCurrentLoop to avoid reentrancy. |
| - MediaDrmBridge::MediaCryptoReadyCB cb = BindToCurrentLoop( |
| - base::Bind(&MediaSourcePlayer::OnMediaCryptoReady, weak_this_)); |
| - drm_bridge->SetMediaCryptoReadyCB(cb); |
| - return; |
| - } |
| - |
| - // If the player is previously waiting for CDM, retry decoder creation. |
| - RetryDecoderCreation(true, true); |
| + // Use BindToCurrentLoop to avoid reentrancy. |
| + drm_bridge->SetMediaCryptoReadyCB(BindToCurrentLoop( |
| + base::Bind(&MediaSourcePlayer::OnMediaCryptoReady, weak_this_))); |
| } |
| void MediaSourcePlayer::OnDemuxerSeekDone( |