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 #define HIFI_AUDIO_DEVICE_INFO_DEFAULT_DEVICE_NAME "default "
23 
24 class HifiAudioDeviceInfo : public QObject {
25  Q_OBJECT
26 
27 public:
28  enum DeviceType {
29  desktop,
30  hmd,
31  both
32  };
33 
34  HifiAudioDeviceInfo() : QObject() {}
35  HifiAudioDeviceInfo(const HifiAudioDeviceInfo &deviceInfo) : QObject(){
36  _audioDeviceInfo = deviceInfo.getDevice();
37  _mode = deviceInfo.getMode();
38  _isDefault = deviceInfo.isDefault();
39  _deviceType = deviceInfo.getDeviceType();
40  _debugName = deviceInfo.getDevice().deviceName();
41  }
42 
43  HifiAudioDeviceInfo(QAudioDeviceInfo deviceInfo, bool isDefault, QAudio::Mode mode, DeviceType devType=both) :
44  _audioDeviceInfo(deviceInfo),
45  _isDefault(isDefault),
46  _mode(mode),
47  _deviceType(devType),
48  _debugName(deviceInfo.deviceName()) {
49  }
50 
51  void setMode(QAudio::Mode mode) { _mode = mode; }
52  void setIsDefault() { _isDefault = true; }
53  void setDevice(QAudioDeviceInfo devInfo);
54  QString deviceName() const {
55 #if defined(Q_OS_ANDROID)
56  return _audioDeviceInfo.deviceName();
57 #endif
58  if (_isDefault) {
59  return DEFAULT_DEVICE_NAME;
60  } else {
61  return _audioDeviceInfo.deviceName();
62  }
63  }
64  QAudioDeviceInfo getDevice() const { return _audioDeviceInfo; }
65  bool isDefault() const { return _isDefault; }
66  QAudio::Mode getMode() const { return _mode; }
67  DeviceType getDeviceType() const { return _deviceType; }
68  HifiAudioDeviceInfo& operator=(const HifiAudioDeviceInfo& other);
69  bool operator==(const HifiAudioDeviceInfo& rhs) const;
70  bool operator!=(const HifiAudioDeviceInfo& rhs) const;
71 
72 private:
73  QAudioDeviceInfo _audioDeviceInfo;
74  bool _isDefault { false };
75  QAudio::Mode _mode { QAudio::AudioInput };
76  DeviceType _deviceType{ both };
77  QString _debugName;
78 
79 public:
80  static const QString DEFAULT_DEVICE_NAME;
81 };
82 
83 #endif