Bagikan melalui


Metode IXAudio2SourceVoice::FlushSourceBuffers (xaudio2.h)

Menghapus semua buffer audio yang tertunda dari antrean suara.

Sintaks

HRESULT FlushSourceBuffers();

Mengembalikan nilai

Mengembalikan S_OK jika berhasil, kode kesalahan sebaliknya.

Keterangan

Jika suara dimulai, buffer yang saat ini sedang diputar tidak dihapus dari antrean.

FlushSourceBuffers dapat dipanggil terlepas dari apakah suara saat ini dimulai atau dihentikan.

Untuk setiap buffer yang dihapus, panggilan balik OnBufferEnd akan dibuat, tetapi tidak ada panggilan balik per buffer lainnya (OnBufferStart, OnStreamEnd atau OnLoopEnd) yang akan dibuat.

FlushSourceBuffers tidak mengubah status suara yang sedang berjalan, jadi jika suara memutar buffer sebelum panggilan, ia akan terus melakukannya, dan akan mengirimkan semua panggilan balik untuk buffer secara normal. Ini berarti bahwa panggilan balik OnBufferEnd untuk buffer ini akan terjadi setelah panggilan balik OnBufferEnd untuk buffer yang dihapus. Dengan demikian, klien XAudio2 yang memanggil FlushSourceBuffers tidak dapat mengharapkan untuk menerima panggilan balik OnBufferEnd dalam urutan di mana buffer dikirimkan.

Tidak ada peringatan untuk kelaparan antrean buffer yang akan dipancarkan ketika buffer yang sedang diputar selesai; diasumsikan bahwa klien telah sengaja menghapus buffer yang mengikutinya. Namun, mungkin ada pop audio jika buffer ini tidak berakhir pada persimpangan nol. Jika aplikasi harus memastikan bahwa operasi flush berlangsung saat buffer tertentu sedang diputar—mungkin karena buffer berakhir dengan nol persimpangan—itu harus memanggil FlushSourceBuffers dari panggilan balik, sehingga dijalankan secara sinkron.

Memanggil FlushSourceBuffers setelah suara dihentikan lalu mengirimkan data baru ke suara mengatur ulang semua penghitung internal suara.

Status suara tidak dianggap diatur ulang setelah memanggil FlushSourceBuffers hingga panggilan balik OnBufferEnd terjadi (jika buffer sebelumnya dikirimkan) atau IXAudio2SourceVoice::GetState kembali dengan XAUDIO2_VOICE_STATE. BuffersQueued == 0. Misalnya, jika Anda menghentikan suara dan memanggil FlushSourceBuffers, masih belum legal untuk segera memanggil IXAudio2SourceVoice::SetSourceSampleRate (yang mengharuskan suara tidak memiliki buffer apa pun yang saat ini diantrekan), sampai salah satu kondisi yang disebutkan sebelumnya terpenuhi.

Persyaratan Platform

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

Persyaratan

   
Target Platform Windows
Header xaudio2.h

Lihat juga

IXAudio2SourceVoice