代码之家  ›  专栏  ›  技术社区  ›  Pierre Espenan meade

如何从UPD的paquets中打开一条流?

  •  0
  • Pierre Espenan meade  · 技术社区  · 14 年前

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

    我看到有一个pau OpenDefaultStream()(和pau open stream()非常相似)函数来打开一个流:

    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 回复  |  直到 14 年前
        1
  •  1
  •   darasan    14 年前

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

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

    编译并运行示例以获取详细信息(例如patest_read_record.c),其中有很多信息。