Index: media/mojo/services/mojo_renderer_service.cc |
diff --git a/media/mojo/services/mojo_renderer_service.cc b/media/mojo/services/mojo_renderer_service.cc |
index 562ae1890ecb8e7faee809d2f75768eb5432ea39..6c14f7fec31004d65acbbee9be7c91e5db5127e3 100644 |
--- a/media/mojo/services/mojo_renderer_service.cc |
+++ b/media/mojo/services/mojo_renderer_service.cc |
@@ -18,6 +18,7 @@ |
#include "media/filters/renderer_impl.h" |
#include "media/filters/video_renderer_impl.h" |
#include "media/mojo/services/demuxer_stream_provider_shim.h" |
+#include "media/mojo/services/mojo_cdm_service_context.h" |
#include "media/mojo/services/mojo_demuxer_stream_adapter.h" |
#include "media/mojo/services/renderer_config.h" |
@@ -34,8 +35,10 @@ static void LogMediaSourceError(const scoped_refptr<MediaLog>& media_log, |
static void PaintNothing(const scoped_refptr<VideoFrame>& frame) { |
} |
-MojoRendererService::MojoRendererService() |
- : state_(STATE_UNINITIALIZED), |
+MojoRendererService::MojoRendererService( |
+ MojoCdmServiceContext* cdm_service_context) |
+ : cdm_service_context_(cdm_service_context), |
+ state_(STATE_UNINITIALIZED), |
last_media_time_usec_(0), |
weak_factory_(this) { |
weak_this_ = weak_factory_.GetWeakPtr(); |
@@ -110,6 +113,19 @@ void MojoRendererService::SetVolume(float volume) { |
renderer_->SetVolume(volume); |
} |
+void MojoRendererService::SetCdm(int32_t cdm_id, |
+ const mojo::Callback<void(bool)>& callback) { |
+ CdmContext* cdm_context = cdm_service_context_->GetCdmContext(cdm_id); |
+ if (!cdm_context) { |
+ DVLOG(1) << __FUNCTION__ << ": No CDM for " << cdm_id << " found."; |
+ callback.Run(false); |
+ return; |
+ } |
+ |
+ renderer_->SetCdm(cdm_context, base::Bind(&MojoRendererService::OnCdmAttached, |
+ weak_this_, callback)); |
+} |
+ |
void MojoRendererService::OnStreamReady(const mojo::Closure& callback) { |
DCHECK_EQ(state_, STATE_INITIALIZING); |
@@ -189,4 +205,11 @@ void MojoRendererService::OnFlushCompleted(const mojo::Closure& callback) { |
callback.Run(); |
} |
+void MojoRendererService::OnCdmAttached( |
+ const mojo::Callback<void(bool)>& callback, |
+ bool success) { |
+ DVLOG(1) << __FUNCTION__; |
+ callback.Run(success); |
+} |
+ |
} // namespace media |