Introdução ao XAudio2
XAudio2 é uma API de áudio de baixo nível. Ele fornece uma base de processamento e combinação de sinais para jogos semelhantes aos seus antecessores, DirectSound e XAudio.
XAudio2 é a substituição tão esperada para DirectSound. Ele aborda vários problemas pendentes e solicitações de recursos.
Recursos do XAudio2
Veja a seguir uma lista de recursos XAudio2 e novas funcionalidades que permitem aos desenvolvedores melhorar o desempenho em seus jogos.
Efeitos de DSP e filtragem por voz
Os efeitos do DSP (Processamento de Sinal Digital) são os sombreadores de pixel do áudio. Eles lidam com tudo, desde transformar um som — transformar um grito de porco em um som monstruoso baixo e assustador — até colocar sons no ambiente do jogo usando reverb e oclusão ou filtragem de obstrução. O XAudio2 fornece uma estrutura DSP flexível e poderosa. Ele também fornece um filtro interno em cada voz, para efeitos eficientes de filtragem baixa/alta/passagem de banda.
Consulte Efeitos de áudio XAudio2 e IXAudio2Voice::SetFilterParameters para obter mais informações sobre efeitos DSP e filtragem por voz.
Submixagem
A submixagem combina vários sons em um único fluxo de áudio, por exemplo, um som do mecanismo composto por partes compostas, que são reproduzidas simultaneamente. Além disso, você pode usar a submixagem para processar e combinar partes semelhantes de um jogo. Por exemplo, você pode combinar todos os efeitos sonoros do jogo para permitir que uma configuração de volume do usuário seja aplicada enquanto uma configuração separada controla o volume de música. Combinado com o DSP, a submixagem fornece o tipo de roteamento e processamento de dados necessários para os jogos de hoje. O XAudio2 permite níveis arbitrários de submixagem, permitindo a criação de sons complexos e combinações de jogos.
Consulte XAudio2 Audio Graph e XAudio2 Voices para obter mais informações sobre submixagem.
Suporte a áudio compactado
Uma das principais solicitações de recursos para DirectSound foi para suporte de áudio compactado. O XAudio2 dá suporte a formatos compactados — ADPCM — nativamente com descompactação em tempo de execução.
Suporte avançado a som multicanal e surround
O suporte a som multicanal, 3D e surround é expandido. O som 3D e surround agora são muito mais flexíveis e transparentes. O XAudio2 remove o limite de 6 canais em sons multicanal e dá suporte a áudio multicanal em qualquer cartão de áudio com capacidade multicanal. A cartão não precisa ser acelerada por hardware.
Processamento de múltiplas taxas
Para ajudar a minimizar o uso da CPU, o XAudio2 fornece a tecnologia para criar vários grafos de processamento de áudio de baixa taxa. Isso pode reduzir significativamente o uso da CPU, permitindo que um jogo processe áudio à taxa do material de origem se a taxa for menor que 48 kHz.
Modelo de API sem bloqueio
Com poucas exceções, uma chamada de método XAudio2 não bloqueará o mecanismo de processamento de áudio. Isso significa que um cliente pode fazer com segurança um conjunto de chamadas de método a qualquer momento sem bloquear chamadas de longa execução causando atrasos. As exceções são o método IXAudio2Voice::D estroyVoice (que pode bloquear o mecanismo até que a voz que está sendo destruída termine o processamento) e os métodos que encerram o thread de áudio: IXAudio2::StopEngine e IXAudio2::Release. Observe que, embora as chamadas de método XAudio2 não bloqueiem o mecanismo de processamento de áudio, os métodos XAudio2 contêm seções críticas e podem ser bloqueados em algumas circunstâncias.
Quando usar o XAudio2
O XAudio2 destina-se principalmente ao desenvolvimento de mecanismos de áudio de alto desempenho para jogos. Para os desenvolvedores de jogos que desejam adicionar efeitos sonoros e música de fundo aos jogos modernos, o XAudio2 oferece um mecanismo de gráfico e mixagem de áudio com baixa latência e suporte para buffers dinâmicos, reprodução precisa de amostra síncrona e conversão implícita de taxa de origem. Em comparação com WASAPI, o XAudio2 requer apenas uma quantidade mínima de código, mesmo para soluções de áudio complexas. Em comparação com o mecanismo do Media Foundation, o XAudio2 é uma API C++ de baixo nível e baixa latência projetada para uso em jogos.
Para aplicativos que simplesmente precisam de reprodução de música regular, o mecanismo do Media Foundation pode ser uma melhor correspondência com os requisitos do aplicativo.
Tópicos relacionados