“捕捉缓冲区”通知



      想要定期的将数据从“捕捉缓冲区”复制出来,你的应用程序必须知道什么时候这个读指针(读指针的位置就是可以安全读取数据的最高位置)到达缓冲区中特定的位置。获取这个信息的一个办法是通过 IDirectSoundCaptureBuffer8::GetCurrentPosition 方法轮询读指针的位置。另一种更有效的办法是使用通知(notification)。使用 IDirectSoundNotify8::SetNotificationPositions 方法,你可以在缓冲区中设置若干个点,在这些点上会触发事件。你不能在缓冲区正在使用的时候设置它。

      首先,你必须得到 IDirectSoundNotify8 接口。你可以通过使用缓冲区对象的 QueryInterface 方法得到。

      使用Win32  CreateEvent 方法为每一个通知的位置创建一个事件对象。将这个事件的句柄放置在一个 DSBPOSITIONNOTIFY 结构体的 hEventNotify 成员中。在这个结构体的 dwOffset 成员中,指定在缓冲区中你想要事件被触发的偏移量。如果你想要设置多个通知位置那么就传递这个结构体(或结构体数组)的地址给 SetNotificationPositions方法。

     下面的例子在一秒钟的缓冲区中设置了三个通知位置。第一个事件将在读指针接近缓冲区中点的时候被触发,另一个事件将在读指针缓冲区终点的时候被触发,第三个则会在捕捉停止的时候被触发。

Code

 

 

查看其它:
      导 言
      1.枚举“捕捉设备”
      2.创建“捕捉设备对象”
      3.“捕捉设备”性能
      4.创建一个“捕捉缓冲区”
      5.“捕捉缓冲区”信息
      6.“捕捉缓冲区”通知
      7. “捕捉缓冲区”特效
      8.使用“捕捉缓冲区”
      9.写入到WAV文件 

posted on 2008-10-22 13:29  stg609  阅读(1530)  评论(0编辑  收藏  举报
分享按钮