mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-08 11:02:24 +02:00
Merge branch 'master' of github.com:worklist/interface
This commit is contained in:
commit
82b8bfc6f3
2 changed files with 16 additions and 56 deletions
|
@ -30,8 +30,7 @@ const int AUDIO_UDP_LISTEN_PORT = 55444;
|
|||
|
||||
bool Audio::initialized;
|
||||
PaError Audio::err;
|
||||
PaStream *Audio::inputStream;
|
||||
PaStream *Audio::outputStream;
|
||||
PaStream *Audio::stream;
|
||||
AudioData *Audio::data;
|
||||
std::ofstream logFile;
|
||||
|
||||
|
@ -55,37 +54,28 @@ std::ofstream logFile;
|
|||
Can be used to end the stream from within the callback.
|
||||
*/
|
||||
|
||||
int inputCallback(const void *inputBuffer,
|
||||
int audioCallback (const void *inputBuffer,
|
||||
void *outputBuffer,
|
||||
unsigned long frames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo,
|
||||
PaStreamCallbackFlags statusFlags,
|
||||
void *userData)
|
||||
{
|
||||
UDPSocket *audioSocket = (UDPSocket *) userData;
|
||||
AudioData *data = (AudioData *) userData;
|
||||
|
||||
int16_t *inputLeft = ((int16_t **) inputBuffer)[0];
|
||||
// int16_t *inputRight = ((int16_t **) inputBuffer)[1];
|
||||
|
||||
if (inputLeft != NULL) {
|
||||
audioSocket->send((char *) "192.168.1.19", 55443, (void *)inputLeft, BUFFER_LENGTH_BYTES);
|
||||
data->audioSocket->send((char *) "192.168.1.19", 55443, (void *)inputLeft, BUFFER_LENGTH_BYTES);
|
||||
}
|
||||
|
||||
return paContinue;
|
||||
}
|
||||
|
||||
int outputCallback(const void *inputBuffer,
|
||||
void *outputBuffer,
|
||||
unsigned long frames,
|
||||
const PaStreamCallbackTimeInfo *timeInfo,
|
||||
PaStreamCallbackFlags statusFlags,
|
||||
void *userData)
|
||||
{
|
||||
AudioData *data = (AudioData *) userData;
|
||||
|
||||
int16_t *outputLeft = ((int16_t **) outputBuffer)[0];
|
||||
int16_t *outputRight = ((int16_t **) outputBuffer)[1];
|
||||
|
||||
memset(outputLeft, 0, BUFFER_LENGTH_BYTES);
|
||||
memset(outputRight, 0, BUFFER_LENGTH_BYTES);
|
||||
|
||||
for (int s = 0; s < NUM_AUDIO_SOURCES; s++) {
|
||||
|
||||
AudioSource *source = data->sources[s];
|
||||
|
@ -95,9 +85,6 @@ int outputCallback(const void *inputBuffer,
|
|||
memcpy(outputLeft, source->sourceData, BUFFER_LENGTH_BYTES);
|
||||
memcpy(outputRight, source->sourceData, BUFFER_LENGTH_BYTES);
|
||||
} else {
|
||||
memset(outputLeft, 0, BUFFER_LENGTH_BYTES);
|
||||
memset(outputRight, 0, BUFFER_LENGTH_BYTES);
|
||||
|
||||
glm::vec3 headPos = data->linkedHead->getPos();
|
||||
glm::vec3 sourcePos = source->position;
|
||||
|
||||
|
@ -239,35 +226,20 @@ bool Audio::init(Head *mainHead)
|
|||
|
||||
data->linkedHead = mainHead;
|
||||
|
||||
err = Pa_OpenDefaultStream(&inputStream,
|
||||
err = Pa_OpenDefaultStream(&stream,
|
||||
2, // input channels
|
||||
NULL, // output channels
|
||||
(paInt16 | paNonInterleaved), // sample format
|
||||
22050, // sample rate (hz)
|
||||
512, // frames per buffer
|
||||
inputCallback, // callback function
|
||||
(void *) data->audioSocket); // user data to be passed to callback
|
||||
|
||||
if (err != paNoError) goto error;
|
||||
|
||||
err = Pa_OpenDefaultStream(&outputStream,
|
||||
NULL, // input channels
|
||||
2, // output channels
|
||||
(paInt16 | paNonInterleaved), // sample format
|
||||
22050, // sample rate (hz)
|
||||
512, // frames per buffer
|
||||
outputCallback, // callback function
|
||||
audioCallback, // callback function
|
||||
(void *) data); // user data to be passed to callback
|
||||
|
||||
if (err != paNoError) goto error;
|
||||
|
||||
initialized = true;
|
||||
|
||||
// start the streams now that sources are good to go
|
||||
Pa_StartStream(inputStream);
|
||||
if (err != paNoError) goto error;
|
||||
|
||||
Pa_StartStream(outputStream);
|
||||
// start the stream now that sources are good to go
|
||||
Pa_StartStream(stream);
|
||||
if (err != paNoError) goto error;
|
||||
|
||||
return paNoError;
|
||||
|
@ -309,10 +281,7 @@ bool Audio::terminate ()
|
|||
} else {
|
||||
initialized = false;
|
||||
|
||||
err = Pa_CloseStream(inputStream);
|
||||
if (err != paNoError) goto error;
|
||||
|
||||
err = Pa_CloseStream(outputStream);
|
||||
err = Pa_CloseStream(stream);
|
||||
if (err != paNoError) goto error;
|
||||
|
||||
delete data;
|
||||
|
|
|
@ -36,23 +36,14 @@ private:
|
|||
static PaError err;
|
||||
|
||||
// audio stream handle
|
||||
static PaStream *inputStream;
|
||||
static PaStream *outputStream;
|
||||
static PaStream *stream;
|
||||
|
||||
// give access to AudioData class from audio callbacks
|
||||
friend int inputCallback (const void*, void*, unsigned long, const PaStreamCallbackTimeInfo*, PaStreamCallbackFlags, void*);
|
||||
friend int outputCallback (const void*, void*, unsigned long, const PaStreamCallbackTimeInfo*, PaStreamCallbackFlags, void*);
|
||||
// give access to AudioData class from audioCallback
|
||||
friend int audioCallback (const void*, void*, unsigned long, const PaStreamCallbackTimeInfo*, PaStreamCallbackFlags, void*);
|
||||
};
|
||||
|
||||
// Audio callback called by portaudio.
|
||||
int inputCallback (const void *inputBuffer,
|
||||
void *outputBuffer,
|
||||
unsigned long framesPerBuffer,
|
||||
const PaStreamCallbackTimeInfo *timeInfo,
|
||||
PaStreamCallbackFlags statusFlags,
|
||||
void *userData);
|
||||
|
||||
int outputCallback (const void *inputBuffer,
|
||||
int audioCallback (const void *inputBuffer,
|
||||
void *outputBuffer,
|
||||
unsigned long framesPerBuffer,
|
||||
const PaStreamCallbackTimeInfo *timeInfo,
|
||||
|
|
Loading…
Reference in a new issue