Commit 1523ac2b authored by Pin-chih Lin's avatar Pin-chih Lin Committed by Commit Bot

cras: Make ALSA_LOOPBACK devices visible in system tray

In test scheme while snd-aloop is probed, "Loopback Playback" and "Loopback
Capture" will be shown in system tray as ALSA loopback output and input device.

The input gain could be also scrollable after "Modify mic gainin the system
tray" is enabled in chrome://flags.

BUG=1083465
TEST=Checked "Loopback Playback" and "Loopback Capture" are in system tray when
snd-aloop is probed.
TEST=Checked the scrolls of playback volume and capture gain are both valid.

Change-Id: Iacfc73e76d4ecbb1380b1488b5b7acee4c3c788b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2352129Reviewed-by: default avatarBen Wells <benwells@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Reviewed-by: default avatarHsinyu Chao <hychao@chromium.org>
Reviewed-by: default avatarBailey Berro <baileyberro@chromium.org>
Reviewed-by: default avatarJenny Zhang <jennyz@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
Auto-Submit: Pin-chih Lin <johnylin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#801494}
parent 98df6c99
...@@ -50,6 +50,7 @@ uint8_t GetDevicePriority(AudioDeviceType type, bool is_input) { ...@@ -50,6 +50,7 @@ uint8_t GetDevicePriority(AudioDeviceType type, bool is_input) {
case AUDIO_TYPE_HOTWORD: case AUDIO_TYPE_HOTWORD:
case AUDIO_TYPE_POST_MIX_LOOPBACK: case AUDIO_TYPE_POST_MIX_LOOPBACK:
case AUDIO_TYPE_POST_DSP_LOOPBACK: case AUDIO_TYPE_POST_DSP_LOOPBACK:
case AUDIO_TYPE_ALSA_LOOPBACK:
case AUDIO_TYPE_OTHER: case AUDIO_TYPE_OTHER:
default: default:
return 0; return 0;
...@@ -91,6 +92,8 @@ std::string AudioDevice::GetTypeString(AudioDeviceType type) { ...@@ -91,6 +92,8 @@ std::string AudioDevice::GetTypeString(AudioDeviceType type) {
return "POST_MIX_LOOPBACK"; return "POST_MIX_LOOPBACK";
case AUDIO_TYPE_POST_DSP_LOOPBACK: case AUDIO_TYPE_POST_DSP_LOOPBACK:
return "POST_DSP_LOOPBACK"; return "POST_DSP_LOOPBACK";
case AUDIO_TYPE_ALSA_LOOPBACK:
return "ALSA_LOOPBACK";
case AUDIO_TYPE_OTHER: case AUDIO_TYPE_OTHER:
default: default:
return "OTHER"; return "OTHER";
...@@ -134,6 +137,8 @@ AudioDeviceType AudioDevice::GetAudioType( ...@@ -134,6 +137,8 @@ AudioDeviceType AudioDevice::GetAudioType(
return AUDIO_TYPE_POST_MIX_LOOPBACK; return AUDIO_TYPE_POST_MIX_LOOPBACK;
else if (node_type.find("POST_DSP_LOOPBACK") != std::string::npos) else if (node_type.find("POST_DSP_LOOPBACK") != std::string::npos)
return AUDIO_TYPE_POST_DSP_LOOPBACK; return AUDIO_TYPE_POST_DSP_LOOPBACK;
else if (node_type.find("ALSA_LOOPBACK") != std::string::npos)
return AUDIO_TYPE_ALSA_LOOPBACK;
else else
return AUDIO_TYPE_OTHER; return AUDIO_TYPE_OTHER;
} }
......
...@@ -33,6 +33,7 @@ enum AudioDeviceType { ...@@ -33,6 +33,7 @@ enum AudioDeviceType {
AUDIO_TYPE_LINEOUT, AUDIO_TYPE_LINEOUT,
AUDIO_TYPE_POST_MIX_LOOPBACK, AUDIO_TYPE_POST_MIX_LOOPBACK,
AUDIO_TYPE_POST_DSP_LOOPBACK, AUDIO_TYPE_POST_DSP_LOOPBACK,
AUDIO_TYPE_ALSA_LOOPBACK,
AUDIO_TYPE_OTHER, AUDIO_TYPE_OTHER,
}; };
...@@ -51,6 +52,8 @@ struct COMPONENT_EXPORT(CHROMEOS_AUDIO) AudioDevice { ...@@ -51,6 +52,8 @@ struct COMPONENT_EXPORT(CHROMEOS_AUDIO) AudioDevice {
// playback or recording for user. In contrast, audio device such as // playback or recording for user. In contrast, audio device such as
// loopback, always on keyword recognition (HOTWORD), and keyboard mic are // loopback, always on keyword recognition (HOTWORD), and keyboard mic are
// not for simple usage. // not for simple usage.
// One special case is ALSA loopback device, which will only exist under
// testing, and we want it visible to users for e2e tests.
bool is_for_simple_usage() const { bool is_for_simple_usage() const {
return (type == AUDIO_TYPE_HEADPHONE || return (type == AUDIO_TYPE_HEADPHONE ||
type == AUDIO_TYPE_INTERNAL_MIC || type == AUDIO_TYPE_INTERNAL_MIC ||
...@@ -62,7 +65,8 @@ struct COMPONENT_EXPORT(CHROMEOS_AUDIO) AudioDevice { ...@@ -62,7 +65,8 @@ struct COMPONENT_EXPORT(CHROMEOS_AUDIO) AudioDevice {
type == AUDIO_TYPE_BLUETOOTH_NB_MIC || type == AUDIO_TYPE_BLUETOOTH_NB_MIC ||
type == AUDIO_TYPE_HDMI || type == AUDIO_TYPE_HDMI ||
type == AUDIO_TYPE_INTERNAL_SPEAKER || type == AUDIO_TYPE_INTERNAL_SPEAKER ||
type == AUDIO_TYPE_LINEOUT); type == AUDIO_TYPE_LINEOUT ||
type == AUDIO_TYPE_ALSA_LOOPBACK);
} }
bool IsExternalDevice() const; bool IsExternalDevice() const;
......
...@@ -58,6 +58,8 @@ api::audio::DeviceType GetAsAudioApiDeviceType(chromeos::AudioDeviceType type) { ...@@ -58,6 +58,8 @@ api::audio::DeviceType GetAsAudioApiDeviceType(chromeos::AudioDeviceType type) {
return api::audio::DEVICE_TYPE_POST_MIX_LOOPBACK; return api::audio::DEVICE_TYPE_POST_MIX_LOOPBACK;
case chromeos::AUDIO_TYPE_POST_DSP_LOOPBACK: case chromeos::AUDIO_TYPE_POST_DSP_LOOPBACK:
return api::audio::DEVICE_TYPE_POST_DSP_LOOPBACK; return api::audio::DEVICE_TYPE_POST_DSP_LOOPBACK;
case chromeos::AUDIO_TYPE_ALSA_LOOPBACK:
return api::audio::DEVICE_TYPE_ALSA_LOOPBACK;
case chromeos::AUDIO_TYPE_OTHER: case chromeos::AUDIO_TYPE_OTHER:
return api::audio::DEVICE_TYPE_OTHER; return api::audio::DEVICE_TYPE_OTHER;
} }
......
...@@ -29,6 +29,7 @@ namespace audio { ...@@ -29,6 +29,7 @@ namespace audio {
LINEOUT, LINEOUT,
POST_MIX_LOOPBACK, POST_MIX_LOOPBACK,
POST_DSP_LOOPBACK, POST_DSP_LOOPBACK,
ALSA_LOOPBACK,
OTHER OTHER
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment