static int audioCallback( const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void *userData ){ sAudioBuffer *data = (sAudioBuffer*)userData; float *out = (float*)outputBuffer; (void) timeInfo; (void) statusFlags; (void) inputBuffer; unsigned char* frame = nullptr; if(data->length[data->readerIndex] != 0){ frame = data->buffer[data->readerIndex]; } opus_decode_float(data->dec, frame, data->length[data->readerIndex], out, framesPerBuffer, 0 ); data->length[data->readerIndex] = 0; if(++data->readerIndex >= BUFFER_SIZE){ data->readerIndex = 0; } return paContinue; }
float *AudioCodec::AudioDecode(unsigned char *data) { float *frame = new float[this->FrameSize * this->num_channels]; opus_decode_float(this->dec, data, this->data_size, frame, 240, 0); return (frame); }
void EncodeManager::decodeAudio(const unsigned char* data, SAMPLE* out, int enc_ret) { if (opus_decode_float(_dec, data, enc_ret, out, FRAMES_PER_BUFFER, 0) < 0) std::cerr << "Error decoding" << std::endl; }