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

Side by Side Diff: services/media/framework_mojo/mojo_consumer.cc

Issue 1692443002: Motown: Framework parts for mojo transport (producer/consumer/mediapipe) and control (audiotrack). (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Sync and fix: InterfaceHandle<X> vs XPtr, changes to MediaPipe Created 4 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 2016 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 "base/bind.h"
6 #include "base/logging.h"
7 #include "base/message_loop/message_loop.h"
8 #include "services/media/framework_mojo/mojo_consumer.h"
9
10 namespace mojo {
11 namespace media {
12
13 void MojoConsumerMediaConsumer::Flush(const FlushCallback& callback) {
14 MediaConsumerFlush(callback);
15 }
16
17 MojoConsumer::MojoConsumer() {}
18
19 MojoConsumer::~MojoConsumer() {}
20
21 void MojoConsumer::AddBinding(InterfaceRequest<MediaConsumer> consumer) {
22 bindings_.AddBinding(this, consumer.Pass());
23 DCHECK(base::MessageLoop::current());
24 task_runner_ = base::MessageLoop::current()->task_runner();
25 DCHECK(task_runner_);
26 }
27
28 void MojoConsumer::SetFlushRequestedCallback(
29 const FlushRequestedCallback& callback) {
30 flush_requested_callback_ = callback;
31 }
32
33 void MojoConsumer::SetBuffer(
34 ScopedSharedBufferHandle buffer,
35 uint64_t size,
36 const SetBufferCallback& callback) {
37 buffer_.InitFromHandle(buffer.Pass(), size);
38 callback.Run();
39 }
40
41 void MojoConsumer::PushPacket(
42 MediaPacketPtr media_packet,
43 const PushPacketCallback& callback) {
44 DCHECK(supply_callback_);
45 supply_callback_(PacketImpl::Create(
46 media_packet.Pass(),
47 callback,
48 task_runner_,
49 buffer_));
50 }
51
52 void MojoConsumer::MediaConsumerFlush(const FlushCallback& callback) {
53 if (flush_requested_callback_) {
54 flush_requested_callback_(callback);
55 } else {
56 LOG(WARNING) << "flush requested but no callback registered";
57 callback.Run();
58 }
59 }
60
61 bool MojoConsumer::can_accept_allocator() const {
62 return false;
63 }
64
65 void MojoConsumer::set_allocator(PayloadAllocator* allocator) {
66 NOTREACHED();
67 }
68
69 void MojoConsumer::SetSupplyCallback(const SupplyCallback& supply_callback) {
70 supply_callback_ = supply_callback;
71 }
72
73 void MojoConsumer::SetDownstreamDemand(Demand demand) {}
74
75 MojoConsumer::PacketImpl::PacketImpl(
76 MediaPacketPtr media_packet,
77 const PushPacketCallback& callback,
78 scoped_refptr<base::SingleThreadTaskRunner> task_runner,
79 const MappedSharedBuffer& buffer) :
80 media_packet_(media_packet.Pass()),
81 callback_(callback),
82 task_runner_(task_runner),
83 payload_(buffer.PtrFromOffset(media_packet_->payload->offset)) {}
84
85 MojoConsumer::PacketImpl::~PacketImpl() {}
86
87 // static
88 void MojoConsumer::PacketImpl::RunCallback(const PushPacketCallback& callback) {
89 callback.Run();
90 }
91
92 void MojoConsumer::PacketImpl::Release() {
93 // TODO(dalesat): Is there a cleaner way to do this?
94 task_runner_->PostTask(FROM_HERE, base::Bind(&RunCallback, callback_));
95 delete this;
96 }
97
98 } // namespace media
99 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698