# Resource Interchange File Format

Resource Interchange File Format (RIFF), o formato de archivo informático para intercambio de recursos, es un formato genérico que almacena información en bloques etiquetados. Microsoft e IBM lo presentaron en 1991 y Microsoft lo expuso como el formato predeterminado de los archivos multimedia de Windows 3.1.
Está basado en el formato de archivo para intercambio de Electronic Arts, que se presentó en 1985. La única diferencia consiste en que los enteros de más de un byte se representan en el sistema little-endian de la serie de procesadores 80x86 que se utiliza en PC compatibles IBM, en lugar del sistema big-endian de la serie de procesadores 68k presentes en los computadores Amiga y Apple Macintosh, donde los archivos IFF eran muy frecuentes.
La implementación de Microsoft es conocida principalmente por los formatos AVI, ANI y WAV, que emplean el formato RIFF como base.

## Estructura

Los archivos RIFF están formados en su totalidad por "bloques". El formato general es idéntico a IFF, salvo por el orden de bytes, como se expuso anteriormente, y el significado distinto de los nombres de los bloques.
Todos los bloques tienen la siguiente estructura:
* 4 bytes: un identificador ASCII del bloque, por ejemplo "fmt " o "data".
* 4 bytes: un entero sin signo de 32 bits, little-endian, con la longitud del bloque (excepto este mismo campo y el identificador del bloque).
* Campo de longitud variable: la información del bloque, del tamaño especificado en el campo anterior.
* Un byte de relleno, si la longitud del bloque no es par.
Dos identificadores, "RIFF" y "LIST", introducen un bloque que puede contener subbloques. Su información de bloque, tras el identificador y la longitud, tiene la siguiente composición:
* 4 bytes: un identificador ASCII para este bloque en particular (en el caso del bloque RIFF: para el archivo completo, como "AVI " o "WAVE").
* resto: subbloques.
El propio archivo está formado por un bloque RIFF, que puede contener más subbloques: así, los primeros cuatro bytes de un archivo RIFF bien formado se deletrean como "R", "I", "F", "F".
Puede encontrarse más información acerca del formato en el artículo sobre Interchange File Format.

## Uso del bloque INFO

La documentación oficial de Microsoft sobre Windows 3.1 especifica que el bloque INFO debería situarse al principio del archivo. Esto permite un acceso directo a los metadatos que describen el archivo y permite, al sistema de archivos y a las aplicaciones de gestión de archivos multimedia, el análisis rápido del inicio de cada archivo para extraer información sobre autor, miniaturas, muestras de audio, datos de formato, etc.
Cuando las herramientas de administración de archivos de Windows XP se encuentran con un archivo en formato RIFF, intentarán leer automáticamente el bloque INFO. El usuario puede especificar varios campos RIFF comunes, como por ejemplo autor y fecha de copyright, que complementan a otras propiedades de archivo más comunes como el tamaño o la fecha de creación del archivo.

## Controversias

* En su propósito de usar RIFF para todos los archivos "multimedia" de Windows, Microsoft desarrolló una nueva variante del formato de archivo MIDI que se emplea para almacenar información musical que interpretarán instrumentos electrónicos. El "nuevo" formato de archivo MIDI de Microsoft consistía en un archivo MIDI normal encerrado en un "envoltorio" RIFF, y tenía la extensión .RMI. Esto provocó algunas protestas en su momento, ya que tomó un tiempo la adaptación del software musical existente al nuevo formato, y no todo el mundo admitió que la creación de un nuevo formato de archivo fuera justificada en este caso.
* Al manejar grandes archivos de vídeo, la expansión o contracción del bloque INFO puede provocar que el archivo completo, que podría tener un tamaño de varios gigabytes, deba ser reescrito, un proceso que efectúa numerosos accesos a disco. La solución adecuada a este problema es "rellenar" el bloque INFO con información no útil (usando un bloque "inútil" o "de relleno") al crear un archivo grande, de manera que la edición posterior permita expandir o contraer el campo "inútil" para mantener constante el tamaño total del bloque INFO: un programa software bien diseñado sobreescribirá únicamente el bloque INFO cuando se modifica la información de la cabecera, y no tendrá que modificar o mover el cuerpo principal del archivo. Sin embargo, puesto que este método requiere trabajo adicional por parte del programador del software y las especificaciones completas de RIFF estaban dispersas entre la documentación de Microsoft, algunos desarrolladores pensaron que era válido (y más simple) colocar el bloque INFO al final del archivo RIFF y empezó a divulgarse documentación errónea que recomendaba esta práctica. Situar el bloque INFO de esta manera implica que la información no será leída por todos los programas de tratamiento de archivos multimedia. Además existe riesgo de descarte o sobreescritura del bloque INFO por parte de otros programas que se adhieren estrictamente a la especificación oficial del formato.
Estos "pseudo-archivos" RIFF parecen ser más comunes en los sistemas Macintosh, quizá porque los programadores que trabajan para plataformas "Mac" tienen un acceso más limitado a documentación de Windows de primera mano. En general, los desarrolladores de programas multimedia para Mac y de aplicaciones multiplataforma suelen ser más conscientes de este riesgo potencial que quienes desarrollan aplicaciones sólo para Windows: por ejemplo, hacia 2004, el software multimedia QuickTime de Apple, ejecutándose sobre Windows, parecía identificar y leer correctamente los bloques INFO erróneamente situados, pero el software multimedia de Sony y el propio Windows no. Esto puede ser un problema serio al procesar archivos multimedia por lotes, puesto que una operación tan "inofensiva" como una normalización o una conversión de formato puede resultar en la destrucción irrecuperable de los metadatos de una valiosa biblioteca de archivos antes de que el usuario se dé cuenta. Este inconveniente tiene más relación con bibliotecas creadas inicialmente para la plataforma Macintosh o para instalaciones de radiodifusión mediante software desarrollado conforme a especificaciones de la UER.
* Aunque en teoría CorelDRAW 10 emplea una estructura de archivo RIFF, sitúa el bloque INFO al final, por tanto el administrador de archivos de Windows no mostrará en principio la imagen de vista previa incluida en el archivo. Se proporciona con el programa un complemento que resuelve este problema.