RtAudio source integrated, preparing to implement

This commit is contained in:
Charles J. Cliffe
2014-12-04 19:03:02 -05:00
parent e668fa2b5d
commit 7ae1ffc2c9
6 changed files with 11411 additions and 48 deletions
+37 -37
View File
@@ -3,7 +3,7 @@
#include <vector>
AudioThread::AudioThread(AudioThreadInputQueue *inputQueue) :
inputQueue(inputQueue), stream(NULL), terminated(false) {
inputQueue(inputQueue), terminated(false) { // , stream(NULL)
}
@@ -14,51 +14,51 @@ AudioThread::~AudioThread() {
void AudioThread::threadMain() {
std::cout << "Audio thread initializing.." << std::endl;
PaError err;
err = Pa_Initialize();
if (err != paNoError) {
std::cout << "Error starting portaudio :(" << std::endl;
return;
}
// PaError err;
// err = Pa_Initialize();
// if (err != paNoError) {
// std::cout << "Error starting portaudio :(" << std::endl;
// return;
// }
//
// int preferred_device = -1;
//
// outputParameters.device =
// (preferred_device != -1) ?
// preferred_device : Pa_GetDefaultOutputDevice();
// if (outputParameters.device == paNoDevice) {
// std::cout << "Error: No default output device.\n";
// }
//
// outputParameters.channelCount = 2;
// outputParameters.sampleFormat = paFloat32;
// outputParameters.suggestedLatency = Pa_GetDeviceInfo(
// outputParameters.device)->defaultHighOutputLatency;
// outputParameters.hostApiSpecificStreamInfo = NULL;
//
// stream = NULL;
//
// err = Pa_OpenStream(&stream, NULL, &outputParameters, AUDIO_FREQUENCY,
// paFramesPerBufferUnspecified, paClipOff, NULL, NULL);
int preferred_device = -1;
outputParameters.device =
(preferred_device != -1) ?
preferred_device : Pa_GetDefaultOutputDevice();
if (outputParameters.device == paNoDevice) {
std::cout << "Error: No default output device.\n";
}
outputParameters.channelCount = 2;
outputParameters.sampleFormat = paFloat32;
outputParameters.suggestedLatency = Pa_GetDeviceInfo(
outputParameters.device)->defaultHighOutputLatency;
outputParameters.hostApiSpecificStreamInfo = NULL;
stream = NULL;
err = Pa_OpenStream(&stream, NULL, &outputParameters, AUDIO_FREQUENCY,
paFramesPerBufferUnspecified, paClipOff, NULL, NULL);
err = Pa_StartStream(stream);
if (err != paNoError) {
std::cout << "Error starting stream: " << Pa_GetErrorText(err)
<< std::endl;
std::cout << "\tPortAudio error: " << Pa_GetErrorText(err) << std::endl;
}
// err = Pa_StartStream(stream);
// if (err != paNoError) {
// std::cout << "Error starting stream: " << Pa_GetErrorText(err)
// << std::endl;
// std::cout << "\tPortAudio error: " << Pa_GetErrorText(err) << std::endl;
// }
while (!terminated) {
AudioThreadInput inp;
inputQueue->pop(inp);
if (inp.data.size()) {
Pa_WriteStream(stream, &inp.data[0], inp.data.size()/2);
// Pa_WriteStream(stream, &inp.data[0], inp.data.size()/2);
}
}
err = Pa_StopStream(stream);
err = Pa_CloseStream(stream);
Pa_Terminate();
// err = Pa_StopStream(stream);
// err = Pa_CloseStream(stream);
// Pa_Terminate();
std::cout << "Audio thread done." << std::endl;
}
+3 -3
View File
@@ -14,7 +14,7 @@
#include "AudioThread.h"
#include "ThreadQueue.h"
#include "portaudio.h"
#include "RtAudio.h"
class AudioThreadInput {
public:
@@ -36,8 +36,8 @@ public:
private:
AudioThreadInputQueue *inputQueue;
PaStreamParameters outputParameters;
PaStream *stream;
// PaStreamParameters outputParameters;
// PaStream *stream;
std::atomic<bool> terminated;
};