mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-16 15:20:42 +01:00

Summary of changes/improvements and fixes: Changes container for list of devices from std::vector to std:deque to allow fast insertion and deletion at both its beginning and its end. This approach makes it easier to first build a list of all available devices and then check the size of the list. If size > 0 => two more devices are added at the front (Default and Default Communication). The old solution contained a risk of adding invalid Default and Default Communication devices in cases where not physical device could be found. Adds usage of |device_index_| in CoreAudioBase to ensure that the selected device is unique. The previous version used only an ID but that ID is not unique when e.g. only one device exists since it can have up to three different roles. Improves logging and comments. No-Try: True Tbr: thaloun@chromium.org Bug: webrtc:11107 Change-Id: I9a09f7716ed8d8858dcc6a5354b038fc06496166 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160050 Commit-Queue: Henrik Andreassson <henrika@webrtc.org> Reviewed-by: Henrik Andreassson <henrika@webrtc.org> Cr-Commit-Position: refs/heads/master@{#29874}
48 lines
1.6 KiB
C++
48 lines
1.6 KiB
C++
/*
|
|
* Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef MODULES_AUDIO_DEVICE_AUDIO_DEVICE_NAME_H_
|
|
#define MODULES_AUDIO_DEVICE_AUDIO_DEVICE_NAME_H_
|
|
|
|
#include <deque>
|
|
#include <string>
|
|
|
|
namespace webrtc {
|
|
|
|
struct AudioDeviceName {
|
|
// Represents a default device. Note that, on Windows there are two different
|
|
// types of default devices (Default and Default Communication). They can
|
|
// either be two different physical devices or be two different roles for one
|
|
// single device. Hence, this id must be combined with a "role parameter" on
|
|
// Windows to uniquely identify a default device.
|
|
static const char kDefaultDeviceId[];
|
|
|
|
AudioDeviceName() = default;
|
|
AudioDeviceName(std::string device_name, std::string unique_id);
|
|
|
|
~AudioDeviceName() = default;
|
|
|
|
// Support copy and move.
|
|
AudioDeviceName(const AudioDeviceName& other) = default;
|
|
AudioDeviceName(AudioDeviceName&&) = default;
|
|
AudioDeviceName& operator=(const AudioDeviceName&) = default;
|
|
AudioDeviceName& operator=(AudioDeviceName&&) = default;
|
|
|
|
bool IsValid();
|
|
|
|
std::string device_name; // Friendly name of the device.
|
|
std::string unique_id; // Unique identifier for the device.
|
|
};
|
|
|
|
typedef std::deque<AudioDeviceName> AudioDeviceNames;
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // MODULES_AUDIO_DEVICE_AUDIO_DEVICE_NAME_H_
|