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

Side by Side Diff: services/media/framework_mojo/mojo_producer.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/logging.h"
6 #include "services/media/framework_mojo/mojo_producer.h"
7
8 namespace mojo {
9 namespace media {
10
11 MojoProducer::MojoProducer() {}
12
13 MojoProducer::~MojoProducer() {}
14
15 void MojoProducer::AddBinding(InterfaceRequest<MediaProducer> producer) {
16 bindings_.AddBinding(this, producer.Pass());
17 }
18
19 void MojoProducer::FlushConsumer(const FlushConsumerCallback& callback) {
20 DCHECK(consumer_.is_bound());
21 consumer_->Flush(callback);
22 }
23
24 void MojoProducer::Connect(
25 InterfaceHandle<MediaConsumer> consumer,
26 const ConnectCallback& callback) {
27 DCHECK(consumer);
28
29 consumer_ = MediaConsumerPtr::Create(std::move(consumer));
30
31 if (!mojo_allocator_.initialized()) {
32 mojo_allocator_.InitNew(256 * 1024); // TODO(dalesat): Made up!
33 }
34
35 consumer_->SetBuffer(
36 mojo_allocator_.GetDuplicateHandle(),
37 mojo_allocator_.size(),
38 [callback]() {
39 callback.Run();
40 });
41 }
42
43 void MojoProducer::Disconnect() {
44 OnConnectionLost();
45 consumer_.reset();
46 }
47
48 bool MojoProducer::IsConnected() {
49 return consumer_.is_bound();
50 }
51
52 void MojoProducer::PushPacketInternal(
53 Packet* packet_raw_ptr,
54 MediaPacketPtr media_packet) {
55 consumer_->PushPacket(
56 media_packet.Pass(),
57 [this, packet_raw_ptr]() {
58 PacketPtr packet = PacketPtr(packet_raw_ptr);
59 PushCompleted(packet);
60 });
61 }
62
63 } // namespace media
64 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698