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

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: rebase only; compiles but needs more polish... Created 5 years, 7 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
« no previous file with comments | « media/mojo/services/mojo_renderer_service.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 27f44224fb4d3b53eb9890e38c8dea5a7c2011b3..3e49e455230aca1bc71cd0ca44680ea9d91812f6 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"
@@ -27,8 +28,10 @@ namespace media {
const int kTimeUpdateIntervalMs = 50;
MojoRendererService::MojoRendererService(
+ CdmContextProvider* cdm_context_provider,
mojo::InterfaceRequest<mojo::MediaRenderer> request)
: binding_(this, request.Pass()),
+ cdm_context_provider_(cdm_context_provider),
state_(STATE_UNINITIALIZED),
last_media_time_usec_(0),
weak_factory_(this) {
@@ -105,6 +108,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.";
+ callback.Run(false);
+ return;
+ }
+
+ CdmContext* cdm_context = cdm_context_provider_->GetCdmContext(cdm_id);
+ if (!cdm_context) {
+ LOG(ERROR) << "CDM context not found: " << cdm_id;
+ 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);
@@ -163,7 +185,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));
}
@@ -175,7 +197,7 @@ void MojoRendererService::OnRendererEnded() {
}
void MojoRendererService::OnError(PipelineStatus error) {
- DVLOG(1) << __FUNCTION__;
+ DVLOG(1) << __FUNCTION__ << "(" << error << ")";
state_ = STATE_ERROR;
client_->OnError();
}
@@ -187,4 +209,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
« no previous file with comments | « media/mojo/services/mojo_renderer_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698