Compartir a través de


Formato de archivo para intercambio de recursos (RIFF)

En esta introducción se describe el formato de archivo de intercambio de recursos (RIFF), que se usa en archivos .wav. RIFF es el formato típico desde el que se cargarán los datos de audio para XAudio2.

RIFF

Un archivo RIFF se compone de varias secciones discretas de datos denominados fragmentos.

Identificadores FOURCC

El tipo de datos de un fragmento se indica mediante un identificador de código de cuatro caracteres (FOURCC). Un FOURCC es un entero de 32 bits sin signo creado mediante la concatenación de cuatro caracteres ASCII que se usan para identificar tipos de fragmentos en un archivo RIFF. Por ejemplo, el FOURCC "abcd" se representa en un sistema little-endian como 0x64636261. Los FOURCC pueden contener caracteres de espacio, por lo que "abc" es un FOURCC válido. Los archivos de audio usan códigos FOURCC para identificar fragmentos de formato de audio, fragmentos de datos de audio y otros fragmentos específicos del formato de audio.

En la tabla siguiente se muestran los identificadores FOURCC que se pueden esperar en los formatos de audio admitidos por XAudio2.

Formato Identificadores FOURCC Información adicional
PCM "RIFF", "fmt", "data"  
ADPCM "RIFF", "fmt", "data", "smpl", "wsmpl" Consulte Información general de ADPCM para obtener una descripción de los identificadores de FOURCC específicos de ADPCM.

 

Los identificadores FOURCC "RIFF", "fmt" y "data" son comunes a todos los formatos admitidos. En la tabla siguiente se describen los identificadores FOURCC que se encuentran en todos los formatos admitidos.

Identificador FOURCC Descripción
"RIFF" Fragmento RIFF estándar que contiene un tipo de archivo con el valor de "WAVE" o "XWMA" en los cuatro primeros bytes de su sección de datos y los demás fragmentos del archivo en el resto de su sección de datos.
"fmt" Contiene el encabezado de formato del archivo de audio. Los datos de este fragmento corresponden a una de las siguientes estructuras: WAVEFORMATEX, WAVEFORMATEXTENSIBLE ADPCMWAVEFORMAT.
"data" Contiene datos de audio para el archivo de audio. En XAudio2, el contenido del fragmento de datos se leerá en un búfer y se pasará a una voz de origen como miembro pAudioData de una estructura XAUDIO2_BUFFER .

 

Chunks

Un archivo RIFF consta de un fragmento RIFF que contiene cero o más fragmentos.

  • El fragmento RIFF tiene la siguiente forma:

    "RIFF", fileSize, fileType, data

    Donde "RIFF" es el literal de código FOURCC "RIFF", fileSize es un valor de 4 bytes que proporciona el tamaño de los datos en el archivo y fileType es un FOURCC que identifica el tipo de archivo específico. El valor de fileSize incluye el tamaño de fileType FOURCC más el tamaño de los datos siguientes, pero no incluye el tamaño de "RIFF" FOURCC o el tamaño de fileSize. Los datos constan de fragmentos en cualquier orden.

  • Otros fragmentos tienen la siguiente forma:

    chunkID, chunkSize, data
    

    Donde chunkID es un FOURCC que identifica los datos contenidos en el fragmento, chunkSize es un valor de 4 bytes que proporciona el tamaño de la sección de datos del fragmento y los datos son cero o más bytes de datos. Los datos siempre se rellenan en el límite de WORD más cercano. chunkSize proporciona el tamaño de los datos válidos en el fragmento. No incluye el relleno, el tamaño de chunkID o el tamaño de chunkSize.

Introducción

Cómo: reproducir un sonido con XAudio2

Referencia de programación de XAudio2