Cara: Menginisialisasi XAudio2
Anda menginisialisasi XAudio2 untuk pemutaran audio dengan membuat instans mesin XAudio2, lalu membuat suara mastering.
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;
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));
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.