blob: ebf6585d92404f3642528b6d62c2274a0a6ddcae [file] [log] [blame]
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +01001// Copyright (c) 2013 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
Ben Murdochbb1529c2013-08-08 10:24:53 +01005// The <code>chrome.audio</code> API is provided to allow users to
6// get information about and control the audio devices attached to the
7// system. This API is currently only implemented for ChromeOS.
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +01008namespace audio {
9
10 dictionary OutputDeviceInfo {
11 // The unique identifier of the audio output device.
12 DOMString id;
13 // The user-friendly name (e.g. "Bose Amplifier").
14 DOMString name;
15 // True if this is the current active device.
16 boolean isActive;
17 // True if this is muted.
18 boolean isMuted;
19 // The output volume ranging from 0.0 to 1.0.
20 double volume;
21 };
22
23 dictionary InputDeviceInfo {
24 // The unique identifier of the audio input device.
25 DOMString id;
26 // The user-friendly name (e.g. "USB Microphone").
27 DOMString name;
28 // True if this is the current active device.
29 boolean isActive;
30 // True if this is muted.
31 boolean isMuted;
32 // The input gain ranging from 0.0 to 1.0.
33 double gain;
34 };
35
36 dictionary DeviceProperties {
37 // True if this is muted.
38 boolean isMuted;
39 // If this is an output device then this field indicates the output volume.
40 // If this is an input device then this field is ignored.
41 double? volume;
42 // If this is an input device then this field indicates the input gain.
43 // If this is an output device then this field is ignored.
44 double? gain;
45 };
46
47 callback GetInfoCallback = void(OutputDeviceInfo[] outputInfo,
48 InputDeviceInfo[] inputInfo);
49 callback SetActiveDevicesCallback = void();
50 callback SetPropertiesCallback = void();
51
52 interface Functions {
53 // Get the information of all audio output and input devices.
54 static void getInfo(GetInfoCallback callback);
55
56 // Select a subset of audio devices as active.
57 static void setActiveDevices(DOMString[] ids,
58 SetActiveDevicesCallback callback);
59
60 // Sets the properties for the input or output device.
61 static void setProperties(DOMString id,
62 DeviceProperties properties,
63 SetPropertiesCallback callback);
64 };
65
66 interface Events {
67 // Fired when anything changes to the audio device configuration.
68 // TODO(hshi): as suggested by mpcomplete this should pass down the same
69 // data as GetInfoCallback. Implement this once we have getInfo working.
70 static void onDeviceChanged();
71 };
72};