summaryrefslogtreecommitdiff
path: root/chromium/media/mojo/mojom/mirror_service_remoting.mojom
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/mojo/mojom/mirror_service_remoting.mojom')
-rw-r--r--chromium/media/mojo/mojom/mirror_service_remoting.mojom60
1 files changed, 60 insertions, 0 deletions
diff --git a/chromium/media/mojo/mojom/mirror_service_remoting.mojom b/chromium/media/mojo/mojom/mirror_service_remoting.mojom
new file mode 100644
index 00000000000..a5f41efcdd4
--- /dev/null
+++ b/chromium/media/mojo/mojom/mirror_service_remoting.mojom
@@ -0,0 +1,60 @@
+// Copyright 2017 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.
+
+module media.mojom;
+
+import "media/mojo/mojom/remoting_common.mojom";
+
+// Interface used by the source to start/stop remoting and send data to the
+// sink.
+interface MirrorServiceRemoter {
+ // Starts a remoting session. Always assumes the remoting session will be
+ // stared successfully. If any failure happens,
+ // MirrorServiceRemotingSource::OnError() will be called.
+ Start();
+
+ // Starts remoting the media data streams. This is called after Start() to
+ // indicate audio/video bitstream data is ready to be consumed. Returns
+ // audio/video stream IDs. A valid stream ID should be greater than 0. When
+ // there is no audio/video, or if the data stream is not successfully started,
+ // the returned stream ID is -1.
+ StartDataStreams(bool has_audio, bool has_video)
+ => (int32 audio_stream_id, int32 video_stream_id);
+
+ // Stops remoting media. Messages in both directions will be dropped after
+ // this point as well as any pending or in-transit media bitstream data.
+ Stop(RemotingStopReason reason);
+
+ // Sends|message| to the sink. |message| is a serialized protobuf from
+ // src/media/remoting/proto.
+ SendMessageToSink(array<uint8> message);
+
+ // Estimates the transmission capacity. Returns the result in
+ // bytes per second.
+ EstimateTransmissionCapacity() => (double rate);
+};
+
+// Interface used for sending notifications back to the source's control logic,
+// and to pass messages from the sink back to the source.
+interface MirrorServiceRemotingSource {
+ // Notifies the source that the sink is now available to start remoting and
+ // passes the receiver's metadata. It is up to the source's control logic
+ // to decide whether/when to start remoting.
+ OnSinkAvailable(RemotingSinkMetadata metadata);
+
+ // Passes a |message| from the sink back to the source. The |message| consists
+ // of a serialized protobuf from src/media/remoting/proto. This will only be
+ // called after OnStarted() and before OnStopped().
+ OnMessageFromSink(array<uint8> message);
+
+ // Notifies the source that remoting has terminated. This may or may not be in
+ // response to a MirrorServiceRemoter.Stop() call, as other events (possibly
+ // external) may have caused remoting to end.
+ OnStopped(RemotingStopReason reason);
+
+ // Notifies the source that a fatal error has occurred. Remoting session will
+ // be stopped immediately once this is called.
+ // TODO(xjz): Add error codes in future to indicate different errors.
+ OnError();
+};