Bagikan melalui


Cara: Memutar Suara dengan XAudio2

Topik ini menjelaskan langkah-langkah minimum yang diperlukan untuk memutar data audio yang dimuat sebelumnya di XAudio2. Setelah Anda menginisialisasi XAudio2 (lihat Cara: Menginisialisasi XAudio2) dan memuat data audio (lihat Cara : Memuat File Data Audio di XAudio2), Anda dapat memutar suara dengan membuat suara sumber dan meneruskan data audio ke dalamnya.

Untuk memutar suara

  1. Inisialisasi mesin XAudio2 dengan mengikuti langkah-langkah yang dijelaskan dalam Cara: Menginisialisasi XAudio2.

  2. Isi WAVEFORMATEX dan struktur XAUDIO2_BUFFER dengan mengikuti langkah-langkah yang dijelaskan dalam Cara: Memuat File Data Audio di XAudio2.

    Catatan

    Bergantung pada format data audio, Anda mungkin perlu menggunakan struktur data yang lebih besar yang berisi struktur WAVEFORMATEX sebagai pengganti WAVEFORMATEX. Lihat halaman referensi WAVEFORMATEX untuk informasi selengkapnya.

     

  3. Buat suara sumber dengan memanggil metode IXAudio2::CreateSourceVoice pada instans mesin XAudio2. Format suara ditentukan oleh nilai yang ditetapkan dalam struktur WAVEFORMATEX .

    IXAudio2SourceVoice* pSourceVoice;
    if( FAILED(hr = pXAudio2->CreateSourceVoice( &pSourceVoice, (WAVEFORMATEX*)&wfx ) ) ) return hr;
    
  4. Kirim XAUDIO2_BUFFER ke suara sumber menggunakan fungsi SubmitSourceBuffer.

    if( FAILED(hr = pSourceVoice->SubmitSourceBuffer( &buffer ) ) )
        return hr;
    

    Catatan

    Data sampel audio tempat titik buffer masih 'dimiliki' oleh aplikasi dan harus tetap dialokasikan dan dapat diakses hingga suara berhenti diputar.

     

  5. Gunakan fungsi Mulai untuk memulai suara sumber. Karena semua suara XAudio2 mengirim outputnya ke suara master secara default, audio dari suara sumber secara otomatis masuk ke perangkat audio yang dipilih saat inisialisasi. Dalam grafik audio yang lebih rumit, suara sumber harus menentukan suara tempat outputnya harus dikirim.

    if ( FAILED(hr = pSourceVoice->Start( 0 ) ) )
        return hr;
    

Catatan untuk aplikasi Bursa Windows

Kami menyarankan agar Anda menggunakan penunjuk cerdas untuk mengelola masa pakai objek XAUDIO2 dengan cara yang aman kecuali. Untuk aplikasi Windows Store, Anda dapat menggunakan templat penunjuk cerdas ComPtr dari Windows Runtime C++ Template Library (WRL).

Microsoft::WRL::ComPtr<IXAudio2SourceVoice> SourceVoice;
HRESULT hr;
if( FAILED(hr = pXAudio2->CreateSourceVoice( &SourceVoice, (WAVEFORMATEX*)&wfx ) ) )
    throw Platform::Exception::CreateException(hr); 

if( FAILED(hr = SourceVoice->SubmitSourceBuffer( &buffer ) ) )
    throw Platform::Exception::CreateException(hr); 

if ( FAILED(hr = SourceVoice->Start( 0 ) ) )
    throw Platform::Exception::CreateException(hr);

Catatan

Pastikan bahwa semua penunjuk cerdas ke objek XAUDIO2 sepenuhnya dirilis sebelum Anda merilis objek IXAudio2 .

 

Memulai XAudio2

Cara: Menginisialisasi XAudio2

Cara: Memuat File Data Audio di XAudio2