Tanto xWMA como XMA2 tienen su origen en los códecs desarrollados para Windows Media Audio (WMA) y ambos se han desarrollado específicamente para juegos de XBOX. El subconjunto de códecs y parámetros disponibles que usa XMA2 es más pequeño que el subconjunto que usa xWMA. Aunque xWMA y XMA2 se desarrollaron para XBOX, no son intercambiables: los encabezados de cada formato de archivo difieren y los formatos son incompatibles con las versiones para PC de Windows. Los códecs que se usan para XMA2 y xWMA también son ligeramente diferentes, por lo que cada uno tendrá sus propios artefactos derivados del sistema de compresión que se usa.
Codificación de xWMA
Para codificar datos de audio a xWMA, use la herramienta de línea de comandos xWMAEncode o una herramienta personalizada que se base en XWMAEncoder.lib.xWMAEncode
Para codificar archivos de audio como xWMA para usarlos con XAudio2, use el codificador de línea de comandos de xWMA.XWMAEncoder.lib
XWMAEncoder.lib es una biblioteca de vinculación estática que está disponible como alternativa a la herramienta de línea de comandos codificador de línea de comandos de xWMA. Sus herramientas personalizadas se basan en esta biblioteca para realizar la codificación xWMA mediante la función XWMAEncoder. Para obtener detalles y ejemplos de uso de esta función, consulte la documentación de XBOX 360.Descodificación de xWMA
La descodificación por software de xWMA es compatible en Windows y en XBOX One en XAudio2, así como a través de la API XWMADecode.Bucles en xWMA
xWMA no admite regiones de bucle ni bucles de paquetes arbitrarios dentro de un archivo xWMA. Solo se puede reproducir en bucle un archivo xWMA completo. En XAudio2, xWMA tiene restricciones relacionadas con los bucles para los valores del XAUDIO2_BUFFER que se pasa a IXAudio2SourceVoice::SubmitSourceBuffer. Si todos los datos de audio del archivo xWMA se envían como un único búfer y el usuario quiere reproducirlos en bucle, deben cumplirse las siguientes restricciones.- XAUDIO2_BUFFER.LoopBegin siempre debe ser cero.
- XAUDIO2_BUFFER.LoopLength debe ser cero o el tamaño, en muestras, de los datos xWMA del archivo completo.
- XAUDIO2_BUFFER.LoopCount puede tener cualquier valor.
- XAUDIO2_BUFFER.Flags debe establecerse en XAUDIO2_END_OF_STREAM.
Estructura de un archivo xWMA
Un archivo xWMA es un archivo RIFF estándar con los siguientes tipos de fragmentos (chunks). | FCC del fragmento| Descripción| | --- | --- | --- | --- | | RIFF| El fragmento RIFF estándar contiene lo siguiente:1. En los primeros cuatro bytes de su sección de datos, contiene un tipo de archivo con el valor
XWMA. 2. En el resto de la sección de datos, contiene los demás fragmentos del archivo. | | fmt| Este fragmento contiene el encabezado de formato del archivo xWMA. Los datos de este fragmento corresponden a una estructura WAVEFORMATEX para datos xWMA con uno o dos canales, o a una estructura WAVEFORMATEXTENSIBLE para datos xWMA con tres o más canales. | | data| Este fragmento contiene los datos de audio xWMA codificados. Cuando se usa xWMA en XAudio2, el contenido del fragmento de datos se leerá en un búfer y se pasará a una voz de origen como el miembro pAudioData de una estructura XAUDIO2_BUFFER. No es necesario intercambiar los bytes del contenido del fragmento de datos. | | dpds| Este fragmento contiene la matriz de tamaños acumulados de datos de paquetes descodificados, donde cada elemento es el número de bytes acumulados después de que el paquete xWMA correspondiente se descodifica en orden. El tamaño de este fragmento, medido en UINT32, y el contenido de su sección de datos se usan en XAudio2 para rellenar una estructura XAUDIO2_BUFFER_WMA. |
