欢迎关注公众号可以查看更多完整文章
使用IXAudio2VoiceCallback回调的好处是,在音频数据播放完的时候,可以通知外部程序进行其他操作。
使用IXAudio2VoiceCallback需要继承此接口,然后重新实现,因为内部所有函数都是纯虚函数。所有函数中使用比较多的是OnStreamEnd函数,当音频数据播放完成的时候,OnStreamEnd会触发一个事件。
继承实现IXAudio2VoiceCallback接口:
class VoiceCallback : public IXAudio2VoiceCallback
{
public:
HANDLE hBufferEndEvent;
VoiceCallback(): hBufferEndEvent( CreateEvent( NULL, FALSE, FALSE, NULL ) ){}
~VoiceCallback(){ CloseHandle( hBufferEndEvent ); }
//Called when the voice has just finished playing a contiguous audio stream.
void OnStreamEnd() { SetEvent( hBufferEndEvent ); }
//Unused methods are stubs
void OnVoiceProcessingPassEnd() { }
void OnVoiceProcessingPassStart(UINT32 SamplesRequired) { }
void OnBufferEnd(void * pBufferCon