mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 14:55:36 +08:00
Completed enumeration of audio devices
refs #36 - Cvatlib_Voice_Simple object is created and setup - enumerates automatically a list of in and output devices. - both device lists are accessable immediately - added a sample demonstrating the interface so far refs #81
This commit is contained in:
committed by
Mathew Sutcliffe
parent
158de31c0b
commit
b511f2ffaa
@@ -52,6 +52,7 @@ equals(WITH_SAMPLES, ON) {
|
||||
SUBDIRS += samples/blackgui/sample_blackgui.pro
|
||||
SUBDIRS += samples/blackcore/sample_blackcore.pro
|
||||
SUBDIRS += samples/blackmisc/sample_blackmisc.pro
|
||||
SUBDIRS += samples/voiceclient/sample_voice_client.pro
|
||||
}
|
||||
|
||||
equals(WITH_UNITTESTS, ON) {
|
||||
|
||||
29
samples/voiceclient/main.cpp
Normal file
29
samples/voiceclient/main.cpp
Normal file
@@ -0,0 +1,29 @@
|
||||
/* Copyright (C) 2013 VATSIM Community / authors
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "blackcore/voiceclient_vatlib.h"
|
||||
#include <QCoreApplication>
|
||||
#include <QDebug>
|
||||
|
||||
using namespace BlackMisc::Voice;
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication app (argc, argv);
|
||||
BlackMisc::IContext::getInstance().setObject(*new BlackMisc::CDebug());
|
||||
BlackMisc::IContext::getInstance().setObject<BlackCore::IVoiceClient>(*new BlackCore::CVoiceClientVatlib());
|
||||
|
||||
BlackCore::IVoiceClient *voiceClient = BlackMisc::IContext::getInstance().singleton<BlackCore::IVoiceClient>();
|
||||
QList<COutputAudioDevice> outputDevices = voiceClient->audioOutputDevices(0);
|
||||
|
||||
qDebug() << "Found " << outputDevices.size() << " output devices:";
|
||||
|
||||
foreach (COutputAudioDevice device, outputDevices)
|
||||
{
|
||||
qDebug() << device.name();
|
||||
}
|
||||
|
||||
app.exec();
|
||||
}
|
||||
26
samples/voiceclient/sample_voice_client.pro
Normal file
26
samples/voiceclient/sample_voice_client.pro
Normal file
@@ -0,0 +1,26 @@
|
||||
include (../../externals.pri)
|
||||
|
||||
QT += core dbus
|
||||
QT -= gui
|
||||
|
||||
TARGET = sample_voice_client
|
||||
TEMPLATE = app
|
||||
|
||||
CONFIG += console c++11
|
||||
CONFIG -= app_bundle
|
||||
|
||||
DEPENDPATH += . ../../src
|
||||
INCLUDEPATH += . ../../src
|
||||
|
||||
SOURCES += *.cpp
|
||||
HEADERS += *.h
|
||||
|
||||
LIBS += -L../../lib -lblackcore -lblackmisc
|
||||
LIBS += -lvatlib
|
||||
|
||||
win32:!win32-g++*: PRE_TARGETDEPS += ../../lib/blackmisc.lib \
|
||||
../../lib/blackcore.lib
|
||||
else: PRE_TARGETDEPS += ../../lib/libblackmisc.a \
|
||||
../../lib/libblackcore.a
|
||||
|
||||
DESTDIR = ../../bin
|
||||
@@ -60,8 +60,8 @@ namespace BlackCore
|
||||
// and signals emitted in case of a change. This way other objects can listen to this signals and call the getter
|
||||
// again.
|
||||
virtual void roomUserList(const uint32_t comUnit) = 0;
|
||||
virtual void audioInputDevices(const uint32_t comUnit) = 0;
|
||||
virtual void audioOutputDevices(const uint32_t comUnit) = 0;
|
||||
virtual const QList<BlackMisc::Voice::CInputAudioDevice> & audioInputDevices(const uint32_t comUnit) const = 0;
|
||||
virtual const QList<BlackMisc::Voice::COutputAudioDevice> & audioOutputDevices(const uint32_t comUnit) const = 0;
|
||||
|
||||
virtual void setInputDevice(const uint32_t comUnit, BlackMisc::Voice::CInputAudioDevice &device) = 0;
|
||||
virtual void setOutputDevice(const uint32_t comUnit, BlackMisc::Voice::COutputAudioDevice &device) = 0;
|
||||
|
||||
@@ -5,13 +5,22 @@
|
||||
|
||||
#include "voiceclient_vatlib.h"
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
namespace BlackCore
|
||||
{
|
||||
|
||||
CVoiceClientVatlib::CVoiceClientVatlib(QObject *parent) :
|
||||
IVoiceClient(parent),
|
||||
m_voice(Create_Cvatlib_Voice_Simple())
|
||||
{
|
||||
m_voice->Setup(true, 3290, 2, 1, onRoomStatusUpdate, this);
|
||||
m_voice->GetInputDevices(onInputHardwareDeviceReceived, this);
|
||||
m_voice->GetOutputDevices(onOutputHardwareDeviceReceived, this);
|
||||
}
|
||||
|
||||
CVoiceClientVatlib::~CVoiceClientVatlib()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CVoiceClientVatlib::setCallsign(const BlackMisc::Aviation::CCallsign &callsign)
|
||||
@@ -59,14 +68,14 @@ namespace BlackCore
|
||||
|
||||
}
|
||||
|
||||
void CVoiceClientVatlib::audioInputDevices(const uint32_t comIndex)
|
||||
const QList<BlackMisc::Voice::CInputAudioDevice> &CVoiceClientVatlib::audioInputDevices(const uint32_t comIndex) const
|
||||
{
|
||||
|
||||
return m_inputDevices;
|
||||
}
|
||||
|
||||
void CVoiceClientVatlib::audioOutputDevices(const uint32_t comIndex)
|
||||
const QList<BlackMisc::Voice::COutputAudioDevice> &CVoiceClientVatlib::audioOutputDevices(const uint32_t comIndex) const
|
||||
{
|
||||
|
||||
return m_outputDevices;
|
||||
}
|
||||
|
||||
void CVoiceClientVatlib::setInputDevice(const uint32_t comUnit, BlackMisc::Voice::CInputAudioDevice &device)
|
||||
@@ -84,6 +93,15 @@ namespace BlackCore
|
||||
|
||||
}
|
||||
|
||||
/********************************** * * * * * * * * * * * * * * * * * * * ************************************/
|
||||
/********************************** shimlib callbacks ************************************/
|
||||
/********************************** * * * * * * * * * * * * * * * * * * * ************************************/
|
||||
|
||||
CVoiceClientVatlib *cbvar_cast(void *cbvar)
|
||||
{
|
||||
return static_cast<CVoiceClientVatlib *>(cbvar);
|
||||
}
|
||||
|
||||
void CVoiceClientVatlib::onRoomStatusUpdate(Cvatlib_Voice_Simple *obj, Cvatlib_Voice_Simple::roomStatusUpdate upd, int32_t roomIndex, void *cbVar)
|
||||
{
|
||||
|
||||
@@ -94,9 +112,16 @@ namespace BlackCore
|
||||
|
||||
}
|
||||
|
||||
void CVoiceClientVatlib::onHardwareDeviceReceived(Cvatlib_Voice_Simple *obj, const char *name, void *cbVar)
|
||||
void CVoiceClientVatlib::onInputHardwareDeviceReceived(Cvatlib_Voice_Simple *obj, const char *name, void *cbVar)
|
||||
{
|
||||
BlackMisc::Voice::CInputAudioDevice inputDevice(cbvar_cast(cbVar)->m_inputDevices.size(), QString(name));
|
||||
cbvar_cast(cbVar)->m_inputDevices.append(inputDevice);
|
||||
}
|
||||
|
||||
void CVoiceClientVatlib::onOutputHardwareDeviceReceived(Cvatlib_Voice_Simple *obj, const char *name, void *cbVar)
|
||||
{
|
||||
BlackMisc::Voice::COutputAudioDevice outputDevice(cbvar_cast(cbVar)->m_outputDevices.size(), QString(name));
|
||||
cbvar_cast(cbVar)->m_outputDevices.append(outputDevice);
|
||||
}
|
||||
|
||||
} // namespace BlackCore
|
||||
|
||||
@@ -32,8 +32,8 @@ namespace BlackCore
|
||||
virtual bool isConnected(const uint32_t comUnit);
|
||||
|
||||
virtual void roomUserList(const uint32_t comUnit);
|
||||
virtual void audioInputDevices(const uint32_t comUnit);
|
||||
virtual void audioOutputDevices(const uint32_t comUnit);
|
||||
virtual const QList<BlackMisc::Voice::CInputAudioDevice> &audioInputDevices(const uint32_t comUnit) const ;
|
||||
virtual const QList<BlackMisc::Voice::COutputAudioDevice> & audioOutputDevices(const uint32_t comUnit) const;
|
||||
|
||||
virtual void setInputDevice(const uint32_t comUnit, BlackMisc::Voice::CInputAudioDevice &device);
|
||||
virtual void setOutputDevice(const uint32_t comUnit, BlackMisc::Voice::COutputAudioDevice &device);
|
||||
@@ -47,14 +47,16 @@ namespace BlackCore
|
||||
private:
|
||||
|
||||
// shimlib callbacks
|
||||
void onRoomStatusUpdate(Cvatlib_Voice_Simple* obj, Cvatlib_Voice_Simple::roomStatusUpdate upd, INT roomIndex, void* cbVar);
|
||||
void onRoomUserReceived(Cvatlib_Voice_Simple* obj, const char* name, void* cbVar);
|
||||
void onHardwareDeviceReceived(Cvatlib_Voice_Simple* obj, const char* name, void* cbVar);
|
||||
static void onRoomStatusUpdate(Cvatlib_Voice_Simple* obj, Cvatlib_Voice_Simple::roomStatusUpdate upd, INT roomIndex, void* cbVar);
|
||||
static void onRoomUserReceived(Cvatlib_Voice_Simple* obj, const char* name, void* cbVar);
|
||||
static void onInputHardwareDeviceReceived(Cvatlib_Voice_Simple* obj, const char* name, void* cbVar);
|
||||
static void onOutputHardwareDeviceReceived(Cvatlib_Voice_Simple* obj, const char* name, void* cbVar);
|
||||
|
||||
QScopedPointer<Cvatlib_Voice_Simple> m_voice;
|
||||
BlackMisc::Aviation::CCallsign m_callsign;
|
||||
QMap<uint32_t, BlackMisc::Voice::CVoiceRoom> m_voiceRoomMap;
|
||||
|
||||
QList<BlackMisc::Voice::CInputAudioDevice> m_inputDevices;
|
||||
QList<BlackMisc::Voice::COutputAudioDevice> m_outputDevices;
|
||||
};
|
||||
|
||||
} // namespace BlackCore
|
||||
|
||||
Reference in New Issue
Block a user