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

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

Issue 1873513003: Add video-rendering to mojo media pipeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: export VideoOverlayFactory Created 4 years, 7 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 <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/base/video_renderer_sink.h"
15 #include "media/mojo/services/mojo_demuxer_stream_impl.h" 16 #include "media/mojo/services/mojo_demuxer_stream_impl.h"
17 #include "media/renderers/video_overlay_factory.h"
16 #include "mojo/converters/geometry/geometry_type_converters.h" 18 #include "mojo/converters/geometry/geometry_type_converters.h"
17 19
18 namespace media { 20 namespace media {
19 21
20 MojoRendererImpl::MojoRendererImpl( 22 MojoRendererImpl::MojoRendererImpl(
21 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 23 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
24 std::unique_ptr<VideoOverlayFactory> video_overlay_factory,
25 VideoRendererSink* video_renderer_sink,
22 mojom::RendererPtr remote_renderer) 26 mojom::RendererPtr remote_renderer)
23 : task_runner_(task_runner), 27 : task_runner_(task_runner),
28 video_overlay_factory_(std::move(video_overlay_factory)),
29 video_renderer_sink_(video_renderer_sink),
24 remote_renderer_info_(remote_renderer.PassInterface()), 30 remote_renderer_info_(remote_renderer.PassInterface()),
25 binding_(this) { 31 binding_(this) {
26 DVLOG(1) << __FUNCTION__; 32 DVLOG(1) << __FUNCTION__;
27 } 33 }
28 34
29 MojoRendererImpl::~MojoRendererImpl() { 35 MojoRendererImpl::~MojoRendererImpl() {
30 DVLOG(1) << __FUNCTION__; 36 DVLOG(1) << __FUNCTION__;
31 DCHECK(task_runner_->BelongsToCurrentThread()); 37 DCHECK(task_runner_->BelongsToCurrentThread());
32 } 38 }
33 39
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 DVLOG(1) << __FUNCTION__; 179 DVLOG(1) << __FUNCTION__;
174 DCHECK(task_runner_->BelongsToCurrentThread()); 180 DCHECK(task_runner_->BelongsToCurrentThread());
175 DCHECK(init_cb_.is_null()); 181 DCHECK(init_cb_.is_null());
176 182
177 // TODO(tim): Should we plumb error code from remote renderer? 183 // TODO(tim): Should we plumb error code from remote renderer?
178 // http://crbug.com/410451. 184 // http://crbug.com/410451.
179 client_->OnError(PIPELINE_ERROR_DECODE); 185 client_->OnError(PIPELINE_ERROR_DECODE);
180 } 186 }
181 187
182 void MojoRendererImpl::OnVideoNaturalSizeChange(mojo::SizePtr size) { 188 void MojoRendererImpl::OnVideoNaturalSizeChange(mojo::SizePtr size) {
183 DVLOG(2) << __FUNCTION__ << ": " << size->width << "," << size->height; 189 gfx::Size new_size = size.To<gfx::Size>();
190 DVLOG(2) << __FUNCTION__ << ": " << new_size.ToString();
184 DCHECK(task_runner_->BelongsToCurrentThread()); 191 DCHECK(task_runner_->BelongsToCurrentThread());
185 client_->OnVideoNaturalSizeChange(size.To<gfx::Size>()); 192
193 video_renderer_sink_->PaintFrameUsingOldRenderingPath(
194 video_overlay_factory_->CreateFrame(new_size));
195 client_->OnVideoNaturalSizeChange(new_size);
186 } 196 }
187 197
188 void MojoRendererImpl::OnVideoOpacityChange(bool opaque) { 198 void MojoRendererImpl::OnVideoOpacityChange(bool opaque) {
189 DVLOG(2) << __FUNCTION__ << ": " << opaque; 199 DVLOG(2) << __FUNCTION__ << ": " << opaque;
190 DCHECK(task_runner_->BelongsToCurrentThread()); 200 DCHECK(task_runner_->BelongsToCurrentThread());
191 client_->OnVideoOpacityChange(opaque); 201 client_->OnVideoOpacityChange(opaque);
192 } 202 }
193 203
194 void MojoRendererImpl::OnConnectionError() { 204 void MojoRendererImpl::OnConnectionError() {
195 DVLOG(1) << __FUNCTION__; 205 DVLOG(1) << __FUNCTION__;
(...skipping 10 matching lines...) Expand all
206 void MojoRendererImpl::OnInitialized(bool success) { 216 void MojoRendererImpl::OnInitialized(bool success) {
207 DVLOG(1) << __FUNCTION__; 217 DVLOG(1) << __FUNCTION__;
208 DCHECK(task_runner_->BelongsToCurrentThread()); 218 DCHECK(task_runner_->BelongsToCurrentThread());
209 DCHECK(!init_cb_.is_null()); 219 DCHECK(!init_cb_.is_null());
210 220
211 base::ResetAndReturn(&init_cb_) 221 base::ResetAndReturn(&init_cb_)
212 .Run(success ? PIPELINE_OK : PIPELINE_ERROR_INITIALIZATION_FAILED); 222 .Run(success ? PIPELINE_OK : PIPELINE_ERROR_INITIALIZATION_FAILED);
213 } 223 }
214 224
215 } // namespace media 225 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698