Metodo IXAudio2SourceVoice::FlushSourceBuffers (xaudio2.h)

Rimuove tutti i buffer audio in sospeso dalla coda vocale.

Sintassi

HRESULT FlushSourceBuffers();

Valore restituito

Restituisce S_OK in caso di esito positivo, in caso contrario, un codice di errore.

Commenti

Se la voce viene avviata, il buffer attualmente in riproduzione non viene rimosso dalla coda.

FlushSourceBuffers può essere chiamato indipendentemente dal fatto che la voce sia stata avviata o arrestata.

Per ogni buffer rimosso, verrà eseguito un callback OnBufferEnd , ma non verranno eseguiti altri callback per buffer (OnBufferStart, OnStreamEnd o OnLoopEnd).

FlushSourceBuffers non modifica lo stato di esecuzione di una voce, quindi se la voce stava riproducendo un buffer prima della chiamata, continuerà a farlo e distribuirà normalmente tutti i callback per il buffer. Ciò significa che il callback OnBufferEnd per questo buffer verrà eseguito dopo i callback OnBufferEnd per i buffer rimossi. Pertanto, un client XAudio2 che chiama FlushSourceBuffers non può aspettarsi di ricevere callback OnBufferEnd nell'ordine in cui sono stati inviati i buffer.

Nessun avviso per la fame della coda del buffer verrà generato al termine del buffer in riproduzione; si presuppone che il client abbia intenzionalmente rimosso i buffer che lo hanno seguito. Tuttavia, potrebbe esserci un pop audio se questo buffer non termina a un incrocio zero. Se l'applicazione deve assicurarsi che l'operazione di scaricamento venga eseguita durante la riproduzione di un buffer specifico, ad esempio perché il buffer termina con un passaggio zero, deve chiamare FlushSourceBuffers da un callback, in modo che venga eseguito in modo sincrono.

La chiamata a FlushSourceBuffers dopo l'arresto di una voce e quindi l'invio di nuovi dati alla voce reimposta tutti i contatori interni della voce.

Lo stato di una voce non viene considerato reimpostato dopo aver chiamato FlushSourceBuffers finché non si verifica il callback OnBufferEnd (se in precedenza è stato inviato un buffer) o IXAudio2SourceVoice::GetState restituisce con XAUDIO2_VOICE_STATE. BuffersQueued == 0. Ad esempio, se arresti una voce e chiami FlushSourceBuffers, non è ancora legale chiamare immediatamente IXAudio2SourceVoice::SetSourceSampleRate (che richiede che la voce non abbia buffer attualmente in coda), fino a quando non vengono soddisfatte una delle condizioni indicate in precedenza.

Requisiti della piattaforma

Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); DirectX SDK (XAudio 2.7)

Requisiti

   
Piattaforma di destinazione Windows
Intestazione xaudio2.h

Vedi anche

IXAudio2SourceVoice