Bagikan melalui


Cara: Menginisialisasi XAudio2

Anda menginisialisasi XAudio2 untuk pemutaran audio dengan membuat instans mesin XAudio2, lalu membuat suara mastering.

  1. Pertama, Anda harus menginisialisasi COM. Jika Anda menggunakan C++/WinRT, maka C++/WinRT akan diurus. Jika Anda tidak yakin bahwa lingkungan Anda telah menginisialisasi COM, maka Anda dapat memanggil CoInitializeEx selama Anda memeriksa nilai pengembalian.

    HRESULT hr = ::CoInitializeEx(nullptr, COINIT_MULTITHREADED);
    if (FAILED(hr)) return hr;
    
  2. Untuk membuat instans mesin XAudio2, panggil fungsi XAudio2Create. Itu akan memberi Anda penunjuk ke antarmuka IXAudio2 , dan ada baiknya untuk menyimpannya di anggota data kelas. Dalam cuplikan ini kita menggunakan pointer pintar C++/WinRT, tetapi Anda dapat menggunakan pointer mentah jika perlu.

    winrt::com_ptr<IXAudio2> m_xAudio2{};
    ...
    winrt::check_hresult(::XAudio2Create(m_xAudio2.put(), 0, XAUDIO2_DEFAULT_PROCESSOR));
    
  3. Selanjutnya, untuk membuat apa yang dikenal sebagai suara mastering, panggil metode IXAudio2::CreateMasteringVoice. Itu akan memberi Anda penunjuk ke antarmuka IXAudio2MasteringVoice. Suara master merangkum perangkat audio. Ini adalah tujuan utama untuk semua audio yang melewati grafik audio.

    IXAudio2MasteringVoice* m_pXAudio2MasteringVoice{};
    ...
    winrt::check_hresult(xAudio2->CreateMasteringVoice(&m_pXAudio2MasteringVoice));
    

Pointer cerdas

Untuk keamanan dan kenyamanan, Anda dapat menggunakan pointer pintar untuk antarmuka IXAudio2 . Tetapi antarmuka suara (seperti IXAudio2MasteringVoice) tidak memiliki metode Rilis , sehingga Anda akan melihat kesalahan build jika Anda mencoba menggunakan penunjuk cerdas untuk mereka. Dalam cuplikan kode ini kita menggunakan pointer pintar jika memungkinkan, dan pointer mentah jika perlu.