Index: media/mojo/interfaces/remoting_common.mojom |
diff --git a/media/mojo/interfaces/remoting.mojom b/media/mojo/interfaces/remoting_common.mojom |
similarity index 12% |
copy from media/mojo/interfaces/remoting.mojom |
copy to media/mojo/interfaces/remoting_common.mojom |
index ba218f31f3791e91c28e72f83bbd2f297792ecd1..fe3536e71de8b267da11f0f41ac65f81ddd07cab 100644 |
--- a/media/mojo/interfaces/remoting.mojom |
+++ b/media/mojo/interfaces/remoting_common.mojom |
@@ -1,46 +1,9 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
+// 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; |
-interface RemoterFactory { |
- // Create a new Remoter associated with the given RemotingSource and bind it |
- // to the given interface request. The RemotingSource will be notified when |
- // the Remoter becomes available for use (or becomes unavailable). |
- Create(RemotingSource source, Remoter& remoter); |
-}; |
- |
-// Interface used by the source to control when media bitstream data is read |
-// from a data pipe and then sent to the remote endpoint. There is one |
-// RemotingDataStreamSender per data pipe. |
-interface RemotingDataStreamSender { |
- // Consumes |size| bytes of data from the data pipe, which is a chunk of the |
- // next frame's data payload starting at the given byte |offset|. |
- // |total_payload_size| indicates the size of the entire data payload for the |
- // frame. Before this is called, |size| bytes of data must have been written |
- // into the data pipe. |
- // |
- // Normally, a frame's entire data payload can be pushed through the data pipe |
- // in one chunk. However, there can be situations where the size of the |
- // payload exceeds the capacity of the data pipe; and so this API supports |
- // feeding the frame data through the pipe in multiple chunks. |
- ConsumeDataChunk(uint32 offset, uint32 size, uint32 total_payload_size); |
- |
- // Enqueues another frame for transmission to the remote endpoint. Before this |
- // is called, ConsumeDataChunk() must have been called one or more times to |
- // provide all of the frame's data. |
- SendFrame(); |
- |
- // Cancel the transmission of all in-flight data to the remote, up to and |
- // including the last SendFrame() call; and also discard any data chunks |
- // that were consumed from the data pipe for the next frame. This is used to |
- // optimize seeking, when it is known that any in-flight data is no longer |
- // needed by the remote. There is no guarantee as to how much of the in-flight |
- // data will actually reach the remote before the cancellation takes effect. |
- CancelInFlightData(); |
-}; |
- |
enum RemotingStopReason { |
ROUTE_TERMINATED, // User-initiated disconnect, etc. |
LOCAL_PLAYBACK, // Media switched back to local playback. |
@@ -48,79 +11,37 @@ enum RemotingStopReason { |
MESSAGE_SEND_FAILED, // Failed to send a message to the sink. |
DATA_SEND_FAILED, // Failed to consume from a data pipe or send to the sink. |
UNEXPECTED_FAILURE, // Unexpected failure or inconsistent state encountered. |
-}; |
- |
-// Interface used by the source to start/stop remoting and send data to the |
-// sink. |
-interface Remoter { |
- // Start a remoting session (once the sink has been reported to be available; |
- // see RemotingSource). Either RemotingSource.OnStarted() or OnStartFailed() |
- // will be called to indicate success or failure. Once OnStarted() has been |
- // invoked, the source may then make calls to SendMessageToSink() and expect |
- // messages from the remote via RemotingSource.OnMessageFromSink(). |
- Start(); |
- |
- // Start remoting the media data streams. This is called after Start() to |
- // provide data pipes from which the audio/video bitstream data is consumed |
- // and then transported to the remote device. RemotingDataStreamSenders are |
- // used by the source to control when data should be consumed from the data |
- // pipes and sent. One or both pipes (and their corresponding |
- // RemotingDataStreamSender interface requests) must be provided. |
- StartDataStreams(handle<data_pipe_consumer>? audio_pipe, |
- handle<data_pipe_consumer>? video_pipe, |
- RemotingDataStreamSender&? audio_sender, |
- RemotingDataStreamSender&? video_sender); |
- |
- // Stop 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); |
- |
- // Send |message| to the sink. |message| is a serialized protobuf from |
- // src/media/remoting/proto. |
- SendMessageToSink(array<uint8> message); |
-}; |
- |
-enum RemotingSinkCapabilities { |
- NONE, |
- RENDERING_ONLY, |
- CONTENT_DECRYPTION_AND_RENDERING, |
+ SERVICE_GONE, // Mirror service disconnected. |
}; |
enum RemotingStartFailReason { |
CANNOT_START_MULTIPLE, // Remoting was already active. |
ROUTE_TERMINATED, // User-initated disconnect while starting remoting. |
+ SERVICE_NOT_CONNECTED, // Mirror service was not connected. |
}; |
-// Interface used for sending notifications back to the local source's control |
-// logic, and to pass messages from the sink back to the local media pipeline. |
-interface RemotingSource { |
- // Notify the source that the sink is now available to start remoting. It is |
- // up to the source's control logic to decide whether/when to start remoting. |
- // |
- // TODO(miu): In a later change, pass detailed information about the sink's |
- // capabilities (e.g., codec support, DRM keysystem support, etc.). |
- OnSinkAvailable(RemotingSinkCapabilities capabilities); |
- |
- // Notify the source that the sink is no longer available for remoting. This |
- // may happen, for example, because the sink has been shut down, or because |
- // another source has started remoting. |
- OnSinkGone(); |
+enum RemotingSinkFeatures { |
+ RENDERING, |
+ CONTENT_DECRYPTION, |
+}; |
- // One of these is called after the source attempts to start remoting. If |
- // OnStarted() is called, messages may begin flowing; and this will continue |
- // until OnStopped() is called. On the other hand, if OnStartFailed() is |
- // called, then no messages are being passed between source and sink and |
- // remoting is not taking place. |
- OnStarted(); |
- OnStartFailed(RemotingStartFailReason reason); |
+enum RemotingSinkAudioCapabilities { |
+ CODEC_BASELINE_SET, |
+ CODEC_AAC, |
+ CODEC_OPUS, |
+}; |
- // Pass 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); |
+enum RemotingSinkVideoCapabilities { |
+ SUPPORT_4K, |
+ CODEC_BASELINE_SET, |
+ CODEC_H264, |
+ CODEC_VP8, |
+ CODEC_VP9, |
+ CODEC_HEVC, |
+}; |
- // Notify the source that remoting has terminated. This may or may not be in |
- // response to a Remoter.Stop() call, as other events (possibly external) may |
- // have caused remoting to end. |
- OnStopped(RemotingStopReason reason); |
+struct SinkCapabilities { |
+ array<RemotingSinkFeatures> features; |
+ array<RemotingSinkAudioCapabilities> audio; |
+ array<RemotingSinkVideoCapabilities> video; |
}; |