Index: media/mojo/interfaces/audio_output.mojom |
diff --git a/media/mojo/interfaces/audio_output.mojom b/media/mojo/interfaces/audio_output.mojom |
index 895a93e4967727e4d2846679b50433a2de46ff94..ccaed42ca477617d5882beacfc92727028e59090 100644 |
--- a/media/mojo/interfaces/audio_output.mojom |
+++ b/media/mojo/interfaces/audio_output.mojom |
@@ -5,29 +5,44 @@ |
module media.mojom; |
import "media/mojo/interfaces/audio_parameters.mojom"; |
+import "url/mojo/origin.mojom"; |
-// This interface handles audio output stream operations. |
-// It allows to close a stream. |
-// TODO(rchtara): Add methods that allow the interaction with audio output |
-// streams: Play, Pause and SetVolume to this interface. |
-// See crbug.com/606707 for more details. |
-interface AudioOutputStream { |
- Close(); |
+// TODO: typemap to native OutputDeviceStatus. |
+enum OutputDeviceStatus { |
+ OUTPUT_DEVICE_STATUS_OK, |
+ OUTPUT_DEVICE_STATUS_ERROR_NOT_FOUND, |
+ OUTPUT_DEVICE_STATUS_ERROR_NOT_AUTHORIZED, |
+ OUTPUT_DEVICE_STATUS_ERROR_TIMED_OUT, |
+ OUTPUT_DEVICE_STATUS_ERROR_INTERNAL, |
+ OUTPUT_DEVICE_STATUS_LAST = OUTPUT_DEVICE_STATUS_ERROR_INTERNAL, |
}; |
-// This interface manages audio output streams. |
-// It allows to create an AudioOutputStream. |
-// TODO(rchtara): Add a method to request device authorization to this |
-// interface. |
-// See crbug.com/606707 for more details. |
+// On error, the message pipe is closed. |
+// To close the stream, just close the message pipe. |
interface AudioOutput { |
- // TODO(rchtara): Remove |stream_id| from AudioOutput::CreateStream when all |
- // the stream operations are mojofied. |
- CreateStream( |
- int32 stream_id, |
- AudioParameters params) => |
- (int32 stream_id, |
- AudioOutputStream? stream, |
- handle<shared_buffer>? shared_buffer, |
- handle? socket_descriptor); |
-}; |
+ Start(AudioParameters params) => |
+ (handle<shared_buffer> shared_buffer, |
+ handle socket_descriptor); |
+ Play(); |
+ Pause(); |
+ SetVolume(double volume); |
+}; |
+ |
+interface AudioOutputService { |
+ // Used to request a device. |
+ // An AudioOutputRequest may be supplied, in which case it will |
+ // be bound to an AudioOutput implementation or closed (in case of an error). |
+ // TODO better name. |
+ RequestDeviceAuthorization( |
+ // TODO: in implementation, use base::IsValueInRangeForNumericType<int> |
+ // before casting these back to int. |
+ int64 render_frame_id, |
+ int64 session_id, |
+ string device_id, |
+ AudioOutput&? audio_output, |
+ url.mojom.Origin origin) => |
+ (// TODO make this a struct? |
+ OutputDeviceStatus state, |
+ AudioParameters output_params, |
+ string matched_device_id); |
+}; |