Chromium Code Reviews| Index: content/common/gpu/media/android_video_decode_accelerator.cc |
| diff --git a/content/common/gpu/media/android_video_decode_accelerator.cc b/content/common/gpu/media/android_video_decode_accelerator.cc |
| index 9eccdc65e0440ab49d2bdcb479e2e670382960ea..b93492e54997ffb71500398637011b982c063a3b 100644 |
| --- a/content/common/gpu/media/android_video_decode_accelerator.cc |
| +++ b/content/common/gpu/media/android_video_decode_accelerator.cc |
| @@ -38,7 +38,6 @@ |
| #include "ui/gl/gl_bindings.h" |
| #if defined(ENABLE_MOJO_MEDIA_IN_GPU_PROCESS) |
| -#include "media/base/media_keys.h" |
| #include "media/mojo/services/mojo_cdm_service.h" |
| #endif |
| @@ -285,11 +284,12 @@ AndroidVideoDecodeAccelerator::~AndroidVideoDecodeAccelerator() { |
| g_avda_timer.Pointer()->StopTimer(this); |
| #if defined(ENABLE_MOJO_MEDIA_IN_GPU_PROCESS) |
| - if (cdm_) { |
| - DCHECK(cdm_registration_id_); |
| - static_cast<media::MediaDrmBridge*>(cdm_.get()) |
| - ->UnregisterPlayer(cdm_registration_id_); |
| - } |
| + if (!cdm_) |
| + return; |
| + |
| + DCHECK(cdm_registration_id_); |
| + static_cast<media::MediaDrmBridgeCdmContext*>(cdm_->GetCdmContext()) |
|
ddorwin
2016/03/21 21:40:25
It would be nice to only cast once.
Also, we shoul
xhwang
2016/03/22 17:08:32
Done.
|
| + ->UnregisterPlayer(cdm_registration_id_); |
| #endif // defined(ENABLE_MOJO_MEDIA_IN_GPU_PROCESS) |
| } |
| @@ -365,8 +365,6 @@ void AndroidVideoDecodeAccelerator::SetCdm(int cdm_id) { |
| DVLOG(2) << __FUNCTION__ << ": " << cdm_id; |
| #if defined(ENABLE_MOJO_MEDIA_IN_GPU_PROCESS) |
| - using media::MediaDrmBridge; |
| - |
| DCHECK(client_) << "SetCdm() must be called after Initialize()."; |
| if (cdm_) { |
| @@ -378,8 +376,9 @@ void AndroidVideoDecodeAccelerator::SetCdm(int cdm_id) { |
| cdm_ = media::MojoCdmService::LegacyGetCdm(cdm_id); |
| DCHECK(cdm_); |
| - // On Android platform the MediaKeys will be its subclass MediaDrmBridge. |
| - MediaDrmBridge* drm_bridge = static_cast<MediaDrmBridge*>(cdm_.get()); |
| + // On Android platform the CdmContext must be a MediaDrmBridgeCdmContext. |
| + media::MediaDrmBridgeCdmContext* media_drm_bridge_cdm_context = |
| + static_cast<media::MediaDrmBridgeCdmContext*>(cdm_->GetCdmContext()); |
| // Register CDM callbacks. The callbacks registered will be posted back to |
| // this thread via BindToCurrentLoop. |
| @@ -389,13 +388,13 @@ void AndroidVideoDecodeAccelerator::SetCdm(int cdm_id) { |
| // destructed as well. So the |cdm_unset_cb| will never have a chance to be |
| // called. |
| // TODO(xhwang): Remove |cdm_unset_cb| after it's not used on all platforms. |
| - cdm_registration_id_ = |
| - drm_bridge->RegisterPlayer(media::BindToCurrentLoop(base::Bind( |
| - &AndroidVideoDecodeAccelerator::OnKeyAdded, |
| - weak_this_factory_.GetWeakPtr())), |
| - base::Bind(&base::DoNothing)); |
| + cdm_registration_id_ = media_drm_bridge_cdm_context->RegisterPlayer( |
| + media::BindToCurrentLoop( |
| + base::Bind(&AndroidVideoDecodeAccelerator::OnKeyAdded, |
| + weak_this_factory_.GetWeakPtr())), |
| + base::Bind(&base::DoNothing)); |
| - drm_bridge->SetMediaCryptoReadyCB(media::BindToCurrentLoop( |
| + media_drm_bridge_cdm_context->SetMediaCryptoReadyCB(media::BindToCurrentLoop( |
| base::Bind(&AndroidVideoDecodeAccelerator::OnMediaCryptoReady, |
| weak_this_factory_.GetWeakPtr()))); |
| @@ -1071,7 +1070,7 @@ void AndroidVideoDecodeAccelerator::PostError( |
| } |
| void AndroidVideoDecodeAccelerator::OnMediaCryptoReady( |
| - media::MediaDrmBridge::JavaObjectPtr media_crypto, |
| + media::MediaDrmBridgeCdmContext::JavaObjectPtr media_crypto, |
| bool needs_protected_surface) { |
| DVLOG(1) << __FUNCTION__; |