Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas tworzenia głosu źródłowego można przekazać do niej strukturę, która definiuje wywołania zwrotne dla niektórych zdarzeń dźwiękowych. Tych wywołań zwrotnych można użyć do wykonywania działań lub sygnalizowania innemu kodowi.
Utwórz klasę, która dziedziczy z interfejsu IXAudio2VoiceCallback. Wszystkie funkcje składowe IXAudio2VoiceCallback są wyłącznie wirtualne i muszą być zdefiniowane. Jedyną funkcją, która nas interesuje w tym przykładzie, jest OnStreamEnd. W związku z tym pozostałe funkcje są wycinkami. Funkcja OnStreamEnd wyzwala zdarzenie wskazujące, że dźwięk został odtworzony do końca.
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 * pBufferContext) { } void OnBufferStart(void * pBufferContext) { } void OnLoopEnd(void * pBufferContext) { } void OnVoiceError(void * pBufferContext, HRESULT Error) { } };Utwórz źródłowy głos za pomocą IXAudio2::CreateSourceVoice przy użyciu wystąpienia klasy wywołania zwrotnego utworzonego wcześniej jako parametr pCallback.
VoiceCallback voiceCallback; if( FAILED(hr = pXaudio2->CreateSourceVoice( &pSourceVoice, (WAVEFORMATEX*)&wfx, 0, XAUDIO2_DEFAULT_FREQ_RATIO, &voiceCallback, NULL, NULL ) ) ) return;Po uruchomieniu dźwięku użyj metody WaitForSingleObjectEx w celu oczekiwania na aktywację zdarzenia.
WaitForSingleObjectEx( voiceCallback.hBufferEndEvent, INFINITE, TRUE );
Tematy pokrewne
-
przewodnik programowania XAudio2
-
Instrukcje: tworzenie podstawowego grafu przetwarzania dźwięku