Como: Inicializar o XAudio2
O XAudio2 é inicializado para reprodução de áudio criando uma instância do mecanismo XAudio2 e criando uma voz de masterização.
Para inicializar o XAudio2
Verifique se você inicializou o COM. Para um aplicativo da Windows Store, isso é feito como parte da inicialização do Windows Runtime. Caso contrário, use CoInitializeEx.
HRESULT hr; hr = CoInitializeEx( nullptr, COINIT_MULTITHREADED ); if (FAILED(hr)) return hr;
Use a função XAudio2Create para criar uma instância do mecanismo XAudio2.
IXAudio2* pXAudio2 = nullptr; if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) ) return hr;
Use o método CreateMasteringVoice para criar uma voz de masterização.
As vozes de masterização encapsulam um dispositivo de áudio. É o destino final para todo o áudio que passa por um grafo de áudio.
IXAudio2MasteringVoice* pMasterVoice = nullptr; if ( FAILED(hr = pXAudio2->CreateMasteringVoice( &pMasterVoice ) ) ) return hr;
Anotações para aplicativos da Windows Store
Recomendamos que você use um ponteiro inteligente para gerenciar o tempo de vida dos objetos XAUDIO2 de maneira segura de exceção. Para aplicativos da Windows Store, você pode usar o modelo de ponteiro inteligente ComPtr da WRL (Biblioteca de Modelos do Windows Runtime C++).
Microsoft::WRL::ComPtr<IXAudio2> XAudio2;
HRESULT hr;
if ( FAILED(hr = XAudio2Create( &XAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
throw Platform::Exception::CreateException(hr);
IXAudio2MasteringVoice* pMasterVoice = nullptr;
if ( FAILED(hr = pXAudio2->CreateMasteringVoice( &pMasterVoice ) ) )
return hr;
Observação
Certifique-se de que todos os objetos filho XAUDIO2 sejam totalmente liberados antes de liberar o objeto IXAudio2 .
Tópicos relacionados
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de