Я читаю аудиофайлы wav с помощью PortAudio. Функция обратного вызова работает нормально, и файлы воспроизводятся в Ubuntu нормально, как и должно быть. Проблема в том, что когда я пытаюсь получить время с помощью Pa_GetStreamTime, поскольку он возвращает 0, я читал документацию и примеры portaudio, но не смог найти способ устранения неполадок или хотя бы пример использования этой функции. Я просмотрел документацию по API здесь, но пока ничего не известно. Если кто-то может дать подсказку, это было бы очень признательно. Ниже приведена часть реализации, в которой выполняется функция обратного вызова. Я использую Qt, так как моей конечной целью является отображение FTT любого файла wav. Заранее спасибо.
int playAudio::patestCallback(const void *inputBuffer, void *outputBuffer,
unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData)
{
/* Cast data passed through stream to our structure. */
// data = (WAV*)userData;
float *out = (float*)outputBuffer;
(void) inputBuffer; /* Prevent unused variable warning. */
/*terminates the stream flows and reset cursor.*/
if (cursor == playAudio::SubChunk2Size / 4)
{
cursor = 0;
return paComplete;
}
for (int i = 0; i < framesPerBuffer; i++)
{
if (cursor == playAudio::SubChunk2Size / 4) break; // breaks if samples reached last.
*(out++) = pLeftChannel[cursor];
*(out++) = pRightChannel[cursor];
cursor++;
}
// qDebug()<<cursor;
playAudio::audioTime = Pa_GetStreamTime(stream);
qDebug() << playAudio::audioTime;
return paContinue;
}