blob: 36a1124bd3b66b81339248e984c368cb6b9e5885 [file] [log] [blame]
// Copyright (c) 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 <code>chrome.audio</code> API is provided to allow users to
// get information about and control the audio devices attached to the
// system. This API is currently only implemented for ChromeOS.
namespace audio {
dictionary OutputDeviceInfo {
// The unique identifier of the audio output device.
DOMString id;
// The user-friendly name (e.g. "Bose Amplifier").
DOMString name;
// True if this is the current active device.
boolean isActive;
// True if this is muted.
boolean isMuted;
// The output volume ranging from 0.0 to 100.0.
double volume;
};
dictionary InputDeviceInfo {
// The unique identifier of the audio input device.
DOMString id;
// The user-friendly name (e.g. "USB Microphone").
DOMString name;
// True if this is the current active device.
boolean isActive;
// True if this is muted.
boolean isMuted;
// The input gain ranging from 0.0 to 100.0.
double gain;
};
dictionary AudioDeviceInfo {
// The unique identifier of the audio device.
DOMString id;
// True for input device; false for output device.
boolean isInput;
// Type of the device, including "INTERNAL_SPEAKER", "INTERNAL_MIC",
// "HEADPHONE", "USB", "BLUETOOTH", "HDMI", "MIC", "KEYBOARD_MIC",
// "AOKR", and "OTHER".
DOMString deviceType;
// The user-friendly name (e.g. "USB Microphone").
DOMString displayName;
// Device name.
DOMString deviceName;
// True if this is the current active device.
boolean isActive;
// True if this is muted.
boolean isMuted;
// The sound level of the device, volume for output, gain for input.
long level;
// The stable/persisted device id string when available.
DOMString? stableDeviceId;
};
dictionary DeviceProperties {
// True if this is muted.
boolean isMuted;
// If this is an output device then this field indicates the output volume.
// If this is an input device then this field is ignored.
double? volume;
// If this is an input device then this field indicates the input gain.
// If this is an output device then this field is ignored.
double? gain;
};
callback GetInfoCallback = void(OutputDeviceInfo[] outputInfo,
InputDeviceInfo[] inputInfo);
callback SetActiveDevicesCallback = void();
callback SetPropertiesCallback = void();
interface Functions {
// Gets the information of all audio output and input devices.
static void getInfo(GetInfoCallback callback);
// Sets the active devices to the devices specified by |ids|.
// It can pass in the "complete" active device id list of either input
// devices, or output devices, or both. If only input device ids are passed
// in, it will only change the input devices' active status, output devices will
// NOT be changed; similarly for the case if only output devices are passed.
// If the devices specified in |new_active_ids| are already active, they will
// remain active. Otherwise, the old active devices will be de-activated
// before we activate the new devices with the same type(input/output).
static void setActiveDevices(DOMString[] ids,
SetActiveDevicesCallback callback);
// Sets the properties for the input or output device.
static void setProperties(DOMString id,
DeviceProperties properties,
SetPropertiesCallback callback);
};
interface Events {
// Fired when anything changes to the audio device configuration.
static void onDeviceChanged();
// Fired when sound level changes for an active audio device.
// |id|: id of the audio device.
// |level|: new sound level of device(volume for output, gain for input).
static void OnLevelChanged(DOMString id, long level);
// Fired when the mute state of the audio input or output changes.
// |isInput|: true indicating audio input; false indicating audio output.
// |isMuted|: new value of mute state.
static void OnMuteChanged(boolean isInput, boolean isMuted);
// Fired when audio devices change, either new devices being added, or
// existing devices being removed.
// |devices|: List of all present audio devices after the change.
static void OnDevicesChanged(AudioDeviceInfo[] devices);
};
};