Set Operasi XAudio2
Gambaran umum ini memperkenalkan beberapa metode XAudio2 yang dapat Anda panggil sebagai bagian dari set operasi.
Beberapa metode XAudio2 mengambil argumen OperationSet, yang memungkinkan mereka dipanggil sebagai bagian dari grup yang ditangguhkan. Pada waktu tertentu, Anda dapat menerapkan seluruh kumpulan perubahan secara bersamaan dengan memanggil fungsi IXAudio2::CommitChanges dengan pengidentifikasi OperationSet untuk grup tersebut. Pengidentifikasi adalah angka arbitrer. Dengan demikian, ini memungkinkan bagian terpisah dari kode klien untuk menerapkan perubahan atom terpisah pada grafik tanpa konflik apa pun. Praktik yang direkomendasikan adalah agar klien dapat menaikkan penghitung global setiap kali perlu menghasilkan pengidentifikasi OperationSet baru yang unik. Serangkaian perubahan pada grafik, diterapkan secara atomik, dijamin akurat sampel. Misalnya, suara akan mulai disinkronkan.
Jika Anda mengatur OperationSet ke XAUDIO2_COMMIT_NOW, perubahan akan segera berlaku. Ini berlaku dalam pass pemrosesan audio pertama setelah panggilan metode. Jika Anda memanggil CommitChanges dengan XAUDIO2_COMMIT_ALL, perubahan pada semua set operasi yang tertunda dilakukan, terlepas dari pengidentifikasi OperationSet mereka.
Metode tertentu segera berlaku ketika dipanggil dari panggilan balik XAudio2 dengan OperationSet XAUDIO2_COMMIT_NOW. Semua metode lain yang mengambil argumen OperationSet hanya berlaku pada pass pemrosesan berikutnya setelah metode dipanggil (jika dipanggil dengan XAUDIO2_COMMIT_NOW), atau setelah CommitChanges dipanggil dengan OperationSet yang sama. Karena itu, panggilan metode tertentu mungkin tidak selalu terjadi dalam urutan yang sama di mana mereka dipanggil.
Semua operasi yang tertunda dilakukan secara atomik ketika IXAudio2::StopEngine dipanggil. Metode apa pun yang dipanggil saat mesin dihentikan segera berlaku, terlepas dari nilai OperationSet yang disediakan. Saat Anda menghidupkan ulang mesin, XAudio2 kembali ke mode asinkron.
Skenario sederhana di mana set operasi berguna termasuk contoh berikut.
- Memulai beberapa suara secara bersamaan.
- Secara bersamaan mengirimkan buffer ke suara, mengatur parameter suara, dan memulai suara.
- Membuat perubahan skala besar pada grafik, seperti menghubungkan semua suara sumber ke suara submix baru.
Lihat Cara: Metode Audio Grup sebagai Kumpulan Operasi untuk contoh penggunaan kumpulan operasi.
Metode Set Operasi
Anda dapat memanggil metode berikut sebagai bagian dari set operasi.
- IXAudio2SourceVoice::ExitLoop
- IXAudio2Voice::SetFilterParameters
- IXAudio2SourceVoice::SetFrequencyRatio
- IXAudio2Voice::D isableEffect
- IXAudio2Voice::EnableEffect
- IXAudio2Voice::SetChannelVolumes
- IXAudio2Voice::SetEffectParameters
- IXAudio2Voice::SetOutputMatrix
- IXAudio2Voice::SetVolume
- IXAudio2SourceVoice::Start
- IXAudio2SourceVoice::Stop
Seperti yang dijelaskan sebelumnya, kode klien pada akhirnya harus memanggil fungsi IXAudio2::CommitChanges untuk menjalankan perubahan yang ditangguhkan.
Topik terkait