add rtaudio params for audio device input

pull/18/head
Dimitri Diakopoulos 10 years ago
parent 30456b1515
commit 26713c3fd8

@ -43,32 +43,27 @@ const uint32_t FRAME_SIZE = 512;
const int32_t CHANNELS = 2;
const int32_t BUFFER_LENGTH = FRAME_SIZE * CHANNELS;
struct DeviceInfo
struct AudioDeviceInfo
{
int id;
int numChannels;
int sampleRate;
unsigned int frameSize;
uint32_t id;
uint32_t numChannels;
uint32_t sampleRate;
uint32_t frameSize;
bool isPlaying = false;
};
class AudioDevice
{
NO_MOVE(AudioDevice);
std::unique_ptr<RtAudio> rtaudio;
public:
DeviceInfo info;
static void ListAudioDevices();
AudioDeviceInfo info;
AudioDevice(int numChannels, int sampleRate, int deviceId = -1)
{
rtaudio = std::unique_ptr<RtAudio>(new RtAudio);
info.id = deviceId != -1 ? deviceId : rtaudio->getDefaultOutputDevice();
info.id = (deviceId != -1) ? deviceId : rtaudio->getDefaultOutputDevice();
info.numChannels = numChannels;
info.sampleRate = sampleRate;
info.frameSize = FRAME_SIZE;
@ -80,14 +75,17 @@ public:
{
rtaudio->stopStream();
if (rtaudio->isStreamOpen())
{
rtaudio->closeStream();
}
}
}
bool Open(const int deviceId);
bool Play(const std::vector<float> & data);
static void ListAudioDevices();
};
} // end namespace nqr

@ -53,12 +53,17 @@ bool AudioDevice::Open(const int deviceId)
{
if (!rtaudio) throw std::runtime_error("rtaudio not created yet");
RtAudio::StreamParameters parameters;
parameters.deviceId = info.id;
parameters.nChannels = info.numChannels;
parameters.firstChannel = 0;
RtAudio::StreamParameters outputParams;
outputParams.deviceId = info.id;
outputParams.nChannels = info.numChannels;
outputParams.firstChannel = 0;
rtaudio->openStream(&parameters, NULL, RTAUDIO_FLOAT32, info.sampleRate, &info.frameSize, &rt_callback, (void*) & buffer);
RtAudio::StreamParameters inputParams;
inputParams.deviceId = info.id;
inputParams.nChannels = info.numChannels;
inputParams.firstChannel = 0;
rtaudio->openStream(&outputParams, &inputParams, RTAUDIO_FLOAT32, info.sampleRate, &info.frameSize, &rt_callback, (void*) & buffer);
if (rtaudio->isStreamOpen())
{

Loading…
Cancel
Save