Как открыть поток с UPD PAQUETS?
Вопрос
Я хотел бы использовать библиотеку Portaudio для воспроизведения аудиоданных. Эти аудиоданные поступают из Pquets UDP.
Я видел, что есть PA_OPENDEFAULTSTREAM () (и PA_OPENSTREAM (), которая довольно похожая) функция, чтобы открыть поток:
PaStream *stream;
PaError err;
/* Open an audio I/O stream. */
err = Pa_OpenDefaultStream( &stream,
0, /* no input channels */
2, /* stereo output */
paFloat32, /* 32 bit floating point output */
SAMPLE_RATE,
256, /* frames per buffer, i.e. the number
of sample frames that PortAudio will
request from the callback. Many apps
may want to use
paFramesPerBufferUnspecified, which
tells PortAudio to pick the best,
possibly changing, buffer size.*/
patestCallback, /* this is your callback function */
&data ); /*This is a pointer that will be passed to
your callback*/
Я думаю, я должен использовать его, чтобы играть в моих пакетов, но я не знаю, как его использовать:
- Какой первый параметр?
- Почему я должен определить функцию обратной связи?
Вот ссылка на документацию портаудио: http://www.portaudio.com/trac/
Любая помощь будет очень оценена :)
Спасибо.
Решение
Первый параметр является указателем на поток ввода / вывода, типа Pastream. Аудиоданные будут прочитаны из / записаны на этот поток.
Вам необходимо написать функцию обратного вызова, которую библиотека Portaudio позвонит, когда необходимо прочитать или запись аудио на / с вашего компьютера. Любая другая аудио обработка, которую вы хотите сделать (например, DSP), будут сделаны здесь также. Простой функция обратного вызова просто скопировала бы ввод на выход, для потоковой передачи ввода / вывода. Если у вас возникли проблемы с использованием обратных вызовов, вместо этого используйте блокировку API, может быть легче понять.
Скомпилируйте и запустите примеры для деталей (например, Patest_Read_record.c), есть много информации.