Я пытался воспроизвести аудиофайл из буфера (short int) с помощью Superpowered Audio SDK. В настоящее время при каждом вызове функции процесса передается выходной буфер, который записывается так:
getBufferData(short int *output, unsigned int samples) {
memcpy(output, buffer + bufferPtr, samples * sizeOf(short int));
bufferPtr += samples;
}
Получившийся звук узнаваем как песня, которую я пытаюсь воспроизвести, но сильно искаженная.
Я проверил, что данные в буфере — это то, что я ожидаю, записав их в файл wav и протестировав воспроизведение таким образом.
Я догадываюсь, что подпрограмма memcpy может быть слишком интенсивной, чтобы вызывать ее так часто, но я не смог найти альтернативы.
Я также понимаю, что этот метод воспроизведения не является подходящим способом воспроизведения аудиофайла с использованием суперскорости, но для моего случая использования требуется.
Любое руководство будет с благодарностью!
Возможно, у вас есть проблема со стерео / моно.
Пример, который вы описываете, отлично работает для моно.
Других решений пока нет …