// Copyright 2013 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. // The chrome.webrtcAudioPrivate API allows enumeration // of audio output (sink) devices as well as getting and setting the // active device for a given tab. // // 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. [nodoc] 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); callback CompletionCallback = void(); interface Functions { // Retrieves a list of available audio sink devices. static void getSinks(GetSinksCallback callback); // Retrieves the currently active audio sink for the given tab. static void getActiveSink(long tabId, SinkIdCallback callback); // Sets the active audio sink device for the specified tab. static void setActiveSink(long tabId, DOMString sinkId, optional CompletionCallback 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 tab you are // setting the active sink for. static void getAssociatedSink(DOMString securityOrigin, DOMString sourceIdInOrigin, SinkIdCallback cb); }; interface Events { // Fired when audio sink devices are added or removed. static void onSinksChanged(); }; };