Partager via


Services de format de fichier d’échange de ressources

Le format préféré pour les fichiers multimédias est le format de fichier d’échange de ressources (RIFF). Les fonctions d’E/S de fichier RIFF fonctionnent avec les services d’E/S de fichiers mis en mémoire tampon et sans débogage de base. Vous pouvez ouvrir, lire et écrire des fichiers RIFF de la même manière que d’autres types de fichiers. Pour plus d’informations sur RIFF, consultez Fonctions et macros AVIFile.

Les fichiers RIFF utilisent des codes à quatre caractères pour identifier les éléments de fichier. Ces codes sont des quantités 32 bits représentant une séquence de un à quatre caractères alphanumériques ASCII, complétés à droite avec des caractères d’espace. Le type de données des codes à quatre caractères est FOURCC. Utilisez la macro mmioFOURCC pour convertir quatre caractères en un code de quatre caractères. Pour convertir une chaîne terminée par null en code de quatre caractères, utilisez la fonction mmioStringToFOURCC .

Le bloc de construction de base d’un fichier RIFF est un segment. Un segment est une unité logique de données multimédias, par exemple une image unique dans un clip vidéo. Chaque segment contient les champs suivants :

  • Code de quatre caractères spécifiant l’identificateur de segment
  • Valeur doubleword spécifiant la taille du membre de données dans le segment
  • Champ de données

L’illustration suivante montre un segment « RIFF » qui contient deux sous-blocs.

segment riff qui contient deux sous-blocs image

Un segment contenu dans un autre segment est un sous-bloc. Les seuls segments autorisés à contenir des sous-blocs sont ceux avec un identificateur de segment « RIFF » ou « LIST ». Un segment qui contient un autre segment est appelé segment parent. Le premier segment d’un fichier RIFF doit être un segment « RIFF ». Tous les autres segments du fichier sont des sous-blocs du segment « RIFF ».

Les blocs « RIFF » incluent un champ supplémentaire dans les quatre premiers octets du champ de données. Ce champ supplémentaire fournit le type de formulaire du champ. Le type de formulaire est un code de quatre caractères identifiant le format des données stockées dans le fichier. Par exemple, les fichiers audio de forme d’onde Microsoft ont un type de forme « WAVE ».

Les segments « LIST » incluent également un champ supplémentaire dans les quatre premiers octets du champ de données. Ce champ supplémentaire contient le type de liste du champ. Le type de liste est un code de quatre caractères identifiant le contenu de la liste. Par exemple, un segment « LIST » avec un type de liste « INFO » peut contenir des blocs « ICOP » et « ICRD » fournissant des informations sur les droits d’auteur et la date de création. L’illustration suivante montre un segment « RIFF » qui contient un segment « LIST » et un autre sous-bloc (le segment « LIST » contient deux sous-blocs).

segment riff qui contient une image de bloc de liste

Les services d’E/S de fichiers multimédias incluent deux fonctions que vous pouvez utiliser pour naviguer parmi les segments d’un fichier RIFF : mmioAscend et mmioDescend. Vous pouvez utiliser ces fonctions comme fonctions de recherche de haut niveau. Lorsque vous descendez dans un segment, la position du fichier est définie sur le champ de données du segment (8 octets à partir du début du segment). Pour les segments « RIFF » et « LIST », la position du fichier est définie sur l’emplacement suivant le type de formulaire ou le type de liste (12 octets à partir du début du segment). Lorsque vous sortez d’un segment, la position du fichier est définie sur l’emplacement suivant la fin du segment.

Pour créer un segment, utilisez la fonction mmioCreateChunk pour écrire un en-tête de segment à la position actuelle dans un fichier ouvert. Les fonctions mmioAscend, mmioDescend et mmioCreateChunk utilisent la structure MMCKINFO pour spécifier et récupérer des informations sur les segments « RIFF ».