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

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: Fix TODO. 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 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 d4d2c9aec29e32aeb2c16e37d51261a256e3e430..bd3da14ef1da9f2d21a5438565a19cb6636407c3 100644
--- a/media/mojo/services/mojo_renderer_service.cc
+++ b/media/mojo/services/mojo_renderer_service.cc
@@ -11,6 +11,7 @@
#include "media/base/audio_decoder.h"
#include "media/base/audio_renderer.h"
#include "media/base/audio_renderer_sink.h"
+#include "media/base/cdm_context.h"
#include "media/base/decryptor.h"
#include "media/base/media_log.h"
#include "media/base/video_renderer.h"
@@ -33,8 +34,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(
+ CdmContextProvider* cdm_context_provider)
+ : cdm_context_provider_(cdm_context_provider),
+ state_(STATE_UNINITIALIZED),
last_media_time_usec_(0),
weak_factory_(this) {
weak_this_ = weak_factory_.GetWeakPtr();
@@ -109,6 +112,25 @@ void MojoRendererService::SetVolume(float volume) {
renderer_->SetVolume(volume);
}
+void MojoRendererService::SetCdm(int32_t cdm_id,
+ const mojo::Callback<void(bool)>& callback) {
+ if (!cdm_context_provider_) {
+ LOG(ERROR) << "CDM context provider not available.";
ddorwin 2015/05/15 19:10:07 Should this be more helpful? For example, it wasn'
+ callback.Run(false);
+ return;
+ }
+
+ CdmContext* cdm_context = cdm_context_provider_->GetCdmContext(cdm_id);
+ if (!cdm_context) {
+ LOG(ERROR) << "CDM context not found: " << cdm_id;
ddorwin 2015/05/15 19:10:07 Not DLOG? Same above. suggestion: s/: / for /
+ 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);
@@ -168,7 +190,7 @@ void MojoRendererService::SchedulePeriodicMediaTimeUpdates() {
void MojoRendererService::OnBufferingStateChanged(
BufferingState new_buffering_state) {
- DVLOG(2) << __FUNCTION__ << "(" << new_buffering_state << ") ";
+ DVLOG(2) << __FUNCTION__ << "(" << new_buffering_state << ")";
client_->OnBufferingStateChange(
static_cast<mojo::BufferingState>(new_buffering_state));
}
@@ -180,7 +202,7 @@ void MojoRendererService::OnRendererEnded() {
}
void MojoRendererService::OnError(PipelineStatus error) {
- DVLOG(1) << __FUNCTION__;
+ DVLOG(1) << __FUNCTION__ << "(" << error << ")";
state_ = STATE_ERROR;
client_->OnError();
}
@@ -192,4 +214,11 @@ void MojoRendererService::OnFlushCompleted(const mojo::Closure& callback) {
callback.Run();
}
+void MojoRendererService::OnCdmAttached(
+ const mojo::Callback<void(bool)>& callback,
+ bool success) {
+ DVLOG(1) << __FUNCTION__ << "(" << success << ")";
+ callback.Run(success);
+}
+
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698