summaryrefslogtreecommitdiffstats
path: root/pica-client/nativeaudio.cpp
blob: 499aad60e46fad4a06e6cee65870a794a5044a3c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
	(c) Copyright  2012 - 2026 Anton Sviridenko
	https://picapica.im

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, version 3.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <https://www.gnu.org/licenses/>.
*/
#include "nativeaudio.h"

#include <QtGlobal>

// Per platform factories, defined next to the backends themselves.
#ifdef Q_OS_WIN
NativeAudioBackend *pica_create_wasapi_backend();
QList<MediaDeviceInfo> pica_enumerate_wasapi(enum MediaDeviceStreamDirection dir);
#endif

#if defined(Q_OS_MACOS) || defined(Q_OS_MAC)
NativeAudioBackend *pica_create_coreaudio_backend();
QList<MediaDeviceInfo> pica_enumerate_coreaudio(enum MediaDeviceStreamDirection dir);
#endif

NativeAudioBackend::~NativeAudioBackend()
{
}

bool NativeAudioBackend::isAvailable(const QString &api)
{
#ifdef Q_OS_WIN
	if (api == QLatin1String("wasapi"))
		return true;
#endif
#if defined(Q_OS_MACOS) || defined(Q_OS_MAC)
	if (api == QLatin1String("coreaudio"))
		return true;
#endif
	Q_UNUSED(api)
	return false;
}

NativeAudioBackend *NativeAudioBackend::create(const QString &api)
{
#ifdef Q_OS_WIN
	if (api == QLatin1String("wasapi"))
		return pica_create_wasapi_backend();
#endif
#if defined(Q_OS_MACOS) || defined(Q_OS_MAC)
	if (api == QLatin1String("coreaudio"))
		return pica_create_coreaudio_backend();
#endif
	Q_UNUSED(api)
	return nullptr;
}

QList<MediaDeviceInfo> NativeAudioBackend::enumerate(const QString &api, enum MediaDeviceStreamDirection dir)
{
#ifdef Q_OS_WIN
	if (api == QLatin1String("wasapi"))
		return pica_enumerate_wasapi(dir);
#endif
#if defined(Q_OS_MACOS) || defined(Q_OS_MAC)
	if (api == QLatin1String("coreaudio"))
		return pica_enumerate_coreaudio(dir);
#endif
	Q_UNUSED(api)
	Q_UNUSED(dir)
	return QList<MediaDeviceInfo>();
}