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

Unified Diff: media/tools/player_x11/player_x11.cc

Issue 237353007: Refactor VideoRendererImpl to use VideoFrameScheduler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase over split out CLs Created 6 years, 8 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/filters/video_renderer_impl_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/tools/player_x11/player_x11.cc
diff --git a/media/tools/player_x11/player_x11.cc b/media/tools/player_x11/player_x11.cc
index a6e5718210360851a83dcbaea16006a349e1ced7..7effec1d7ac72b7ac821e4fe09daf0019bd38d18 100644
--- a/media/tools/player_x11/player_x11.cc
+++ b/media/tools/player_x11/player_x11.cc
@@ -30,6 +30,8 @@
#include "media/filters/ffmpeg_demuxer.h"
#include "media/filters/ffmpeg_video_decoder.h"
#include "media/filters/file_data_source.h"
+#include "media/filters/video_frame_scheduler_impl.h"
+#include "media/filters/video_frame_scheduler_proxy.h"
#include "media/filters/video_renderer_impl.h"
#include "media/tools/player_x11/data_source_logger.h"
@@ -103,7 +105,7 @@ void InitPipeline(
media::Pipeline* pipeline,
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
media::Demuxer* demuxer,
- const media::VideoRendererImpl::PaintCB& paint_cb,
+ scoped_ptr<media::VideoFrameScheduler> scheduler,
bool /* enable_audio */) {
// Create our filter factories.
scoped_ptr<media::FilterCollection> collection(
@@ -114,10 +116,9 @@ void InitPipeline(
video_decoders.push_back(new media::FFmpegVideoDecoder(task_runner));
scoped_ptr<media::VideoRenderer> video_renderer(new media::VideoRendererImpl(
task_runner,
+ scheduler.Pass(),
video_decoders.Pass(),
- media::SetDecryptorReadyCB(),
- paint_cb,
- true));
+ media::SetDecryptorReadyCB()));
collection->SetVideoRenderer(video_renderer.Pass());
ScopedVector<media::AudioDecoder> audio_decoders;
@@ -265,15 +266,23 @@ int main(int argc, char** argv) {
base::Thread media_thread("MediaThread");
media_thread.Start();
- media::VideoRendererImpl::PaintCB paint_cb;
+ media::VideoFrameSchedulerImpl::DisplayCB display_cb;
if (command_line->HasSwitch("use-gl")) {
- paint_cb = media::BindToCurrentLoop(base::Bind(
- &GlVideoRenderer::Paint, new GlVideoRenderer(g_display, g_window)));
+ display_cb = base::Bind(&GlVideoRenderer::Paint,
+ new GlVideoRenderer(g_display, g_window));
} else {
- paint_cb = media::BindToCurrentLoop(base::Bind(
- &X11VideoRenderer::Paint, new X11VideoRenderer(g_display, g_window)));
+ display_cb = base::Bind(&X11VideoRenderer::Paint,
+ new X11VideoRenderer(g_display, g_window));
}
+ scoped_ptr<media::VideoFrameScheduler> scheduler_impl(
+ new media::VideoFrameSchedulerImpl(message_loop.message_loop_proxy(),
+ display_cb));
+ scoped_ptr<media::VideoFrameScheduler> scheduler_proxy(
+ new media::VideoFrameSchedulerProxy(media_thread.message_loop_proxy(),
+ message_loop.message_loop_proxy(),
+ scheduler_impl.Pass()));
+
scoped_ptr<media::DataSource> data_source(new DataSourceLogger(
CreateDataSource(filename), command_line->HasSwitch("streaming")));
scoped_ptr<media::Demuxer> demuxer(new media::FFmpegDemuxer(
@@ -283,7 +292,7 @@ int main(int argc, char** argv) {
media::Pipeline pipeline(media_thread.message_loop_proxy(),
new media::MediaLog());
InitPipeline(&pipeline, media_thread.message_loop_proxy(), demuxer.get(),
- paint_cb, command_line->HasSwitch("audio"));
+ scheduler_proxy.Pass(), command_line->HasSwitch("audio"));
// Main loop of the application.
g_running = true;
@@ -297,7 +306,7 @@ int main(int argc, char** argv) {
// Release callback which releases video renderer. Do this before cleaning up
// X below since the video renderer has some X cleanup duties as well.
- paint_cb.Reset();
+ display_cb.Reset();
XDestroyWindow(g_display, g_window);
XCloseDisplay(g_display);
« no previous file with comments | « media/filters/video_renderer_impl_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698