El formato de archivo de intercambio de recursos ( RIFF ) es un formato genérico de contenedor de archivos para almacenar datos en fragmentos etiquetados . [ 2 ] Se utiliza principalmente para audio y vídeo, aunque puede utilizarse para datos arbitrarios. [ 3 ]
La implementación de Microsoft es conocida principalmente a través de los formatos de contenedor AVI , ANI y WAV , que utilizan RIFF como base. [ 4 ]
Historia
RIFF fue introducido en 1991 por Microsoft e IBM y se utilizó como formato predeterminado para los archivos multimedia de Windows 3.1 . Se basa en el formato de archivo de intercambio (IFF), introducido por Electronic Arts en 1985 para Amiga . IFF utiliza la convención big-endian de la CPU Motorola 68000 de Amiga , pero en RIFF los enteros multibyte se almacenan en el orden little-endian de los procesadores x86 utilizados en los PC compatibles con IBM . También se introdujo un formato RIFX, que es big-endian.
En 2010, Google introdujo el formato de imagen WebP , que utiliza RIFF como contenedor. [ 5 ]
Explicación
Los archivos RIFF constan enteramente de " fragmentos ". El formato general es idéntico al de IFF , salvo por el orden de bytes, como ya se ha indicado, y el significado diferente de los nombres de los fragmentos.
Todos los fragmentos tienen el siguiente formato:
- 4 bytes: un identificador ASCII para este fragmento (ejemplos: "fmt" y "data"; observe el espacio en "fmt").
- 4 bytes: un entero de 32 bits sin signo, little-endian , con la longitud de este bloque (excepto este campo y el identificador del bloque).
- Campo de tamaño variable: los datos del fragmento en sí, del tamaño especificado en el campo anterior.
- un byte de relleno, si la longitud del fragmento no es par.
Dos identificadores de fragmento, "RIFF" y "LIST", introducen un fragmento que puede contener subfragmentos. Los datos de los fragmentos RIFF y LIST (que aparecen después del identificador y la longitud) tienen el siguiente formato:
- 4 bytes: un identificador ASCII para este fragmento RIFF o LIST en particular (en el caso típico de RIFF, estos 4 bytes describen el contenido de todo el archivo, como "AVI" o "WAVE").
- Resto de datos: subfragmentos.
El archivo en sí consta de un fragmento RIFF, que a su vez puede contener subfragmentos: por lo tanto, los primeros cuatro bytes de un archivo RIFF con formato correcto deletrearán "RIFF".
Encontrará más información sobre el formato RIFF en el artículo " Formato de archivo de intercambio" .
RF64 es un formato de archivo multicanal basado en la especificación RIFF, desarrollado por la Unión Europea de Radiodifusión . Es compatible con BWF y permite que los archivos superen los 4 gigabytes . Esto se logra mediante un fragmento "ds64" de 64 bits (8 bytes).
Uso del fragmento INFO
El fragmento INFO opcional permite etiquetar archivos RIFF con información que se clasifica en varias categorías predefinidas, como derechos de autor ("ICOP"), comentarios ("ICMT") y artista ("IART"), de forma estandarizada. Estos detalles se pueden leer de un archivo RIFF incluso si el resto del formato del archivo no se reconoce. El estándar también permite el uso de campos definidos por el usuario. Los programadores que pretendan usar campos no estándar deben tener en cuenta que el mismo ID de subfragmento no estándar puede ser utilizado por diferentes aplicaciones de maneras distintas (y potencialmente incompatibles).
Problemas de compatibilidad
Dificultades iniciales con los archivos MIDI
En consonancia con su política de usar .RIFF para todos los archivos multimedia de Windows 3.1, Microsoft introdujo una nueva variante del formato de archivo MIDI existente , utilizado para almacenar información de canciones que se reproducirían en instrumentos musicales electrónicos. El formato de archivo MIDI de Microsoft consistía en un archivo MIDI estándar encapsulado en un contenedor RIFF y tenía la extensión .RMI . Dado que el formato de archivo MIDI existente ya admitía información de etiquetado integrada, esto generaba la desventaja de tener que trabajar con dos formatos de archivo para el mismo tipo de información.
Desde entonces, la Asociación de Fabricantes MIDI ha adoptado el formato de archivo MIDI basado en RIFF y lo ha utilizado como base de un "archivo MIDI extendido" que también incluye datos de instrumentos en formato " DLS ", integrados en el mismo archivo .RMI.
Problemas de colocación de fragmentos de información
Para fines de catalogación, la posición óptima para el fragmento INFO es cerca del inicio del archivo. Sin embargo, dado que el fragmento INFO es opcional, a menudo se omite en las especificaciones detalladas de los formatos de archivo individuales, lo que genera cierta confusión sobre la posición correcta de este fragmento dentro de un archivo.
Al trabajar con archivos multimedia de gran tamaño, la expansión o contracción del bloque INFO durante la edición de etiquetas puede provocar que la sección de datos subsiguiente del archivo deba leerse y reescribirse en el disco para adaptarse al nuevo tamaño del encabezado. Dado que los archivos multimedia pueden ocupar gigabytes, este proceso puede consumir muchos recursos del disco. Una solución consiste en rellenar el bloque INFO inicial con datos ficticios (mediante un bloque ficticio o de relleno) al crear el archivo. Posteriormente, se puede expandir o contraer el campo ficticio para mantener constante el tamaño total del encabezado del archivo: un software bien diseñado puede sobrescribir únicamente el encabezado cuando se modifican los datos de etiquetado, sin alterar ni mover el cuerpo principal del archivo.
Algunos programas han intentado solucionar el problema colocando el fragmento INFO al final del archivo multimedia, después del cuerpo principal. Esto ha dado lugar a dos convenciones diferentes para la ubicación de los fragmentos, con el consiguiente riesgo de que ciertas combinaciones de software provoquen que los datos INFO de un archivo se ignoren o se sobrescriban permanentemente durante la edición. Los programas más sofisticados tendrán en cuenta la posibilidad de una ubicación "inesperada" de los fragmentos en los archivos y responderán en consecuencia. Por ejemplo, cuando el programa de edición de audio Audacity encuentra un archivo .WAV con datos INFO al final, los identificará y leerá correctamente, pero al guardar, reubicará el fragmento INFO en el encabezado del archivo.
Aunque CorelDRAW 10 utiliza nominalmente una estructura de archivos RIFF, la versión inicial del programa colocaba el bloque INFO al final, de modo que cualquier mapa de bits de vista previa incrustado no se mostraba de forma predeterminada en el administrador de archivos de Windows. Una utilidad de "parche" incluida con el programa soluciona este problema.
Etiquetas de información RIFF
Las etiquetas de información RIFF se encuentran en archivos de audio WAV y de vídeo AVI.
Conversión de la hora DTIM a hora normal.
El campo consta de dos valores (v[0] y v[1]) separados por un espacio (0x20). Código de ejemplo:
// tiempo en segundos: "concatenar" elementos de fecha y hora con un delimitador de punto decimal TimeInSeconds = ( v [ 0 ] * ( 2 ^ 32 ) + v [ 1 ]) * 10 ^ ( -7 );// cambiar la base del 1 de enero de 1601 a la época Unix del 1 de enero de 1970 (369 años y días bisiestos) UnixTimeStamp = TimeInSeconds - 134774 * 24 * 3600 ;Algunos tipos de archivos RIFF comunes
- WAV (audio de Windows)
- AVI (Windows audiovisual)
- RMI (archivo MIDI "RIFF" de Windows)
- CDR (archivo de gráficos vectoriales de CorelDRAW)
- ANI (cursores animados de Windows)
- PAL (Paleta)
- DLS (Sonidos descargables)
- WebP (un formato de imagen desarrollado por Google)
- XMA (formato de audio de la consola Microsoft Xbox 360 basado en WMA Pro )
- SF(1/2/3) (versiones 1, 2 y 3 de SoundFont diseñadas para almacenar muestras de instrumentos)
Véase también
- IFF (el formato big-endian del que deriva RIFF)
- AIFF
- Formato de onda de transmisión BWF
- TLV (el formato genérico del que RIFF es un ejemplo)
- FourCC (el método de identificación de fragmentos utilizado por muchos formatos TLV, incluido IFF, como número mágico detallado )
Referencias
- ↑ RIFF (Formato de archivo de intercambio de recursos) (Borrador completo). Sostenibilidad de los formatos digitales. Washington, DC: Biblioteca del Congreso. 16 de septiembre de 2004. Consultado el 13 de diciembre de 2021 .
- ↑ Interfaz de programación multimedia y especificaciones de datos 1.0 (PDF) . IBM / Microsoft. Agosto de 1991. págs. 10–11 . Consultado el 7 de julio de 2017 .
- ↑ "RIFF (Formato de archivo de intercambio de recursos)" . Preservación digital . Biblioteca del Congreso . 8 de enero de 2014. Consultado el 11 de marzo de 2014 .
- ↑ James D. Murray; William vanRyper (1996). Enciclopedia de formatos de archivos gráficos, segunda edición . O'Reilly . Microsoft RIFF. ISBN 1-56592-161-5Archivado del original el 28 de noviembre de 2005. Consultado el 7 de abril de 2016 .
- ↑ "Contenedor RIFF" . Código de Google . Consultado el 1 de octubre de 2010 .
Enlaces externos
- Servicios de formato de archivo para intercambio de recursos
- Referencia de archivo AVI RIFF
- Lectura de archivos WAVE
- Formato de archivo DirectMusic
- Kit de registro multimedia
- Nombres de etiquetas
- formatos de archivos informáticos
- Introducciones relacionadas con la informática en 1991