Pular para o conteúdo principal
O xWMA é um subconjunto do formato de compactação WMA (Windows Media Audio) Professional. A decodificação de xWMA é compatível com o XAudio2 por software. O xWMA usa o formato de fluxo de bits do WMA em um wrapper leve e é útil para diálogos e músicas em que um pequeno uso da CPU pode ser aceito como custo para alcançar uma compactação maior. Uma configuração de qualidade permite que o usuário varie a taxa de bits do som compactado.
Tanto o xWMA quanto o XMA2 têm origem nos codecs desenvolvidos para o WMA (Windows Media Audio), e ambos foram desenvolvidos especificamente para jogos XBOX. O subconjunto dos codecs e parâmetros disponíveis usado pelo XMA2 é menor que o subconjunto usado pelo xWMA. Embora tanto o xWMA quanto o XMA2 tenham sido desenvolvidos para XBOX, eles não são intercambiáveis: os cabeçalhos de cada formato de arquivo são diferentes, e os formatos são incompatíveis com as versões do Windows para PC. Os codecs usados para XMA2 e xWMA também são ligeiramente diferentes, portanto, cada um terá seus próprios artefatos do sistema de compactação usado.
Neste tópico:

Codificação xWMA

Para codificar dados de áudio para xWMA, use a ferramenta de linha de comando xWMAEncode ou uma ferramenta personalizada que dependa de XWMAEncoder.lib.

xWMAEncode

Para codificar arquivos de áudio como xWMA para uso com o XAudio2, use o codificador de linha de comando xWMA.

XWMAEncoder.lib

XWMAEncoder.lib é uma biblioteca vinculada estaticamente que está disponível como alternativa à ferramenta de linha de comando codificador de linha de comando xWMA. Suas ferramentas personalizadas dependem dessa biblioteca para realizar a codificação xWMA usando a função XWMAEncoder. Para obter detalhes e exemplos de uso dessa função, consulte a documentação do XBOX 360.

Decodificação xWMA

A decodificação por software de xWMA é compatível com o Windows e com o XBOX One no XAudio2, bem como por meio da API xWMADecode.

Loop de xWMA

O xWMA não oferece suporte a regiões de loop nem ao loop de pacotes arbitrários dentro de um arquivo xWMA. Somente um arquivo xWMA inteiro pode ser reproduzido em loop. No XAudio2, o xWMA tem restrições relacionadas a loop para os valores no XAUDIO2_BUFFER passado para IXAudio2SourceVoice::SubmitSourceBuffer. Se todos os dados de áudio do arquivo xWMA forem enviados como um único buffer e o usuário quiser reproduzi-lo em loop, as restrições a seguir deverão ser atendidas.
  1. XAUDIO2_BUFFER.LoopBegin deve ser sempre zero.
  2. XAUDIO2_BUFFER.LoopLength deve ser zero ou o tamanho, em amostras, de todos os dados xWMA do arquivo.
  3. XAUDIO2_BUFFER.LoopCount pode ter qualquer valor.
  4. XAUDIO2_BUFFER.Flags deve ser definido como XAUDIO2_END_OF_STREAM.
Se os dados de áudio xWMA forem enviados como mais de um buffer, o áudio só poderá ser reproduzido em loop manualmente, enviando novamente a série de buffers. Como um período de silêncio pode ser introduzido enquanto o áudio xWMA é reproduzido em loop, o loop de áudio xWMA geralmente deve ser usado apenas com sons que tenham fade-ins e fade-outs suaves. Exemplos incluem os sons de ondas do mar e certos tipos de ruído ambiente sutil.

Estrutura de um arquivo xWMA

Um arquivo xWMA é um arquivo RIFF padrão com os seguintes tipos de blocos. | FCC do bloco| Descrição| | --- | --- | --- | --- | | RIFF| O bloco RIFF padrão contém o seguinte:
1. Nos primeiros quatro bytes de sua seção de dados, contém um tipo de arquivo com o valor XWMA.
2. No restante da seção de dados, contém os outros blocos do arquivo. | | fmt| Esse bloco contém o cabeçalho de formato do arquivo xWMA. Os dados desse bloco correspondem a uma estrutura WAVEFORMATEX para dados xWMA com um ou dois canais, ou a uma estrutura WAVEFORMATEXTENSIBLE para dados xWMA com três ou mais canais. | | data| Esse bloco contém os dados de áudio xWMA codificados. Quando o xWMA é usado no XAudio2, o conteúdo do bloco data será lido em um buffer e passado para uma voz de origem como o membro pAudioData de uma estrutura XAUDIO2_BUFFER. O conteúdo do bloco data não precisa ter os bytes invertidos. | | dpds| Esse bloco contém a matriz de tamanho cumulativo de dados de pacotes decodificados, em que cada elemento é o número de bytes acumulados após o pacote xWMA correspondente ser decodificado em ordem. O tamanho desse bloco, medido em UINT32, e o conteúdo de sua seção de dados são usados no XAudio2 para preencher uma estrutura XAUDIO2_BUFFER_WMA. |

Confira também

Codificador de linha de comando xWMA
Última modificação em 6 de outubro de 2026