| Index: media/tools/player_x11/player_x11.cc
|
| ===================================================================
|
| --- media/tools/player_x11/player_x11.cc (revision 182591)
|
| +++ media/tools/player_x11/player_x11.cc (working copy)
|
| @@ -44,6 +44,8 @@
|
|
|
| media::AudioManager* g_audio_manager = NULL;
|
|
|
| +media::VideoRendererBase* g_video_renderer = NULL;
|
| +
|
| scoped_refptr<media::FileDataSource> CreateFileDataSource(
|
| const std::string& file_path) {
|
| scoped_refptr<media::FileDataSource> file_data_source(
|
| @@ -81,15 +83,18 @@
|
| }
|
|
|
| typedef base::Callback<void(media::VideoFrame*)> PaintCB;
|
| -void Paint(MessageLoop* message_loop, const PaintCB& paint_cb,
|
| - const scoped_refptr<media::VideoFrame>& video_frame) {
|
| +void Paint(MessageLoop* message_loop, const PaintCB& paint_cb) {
|
| if (message_loop != MessageLoop::current()) {
|
| message_loop->PostTask(FROM_HERE, base::Bind(
|
| - &Paint, message_loop, paint_cb, video_frame));
|
| + &Paint, message_loop, paint_cb));
|
| return;
|
| }
|
|
|
| - paint_cb.Run(video_frame);
|
| + scoped_refptr<media::VideoFrame> video_frame;
|
| + g_video_renderer->GetCurrentFrame(&video_frame);
|
| + if (video_frame)
|
| + paint_cb.Run(video_frame);
|
| + g_video_renderer->PutCurrentFrame(video_frame);
|
| }
|
|
|
| static void OnBufferingState(media::Pipeline::BufferingState buffering_state) {}
|
| @@ -111,19 +116,18 @@
|
| message_loop));
|
|
|
| // Create our video renderer and save a reference to it for painting.
|
| - scoped_ptr<media::VideoRenderer> video_renderer(new media::VideoRendererBase(
|
| + g_video_renderer = new media::VideoRendererBase(
|
| message_loop,
|
| media::SetDecryptorReadyCB(),
|
| base::Bind(&Paint, paint_message_loop, paint_cb),
|
| base::Bind(&SetOpaque),
|
| - true));
|
| - collection->SetVideoRenderer(video_renderer.Pass());
|
| + true);
|
| + collection->AddVideoRenderer(g_video_renderer);
|
|
|
| - scoped_ptr<media::AudioRenderer> audio_renderer(new media::AudioRendererImpl(
|
| + collection->AddAudioRenderer(new media::AudioRendererImpl(
|
| message_loop,
|
| new media::NullAudioSink(),
|
| media::SetDecryptorReadyCB()));
|
| - collection->SetAudioRenderer(audio_renderer.Pass());
|
|
|
| // Create the pipeline and start it.
|
| *pipeline = new media::Pipeline(message_loop, new media::MediaLog());
|
|
|