[DEV] continue rework of list of device search
This commit is contained in:
parent
22dd01978a
commit
a8c1a92c7a
@ -115,7 +115,7 @@ enum audio::orchestra::error audio::orchestra::Api::openStream(audio::orchestra:
|
||||
bool result;
|
||||
if (oChannels > 0) {
|
||||
if (_oParams->deviceId == -1) {
|
||||
result = probeDeviceOpenName(_oParams->deviceName,
|
||||
result = openName(_oParams->deviceName,
|
||||
audio::orchestra::mode_output,
|
||||
oChannels,
|
||||
_oParams->firstChannel,
|
||||
@ -124,7 +124,7 @@ enum audio::orchestra::error audio::orchestra::Api::openStream(audio::orchestra:
|
||||
_bufferFrames,
|
||||
_options);
|
||||
} else {
|
||||
result = probeDeviceOpen(_oParams->deviceId,
|
||||
result = open(_oParams->deviceId,
|
||||
audio::orchestra::mode_output,
|
||||
oChannels,
|
||||
_oParams->firstChannel,
|
||||
@ -140,7 +140,7 @@ enum audio::orchestra::error audio::orchestra::Api::openStream(audio::orchestra:
|
||||
}
|
||||
if (iChannels > 0) {
|
||||
if (_iParams->deviceId == -1) {
|
||||
result = probeDeviceOpenName(_iParams->deviceName,
|
||||
result = openName(_iParams->deviceName,
|
||||
audio::orchestra::mode_input,
|
||||
iChannels,
|
||||
_iParams->firstChannel,
|
||||
@ -149,7 +149,7 @@ enum audio::orchestra::error audio::orchestra::Api::openStream(audio::orchestra:
|
||||
_bufferFrames,
|
||||
_options);
|
||||
} else {
|
||||
result = probeDeviceOpen(_iParams->deviceId,
|
||||
result = open(_iParams->deviceId,
|
||||
audio::orchestra::mode_input,
|
||||
iChannels,
|
||||
_iParams->firstChannel,
|
||||
@ -188,7 +188,7 @@ enum audio::orchestra::error audio::orchestra::Api::closeStream() {
|
||||
return audio::orchestra::error_none;
|
||||
}
|
||||
|
||||
bool audio::orchestra::Api::probeDeviceOpen(uint32_t /*device*/,
|
||||
bool audio::orchestra::Api::open(uint32_t /*device*/,
|
||||
audio::orchestra::mode /*mode*/,
|
||||
uint32_t /*channels*/,
|
||||
uint32_t /*firstChannel*/,
|
||||
|
@ -119,7 +119,7 @@ namespace audio {
|
||||
* "warning" message is reported and false is returned. A
|
||||
* successful probe is indicated by a return value of true.
|
||||
*/
|
||||
virtual bool probeDeviceOpen(uint32_t _device,
|
||||
virtual bool open(uint32_t _device,
|
||||
enum audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
@ -127,7 +127,7 @@ namespace audio {
|
||||
enum audio::format _format,
|
||||
uint32_t *_bufferSize,
|
||||
const audio::orchestra::StreamOptions& _options);
|
||||
virtual bool probeDeviceOpenName(const std::string& _deviceName,
|
||||
virtual bool openName(const std::string& _deviceName,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -308,11 +308,13 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Alsa::getDeviceInfo(uint32_t
|
||||
if (nDevices == 0) {
|
||||
ATA_ERROR("no devices found!");
|
||||
// TODO : audio::orchestra::error_invalidUse;
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
if (_device >= nDevices) {
|
||||
ATA_ERROR("device ID is invalid!");
|
||||
// TODO : audio::orchestra::error_invalidUse;
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
|
||||
@ -326,6 +328,7 @@ foundDevice:
|
||||
if (_device >= m_devices.size()) {
|
||||
ATA_ERROR("device ID was not present before stream was opened.");
|
||||
// TODO : return audio::orchestra::error_warning;
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
return m_devices[_device];
|
||||
@ -333,8 +336,10 @@ foundDevice:
|
||||
bool ret = audio::orchestra::api::Alsa::getNamedDeviceInfoLocal(name, info, card, subdevice, _device, isInput);
|
||||
if (ret == false) {
|
||||
// TODO : ...
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
info.isCorrect = true;
|
||||
return info;
|
||||
}
|
||||
|
||||
@ -347,7 +352,7 @@ void audio::orchestra::api::Alsa::saveDeviceInfo() {
|
||||
}
|
||||
}
|
||||
|
||||
bool audio::orchestra::api::Alsa::probeDeviceOpen(uint32_t _device,
|
||||
bool audio::orchestra::api::Alsa::open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
@ -399,10 +404,10 @@ bool audio::orchestra::api::Alsa::probeDeviceOpen(uint32_t _device,
|
||||
// NOTE : Find the device name : [ END ]
|
||||
|
||||
foundDevice:
|
||||
return probeDeviceOpenName(name, _mode, _channels, _firstChannel, _sampleRate, _format, _bufferSize, _options);
|
||||
return openName(name, _mode, _channels, _firstChannel, _sampleRate, _format, _bufferSize, _options);
|
||||
}
|
||||
|
||||
bool audio::orchestra::api::Alsa::probeDeviceOpenName(const std::string& _deviceName,
|
||||
bool audio::orchestra::api::Alsa::openName(const std::string& _deviceName,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -53,7 +53,7 @@ namespace audio {
|
||||
std11::shared_ptr<AlsaPrivate> m_private;
|
||||
std::vector<audio::orchestra::DeviceInfo> m_devices;
|
||||
void saveDeviceInfo();
|
||||
bool probeDeviceOpen(uint32_t _device,
|
||||
bool open(uint32_t _device,
|
||||
enum audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
@ -62,7 +62,7 @@ namespace audio {
|
||||
uint32_t *_bufferSize,
|
||||
const audio::orchestra::StreamOptions& _options);
|
||||
|
||||
virtual bool probeDeviceOpenName(const std::string& _deviceName,
|
||||
bool openName(const std::string& _deviceName,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -133,7 +133,7 @@ void audio::orchestra::api::Android::record(int16_t* _dst, int32_t _nbChunk) {
|
||||
audio::orchestra::Api::tickStreamTime();
|
||||
}
|
||||
|
||||
bool audio::orchestra::api::Android::probeDeviceOpen(uint32_t _device,
|
||||
bool audio::orchestra::api::Android::open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
@ -178,7 +178,7 @@ bool audio::orchestra::api::Android::probeDeviceOpen(uint32_t _device,
|
||||
uint64_t bufferBytes = m_nUserChannels[modeToIdTable(m_mode)] * m_bufferSize * audio::getFormatBytes(m_userFormat);
|
||||
m_userBuffer[modeToIdTable(m_mode)].resize(bufferBytes);
|
||||
if (m_userBuffer[modeToIdTable(m_mode)].size() == 0) {
|
||||
ATA_ERROR("audio::orchestra::api::Android::probeDeviceOpen: error allocating user buffer memory.");
|
||||
ATA_ERROR("error allocating user buffer memory.");
|
||||
}
|
||||
setConvertInfo(m_mode, _firstChannel);
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ namespace audio {
|
||||
private:
|
||||
std::vector<audio::orchestra::DeviceInfo> m_devices;
|
||||
void saveDeviceInfo();
|
||||
bool probeDeviceOpen(uint32_t _device,
|
||||
bool open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -244,6 +244,7 @@ class AndroidOrchestraContext {
|
||||
ATA_WARNING("get device information : " << retString);
|
||||
ejson::Document doc;
|
||||
if (doc.parse(retString) == false) {
|
||||
|
||||
return info;
|
||||
}
|
||||
info.name = doc.getStringValue("name", "no-name");
|
||||
@ -271,7 +272,7 @@ class AndroidOrchestraContext {
|
||||
}
|
||||
}
|
||||
info.isDefault = doc.getBooleanValue("default", false);
|
||||
//return retString;
|
||||
info.isCorrect = true;
|
||||
return info;
|
||||
}
|
||||
private:
|
||||
|
@ -219,7 +219,7 @@ void audio::orchestra::api::Asio::saveDeviceInfo() {
|
||||
}
|
||||
}
|
||||
|
||||
bool audio::orchestra::api::Asio::probeDeviceOpen(uint32_t _device,
|
||||
bool audio::orchestra::api::Asio::open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -38,7 +38,7 @@ namespace audio {
|
||||
std::vector<audio::orchestra::DeviceInfo> m_devices;
|
||||
void saveDeviceInfo();
|
||||
bool m_coInitialized;
|
||||
bool probeDeviceOpen(uint32_t _device,
|
||||
bool open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -433,7 +433,7 @@ static OSStatus rateListener(AudioObjectID _inDevice,
|
||||
return kAudioHardwareNoError;
|
||||
}
|
||||
|
||||
bool audio::orchestra::api::Core::probeDeviceOpen(uint32_t _device,
|
||||
bool audio::orchestra::api::Core::open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -48,7 +48,7 @@ namespace audio {
|
||||
static void coreStopStream(void *_userData);
|
||||
private:
|
||||
std::shared_ptr<CorePrivate> m_private;
|
||||
bool probeDeviceOpen(uint32_t _device,
|
||||
bool open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -36,7 +36,7 @@ namespace audio {
|
||||
private:
|
||||
std::vector<audio::orchestra::DeviceInfo> m_devices;
|
||||
void saveDeviceInfo();
|
||||
bool probeDeviceOpen(uint32_t _device,
|
||||
bool open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -163,7 +163,7 @@ static OSStatus playbackCallback(void *_userData,
|
||||
}
|
||||
|
||||
|
||||
bool audio::orchestra::api::CoreIos::probeDeviceOpen(uint32_t _device,
|
||||
bool audio::orchestra::api::CoreIos::open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -203,6 +203,9 @@ static BOOL CALLBACK deviceQueryCallback(LPGUID _lpguid,
|
||||
}
|
||||
|
||||
uint32_t audio::orchestra::api::Ds::getDeviceCount() {
|
||||
if (m_private->dsDevices.size()>0) {
|
||||
return m_private->dsDevices.size();
|
||||
}
|
||||
// Query DirectSound devices.
|
||||
struct DsProbeData probeInfo;
|
||||
probeInfo.isInput = false;
|
||||
@ -230,11 +233,13 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Ds::getDeviceInfo(uint32_t _
|
||||
}
|
||||
HRESULT result;
|
||||
if (m_private->dsDevices[_device].input == false) {
|
||||
info.input = true;
|
||||
LPDIRECTSOUND output;
|
||||
DSCAPS outCaps;
|
||||
result = DirectSoundCreate(m_private->dsDevices[_device].id, &output, nullptr);
|
||||
if (FAILED(result)) {
|
||||
ATA_ERROR(getErrorString(result) << ": opening output device (" << m_private->dsDevices[_device].name << ")!");
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
outCaps.dwSize = sizeof(outCaps);
|
||||
@ -242,6 +247,7 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Ds::getDeviceInfo(uint32_t _
|
||||
if (FAILED(result)) {
|
||||
output->Release();
|
||||
ATA_ERROR(getErrorString(result) << ": getting capabilities!");
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
// Get output channel information.
|
||||
@ -267,12 +273,14 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Ds::getDeviceInfo(uint32_t _
|
||||
}
|
||||
output->Release();
|
||||
info.name = m_private->dsDevices[_device].name;
|
||||
info.isCorrect = true;
|
||||
return info;
|
||||
} else {
|
||||
LPDIRECTSOUNDCAPTURE input;
|
||||
result = DirectSoundCaptureCreate(m_private->dsDevices[_device].id, &input, nullptr);
|
||||
if (FAILED(result)) {
|
||||
ATA_ERROR(getErrorString(result) << ": opening input device (" << m_private->dsDevices[_device].name << ")!");
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
DSCCAPS inCaps;
|
||||
@ -281,6 +289,7 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Ds::getDeviceInfo(uint32_t _
|
||||
if (FAILED(result)) {
|
||||
input->Release();
|
||||
ATA_ERROR(getErrorString(result) << ": getting object capabilities (" << m_private->dsDevices[_device].name << ")!");
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
// Get input channel information.
|
||||
@ -353,6 +362,7 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Ds::getDeviceInfo(uint32_t _
|
||||
}
|
||||
input->Release();
|
||||
if (info.channels.size() == 0) {
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
// Copy the supported rates to the info structure but avoid duplication.
|
||||
@ -372,12 +382,14 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Ds::getDeviceInfo(uint32_t _
|
||||
std::sort(info.sampleRates.begin(), info.sampleRates.end());
|
||||
// Copy name and return.
|
||||
info.name = m_private->dsDevices[_device].name;
|
||||
info.isCorrect = true;
|
||||
return info;
|
||||
}
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
|
||||
bool audio::orchestra::api::Ds::probeDeviceOpen(uint32_t _device,
|
||||
bool audio::orchestra::api::Ds::open(uint32_t _device,
|
||||
enum audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -40,7 +40,7 @@ namespace audio {
|
||||
bool m_coInitialized;
|
||||
bool m_buffersRolling;
|
||||
long m_duplexPrerollBytes;
|
||||
bool probeDeviceOpen(uint32_t _device,
|
||||
bool open(uint32_t _device,
|
||||
enum audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -48,7 +48,7 @@ enum audio::orchestra::error audio::orchestra::api::Dummy::abortStream() {
|
||||
return audio::orchestra::error_none;
|
||||
}
|
||||
|
||||
bool audio::orchestra::api::Dummy::probeDeviceOpen(uint32_t _device,
|
||||
bool audio::orchestra::api::Dummy::open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -29,7 +29,7 @@ namespace audio {
|
||||
enum audio::orchestra::error stopStream();
|
||||
enum audio::orchestra::error abortStream();
|
||||
private:
|
||||
bool probeDeviceOpen(uint32_t _device,
|
||||
bool open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -136,6 +136,7 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Jack::getDeviceInfo(uint32_t
|
||||
if (client == nullptr) {
|
||||
ATA_ERROR("Jack server not found or connection error!");
|
||||
// TODO : audio::orchestra::error_warning;
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
const char **ports;
|
||||
@ -199,6 +200,7 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Jack::getDeviceInfo(uint32_t
|
||||
jack_client_close(client);
|
||||
ATA_ERROR("error determining Jack input/output channels!");
|
||||
// TODO : audio::orchestra::error_warning;
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
// Jack always uses 32-bit floats.
|
||||
@ -208,6 +210,7 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Jack::getDeviceInfo(uint32_t
|
||||
info.isDefault = true;
|
||||
}
|
||||
jack_client_close(client);
|
||||
info.isCorrect = true;
|
||||
return info;
|
||||
}
|
||||
|
||||
@ -257,7 +260,7 @@ int32_t audio::orchestra::api::Jack::jackXrun(void* _userData) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool audio::orchestra::api::Jack::probeDeviceOpen(uint32_t _device,
|
||||
bool audio::orchestra::api::Jack::open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -42,7 +42,7 @@ namespace audio {
|
||||
static int32_t jackCallbackHandler(jack_nframes_t _nframes, void* _userData);
|
||||
private:
|
||||
std11::shared_ptr<JackPrivate> m_private;
|
||||
bool probeDeviceOpen(uint32_t _device,
|
||||
bool open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -85,6 +85,7 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Oss::getDeviceInfo(uint32_t
|
||||
int32_t mixerfd = open("/dev/mixer", O_RDWR, 0);
|
||||
if (mixerfd == -1) {
|
||||
ATA_ERROR("error opening '/dev/mixer'.");
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
oss_sysinfo sysinfo;
|
||||
@ -92,17 +93,20 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Oss::getDeviceInfo(uint32_t
|
||||
if (result == -1) {
|
||||
close(mixerfd);
|
||||
ATA_ERROR("error getting sysinfo, OSS version >= 4.0 is required.");
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
unsigned nDevices = sysinfo.numaudios;
|
||||
if (nDevices == 0) {
|
||||
close(mixerfd);
|
||||
ATA_ERROR("no devices found!");
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
if (_device >= nDevices) {
|
||||
close(mixerfd);
|
||||
ATA_ERROR("device ID is invalid!");
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
oss_audioinfo ainfo;
|
||||
@ -112,6 +116,7 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Oss::getDeviceInfo(uint32_t
|
||||
if (result == -1) {
|
||||
ATA_ERROR("error getting device (" << ainfo.name << ") info.");
|
||||
error(audio::orchestra::error_warning);
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
// Probe channels
|
||||
@ -151,6 +156,7 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Oss::getDeviceInfo(uint32_t
|
||||
// Check that we have at least one supported format
|
||||
if (info.nativeFormats == 0) {
|
||||
ATA_ERROR("device (" << ainfo.name << ") data format not supported by RtAudio.");
|
||||
info.clear();
|
||||
return info;
|
||||
}
|
||||
// Probe the supported sample rates.
|
||||
@ -179,15 +185,16 @@ audio::orchestra::DeviceInfo audio::orchestra::api::Oss::getDeviceInfo(uint32_t
|
||||
info.probed = true;
|
||||
info.name = ainfo.name;
|
||||
}
|
||||
info.isCorrect = true;
|
||||
return info;
|
||||
}
|
||||
|
||||
bool audio::orchestra::api::Oss::probeDeviceOpen(uint32_t _device,
|
||||
bool audio::orchestra::api::Oss::open(uint32_t _device,
|
||||
StreamMode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
uint32_t _sampleRate,
|
||||
rtaudio::format _format,
|
||||
audio::format _format,
|
||||
uint32_t* _bufferSize,
|
||||
const audio::orchestra::StreamOptions& _options) {
|
||||
int32_t mixerfd = open("/dev/mixer", O_RDWR, 0);
|
||||
|
@ -35,7 +35,7 @@ namespace audio {
|
||||
void callbackEvent();
|
||||
private:
|
||||
std11::shared_ptr<OssPrivate> m_private;
|
||||
bool probeDeviceOpen(uint32_t _device,
|
||||
bool open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -277,7 +277,7 @@ enum audio::orchestra::error audio::orchestra::api::Pulse::abortStream() {
|
||||
return audio::orchestra::error_none;
|
||||
}
|
||||
|
||||
bool audio::orchestra::api::Pulse::probeDeviceOpen(uint32_t _device,
|
||||
bool audio::orchestra::api::Pulse::open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -38,7 +38,7 @@ namespace audio {
|
||||
std11::shared_ptr<PulsePrivate> m_private;
|
||||
std::vector<audio::orchestra::DeviceInfo> m_devices;
|
||||
void saveDeviceInfo();
|
||||
bool probeDeviceOpen(uint32_t _device,
|
||||
bool open(uint32_t _device,
|
||||
audio::orchestra::mode _mode,
|
||||
uint32_t _channels,
|
||||
uint32_t _firstChannel,
|
||||
|
@ -213,6 +213,7 @@ static void callbackGetSinkList(pa_context* _contex, const pa_sink_info* _info,
|
||||
return;
|
||||
}
|
||||
audio::orchestra::DeviceInfo info;
|
||||
info.isCorrect = true;
|
||||
info.input = false;
|
||||
info.name = _info->name;
|
||||
info.desc = _info->description;
|
||||
@ -231,6 +232,7 @@ static void callbackGetSourceList(pa_context* _contex, const pa_source_info* _in
|
||||
return;
|
||||
}
|
||||
audio::orchestra::DeviceInfo info;
|
||||
info.isCorrect = true;
|
||||
info.input = true;
|
||||
info.name = _info->name;
|
||||
info.desc = _info->description;
|
||||
|
Loading…
x
Reference in New Issue
Block a user