RIFF (Resource Interchange File Format)

Cette vue d’ensemble décrit le format RIFF (Resource Interchange File Format), qui est utilisé dans les fichiers. wav. RIFF est le format standard à partir duquel les données audio pour XAudio2 sont chargées.

RIFF

Un fichier RIFF est constitué de plusieurs sections discrètes de données appelées segments.

Identificateurs FOURCC

Le type de données d’un segment est indiqué par un identificateur de code à quatre caractères (FOURCC). Un FOURCC est un entier non signé 32 bits créé par la concaténation de quatre caractères ASCII utilisés pour identifier les types de blocs dans un fichier RIFF. Par exemple, le FOURCC « ABCD » est représenté sur un système Little endian en tant que 0x64636261. FOURCCs peut contenir des espaces, « ABC » est donc un FOURCC valide. Les fichiers audio utilisent des Codes FOURCC pour identifier les blocs de format audio, les segments de données audio et tout autre segment spécifique au format audio.

Le tableau suivant présente les identificateurs FOURCC qui peuvent être attendus dans les formats audio pris en charge par XAudio2.

Format Identificateurs FOURCC Informations supplémentaires
PCM « RIFF », « fmt », « données »
ADPCM « RIFF », « fmt », « Data », « SMPL », « wsmpl » Pour obtenir une description des identificateurs FOURCC spécifiques à ADPCM, voir vue d’ensemble d’ADPCM .

Les identificateurs FOURCC « RIFF », « fmt » et « Data » sont communs à tous les formats pris en charge. Le tableau suivant décrit les identificateurs FOURCC qui se trouvent dans tous les formats pris en charge.

Identificateur FOURCC Description
"RIFF" Bloc RIFF standard contenant un type de fichier avec la valeur « WAVE » ou « XWMA » dans les quatre premiers octets de sa section de données et les autres segments du fichier dans le reste de sa section de données.
"fmt" Contient l’en-tête de format du fichier audio. Les données de ce segment correspondent à l’une des structures suivantes : WAVEFORMATEX, WAVEFORMATEXTENSIBLE ADPCMWAVEFORMAT.
"data" Contient des données audio pour le fichier audio. Dans XAudio2, le contenu du segment de données est lu dans une mémoire tampon et transmis à une voix source en tant que membre pAudioData d’une structure de _ mémoire tampon XAudio2 .

Chunks

Un fichier RIFF se compose d’un bloc RIFF contenant zéro ou plusieurs autres segments.

  • Le bloc RIFF se présente sous la forme suivante :

    « RIFF », fileSize, fileType, données

    Où « RIFF » est le littéral de code FOURCC « RIFF », FileSize est une valeur de 4 octets qui donne la taille des données dans le fichier et FILETYPE est un FourCC qui identifie le type de fichier spécifique. La valeur de FileSize inclut la taille du FourCC de filetype plus la taille des données qui suivent, mais n’inclut pas la taille du FourCC « riff » ou la taille du FileSize. Les données se composent de segments dans n’importe quel ordre.

  • Les autres blocs se présentent sous la forme suivante :

    chunkID, chunkSize, data
    

    chunkID est un FourCC qui identifie les données contenues dans le bloc, chunkSize est une valeur de 4 octets qui donne la taille de la section de données du segment, et les données contiennent zéro, un ou plusieurs octets de données. Les données sont toujours complétées à la limite de mot la plus proche. chunkSize indique la taille des données valides dans le bloc. Elle n’inclut pas le remplissage, la taille de chunkID ou la taille de chunkSize.

Prise en main

Procédure : lire un son avec XAudio2

Référence de programmation XAudio2