“捕捉缓冲区”通知
想要定期的将数据从“捕捉缓冲区”复制出来,你的应用程序必须知道什么时候这个读指针(读指针的位置就是可以安全读取数据的最高位置)到达缓冲区中特定的位置。获取这个信息的一个办法是通过IDirectSoundCaptureBuffer8::GetCurrentPosition 方法轮询读指针的位置。另一种更有效的办法是使用通知(notification)。使用 IDirectSoundNotify8::SetNotificationPositions 方法,你可以在缓冲区中设置若干个点,在这些点上会触发事件。你不能在缓冲区正在使用的时候设置它。
首先,你必须得到 IDirectSoundNotify8 接口。你可以通过使用缓冲区对象的 QueryInterface 方法得到。
使用Win32 CreateEvent 方法为每一个通知的位置创建一个事件对象。将这个事件的句柄放置在一个 DSBPOSITIONNOTIFY 结构体的 hEventNotify 成员中。在这个结构体的 dwOffset 成员中,指定在缓冲区中你想要事件被触发的偏移量。如果你想要设置多个通知位置那么就传递这个结构体(或结构体数组)的地址给 SetNotificationPositions方法。
下面的例子在一秒钟的缓冲区中设置了三个通知位置。第一个事件将在读指针接近缓冲区中点的时候被触发,另一个事件将在读指针缓冲区终点的时候被触发,第三个则会在捕捉停止的时候被触发。
查看其它:
导 言
1.枚举“捕捉设备”
2.创建“捕捉设备对象”
3.“捕捉设备”性能
4.创建一个“捕捉缓冲区”
5.“捕捉缓冲区”信息
6.“捕捉缓冲区”通知
7. “捕捉缓冲区”特效
8.使用“捕捉缓冲区”
9.写入到WAV文件
本文转自stg609博客园博客,原文链接:http://www.cnblogs.com/stg609/archive/2008/10/22/1314227.html,如需转载请自行联系原作者