Commit 791c972c authored by Yu-Hsuan Hsu's avatar Yu-Hsuan Hsu Committed by Commit Bot

Check keyboard mic on LaCrOS

Check whether there is a keyboard mic. If yes, adding keyboard mic
effect on lacros-chrome.

BUG=b:173113548

Change-Id: I5241c11031cd5f681380f091dac23fbc82b3d75f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2536661
Commit-Queue: Yu-Hsuan Hsu <yuhsuan@chromium.org>
Reviewed-by: default avatarDale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#828176}
parent 3892192e
......@@ -92,6 +92,9 @@ AudioParameters AudioManagerCras::GetInputStreamParameters(
AudioParameters::HardwareCapabilities(limits::kMinAudioBufferSize,
limits::kMaxAudioBufferSize));
if (CrasHasKeyboardMic())
params.set_effects(AudioParameters::KEYBOARD_MIC);
// Allow experimentation with system echo cancellation with all devices,
// but enable it by default on devices that actually support it.
params.set_effects(params.effects() |
......
......@@ -18,6 +18,7 @@ namespace {
const char kInternalInputVirtualDevice[] = "Built-in mic";
const char kInternalOutputVirtualDevice[] = "Built-in speaker";
const char kHeadphoneLineOutVirtualDevice[] = "Headphone/Line Out";
const char kKeyBoardMic[] = "KEYBOARD_MIC";
// Returns if that an input or output audio device is for simple usage like
// playback or recording for user. In contrast, audio device such as loopback,
......@@ -143,6 +144,29 @@ std::vector<CrasDevice> CrasGetAudioDevices(DeviceType type) {
return devices;
}
bool CrasHasKeyboardMic() {
cras_client* client = CrasConnect();
if (!client)
return false;
struct cras_iodev_info devs[CRAS_MAX_IODEVS];
struct cras_ionode_info nodes[CRAS_MAX_IONODES];
size_t num_devs = CRAS_MAX_IODEVS, num_nodes = CRAS_MAX_IONODES;
int rc =
cras_client_get_input_devices(client, devs, nodes, &num_devs, &num_nodes);
if (rc < 0) {
LOG(ERROR) << "Failed to get devices: " << std::strerror(rc);
return false;
}
for (size_t i = 0; i < num_nodes; i++) {
if (std::string(nodes[i].type) == kKeyBoardMic)
return true;
}
return false;
}
int CrasGetAecSupported() {
cras_client* client = CrasConnect();
if (!client)
......
......@@ -31,6 +31,9 @@ struct CrasDevice {
// Enumerates all devices of |type|.
std::vector<CrasDevice> CrasGetAudioDevices(DeviceType type);
// Returns if there is a keyboard mic in CRAS.
bool CrasHasKeyboardMic();
// Returns if system AEC is supported in CRAS.
int CrasGetAecSupported();
......
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