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

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

Issue 2643713003: Allow to use the DefaultRendererFactory from a Utility Process (Closed)
Patch Set: Rebase Created 3 years, 10 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
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/mojo/services/mojo_video_renderer_sink_adapter.h"
6
7 #include "media/mojo/common/media_type_converters.h"
8
9 namespace media {
10
11 MojoVideoRendererSinkAdapter::MojoVideoRendererSinkAdapter(
12 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
13 : binding_(this),
14 task_runner_(task_runner),
15 started_(false),
16 render_callback_(nullptr) {}
17
18 MojoVideoRendererSinkAdapter::~MojoVideoRendererSinkAdapter() {}
19
20 void MojoVideoRendererSinkAdapter::Initialize(
21 mojom::VideoRendererSinkPtr sink) {
22 CHECK(!sink_);
23 CHECK(task_runner_->BelongsToCurrentThread());
24 sink_ = std::move(sink);
25 }
26
27 void MojoVideoRendererSinkAdapter::Start(
28 media::VideoRendererSink::RenderCallback* callback) {
29 CHECK(task_runner_->BelongsToCurrentThread());
30 CHECK(sink_);
31 CHECK(!started_);
32 CHECK(callback);
33 render_callback_ = callback;
34 started_ = true;
35
36 mojom::VideoRendererSinkRenderCallbackAssociatedPtrInfo
37 render_callback_ptr_info;
38 binding_.Bind(&render_callback_ptr_info, sink_.associated_group());
39
40 sink_->Start(std::move(render_callback_ptr_info));
41 }
42
43 void MojoVideoRendererSinkAdapter::Stop() {
44 CHECK(task_runner_->BelongsToCurrentThread());
45 CHECK(started_);
46 started_ = false;
47 render_callback_ = nullptr;
48 sink_->Stop();
49 }
50
51 void MojoVideoRendererSinkAdapter::PaintSingleFrame(
52 const scoped_refptr<VideoFrame>& frame,
53 bool repaint_duplicate_frame) {
54 CHECK(task_runner_->BelongsToCurrentThread());
55 sink_->PaintSingleFrame(mojom::VideoFrame::From(frame),
56 repaint_duplicate_frame);
57 }
58
59 void MojoVideoRendererSinkAdapter::Render(
60 base::TimeTicks deadline_min,
61 base::TimeTicks deadline_max,
62 bool background_rendering,
63 const media::mojom::VideoRendererSinkRenderCallback::RenderCallback&
64 mojo_callback) {
65 CHECK(task_runner_->BelongsToCurrentThread());
66
67 if (!started_) {
68 mojo_callback.Run(nullptr);
69 return;
70 }
71
72 scoped_refptr<VideoFrame> frame = render_callback_->Render(
73 deadline_min, deadline_max, background_rendering);
74 CHECK(frame->storage_type() == media::VideoFrame::STORAGE_MOJO_SHARED_BUFFER);
75 mojo_callback.Run(mojom::VideoFrame::From(frame));
76 }
77
78 void MojoVideoRendererSinkAdapter::OnFrameDropped() {
79 CHECK(task_runner_->BelongsToCurrentThread());
80 render_callback_->OnFrameDropped();
81 }
82
83 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/services/mojo_video_renderer_sink_adapter.h ('k') | media/mojo/services/test_mojo_media_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698