代码之家  ›  专栏  ›  技术社区  ›  Adrian McCarthy

你能用Windows wave音频输入重新使用缓冲区吗?

  •  2
  • Adrian McCarthy  · 技术社区  · 15 年前

    我正在使用Windows多媒体api来录制和处理wave音频( waveInOpen 和朋友)。我想以循环方式使用少量缓冲区。

    我知道你应该用 waveInPrepareHeader 在向设备添加缓冲区之前,您应该调用 waveInUnprepareHeader 在wave设备“将缓冲区返回给应用程序”之后,在您释放它之前。

    我的问题是,为了重新使用缓冲区,我必须做好准备吗?或者我可以把以前使用过的缓冲区添加回设备吗?

    另外,我在哪根线上做这件事重要吗?我正在使用回调函数,它似乎是在属于音频系统的工作线程上调用的。我能打电话吗 waveInUnprepareHeader公司 , waveInPrepareHeader公司 ,和 waveInAddBuffer 在那个线程上,在回调期间?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Mark Heath    15 年前

    是的,我的经验是你每次都需要打电话给准备和准备。从内存中,如果您尝试重复使用同一个错误,它将返回一个错误。

    通常在处理回调的任何线程上调用prepare和unprepare。

        2
  •  0
  •   Han    15 年前

    创建缓冲区时,调用 waveInPrepareHeader . 然后你可以简单地设置 准备 打电话前打旗子 waveInAddBuffer 在从设备返回的缓冲区上。

    pHdr->dwFlags = WHDR_PREPARED;
    

    可以在回调线程(或消息处理程序)上执行此操作。

    推荐文章