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

Side by Side Diff: media/mojo/services/mojo_renderer_impl.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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/mojo/services/mojo_renderer_impl.h" 5 #include "media/mojo/services/mojo_renderer_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback_helpers.h" 8 #include "base/callback_helpers.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 DCHECK(task_runner_->BelongsToCurrentThread()); 46 DCHECK(task_runner_->BelongsToCurrentThread());
47 DCHECK(demuxer_stream_provider); 47 DCHECK(demuxer_stream_provider);
48 48
49 demuxer_stream_provider_ = demuxer_stream_provider; 49 demuxer_stream_provider_ = demuxer_stream_provider;
50 // |init_cb| can be called on other thread. 50 // |init_cb| can be called on other thread.
51 init_cb_ = init_cb; 51 init_cb_ = init_cb;
52 ended_cb_ = ended_cb; 52 ended_cb_ = ended_cb;
53 error_cb_ = error_cb; 53 error_cb_ = error_cb;
54 buffering_state_cb_ = buffering_state_cb; 54 buffering_state_cb_ = buffering_state_cb;
55 55
56 // Create a mojo::DemuxerStream and bind its lifetime to the pipe. 56 // Create audio and video mojo::DemuxerStream and bind its lifetime to the
57 mojo::DemuxerStreamPtr demuxer_stream; 57 // pipe.
58 mojo::BindToProxy( 58 DemuxerStream* const audio =
59 new MojoDemuxerStreamImpl( 59 demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO);
60 demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO)), 60 DemuxerStream* const video =
61 &demuxer_stream); 61 demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO);
62
63 mojo::DemuxerStreamPtr audio_stream;
64 if (audio)
65 mojo::BindToProxy(new MojoDemuxerStreamImpl(audio), &audio_stream);
66
67 mojo::DemuxerStreamPtr video_stream;
68 if (video)
69 mojo::BindToProxy(new MojoDemuxerStreamImpl(video), &video_stream);
70
62 remote_audio_renderer_->Initialize( 71 remote_audio_renderer_->Initialize(
63 demuxer_stream.Pass(), 72 audio_stream.Pass(),
73 video_stream.Pass(),
64 BindToCurrentLoop(base::Bind(&MojoRendererImpl::OnInitialized, 74 BindToCurrentLoop(base::Bind(&MojoRendererImpl::OnInitialized,
65 weak_factory_.GetWeakPtr()))); 75 weak_factory_.GetWeakPtr())));
66 } 76 }
67 77
68 void MojoRendererImpl::Flush(const base::Closure& flush_cb) { 78 void MojoRendererImpl::Flush(const base::Closure& flush_cb) {
69 DVLOG(2) << __FUNCTION__; 79 DVLOG(2) << __FUNCTION__;
70 DCHECK(task_runner_->BelongsToCurrentThread()); 80 DCHECK(task_runner_->BelongsToCurrentThread());
71 remote_audio_renderer_->Flush(flush_cb); 81 remote_audio_renderer_->Flush(flush_cb);
72 } 82 }
73 83
(...skipping 24 matching lines...) Expand all
98 base::TimeDelta MojoRendererImpl::GetMediaTime() { 108 base::TimeDelta MojoRendererImpl::GetMediaTime() {
99 base::AutoLock auto_lock(lock_); 109 base::AutoLock auto_lock(lock_);
100 DVLOG(3) << __FUNCTION__ << ": " << time_.InMilliseconds() << " ms"; 110 DVLOG(3) << __FUNCTION__ << ": " << time_.InMilliseconds() << " ms";
101 return time_; 111 return time_;
102 } 112 }
103 113
104 bool MojoRendererImpl::HasAudio() { 114 bool MojoRendererImpl::HasAudio() {
105 DVLOG(1) << __FUNCTION__; 115 DVLOG(1) << __FUNCTION__;
106 DCHECK(task_runner_->BelongsToCurrentThread()); 116 DCHECK(task_runner_->BelongsToCurrentThread());
107 DCHECK(remote_audio_renderer_.get()); // We always bind the renderer. 117 DCHECK(remote_audio_renderer_.get()); // We always bind the renderer.
108 return true; 118 return !!demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO);
109 } 119 }
110 120
111 bool MojoRendererImpl::HasVideo() { 121 bool MojoRendererImpl::HasVideo() {
112 DVLOG(1) << __FUNCTION__; 122 DVLOG(1) << __FUNCTION__;
113 DCHECK(task_runner_->BelongsToCurrentThread()); 123 DCHECK(task_runner_->BelongsToCurrentThread());
114 return false; 124 return !!demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO);
115 } 125 }
116 126
117 void MojoRendererImpl::SetCdm(MediaKeys* cdm) { 127 void MojoRendererImpl::SetCdm(MediaKeys* cdm) {
118 DVLOG(1) << __FUNCTION__; 128 DVLOG(1) << __FUNCTION__;
119 DCHECK(task_runner_->BelongsToCurrentThread()); 129 DCHECK(task_runner_->BelongsToCurrentThread());
120 NOTIMPLEMENTED(); 130 NOTIMPLEMENTED();
121 } 131 }
122 132
123 void MojoRendererImpl::OnTimeUpdate(int64_t time_usec, int64_t max_time_usec) { 133 void MojoRendererImpl::OnTimeUpdate(int64_t time_usec, int64_t max_time_usec) {
124 DVLOG(3) << __FUNCTION__ << ": " << time_usec << ", " << max_time_usec; 134 DVLOG(3) << __FUNCTION__ << ": " << time_usec << ", " << max_time_usec;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 194
185 void MojoRendererImpl::OnInitialized() { 195 void MojoRendererImpl::OnInitialized() {
186 DVLOG(1) << __FUNCTION__; 196 DVLOG(1) << __FUNCTION__;
187 DCHECK(task_runner_->BelongsToCurrentThread()); 197 DCHECK(task_runner_->BelongsToCurrentThread());
188 DCHECK(!init_cb_.is_null()); 198 DCHECK(!init_cb_.is_null());
189 199
190 base::ResetAndReturn(&init_cb_).Run(); 200 base::ResetAndReturn(&init_cb_).Run();
191 } 201 }
192 202
193 } // namespace media 203 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/services/mojo_demuxer_stream_impl.cc ('k') | media/mojo/services/mojo_renderer_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698