OLD | NEW |
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 <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
11 #include "base/location.h" | 11 #include "base/location.h" |
12 #include "base/single_thread_task_runner.h" | 12 #include "base/single_thread_task_runner.h" |
13 #include "media/base/demuxer_stream_provider.h" | 13 #include "media/base/demuxer_stream_provider.h" |
14 #include "media/base/renderer_client.h" | 14 #include "media/base/renderer_client.h" |
15 #include "media/mojo/services/mojo_demuxer_stream_impl.h" | 15 #include "media/mojo/services/mojo_demuxer_stream_impl.h" |
16 | 16 |
17 namespace media { | 17 namespace media { |
18 | 18 |
19 MojoRendererImpl::MojoRendererImpl( | 19 MojoRendererImpl::MojoRendererImpl( |
20 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, | 20 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
21 interfaces::RendererPtr remote_renderer) | 21 mojom::RendererPtr remote_renderer) |
22 : task_runner_(task_runner), | 22 : task_runner_(task_runner), |
23 remote_renderer_info_(remote_renderer.PassInterface()), | 23 remote_renderer_info_(remote_renderer.PassInterface()), |
24 binding_(this) { | 24 binding_(this) { |
25 DVLOG(1) << __FUNCTION__; | 25 DVLOG(1) << __FUNCTION__; |
26 } | 26 } |
27 | 27 |
28 MojoRendererImpl::~MojoRendererImpl() { | 28 MojoRendererImpl::~MojoRendererImpl() { |
29 DVLOG(1) << __FUNCTION__; | 29 DVLOG(1) << __FUNCTION__; |
30 DCHECK(task_runner_->BelongsToCurrentThread()); | 30 DCHECK(task_runner_->BelongsToCurrentThread()); |
31 } | 31 } |
(...skipping 20 matching lines...) Expand all Loading... |
52 // Using base::Unretained(this) is safe because |this| owns | 52 // Using base::Unretained(this) is safe because |this| owns |
53 // |remote_renderer_|, and the error handler can't be invoked once | 53 // |remote_renderer_|, and the error handler can't be invoked once |
54 // |remote_renderer_| is destroyed. | 54 // |remote_renderer_| is destroyed. |
55 remote_renderer_.set_connection_error_handler( | 55 remote_renderer_.set_connection_error_handler( |
56 base::Bind(&MojoRendererImpl::OnConnectionError, base::Unretained(this))); | 56 base::Bind(&MojoRendererImpl::OnConnectionError, base::Unretained(this))); |
57 | 57 |
58 demuxer_stream_provider_ = demuxer_stream_provider; | 58 demuxer_stream_provider_ = demuxer_stream_provider; |
59 client_ = client; | 59 client_ = client; |
60 init_cb_ = init_cb; | 60 init_cb_ = init_cb; |
61 | 61 |
62 // Create audio and video interfaces::DemuxerStream and bind its lifetime to | 62 // Create audio and video mojom::DemuxerStream and bind its lifetime to |
63 // the pipe. | 63 // the pipe. |
64 DemuxerStream* const audio = | 64 DemuxerStream* const audio = |
65 demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO); | 65 demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO); |
66 DemuxerStream* const video = | 66 DemuxerStream* const video = |
67 demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO); | 67 demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO); |
68 | 68 |
69 interfaces::DemuxerStreamPtr audio_stream; | 69 mojom::DemuxerStreamPtr audio_stream; |
70 if (audio) | 70 if (audio) |
71 new MojoDemuxerStreamImpl(audio, GetProxy(&audio_stream)); | 71 new MojoDemuxerStreamImpl(audio, GetProxy(&audio_stream)); |
72 | 72 |
73 interfaces::DemuxerStreamPtr video_stream; | 73 mojom::DemuxerStreamPtr video_stream; |
74 if (video) | 74 if (video) |
75 new MojoDemuxerStreamImpl(video, GetProxy(&video_stream)); | 75 new MojoDemuxerStreamImpl(video, GetProxy(&video_stream)); |
76 | 76 |
77 // Using base::Unretained(this) is safe because |this| owns | 77 // Using base::Unretained(this) is safe because |this| owns |
78 // |remote_renderer_|, and the callback won't be dispatched if | 78 // |remote_renderer_|, and the callback won't be dispatched if |
79 // |remote_renderer_| is destroyed. | 79 // |remote_renderer_| is destroyed. |
80 remote_renderer_->Initialize( | 80 remote_renderer_->Initialize( |
81 binding_.CreateInterfacePtrAndBind(), std::move(audio_stream), | 81 binding_.CreateInterfacePtrAndBind(), std::move(audio_stream), |
82 std::move(video_stream), | 82 std::move(video_stream), |
83 base::Bind(&MojoRendererImpl::OnInitialized, base::Unretained(this))); | 83 base::Bind(&MojoRendererImpl::OnInitialized, base::Unretained(this))); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 } | 149 } |
150 | 150 |
151 void MojoRendererImpl::OnTimeUpdate(int64_t time_usec, int64_t max_time_usec) { | 151 void MojoRendererImpl::OnTimeUpdate(int64_t time_usec, int64_t max_time_usec) { |
152 DVLOG(3) << __FUNCTION__ << ": " << time_usec << ", " << max_time_usec; | 152 DVLOG(3) << __FUNCTION__ << ": " << time_usec << ", " << max_time_usec; |
153 DCHECK(task_runner_->BelongsToCurrentThread()); | 153 DCHECK(task_runner_->BelongsToCurrentThread()); |
154 | 154 |
155 base::AutoLock auto_lock(lock_); | 155 base::AutoLock auto_lock(lock_); |
156 time_ = base::TimeDelta::FromMicroseconds(time_usec); | 156 time_ = base::TimeDelta::FromMicroseconds(time_usec); |
157 } | 157 } |
158 | 158 |
159 void MojoRendererImpl::OnBufferingStateChange( | 159 void MojoRendererImpl::OnBufferingStateChange(mojom::BufferingState state) { |
160 interfaces::BufferingState state) { | |
161 DVLOG(2) << __FUNCTION__; | 160 DVLOG(2) << __FUNCTION__; |
162 DCHECK(task_runner_->BelongsToCurrentThread()); | 161 DCHECK(task_runner_->BelongsToCurrentThread()); |
163 client_->OnBufferingStateChange(static_cast<media::BufferingState>(state)); | 162 client_->OnBufferingStateChange(static_cast<media::BufferingState>(state)); |
164 } | 163 } |
165 | 164 |
166 void MojoRendererImpl::OnEnded() { | 165 void MojoRendererImpl::OnEnded() { |
167 DVLOG(1) << __FUNCTION__; | 166 DVLOG(1) << __FUNCTION__; |
168 DCHECK(task_runner_->BelongsToCurrentThread()); | 167 DCHECK(task_runner_->BelongsToCurrentThread()); |
169 client_->OnEnded(); | 168 client_->OnEnded(); |
170 } | 169 } |
(...skipping 23 matching lines...) Expand all Loading... |
194 void MojoRendererImpl::OnInitialized(bool success) { | 193 void MojoRendererImpl::OnInitialized(bool success) { |
195 DVLOG(1) << __FUNCTION__; | 194 DVLOG(1) << __FUNCTION__; |
196 DCHECK(task_runner_->BelongsToCurrentThread()); | 195 DCHECK(task_runner_->BelongsToCurrentThread()); |
197 DCHECK(!init_cb_.is_null()); | 196 DCHECK(!init_cb_.is_null()); |
198 | 197 |
199 base::ResetAndReturn(&init_cb_) | 198 base::ResetAndReturn(&init_cb_) |
200 .Run(success ? PIPELINE_OK : PIPELINE_ERROR_INITIALIZATION_FAILED); | 199 .Run(success ? PIPELINE_OK : PIPELINE_ERROR_INITIALIZATION_FAILED); |
201 } | 200 } |
202 | 201 |
203 } // namespace media | 202 } // namespace media |
OLD | NEW |