Overte C++ Documentation
HifiAudioDeviceInfo.h
1 //
2 // HifiAudioDeviceInfo.h
3 // libraries/audio-client/src
4 //
5 // Created by Amer Cerkic on 9/14/19.
6 // Copyright 2019 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #pragma once
13 #ifndef hifi_audiodeviceinfo_h
14 #define hifi_audiodeviceinfo_h
15 
16 
17 #include <QObject>
18 #include <QAudioDeviceInfo>
19 #include <QAudio>
20 #include <QString>
21 
22 class HifiAudioDeviceInfo : public QObject {
23  Q_OBJECT
24 
25 public:
26  enum DeviceType {
27  desktop,
28  hmd,
29  both
30  };
31 
32  HifiAudioDeviceInfo() : QObject() {}
33  HifiAudioDeviceInfo(const HifiAudioDeviceInfo &deviceInfo) : QObject(){
34  _audioDeviceInfo = deviceInfo.getDevice();
35  _mode = deviceInfo.getMode();
36  _isDefault = deviceInfo.isDefault();
37  _deviceType = deviceInfo.getDeviceType();
38  _debugName = deviceInfo.getDevice().deviceName();
39  }
40 
41  HifiAudioDeviceInfo(QAudioDeviceInfo deviceInfo, bool isDefault, QAudio::Mode mode, DeviceType devType=both) :
42  _audioDeviceInfo(deviceInfo),
43  _isDefault(isDefault),
44  _mode(mode),
45  _deviceType(devType),
46  _debugName(deviceInfo.deviceName()) {
47  }
48 
49  void setMode(QAudio::Mode mode) { _mode = mode; }
50  void setIsDefault() { _isDefault = true; }
51  void setDevice(QAudioDeviceInfo devInfo);
52  QString deviceName() const {
53 #if defined(Q_OS_ANDROID)
54  return _audioDeviceInfo.deviceName();
55 #endif
56  if (_isDefault) {
57  return DEFAULT_DEVICE_NAME;
58  } else {
59  return _audioDeviceInfo.deviceName();
60  }
61  }
62  QAudioDeviceInfo getDevice() const { return _audioDeviceInfo; }
63  bool isDefault() const { return _isDefault; }
64  QAudio::Mode getMode() const { return _mode; }
65  DeviceType getDeviceType() const { return _deviceType; }
66  HifiAudioDeviceInfo& operator=(const HifiAudioDeviceInfo& other);
67  bool operator==(const HifiAudioDeviceInfo& rhs) const;
68  bool operator!=(const HifiAudioDeviceInfo& rhs) const;
69 
70 private:
71  QAudioDeviceInfo _audioDeviceInfo;
72  bool _isDefault { false };
73  QAudio::Mode _mode { QAudio::AudioInput };
74  DeviceType _deviceType{ both };
75  QString _debugName;
76 
77 public:
78  static const QString DEFAULT_DEVICE_NAME;
79 };
80 
81 #endif