Bagikan melalui


Metode IXAudio2SourceVoice::SubmitSourceBuffer (xaudio2.h)

Menambahkan buffer audio baru ke antrean suara.

Sintaks

HRESULT SubmitSourceBuffer(
  [in] const XAUDIO2_BUFFER     *pBuffer,
  [in] const XAUDIO2_BUFFER_WMA *pBufferWMA
);

Parameter

[in] pBuffer

Arahkan ke struktur XAUDIO2_BUFFER untuk mengantre.

[in] pBufferWMA

Penunjuk ke struktur XAUDIO2_BUFFER_WMA tambahan yang digunakan saat mengirimkan data WMA.

Nilai kembali

Mengembalikan S_OK jika berhasil, kode kesalahan sebaliknya. Lihat Kode Kesalahan XAudio2 untuk deskripsi kode kesalahan spesifik XAudio2.

Keterangan

Suara memproses dan memutar kembali buffer dalam antreannya dalam urutan pengirimannya.

Struktur XAUDIO2_BUFFER mencakup detail tentang lokasi dan ukuran buffer audio, bagian dari buffer yang benar-benar harus diputar, wilayah perulangan (jika ada) dan jumlah perulangan, penunjuk konteks yang akan digunakan dalam panggilan balik apa pun yang berkaitan dengan buffer ini, dan bendera XAUDIO2_END_OF_STREAM opsional yang menunjukkan bahwa itu adalah buffer terakhir dari suara yang berdekatan.

Jika suara dimulai dan tidak memiliki buffer yang diantrekan, buffer baru akan segera mulai diputar. Jika suara dihentikan, buffer ditambahkan ke antrean suara dan akan diputar saat suara dimulai.

Jika hanya bagian dari buffer yang diberikan yang harus dimainkan, bidang PlayBegin dan PlayLength di XAUDIO2_BUFFER dapat digunakan untuk menentukan wilayah yang akan dimainkan. Nilai PlayLength 0 berarti memainkan seluruh buffer (dan dalam hal ini PlayBegin juga harus 0).

Jika semua atau bagian dari buffer harus dimainkan dalam perulangan berkelanjutan, bidang LoopBegin, LoopLength , dan LoopCount di XAUDIO2_BUFFER dapat digunakan untuk menentukan karakteristik wilayah perulangan. Nilai LoopBegin dari XAUDIO2_NO_LOOP_REGION berarti bahwa tidak ada perulangan yang harus dilakukan, dan dalam hal ini LoopLength dan LoopCount harus diberikan sebagai 0. Jika wilayah perulangan ditentukan, wilayah tersebut harus tidak kosong (LoopLength> 0), dan jumlah perulangan harus antara 1 dan XAUDIO2_MAX_LOOP_COUNT inklusif (atau XAUDIO2_LOOP_INFINITE untuk menentukan perulangan tanpa akhir yang hanya akan berakhir ketika IXAudio2SourceVoice::ExitLoop dipanggil). Jumlah perulangan N berarti melewati waktu N mundur, yaitu untuk memutar wilayah perulangan N+1 kali.

Jika wilayah putar eksplisit ditentukan, wilayah tersebut harus dimulai dan diakhiri dalam buffer audio yang diberikan (atau, dalam kasus terkompresi, dalam set sampel yang akan didekodekan buffer). Selain itu, wilayah perulangan tidak dapat berakhir melewati akhir wilayah putar.

Xbox 360
Untuk format audio tertentu, mungkin ada batasan tambahan pada titik akhir yang valid dari setiap wilayah pemutaran atau perulangan; misalnya untuk buffer XMA, wilayah hanya dapat dimulai atau berakhir pada batas 128 sampel dalam audio yang didekodekan.
 

Penunjuk pBuffer dapat digunakan kembali atau dibebaskan segera setelah memanggil metode ini, tetapi data audio aktual yang direferensikan oleh pBuffer harus tetap valid sampai buffer telah sepenuhnya digunakan oleh XAudio2 (yang ditunjukkan oleh panggilan balik IXAudio2VoiceCallback::OnBufferEnd ).

Hingga XAUDIO2_MAX_QUEUED_BUFFERS buffer dapat diantrekan pada suara kapan saja.

SubmitSourceBuffer segera berlaku ketika dipanggil dari panggilan balik XAudio2 dengan OperationSet XAUDIO2_COMMIT_NOW.

Xbox 360
Metode ini dapat dipanggil dari utas sistem Xbox (sebagian besar metode XAudio2 lainnya tidak dapat). Namun, maksimal dua buffer sumber dapat dikirimkan dari utas sistem pada satu waktu.
 

Persyaratan Platform

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

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header xaudio2.h

Lihat juga

Cara: Membangun Grafik Pemrosesan Audio Dasar

Cara: Stream Suara dari Disk

IXAudio2SourceVoice