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

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

Issue 684963003: Add support for external video renderers in mojo. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mojo_config
Patch Set: More MSVC... Created 6 years, 1 month 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') | media/mojo/services/renderer_config.h » ('j') | 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 4987751b3b4e63bbb1da6ba1ca7d37bbcacb346c..03b5040b2f3f2c733d53af9f99fdf31576400420 100644
--- a/media/mojo/services/mojo_renderer_service.cc
+++ b/media/mojo/services/mojo_renderer_service.cc
@@ -15,6 +15,8 @@
#include "media/base/video_renderer.h"
#include "media/filters/audio_renderer_impl.h"
#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_demuxer_stream_adapter.h"
#include "media/mojo/services/renderer_config.h"
#include "mojo/application/application_runner_chromium.h"
@@ -33,29 +35,8 @@ static void LogMediaSourceError(const scoped_refptr<MediaLog>& media_log,
media_log->AddEvent(media_log->CreateMediaSourceErrorEvent(error));
}
-// Shim DemuxerStreamProvider wrapper for a single DemuxerStream.
-// TODO(dalecurtis): Once we support more than one DemuxerStream we'll need a
-// more complicated shim which can handle a mojo::Array<DemuxerStream>.
-class DemuxerStreamProviderShim : public DemuxerStreamProvider {
- public:
- DemuxerStreamProviderShim(scoped_ptr<MojoDemuxerStreamAdapter> stream)
- : stream_(stream.Pass()) {}
-
- ~DemuxerStreamProviderShim() override {}
-
- DemuxerStream* GetStream(DemuxerStream::Type type) override {
- return type != stream_->type() ? nullptr : stream_.get();
- };
-
- Liveness GetLiveness() const override {
- return DemuxerStreamProvider::LIVENESS_UNKNOWN;
- }
-
- private:
- scoped_ptr<MojoDemuxerStreamAdapter> stream_;
-
- DISALLOW_COPY_AND_ASSIGN(DemuxerStreamProviderShim);
-};
+static void PaintNothing(const scoped_refptr<VideoFrame>& frame) {
+}
class MojoRendererApplication
: public mojo::ApplicationDelegate,
@@ -102,7 +83,16 @@ MojoRendererService::MojoRendererService(
SetDecryptorReadyCB(),
renderer_config->GetAudioHardwareConfig(),
media_log));
- scoped_ptr<VideoRenderer> video_renderer(nullptr);
+
+ scoped_ptr<VideoRenderer> video_renderer(new VideoRendererImpl(
+ task_runner,
+ renderer_config->GetVideoDecoders(
+ task_runner,
+ base::Bind(&LogMediaSourceError, media_log)).Pass(),
+ SetDecryptorReadyCB(),
+ base::Bind(&PaintNothing),
+ true,
+ media_log));
// Create renderer.
renderer_.reset(new RendererImpl(
@@ -112,7 +102,8 @@ MojoRendererService::MojoRendererService(
MojoRendererService::~MojoRendererService() {
}
-void MojoRendererService::Initialize(mojo::DemuxerStreamPtr stream,
+void MojoRendererService::Initialize(mojo::DemuxerStreamPtr audio,
+ mojo::DemuxerStreamPtr video,
const mojo::Closure& callback) {
DVLOG(1) << __FUNCTION__;
DCHECK_EQ(state_, STATE_UNINITIALIZED);
@@ -120,11 +111,9 @@ void MojoRendererService::Initialize(mojo::DemuxerStreamPtr stream,
state_ = STATE_INITIALIZING;
stream_provider_.reset(new DemuxerStreamProviderShim(
- make_scoped_ptr(new MojoDemuxerStreamAdapter(
- stream.Pass(),
- base::Bind(&MojoRendererService::OnStreamReady,
- weak_this_,
- callback))).Pass()));
+ audio.Pass(),
+ video.Pass(),
+ base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback)));
}
void MojoRendererService::Flush(const mojo::Closure& callback) {
« no previous file with comments | « media/mojo/services/mojo_renderer_service.h ('k') | media/mojo/services/renderer_config.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698