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

Unified Diff: media/mojo/services/mojo_renderer_service.cc

Issue 840473002: media: Support creation and SetCdm() for mojo based CDM. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698