| OLD | NEW |
| (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 #ifndef SERVICES_MEDIA_FRAMEWORK_MOJO_MOJO_PRODUCER_SINK_H_ |
| 6 #define SERVICES_MEDIA_FRAMEWORK_MOJO_MOJO_PRODUCER_SINK_H_ |
| 7 |
| 8 #include "mojo/common/binding_set.h" |
| 9 #include "mojo/services/media/common/interfaces/media_transport.mojom.h" |
| 10 #include "services/media/framework_mojo/push_producer_base.h" |
| 11 |
| 12 namespace mojo { |
| 13 namespace media { |
| 14 |
| 15 // Implements MediaProducer to forward a stream across mojo. |
| 16 class MojoProducer : public MediaProducer, public PushProducerBase { |
| 17 public: |
| 18 using FlushConsumerCallback = mojo::Callback<void()>; |
| 19 |
| 20 static std::shared_ptr<MojoProducer> Create() { |
| 21 return std::shared_ptr<MojoProducer>(new MojoProducer()); |
| 22 } |
| 23 |
| 24 ~MojoProducer() override; |
| 25 |
| 26 // Adds a binding. |
| 27 void AddBinding(InterfaceRequest<MediaProducer> producer); |
| 28 |
| 29 // Tells the connected consumer to flush. |
| 30 void FlushConsumer(const FlushConsumerCallback& callback); |
| 31 |
| 32 // MediaProducer implementation. |
| 33 void Connect( |
| 34 InterfaceHandle<MediaConsumer> consumer, |
| 35 const ConnectCallback& callback) override; |
| 36 |
| 37 void Disconnect() override; |
| 38 |
| 39 protected: |
| 40 // PushProducerBase overrrides. |
| 41 bool IsConnected() override; |
| 42 |
| 43 void PushPacketInternal(Packet* packet_raw_ptr, MediaPacketPtr media_packet) |
| 44 override; |
| 45 |
| 46 private: |
| 47 MojoProducer(); |
| 48 |
| 49 BindingSet<MediaProducer> bindings_; |
| 50 MediaConsumerPtr consumer_; |
| 51 }; |
| 52 |
| 53 } // namespace media |
| 54 } // namespace mojo |
| 55 |
| 56 #endif // SERVICES_MEDIA_FRAMEWORK_MOJO_MOJO_PRODUCER_SINK_H_ |
| OLD | NEW |