如何从UPD paquets打开一个流?

时间:2010-11-22 00:38:34

标签: audio streaming portaudio

我想使用PortAudio库来播放音频数据。此音频数据来自UDP paquets。

我看到有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*/

我想我必须用它来玩我的花束,但我不知道如何使用它:

  • 第一个参数是什么?
  • 为什么我必须定义回叫函数?

以下是PortAudio文档的链接:http://www.portaudio.com/trac/

非常感谢任何帮助:)

感谢。

1 个答案:

答案 0 :(得分:1)

第一个参数是指向PaStream类型的输入/输出流的指针。音频数据将从该流中读取/写入。

您需要编写一个回调函数,当PortAudio库需要向PC读取音频或从PC写入音频时,它将调用该函数。您想要做的任何其他音频处理(例如DSP)也将在这里完成。一个简单的回调函数只是将输入复制到输出,用于流I / O.如果您在使用回调时遇到问题,请使用阻止API,这可能更容易理解。

编译并运行示例以获取详细信息(例如patest_read_record.c),其中包含大量信息。