struktur XAUDIO2_BUFFER (xaudio2.h)
Mewakili buffer data audio, digunakan dengan IXAudio2SourceVoice::SubmitSourceBuffer.
Sintaks
typedef struct XAUDIO2_BUFFER {
UINT32 Flags;
UINT32 AudioBytes;
const BYTE *pAudioData;
UINT32 PlayBegin;
UINT32 PlayLength;
UINT32 LoopBegin;
UINT32 LoopLength;
UINT32 LoopCount;
void *pContext;
} XAUDIO2_BUFFER;
Anggota
Flags
Bendera yang menyediakan informasi tambahan tentang buffer audio. Mungkin 0, atau nilai berikut.
Nilai | Deskripsi |
---|---|
XAUDIO2_END_OF_STREAM | Menunjukkan bahwa tidak boleh ada buffer dalam antrean setelah buffer ini. Satu-satunya efek dari bendera ini adalah menekan peringatan output debug yang disebabkan oleh kelaparan antrean buffer. |
AudioBytes
Ukuran data audio, dalam byte. Tidak boleh lebih besar dari XAUDIO2_MAX_BUFFER_BYTES (didefinisikan dalam xaudio2.h) untuk data PCM dan tidak lebih besar dari XMA_READBUFFER_MAX_BYTES (ditentukan dalam xma2defs.h) untuk data XMA.
pAudioData
Arahkan ke data audio.
Xbox 360 |
---|
Memori yang dialokasikan untuk buffer yang berisi data XMA harus memiliki perataan blok 2048. Ini dicapai menggunakan XPhysicalAlloc dengan argumen ulAlignment diatur ke 2048. |
PlayBegin
Sampel pertama dalam buffer yang harus dimainkan.
Untuk buffer XMA, nilai ini harus berupa kelipatan 128 sampel.
PlayLength
Panjang wilayah yang akan dimainkan, dalam sampel. Nilai nol berarti memainkan seluruh buffer, dan, dalam hal ini, PlayBegin juga harus nol. Untuk data ADPCM, nilai ini harus berupa kelipatan wSamplesPerBlock dalam struktur ADPCMWAVEFORMAT yang berisi struktur XAUDIO2_BUFFER ini.
LoopBegin
Sampel pertama wilayah yang akan diulang. Nilai LoopBegin harus kurang dari PlayBegin + PlayLength. LoopBegin bisa kurang dari PlayBegin. LoopBegin harus 0 jika LoopCount adalah 0.
LoopLength
Panjang wilayah perulangan, dalam sampel. Nilai LoopBegin+LoopLength harus lebih besar dari PlayBegin dan kurang dari PlayBegin + PlayLength. LoopLength harus nol jika LoopCount adalah 0. Jika LoopCount bukan 0, panjang perulangan nol menunjukkan seluruh sampel harus diulang. Untuk data ADPCM, nilai ini harus berupa kelipatan wSamplesPerBlock dalam struktur ADPCMWAVEFORMAT yang berisi struktur XAUDIO2_BUFFER ini.
LoopCount
Berapa kali untuk mengulangi wilayah perulangan. Nilai ini bisa antara 0 dan XAUDIO2_MAX_LOOP_COUNT. Jika LoopCount adalah nol tidak ada perulangan yang dilakukan dan LoopBegin dan LoopLength harus 0. Untuk mengulang selamanya, atur LoopCount ke XAUDIO2_LOOP_INFINITE.
pContext
Nilai konteks yang akan diteruskan kembali dalam panggilan balik ke klien. Ini mungkin NULL.
Keterangan
Data audio XAudio2 diselingi, data dari setiap saluran berdampingan untuk nomor sampel tertentu. Misalnya jika ada gelombang saluran 4 yang diputar ke suara sumber XAudio2, data audio akan menjadi sampel saluran 0, sampel saluran 1, sampel saluran 2, sampel saluran 3, dan kemudian sampel saluran berikutnya 0, 1, 2, 3, dll.
Anggota AudioByte dan pAudioDataXAUDIO2_BUFFER sesuai dengan ukuran dalam byte dan konten potongan RIFF 'data' dari file yang sedang diputar. Konten gugus mungkin perlu ditukar byte saat memuat file di Xbox 360.
Memori yang dialokasikan untuk menahan struktur XAUDIO2_BUFFER atau XAUDIO2_BUFFER_WMA dapat dikosongkan segera setelah panggilan IXAudio2SourceVoice::SubmitSourceBuffer diteruskan ke pengembalian. Data yang ditunjukkan struktur ke (pAudioData dan pDecodedPacketCumulativeBytes, masing-masing) tidak dapat dikosongkan sampai buffer selesai (seperti yang disinyalir oleh panggilan balik IXAudio2VoiceCallback::OnBufferEnd ) atau suara dihentikan atau dihancurkan.
Persyaratan Platform
Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); DirectX SDK (XAudio 2.7)Persyaratan
Header | xaudio2.h |
Lihat juga
Cara: Membangun Grafik Pemrosesan Audio Dasar