wfview/audiodevices.h

107 wiersze
2.8 KiB
C

#ifndef AUDIODEVICES_H
#define AUDIODEVICES_H
#include <QObject>
2022-12-29 15:26:41 +00:00
#if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
#include <QAudioDeviceInfo>
2022-12-29 15:26:41 +00:00
#else
#include <QMediaDevices>
#include <QAudioDevice>
2022-12-29 16:06:42 +00:00
#include <QString>
2022-12-29 15:26:41 +00:00
#endif
#include <QFontMetrics>
#include <portaudio.h>
#ifndef Q_OS_LINUX
2023-01-14 00:21:55 +00:00
#include "RtAudio.h"
#else
#include "rtaudio/RtAudio.h"
#endif
#include "wfviewtypes.h"
2022-12-29 16:06:42 +00:00
struct audioDevice {
audioDevice(QString name, int deviceInt, bool isDefault) : name(name), deviceInt(deviceInt), isDefault(isDefault) {};
2022-12-29 15:26:41 +00:00
#if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
audioDevice(QString name, const QAudioDeviceInfo deviceInfo, QString realm, bool isDefault) : name(name), deviceInfo(deviceInfo), realm(realm), isDefault(isDefault) {};
2022-12-29 15:26:41 +00:00
#else
2022-12-29 16:06:42 +00:00
audioDevice(QString name, QAudioDevice deviceInfo, QString realm, bool isDefault) : name(name), deviceInfo(deviceInfo), realm(realm), isDefault(isDefault) {};
2022-12-29 15:26:41 +00:00
#endif
QString name;
int deviceInt;
2022-12-29 16:06:42 +00:00
2022-12-29 15:26:41 +00:00
#if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
const QAudioDeviceInfo deviceInfo;
2022-12-29 15:26:41 +00:00
#else
2022-12-29 16:06:42 +00:00
QAudioDevice deviceInfo;
2022-12-29 15:26:41 +00:00
#endif
2022-12-29 16:06:42 +00:00
QString realm;
bool isDefault;
};
class audioDevices : public QObject
{
Q_OBJECT
public:
explicit audioDevices(audioType type, QFontMetrics fm, QObject* parent = nullptr);
~audioDevices();
void setAudioType(audioType type) { system = type; };
audioType getAudioType() { return system; };
int getNumCharsIn() { return numCharsIn; };
int getNumCharsOut() { return numCharsOut; };
QString getInputName(int num) { return inputs[num]->name; };
QString getOutputName(int num) { return outputs[num]->name; };
int getInputDeviceInt(int num) { return inputs[num]->deviceInt; };
int getOutputDeviceInt(int num) { return outputs[num]->deviceInt; };
2022-12-29 15:26:41 +00:00
#if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
2023-01-14 00:40:28 +00:00
const QAudioDeviceInfo getInputDeviceInfo(int num) { return inputs[num]->deviceInfo; };
const QAudioDeviceInfo getOutputDeviceInfo(int num) { return outputs[num]->deviceInfo; };
2022-12-29 15:26:41 +00:00
#else
const QAudioDevice getInputDeviceInfo(int num) { return inputs[num]->deviceInfo; };
const QAudioDevice getOutputDeviceInfo(int num) { return outputs[num]->deviceInfo; };
2022-12-29 15:26:41 +00:00
#endif
void enumerate();
QStringList getInputs();
QStringList getOutputs();
int findInput(QString type, QString name);
int findOutput(QString type, QString name);
2022-12-29 15:26:41 +00:00
#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
QMediaDevices mediaDevices;
#endif
public slots:
signals:
void updated();
protected:
private:
2022-12-29 16:06:42 +00:00
2022-12-29 09:21:25 +00:00
audioType system;
QFontMetrics fm;
QString defaultInputDeviceName;
QString defaultOutputDeviceName;
int numInputDevices;
int numOutputDevices;
QList<audioDevice*> inputs;
QList<audioDevice*> outputs;
int numCharsIn = 0;
int numCharsOut = 0;
2023-01-01 20:51:52 +00:00
QString audioApi = "wasapi";
2022-12-29 16:06:42 +00:00
};
2023-01-14 00:17:53 +00:00
#endif