Index: mojo/services/media/common/interfaces/media_transport.mojom |
diff --git a/mojo/services/media/common/interfaces/media_transport.mojom b/mojo/services/media/common/interfaces/media_transport.mojom |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3847cb67f18f945aa9705f344644afd7559483ce |
--- /dev/null |
+++ b/mojo/services/media/common/interfaces/media_transport.mojom |
@@ -0,0 +1,68 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+[DartPackage="mojo_services"] |
+module mojo.media; |
+ |
+import "mojo/services/media/common/interfaces/media_common.mojom"; |
+import "mojo/services/media/common/interfaces/media_pipe.mojom"; |
+import "mojo/services/media/common/interfaces/media_types.mojom"; |
+ |
+// Models a stream producer. A MediaProducer allows a client to connect the |
+// producer to a MediaConsumer so packets flow from the producer to the |
+// consumer. Clients who want to receive packets directly from the producer |
+// should use MediaPullModeProducer instead. |
+// |
+// The client calls Connect to connect producer and consumer. The producer then |
+// calls PushPacket on the consumer to deliver packets. |
+interface MediaProducer { |
+ // Connects this MediaProducer to a MediaConsumer. |
+ Connect(MediaConsumer consumer) => (); |
+ |
+ // Disconnects this MediaProducer from a previously-connected MediaConsumer. |
+ Disconnect(); |
+}; |
+ |
+// Models a stream producer. A MediaPullModeProducer allows a client to receive |
+// packets directly from the producer. Clients who want to connect the producer |
+// to a MediaConsumer should use MediaProducer instead. |
+// |
+// The client calls PullPacket to get a packet. Once the client is done with |
+// the packet, it calls ReleasePacket to let the producer know that the packet |
+// buffer region can be reused. Alternatively, the client can piggyback a |
+// release on a PullPacket call using the to_release parameter. |
+interface MediaPullModeProducer { |
+ // Gets the shared buffer in which packet payload will be located. |
+ GetBuffer() => (handle<shared_buffer> buffer); |
+ |
+ // Pulls a packet from the producer. When the client is done with the |
+ // packet buffer region, it should call ReleasePacket or PullPacket passing |
+ // the locator. Note that the optional locator passed in PullPacket is |
+ // a locator to be released and probably won't be the same locator passed |
+ // back in the callback. |
+ PullPacket(MediaPacket? to_release) => (MediaPacket packet); |
+ |
+ // Signals the producer that the client is done with the buffer region. |
+ ReleasePacket(MediaPacket to_release); |
+}; |
+ |
+// Models a stream consumer. A MediaConsumer allows a client to send packets |
+// directly to the consumer or to connect the consumer to a MediaProducer so |
+// packets flow from the producer to the consumer. |
+// |
+// In the former scenario, the client calls PushPacket to deliver a packet. The |
+// callback notifies the client that the consumer is done with the packet |
+// buffer region. |
+// |
+// In the latter scenario, the client calls Connect on the producer to connect |
+// producer and consumer. The producer then calls PushPacket on the consumer to |
+// deliver packets. |
+interface MediaConsumer { |
+ // Sets the shared buffer in which packet payload will be located. |
+ SetBuffer(handle<shared_buffer> buffer, uint64 size) => (); |
+ |
+ // Pushes a packet to the consumer. The callback signals that the consumer |
+ // is done with the packet buffer region. |
+ PushPacket(MediaPacket packet) => (); |
+}; |