69 bool getSound(std::vector<float> &soundVector,
int packetSize);
76 void setPlaySound(
const std::vector<float> &soundVector);
84 PaStream *_inputStream;
85 PaStream *_outputStream;
86 PaStreamParameters _inputParameters;
87 PaStreamParameters _outputParameters;
88 std::deque<float> _inputBuffer;
89 std::deque<float> _outputBuffer;
94 void initInputParameters();
99 void initOutputParameters();
112 static int inputCallback(
const void *inputBuffer,
void *outputBuffer,
113 unsigned long framesPerBuffer,
114 const PaStreamCallbackTimeInfo *timeInfo,
115 PaStreamCallbackFlags statusFlags,
125 std::deque<float> *inputData =
static_cast<std::deque<float> *
>(userData);
127 float *input = (
float *)inputBuffer;
129 for (
unsigned long i = 0; i < framesPerBuffer; i++) {
130 inputData->push_back(*input++);
135 catch (std::exception &e) {
151 static int outputCallback(
const void *inputBuffer,
void *outputBuffer,
152 unsigned long framesPerBuffer,
153 const PaStreamCallbackTimeInfo *timeInfo,
154 PaStreamCallbackFlags statusFlags,
164 float *output = (
float *)outputBuffer;
165 std::deque<float> *outputData =
static_cast<std::deque<float> *
>(userData);
167 if (outputData->empty())
170 for (; i < framesPerBuffer; i++) {
171 if (outputData->empty())
173 *output++ = (*outputData)[i];
175 for (
unsigned long j = 0; j != i; j++) {
176 outputData->pop_front();
181 catch (std::exception &e) {
182 throw std::runtime_error(e.what());