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.
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.- XAUDIO2_BUFFER.LoopBegin deve ser sempre zero.
- XAUDIO2_BUFFER.LoopLength deve ser zero ou o tamanho, em amostras, de todos os dados xWMA do arquivo.
- XAUDIO2_BUFFER.LoopCount pode ter qualquer valor.
- XAUDIO2_BUFFER.Flags deve ser definido como XAUDIO2_END_OF_STREAM.
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. |
