123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- // Copyright 2022 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.
- module crosapi.mojom;
- // This interface is created to implement chrome.audio extension API in Lacros.
- // Audio api in Lacros is ultimately connected to ash::CrasAudioHandler.
- // The structs in this file are mirroring types from
- // https://developer.chrome.com/docs/extensions/reference/audio/#type
- [Stable, Extensible]
- enum StreamType {
- [Default] kNone = 0,
- kInput = 1,
- kOutput = 2,
- };
- [Stable, Extensible]
- enum DeviceType {
- [Default] kNone = 0,
- kHeadphone = 1,
- kMic = 2,
- kUsb = 3,
- kBluetooth = 4,
- kHdmi = 5,
- kInternalSpeaker = 6,
- kInternalMic = 7,
- kFrontMic = 8,
- kRearMic = 9,
- kKeyboardMic = 10,
- kHotword = 11,
- kLineout = 12,
- kPostMixLoopback = 13,
- kPostDspLoopback = 14,
- kAlsaLoopback = 15,
- kOther = 16,
- };
- [Stable]
- struct AudioDeviceInfo {
- // Device name.
- string deviceName@0;
- // Type of the device.
- DeviceType deviceType@1;
- // The user-friendly name (e.g. "USB Microphone").
- string displayName@2;
- // The unique identifier of the audio device.
- string id@3;
- // True if this device is currently active.
- bool isActive@4;
- // The sound level of the device, volume for output, gain for input.
- int32 level@5;
- // The stable/persisted device id string when available.
- string? stableDeviceId@6;
- // Stream type associated with this device.
- StreamType streamType@7;
- };
- [Stable]
- struct DeviceFilter {
- [Stable, Extensible]
- enum ActiveState {
- [Default] kUnset = 0,
- kInactive = 1,
- kActive = 2,
- };
- // If set, only audio devices whose active state matches this value will
- // satisfy the filter.
- ActiveState includedActiveState@0;
- // If set, only audio devices whose stream type is included in this list will
- // satisfy the filter.
- array<StreamType>? includedStreamTypes@1;
- };
- [Stable]
- struct DeviceIdLists {
- // List of input devices specified by their ID.
- array<string> inputs@0;
- // List of output devices specified by their ID.
- array<string> outputs@1;
- };
- [Stable]
- struct AudioDeviceProperties {
- // The audio device's desired sound level.
- // If used with audio input device, represents audio device gain.
- // If used with audio output device, represents audio device volume.
- int32 level@0;
- };
- // Interface for audio change observer. Implemented by lacros-chrome. Used by
- // ash-chrome to send audio change events.
- [Stable, Uuid="aa4fcb30-c406-4133-be23-db3fcc6ca113"]
- interface AudioChangeObserver {
- // Fired when audio devices change, either new devices being added,
- // or existing devices being removed.
- // |devices| contains the full list of the devices after update
- OnDeviceListChanged@0(array<AudioDeviceInfo> devices);
- // Fired when sound level changes for an active audio device.
- OnLevelChanged@1(string id, int32 level);
- // Fired when the mute state of the audio input or output changes.
- OnMuteChanged@2(bool is_input, bool is_muted);
- };
- // This API provides Lacros with access to audio devices.
- // This is used to support chrome.audio extension API in lacros-chrome.
- // Implemented in ash-chrome.
- //
- // Next MinVersion: 1
- // Next ID: 6
- [Stable, Uuid="495da3b2-8c95-43d3-a508-79474c80e738"]
- interface AudioService {
- // Gets a list of audio devices filtered based on filter.
- // Returns empty optional if ash call failed
- // (e.g. CrasAudioHandler not available).
- GetDevices@0(DeviceFilter filter) => (array<AudioDeviceInfo>? devices);
- // Gets the system-wide mute state for the specified stream type.
- // success - method call result.
- // True if ash call was successful.
- // False if ash call failed (e.g. CrasAudioHandler not available).
- // is_muted - mute state for the specified stream type.
- GetMute@1(StreamType stream_type) => (bool success, bool is_muted);
- // Sets lists of active input and/or output devices.
- SetActiveDeviceLists@2(DeviceIdLists ids) => (bool success);
- // Sets mute state for a stream type.The mute state will apply to all audio
- // devices with the specified audio stream type.
- SetMute@3(StreamType stream_type, bool is_muted) => (bool success);
- // Sets the properties for the input or output device, specified by id.
- SetProperties@4(string id, AudioDeviceProperties properties)
- => (bool success);
- // Adds an observer for audio change. Multiple observers may be registered.
- AddAudioChangeObserver@5(pending_remote<AudioChangeObserver> observer);
- };
|