Commit 1e7d9ec8 authored by Guido Urdaneta's avatar Guido Urdaneta Committed by Commit Bot

Report default input and communication device names on Windows

This CL adds to AudioManagerWin implementations of the following
methods:
* GetDefaultInputDeviceID
* GetCommunicationsInputDeviceID
* GetCommunicationsOutputDeviceID

Bug: 780492
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I22c71f79695de8930ccb0d9c3d7ed2ba56ebdf23
Reviewed-on: https://chromium-review.googlesource.com/811184Reviewed-by: default avatarOlga Sharonova <olka@chromium.org>
Commit-Queue: Guido Urdaneta <guidou@chromium.org>
Cr-Commit-Position: refs/heads/master@{#523731}
parent fe22ec61
...@@ -161,7 +161,7 @@ void AudioManagerBase::GetAudioDeviceDescriptions( ...@@ -161,7 +161,7 @@ void AudioManagerBase::GetAudioDeviceDescriptions(
for (const auto& name : device_names) { for (const auto& name : device_names) {
if (name.unique_id == real_default_device_id) if (name.unique_id == real_default_device_id)
real_default_name = name.device_name; real_default_name = name.device_name;
else if (name.unique_id == real_communications_device_id) if (name.unique_id == real_communications_device_id)
real_communications_name = name.device_name; real_communications_name = name.device_name;
} }
......
...@@ -252,10 +252,22 @@ AudioInputStream* AudioManagerWin::MakeLowLatencyInputStream( ...@@ -252,10 +252,22 @@ AudioInputStream* AudioManagerWin::MakeLowLatencyInputStream(
return new WASAPIAudioInputStream(this, params, device_id, log_callback); return new WASAPIAudioInputStream(this, params, device_id, log_callback);
} }
std::string AudioManagerWin::GetDefaultInputDeviceID() {
return CoreAudioUtil::GetDefaultInputDeviceID();
}
std::string AudioManagerWin::GetDefaultOutputDeviceID() { std::string AudioManagerWin::GetDefaultOutputDeviceID() {
return CoreAudioUtil::GetDefaultOutputDeviceID(); return CoreAudioUtil::GetDefaultOutputDeviceID();
} }
std::string AudioManagerWin::GetCommunicationsInputDeviceID() {
return CoreAudioUtil::GetCommunicationsInputDeviceID();
}
std::string AudioManagerWin::GetCommunicationsOutputDeviceID() {
return CoreAudioUtil::GetCommunicationsOutputDeviceID();
}
AudioParameters AudioManagerWin::GetPreferredOutputStreamParameters( AudioParameters AudioManagerWin::GetPreferredOutputStreamParameters(
const std::string& output_device_id, const std::string& output_device_id,
const AudioParameters& input_params) { const AudioParameters& input_params) {
......
...@@ -51,7 +51,10 @@ class MEDIA_EXPORT AudioManagerWin : public AudioManagerBase { ...@@ -51,7 +51,10 @@ class MEDIA_EXPORT AudioManagerWin : public AudioManagerBase {
const AudioParameters& params, const AudioParameters& params,
const std::string& device_id, const std::string& device_id,
const LogCallback& log_callback) override; const LogCallback& log_callback) override;
std::string GetDefaultInputDeviceID() override;
std::string GetDefaultOutputDeviceID() override; std::string GetDefaultOutputDeviceID() override;
std::string GetCommunicationsInputDeviceID() override;
std::string GetCommunicationsOutputDeviceID() override;
protected: protected:
void ShutdownOnAudioThread() override; void ShutdownOnAudioThread() override;
......
...@@ -477,12 +477,30 @@ ComPtr<IMMDeviceEnumerator> CoreAudioUtil::CreateDeviceEnumerator() { ...@@ -477,12 +477,30 @@ ComPtr<IMMDeviceEnumerator> CoreAudioUtil::CreateDeviceEnumerator() {
base::BindRepeating(&LogUMAEmptyCb)); base::BindRepeating(&LogUMAEmptyCb));
} }
std::string CoreAudioUtil::GetDefaultInputDeviceID() {
ComPtr<IMMDevice> device(CreateDevice(
AudioDeviceDescription::kDefaultDeviceId, eCapture, eConsole));
return device.Get() ? GetDeviceID(device.Get()) : std::string();
}
std::string CoreAudioUtil::GetDefaultOutputDeviceID() { std::string CoreAudioUtil::GetDefaultOutputDeviceID() {
ComPtr<IMMDevice> device(CreateDevice( ComPtr<IMMDevice> device(CreateDevice(
AudioDeviceDescription::kDefaultDeviceId, eRender, eConsole)); AudioDeviceDescription::kDefaultDeviceId, eRender, eConsole));
return device.Get() ? GetDeviceID(device.Get()) : std::string(); return device.Get() ? GetDeviceID(device.Get()) : std::string();
} }
std::string CoreAudioUtil::GetCommunicationsInputDeviceID() {
ComPtr<IMMDevice> device(
CreateDevice(std::string(), eCapture, eCommunications));
return device.Get() ? GetDeviceID(device.Get()) : std::string();
}
std::string CoreAudioUtil::GetCommunicationsOutputDeviceID() {
ComPtr<IMMDevice> device(
CreateDevice(std::string(), eRender, eCommunications));
return device.Get() ? GetDeviceID(device.Get()) : std::string();
}
HRESULT CoreAudioUtil::GetDeviceName(IMMDevice* device, AudioDeviceName* name) { HRESULT CoreAudioUtil::GetDeviceName(IMMDevice* device, AudioDeviceName* name) {
// Retrieve unique name of endpoint device. // Retrieve unique name of endpoint device.
// Example: "{0.0.1.00000000}.{8db6020f-18e3-4f25-b6f5-7726c9122574}". // Example: "{0.0.1.00000000}.{8db6020f-18e3-4f25-b6f5-7726c9122574}".
......
...@@ -67,9 +67,13 @@ class MEDIA_EXPORT CoreAudioUtil { ...@@ -67,9 +67,13 @@ class MEDIA_EXPORT CoreAudioUtil {
static Microsoft::WRL::ComPtr<IMMDevice> static Microsoft::WRL::ComPtr<IMMDevice>
CreateDevice(const std::string& device_id, EDataFlow data_flow, ERole role); CreateDevice(const std::string& device_id, EDataFlow data_flow, ERole role);
// Returns the device id of the default output device or an empty string // These functions return the device id of the default or communications
// if no such device exists or if the default device has been disabled. // input/output device, or an empty string if no such device exists or if the
// device has been disabled.
static std::string GetDefaultInputDeviceID();
static std::string GetDefaultOutputDeviceID(); static std::string GetDefaultOutputDeviceID();
static std::string GetCommunicationsInputDeviceID();
static std::string GetCommunicationsOutputDeviceID();
// Returns the unique ID and user-friendly name of a given endpoint device. // Returns the unique ID and user-friendly name of a given endpoint device.
// Example: "{0.0.1.00000000}.{8db6020f-18e3-4f25-b6f5-7726c9122574}", and // Example: "{0.0.1.00000000}.{8db6020f-18e3-4f25-b6f5-7726c9122574}", and
......
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