Resource Interchange File Format

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
RIFF
Resource Interchange File Format
Caractéristiques
Développé par
Type de format
Format conteneur générique
Extension du
Origine de
Spécification

Le Resource Interchange File Format (RIFF) définit un modèle générique de format de fichier à destination des contenus multimédia[1]. Ainsi, il ne s'agit pas d'un format de fichier en soit[2], mais plutôt d'une méthode d'organisation des données sur laquelle reposent plusieurs formats[3] comme le WAVE et l'AVI.

Le RIFF a été défini conjointement par Microsoft et IBM en 1991. Il hérite en grande partie du format IFF de l'Electronic Arts (1985)[4].

Histoire[modifier | modifier le code]

Le RIFF a été introduit en 1991 par Microsoft et IBM comme modèle pour les formats de fichiers multimédia, à destination d'OS/2 et Windows 3.1[5]. Le standard est d’ailleurs publié conjointement avec les premiers formats de fichier issues du RIFF comme le format WAVE.

Le RIFF reprend le modèle de structure en chunks de l'Interchange File Format publié en 1985 par Electronic Arts, tout en laissant de côté la majorité des autres éléments du standard IFF.

Chunk[modifier | modifier le code]

L'unité de construction de base d'un fichier RIFF est le chunk. Un chunk est un bloc de données composé des champs suivant :

Chunk RIFF
  • ckid : chunk-identifier, 4 octets représentant l'identifiant FourCC du chunk, soit une séquence de 1 à 4 caractères ASCII alphanumériques (sans espaces) alignée à gauche par un ou plusieurs caractères d'espace (code ASCII 0x20)[6]. Par exemple, le ckid fmt sera représenté : 'f', 'm', 't', ' '.
  • cksz : chunk-size, entier 32 bits non signé représentant la taille des données contenues dans le champ data du chunk[7].
  • data : Les données utiles (payload) contenues dans le chunk. Dans le cas où les données sont de taille impaire — c'est-à-dire où le champ cksz contient une valeur impaire —, un octet nul est ajouté à la fin du champ de façon à conserver l'alignement dans le fichier.[8].

Structure du RIFF[modifier | modifier le code]

Structure d'un fichier RIFF

Un fichier RIFF est exclusivement composé de chunks.

Un fichier RIFF commence (à l'octet 0) par le chunk RIFF. Celui-ci accueillera dans son champ data tous les chunks du fichier. Par conséquent, le champ cksz du chunk RIFF équivaut à la taille du fichier moins 8 octets.

Le champ data du chunk RIFF commence par un identifiant FourCC appelé formType. Celui-ci indique le type de fichier. Par exemple, dans le cas d'un fichier WAVE, l'identifiant sera composé des 4 octets ASCII 'W', 'A', 'V', 'E'.

A noter que le chunk RIFF est le seul, avec le chunk LIST, à pouvoir prendre comme données d'autres chunks.

Concernant l'ordonnancement des octets, le RIFF représente les données en little-endian. Cependant, le RIFF définit aussi le RIFX, comme étant son pendant big-endian.

Notes et références[modifier | modifier le code]

  1. (en) Microsoft & IBM, « Multimedia Programming Interface and Data Specifications 1.0 » [PDF], (consulté le 7 juillet 2017) : « RIFF (Resource Interchange File Format) is the tagged file structure developed for multimedia resource files. », p. 10
  2. (en) Microsoft & IBM, « Multimedia Programming Interface and Data Specifications 1.0 » [PDF], (consulté le 7 juillet 2017) : « RIFF is not actually a file format itself (since it does not represent a specific kind of information) », p. 10
  3. (en) Microsoft & IBM, « Multimedia Programming Interface and Data Specifications 1.0 » [PDF], (consulté le 7 juillet 2017) : « The Resource Interchange File Format (RIFF), a tagged file structure, is a general specification upon which many file formats can be defined », p. 8
  4. (en) Microsoft & IBM, « Multimedia Programming Interface and Data Specifications 1.0 » [PDF], (consulté le 7 juillet 2017) : « The structure of a RIFF file is similar to the structure of an Electronic Arts IFF file. », p. 10
  5. (en) Microsoft & IBM, « Multimedia Programming Interface and Data Specifications 1.0 » [PDF], (consulté le 7 juillet 2017) : « This document describes the programming interfaces and data specifications for multimedia that are common to both OS/2 and Windows environments. », p. 2
  6. (en) Microsoft & IBM, « Multimedia Programming Interface and Data Specifications 1.0 » [PDF], (consulté le 7 juillet 2017) : « A FOURCC is represented as a sequence of one to four ASCII alphanumeric characters, padded on the right with blank characters (ASCII character value 32) as required, with no embedded blanks. », p. 11
  7. (en) Microsoft & IBM, « Multimedia Programming Interface and Data Specifications 1.0 » [PDF], (consulté le 7 juillet 2017) : « A 32-bit unsigned value identifying the size of ckData. This size value does not include the size of the ckID or ckSize fields or the pad byte at the end of ckData. », p. 11
  8. (en) Microsoft & IBM, « Multimedia Programming Interface and Data Specifications 1.0 » [PDF], (consulté le 7 juillet 2017) : « Binary data of fixed or variable size. The start of ckData is word-aligned with respect to the start of the RIFF file. If the chunk size is an odd number of bytes, a pad byte with value zero is written after ckData. Word aligning improves access speed (for chunks resident in memory) and maintains compatibility with EA IFF. The ckSize value does not include the pad byte. », p. 11

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]