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

Side by Side Diff: media/mojo/services/mojo_renderer_impl.cc

Issue 1255083004: media: Mojo interfaces renaming. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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 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"
11 #include "media/base/bind_to_current_loop.h" 11 #include "media/base/bind_to_current_loop.h"
12 #include "media/base/demuxer_stream_provider.h" 12 #include "media/base/demuxer_stream_provider.h"
13 #include "media/mojo/services/mojo_demuxer_stream_impl.h" 13 #include "media/mojo/services/mojo_demuxer_stream_impl.h"
14 #include "mojo/application/public/cpp/connect.h" 14 #include "mojo/application/public/cpp/connect.h"
15 #include "mojo/application/public/interfaces/service_provider.mojom.h" 15 #include "mojo/application/public/interfaces/service_provider.mojom.h"
16 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_impl.h" 16 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_impl.h"
17 17
18 namespace media { 18 namespace media {
19 19
20 MojoRendererImpl::MojoRendererImpl( 20 MojoRendererImpl::MojoRendererImpl(
21 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 21 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
22 interfaces::MediaRendererPtr remote_media_renderer) 22 interfaces::RendererPtr remote_renderer)
23 : task_runner_(task_runner), 23 : task_runner_(task_runner),
24 remote_media_renderer_(remote_media_renderer.Pass()), 24 remote_renderer_(remote_renderer.Pass()),
25 binding_(this), 25 binding_(this),
26 weak_factory_(this) { 26 weak_factory_(this) {
27 DVLOG(1) << __FUNCTION__; 27 DVLOG(1) << __FUNCTION__;
28 } 28 }
29 29
30 MojoRendererImpl::~MojoRendererImpl() { 30 MojoRendererImpl::~MojoRendererImpl() {
31 DVLOG(1) << __FUNCTION__; 31 DVLOG(1) << __FUNCTION__;
32 DCHECK(task_runner_->BelongsToCurrentThread()); 32 DCHECK(task_runner_->BelongsToCurrentThread());
33 // Connection to |remote_media_renderer_| will error-out here. 33 // Connection to |remote_renderer_| will error-out here.
34 } 34 }
35 35
36 // TODO(xhwang): Support |waiting_for_decryption_key_cb| if needed. 36 // TODO(xhwang): Support |waiting_for_decryption_key_cb| if needed.
37 void MojoRendererImpl::Initialize( 37 void MojoRendererImpl::Initialize(
38 DemuxerStreamProvider* demuxer_stream_provider, 38 DemuxerStreamProvider* demuxer_stream_provider,
39 const PipelineStatusCB& init_cb, 39 const PipelineStatusCB& init_cb,
40 const StatisticsCB& statistics_cb, 40 const StatisticsCB& statistics_cb,
41 const BufferingStateCB& buffering_state_cb, 41 const BufferingStateCB& buffering_state_cb,
42 const base::Closure& ended_cb, 42 const base::Closure& ended_cb,
43 const PipelineStatusCB& error_cb, 43 const PipelineStatusCB& error_cb,
(...skipping 16 matching lines...) Expand all
60 demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO); 60 demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO);
61 61
62 interfaces::DemuxerStreamPtr audio_stream; 62 interfaces::DemuxerStreamPtr audio_stream;
63 if (audio) 63 if (audio)
64 new MojoDemuxerStreamImpl(audio, GetProxy(&audio_stream)); 64 new MojoDemuxerStreamImpl(audio, GetProxy(&audio_stream));
65 65
66 interfaces::DemuxerStreamPtr video_stream; 66 interfaces::DemuxerStreamPtr video_stream;
67 if (video) 67 if (video)
68 new MojoDemuxerStreamImpl(video, GetProxy(&video_stream)); 68 new MojoDemuxerStreamImpl(video, GetProxy(&video_stream));
69 69
70 interfaces::MediaRendererClientPtr client_ptr; 70 interfaces::RendererClientPtr client_ptr;
71 binding_.Bind(GetProxy(&client_ptr)); 71 binding_.Bind(GetProxy(&client_ptr));
72 remote_media_renderer_->Initialize( 72 remote_renderer_->Initialize(
73 client_ptr.Pass(), 73 client_ptr.Pass(), audio_stream.Pass(), video_stream.Pass(),
74 audio_stream.Pass(),
75 video_stream.Pass(),
76 BindToCurrentLoop(base::Bind(&MojoRendererImpl::OnInitialized, 74 BindToCurrentLoop(base::Bind(&MojoRendererImpl::OnInitialized,
77 weak_factory_.GetWeakPtr()))); 75 weak_factory_.GetWeakPtr())));
78 } 76 }
79 77
80 void MojoRendererImpl::SetCdm(CdmContext* cdm_context, 78 void MojoRendererImpl::SetCdm(CdmContext* cdm_context,
81 const CdmAttachedCB& cdm_attached_cb) { 79 const CdmAttachedCB& cdm_attached_cb) {
82 DVLOG(1) << __FUNCTION__; 80 DVLOG(1) << __FUNCTION__;
83 DCHECK(task_runner_->BelongsToCurrentThread()); 81 DCHECK(task_runner_->BelongsToCurrentThread());
84 82
85 int32_t cdm_id = cdm_context->GetCdmId(); 83 int32_t cdm_id = cdm_context->GetCdmId();
86 if (cdm_id == CdmContext::kInvalidCdmId) { 84 if (cdm_id == CdmContext::kInvalidCdmId) {
87 DVLOG(2) << "MojoRendererImpl only works with remote CDMs but the CDM ID " 85 DVLOG(2) << "MojoRendererImpl only works with remote CDMs but the CDM ID "
88 "is invalid."; 86 "is invalid.";
89 cdm_attached_cb.Run(false); 87 cdm_attached_cb.Run(false);
90 return; 88 return;
91 } 89 }
92 90
93 remote_media_renderer_->SetCdm(cdm_id, cdm_attached_cb); 91 remote_renderer_->SetCdm(cdm_id, cdm_attached_cb);
94 } 92 }
95 93
96 void MojoRendererImpl::Flush(const base::Closure& flush_cb) { 94 void MojoRendererImpl::Flush(const base::Closure& flush_cb) {
97 DVLOG(2) << __FUNCTION__; 95 DVLOG(2) << __FUNCTION__;
98 DCHECK(task_runner_->BelongsToCurrentThread()); 96 DCHECK(task_runner_->BelongsToCurrentThread());
99 remote_media_renderer_->Flush(flush_cb); 97 remote_renderer_->Flush(flush_cb);
100 } 98 }
101 99
102 void MojoRendererImpl::StartPlayingFrom(base::TimeDelta time) { 100 void MojoRendererImpl::StartPlayingFrom(base::TimeDelta time) {
103 DVLOG(2) << __FUNCTION__; 101 DVLOG(2) << __FUNCTION__;
104 DCHECK(task_runner_->BelongsToCurrentThread()); 102 DCHECK(task_runner_->BelongsToCurrentThread());
105 103
106 { 104 {
107 base::AutoLock auto_lock(lock_); 105 base::AutoLock auto_lock(lock_);
108 time_ = time; 106 time_ = time;
109 } 107 }
110 108
111 remote_media_renderer_->StartPlayingFrom(time.InMicroseconds()); 109 remote_renderer_->StartPlayingFrom(time.InMicroseconds());
112 } 110 }
113 111
114 void MojoRendererImpl::SetPlaybackRate(double playback_rate) { 112 void MojoRendererImpl::SetPlaybackRate(double playback_rate) {
115 DVLOG(2) << __FUNCTION__; 113 DVLOG(2) << __FUNCTION__;
116 DCHECK(task_runner_->BelongsToCurrentThread()); 114 DCHECK(task_runner_->BelongsToCurrentThread());
117 remote_media_renderer_->SetPlaybackRate(playback_rate); 115 remote_renderer_->SetPlaybackRate(playback_rate);
118 } 116 }
119 117
120 void MojoRendererImpl::SetVolume(float volume) { 118 void MojoRendererImpl::SetVolume(float volume) {
121 DVLOG(2) << __FUNCTION__; 119 DVLOG(2) << __FUNCTION__;
122 DCHECK(task_runner_->BelongsToCurrentThread()); 120 DCHECK(task_runner_->BelongsToCurrentThread());
123 remote_media_renderer_->SetVolume(volume); 121 remote_renderer_->SetVolume(volume);
124 } 122 }
125 123
126 base::TimeDelta MojoRendererImpl::GetMediaTime() { 124 base::TimeDelta MojoRendererImpl::GetMediaTime() {
127 base::AutoLock auto_lock(lock_); 125 base::AutoLock auto_lock(lock_);
128 DVLOG(3) << __FUNCTION__ << ": " << time_.InMilliseconds() << " ms"; 126 DVLOG(3) << __FUNCTION__ << ": " << time_.InMilliseconds() << " ms";
129 return time_; 127 return time_;
130 } 128 }
131 129
132 bool MojoRendererImpl::HasAudio() { 130 bool MojoRendererImpl::HasAudio() {
133 DVLOG(1) << __FUNCTION__; 131 DVLOG(1) << __FUNCTION__;
134 DCHECK(task_runner_->BelongsToCurrentThread()); 132 DCHECK(task_runner_->BelongsToCurrentThread());
135 DCHECK(remote_media_renderer_.get()); // We always bind the renderer. 133 DCHECK(remote_renderer_.get()); // We always bind the renderer.
136 return !!demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO); 134 return !!demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO);
137 } 135 }
138 136
139 bool MojoRendererImpl::HasVideo() { 137 bool MojoRendererImpl::HasVideo() {
140 DVLOG(1) << __FUNCTION__; 138 DVLOG(1) << __FUNCTION__;
141 DCHECK(task_runner_->BelongsToCurrentThread()); 139 DCHECK(task_runner_->BelongsToCurrentThread());
142 return !!demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO); 140 return !!demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO);
143 } 141 }
144 142
145 void MojoRendererImpl::OnTimeUpdate(int64_t time_usec, int64_t max_time_usec) { 143 void MojoRendererImpl::OnTimeUpdate(int64_t time_usec, int64_t max_time_usec) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 void MojoRendererImpl::OnInitialized(bool success) { 204 void MojoRendererImpl::OnInitialized(bool success) {
207 DVLOG(1) << __FUNCTION__; 205 DVLOG(1) << __FUNCTION__;
208 DCHECK(task_runner_->BelongsToCurrentThread()); 206 DCHECK(task_runner_->BelongsToCurrentThread());
209 DCHECK(!init_cb_.is_null()); 207 DCHECK(!init_cb_.is_null());
210 208
211 base::ResetAndReturn(&init_cb_) 209 base::ResetAndReturn(&init_cb_)
212 .Run(success ? PIPELINE_OK : PIPELINE_ERROR_INITIALIZATION_FAILED); 210 .Run(success ? PIPELINE_OK : PIPELINE_ERROR_INITIALIZATION_FAILED);
213 } 211 }
214 212
215 } // namespace media 213 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698