| // Copyright 2013 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // The <code>chrome.webrtcAudioPrivate</code> API allows enumeration |
| // of audio output (sink) devices. |
| // |
| // Note that device IDs as used in this API are opaque (i.e. they are |
| // not the hardware identifier of the device) and while they are |
| // unique and persistent across sessions, they are valid only to the |
| // extension calling this API (i.e. they cannot be shared between |
| // extensions). |
| // |
| // See http://goo.gl/8rOmgk for further documentation of this API. |
| |
| namespace webrtcAudioPrivate { |
| |
| dictionary SinkInfo { |
| // The opaque identifier of the audio sink device, which is unique |
| // and static for the extension calling the API but invalid for |
| // others. |
| DOMString sinkId; |
| // The user-friendly name (e.g. "Bose Amplifier"). |
| DOMString sinkLabel; |
| // Current sample rate of the device, in Hz. Useful e.g. to know |
| // if the remote side should be asked to send a lower sampling |
| // rate. |
| long sampleRate; |
| // True if the device is ready to play out audio. E.g. if it is a |
| // device that takes an audio jack, whether a jack is plugged in. |
| // |
| // TODO(joi): Do unplugged devices even get included in enumeration? |
| boolean isReady; |
| // True if this device is the default audio sink device on the |
| // machine. |
| boolean isDefault; |
| }; |
| |
| callback GetSinksCallback = void(SinkInfo[] sinkInfo); |
| callback SinkIdCallback = void(DOMString sinkId); |
| |
| interface Functions { |
| // Retrieves a list of available audio sink devices. |
| [supportsPromises] static void getSinks(GetSinksCallback callback); |
| |
| // Given a security origin and an input device ID valid for that |
| // security origin, retrieve an audio sink ID valid for the |
| // extension, or the empty string if there is no associated audio |
| // sink. |
| // |
| // The associated sink ID can be used as a sink ID for |
| // setActiveSink. It is valid irrespective of which process you are |
| // setting the active sink for. |
| [supportsPromises] static void getAssociatedSink(DOMString securityOrigin, |
| DOMString sourceIdInOrigin, |
| SinkIdCallback callback); |
| }; |
| |
| interface Events { |
| // Fired when audio sink devices are added or removed. |
| static void onSinksChanged(); |
| }; |
| }; |