Formato de archivo de intercambio de recursos: Resource Interchange File Format

RIFF
Versión inicial Agosto de 1991 ; Hace 29 años  ( 1991-08 )
Tipo de formato Envase
Extendido desde Formato de archivo de intercambio
Extendido a AVI , ANI , PAL, RDIB, RMIDI, RMMP, WAV

El formato de archivo de intercambio de recursos ( RIFF ) es un formato de contenedor de archivos genérico para almacenar datos en fragmentos etiquetados . Se usa principalmente para almacenar multimedia como sonido y video, aunque también se puede usar para almacenar cualquier dato arbitrario.

La implementación de Microsoft se conoce principalmente a través de formatos de contenedor como AVI , ANI y WAV , que utilizan RIFF como base.

Historia

RIFF fue introducido en 1991 por Microsoft e IBM , y Microsoft lo presentó como el formato predeterminado para archivos multimedia de Windows 3.1 . Se basa en Electronic Arts ' Interchange File Format , introducida en 1985 en el Commodore Amiga , siendo la única diferencia de que múltiples bytes enteros están en little-endian formato nativo de los 80x86 serie de procesadores utilizados en los PC de IBM, en lugar de la gran -formato indio nativo de la serie de procesadores 68k que se utiliza en las computadoras Amiga y Apple Macintosh , donde los archivos IFF se usaban mucho. También se introdujo un formato RIFX, con formato big-endian.

En 2010, Google introdujo el formato de imagen WebP , que utiliza RIFF como contenedor.

Explicación

Los archivos RIFF constan completamente de " fragmentos ". El formato general es idéntico al IFF , excepto por el endianness como se indicó anteriormente 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 (los ejemplos son "fmt" y "datos"; observe el espacio en "fmt").
  • 4 bytes: un entero little-endian de 32 bits sin signo con la longitud de este fragmento (excepto este campo en sí y el identificador del fragmento).
  • campo de tamaño variable: el fragmento de datos en sí, del tamaño dado en el campo anterior.
  • un byte de almohadilla, si la longitud del fragmento no es uniforme.

Dos identificadores de fragmentos, "RIFF" y "LIST", introducen un fragmento que puede contener subpartes. Los datos del fragmento RIFF y LIST (que aparecen después del identificador y la longitud) tienen el siguiente formato:

  • 4 bytes: un identificador ASCII para este fragmento de RIFF o LIST en particular (para RIFF en el caso típico, estos 4 bytes describen el contenido de todo el archivo, como "AVI" o "WAVE").
  • resto de datos: subconjuntos.

El archivo en sí consta de un fragmento RIFF, que luego puede contener más subgrupos: por lo tanto, los primeros cuatro bytes de un archivo RIFF formateado correctamente se deletrearán "R", "I", "F", "F".

Puede 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 el tamaño de los archivos supere los 4 gigabytes . Lo hace proporcionando un fragmento "ds64" con un tamaño de 64 bits (8 bytes).

Uso del fragmento INFO

El fragmento INFO opcional permite que los archivos RIFF se "etiqueten" con información perteneciente a varias categorías predefinidas, como derechos de autor ("ICOP"), comentarios ("ICMT"), artista ("IART"), de forma estandarizada. Estos detalles se pueden leer desde un archivo RIFF incluso si no se reconoce el resto del formato de archivo. El estándar también permite el uso de campos definidos por el usuario. Los programadores que deseen utilizar campos no estándar deben tener en cuenta que diferentes aplicaciones pueden utilizar el mismo ID de subchunk no estándar de formas diferentes (y potencialmente incompatibles).

Problemas de compatibilidad

Dificultades iniciales con archivos MIDI

De acuerdo con su política de utilizar .RIFF para todos los archivos "multimedia" de Windows 3.1, Microsoft introdujo una nueva variante del formato de archivo MIDI existente que se utiliza para almacenar información de canciones que se reproducirá en instrumentos musicales electrónicos. El "nuevo" formato de archivo MIDI de Microsoft consistía en un archivo MIDI estándar encerrado en un "contenedor" RIFF, y tenía la extensión de archivo .RMI . Dado que el formato de archivo MIDI existente ya admitía información de "etiquetado" incrustada, las ventajas para el usuario de tener un nuevo formato no eran obvias.

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 ", incrustados en el mismo archivo .RMI.

INFO problemas de colocación de fragmentos

Para fines de catalogación, la posición óptima para el fragmento INFO es cerca del comienzo 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 para este fragmento dentro de un archivo.

Cuando se trata de archivos multimedia de gran tamaño, la expansión o contracción del fragmento INFO durante la edición de etiquetas puede provocar que la siguiente sección de "datos" del archivo deba leerse y volver a escribirse en el disco para adaptarse al nuevo tamaño de encabezado. Dado que los archivos multimedia pueden tener un tamaño de gigabytes, este es un proceso potencialmente intensivo en disco. Una solución consiste en "rellenar" el fragmento INFO inicial utilizando datos ficticios (utilizando un "fragmento ficticio" o un "fragmento de relleno") cuando se crea el archivo. La edición posterior puede expandir o contraer el campo "ficticio" para mantener constante el tamaño total del encabezado del archivo: una pieza de software escrita de manera inteligente puede sobrescribir solo el encabezado del archivo cuando se cambian los datos de etiquetado, sin modificar o mover el cuerpo principal de el archivo.

Algunos programas han intentado solucionar el problema colocando el fragmento INFO al final de un archivo multimedia, después del cuerpo principal del archivo. Esto ha dado lugar a dos convenciones diferentes para la ubicación de fragmentos, con el riesgo asociado de que algunas combinaciones de software puedan hacer 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 colocar fragmentos "inesperados" 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 colocados al final, identificará y leerá correctamente los datos, pero al guardarlos, reubicará el fragmento INFO de nuevo en el encabezado del archivo.

Aunque CorelDRAW 10 usa nominalmente una estructura de archivo RIFF, la versión inicial del programa colocó el fragmento INFO al final, de modo que cualquier mapa de bits de vista previa incrustado no se mostraría en el administrador de archivos de Windows de forma predeterminada. Una utilidad de "parche" suministrada 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 video AVI. Las etiquetas que forman parte de la especificación Exif 2.2 (ID de etiqueta que comienzan con "I") tienen un nombre de etiqueta subrayado en la versión HTML de esta documentación. Otras etiquetas se encuentran en archivos AVI generados por el software de edición de video Sony Vegas .

ID de etiqueta Nombre de etiqueta Escribible Valores / notas
DTIM DateTimeOriginal norte Valores de formato "dtim" del perfil ICC
CINTA TapeName norte

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 muestra:

// time in seconds - "concatenate" date & time elements with a decimal point delimiter
TimeInSeconds = (v[0] * (2^32) + v[1]) * 10^(-7);

// shift basis from Jan 1, 1601 to Unix epoch Jan 1, 1970 (369 years & leap days)
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 )

Ver también

Referencias

enlaces externos