1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROMEOS_AUDIO_AUDIO_DEVICE_H_
6 #define CHROMEOS_AUDIO_AUDIO_DEVICE_H_
12 #include "base/basictypes.h"
13 #include "chromeos/chromeos_export.h"
14 #include "chromeos/dbus/audio_node.h"
18 // Ordered from the highest priority to the lowest.
19 enum AudioDeviceType
{
25 AUDIO_TYPE_INTERNAL_SPEAKER
,
26 AUDIO_TYPE_INTERNAL_MIC
,
27 AUDIO_TYPE_KEYBOARD_MIC
,
31 struct CHROMEOS_EXPORT AudioDevice
{
34 std::string display_name
;
35 std::string device_name
;
42 explicit AudioDevice(const AudioNode
& node
);
43 std::string
ToString() const;
46 typedef std::vector
<AudioDevice
> AudioDeviceList
;
47 typedef std::map
<uint64
, AudioDevice
> AudioDeviceMap
;
49 struct AudioDeviceCompare
{
50 // Rules used to discern which device is higher,
52 // [Headphones/USB/Bluetooh > HDMI > Internal Speakers]
53 // [External Mic/USB Mic/Bluetooth > Internal Mic]
54 // 2.) Device Plugged in Time:
56 bool operator()(const chromeos::AudioDevice
& a
,
57 const chromeos::AudioDevice
& b
) const {
58 if (a
.priority
< b
.priority
) {
60 } else if (b
.priority
< a
.priority
) {
62 } else if (a
.plugged_time
< b
.plugged_time
) {
70 } // namespace chromeos
72 #endif // CHROMEOS_AUDIO_AUDIO_DEVICE_H_