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 semuanya sudah 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 akhir untuk semua audio yang melewati grafik suara.

    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 Release, sehingga Anda akan melihat kesalahan saat build jika Anda mencoba menggunakan penunjuk cerdas untuk antarmuka tersebut. Dalam cuplikan kode ini kita menggunakan pointer pintar jika memungkinkan, dan pointer mentah jika perlu.