Articulo de referencia

CuatroCC

Un FourCC ("código de cuatro caracteres") es una secuencia de cuatro bytes (normalmente ASCII ) que se utiliza para identificar de forma única los formatos de datos . Su origen ...

Un FourCC ("código de cuatro caracteres") es una secuencia de cuatro bytes (normalmente ASCII ) que se utiliza para identificar de forma única los formatos de datos . Su origen se remonta al sistema de metadatos OSType o ResType utilizado en el Mac OS clásico y fue adoptado para el formato de archivo Interchange de Amiga / Electronic Arts y sus derivados. Posteriormente, la idea se reutilizó para identificar tipos de datos comprimidos en QuickTime y DirectShow .

Historia

En 1984, se lanzó la primera versión del sistema operativo Macintosh, System 1. Utilizaba el sistema de archivos Macintosh de un solo nivel con campos de metadatos que incluían tipos de archivo , información del creador (aplicación) y bifurcaciones para almacenar recursos adicionales . Era posible modificar esta información sin alterar los datos en sí, de modo que podían interpretarse de forma diferente. Se utilizaban códigos idénticos en todo el sistema, como etiquetas de tipo para todos los tipos de datos. [ 1 ] [ 2 ]

En 1985, Electronic Arts introdujo el metaformato Interchange File Format (IFF), una familia de formatos de archivo originalmente concebido para su uso en Amiga . Estos archivos consistían en una secuencia de "fragmentos" que podían contener datos arbitrarios, cada fragmento precedido por un identificador de cuatro bytes. La especificación IFF menciona explícitamente que el origen de la idea FourCC se encuentra en Apple. [ 3 ]

Este IFF fue adoptado por varios desarrolladores, incluyendo Apple para archivos AIFF y Microsoft para archivos RIFF (que sirvieron de base para los formatos de archivo AVI y WAV ). Apple se refería a muchos de estos códigos como OSTypes . Los desarrolladores de Microsoft y Windows se refieren a sus identificadores de cuatro bytes como FourCCs o códigos de cuatro caracteres . Microsoft también adoptó los códigos FourCC para identificar formatos de datos utilizados en DirectX , específicamente en DirectShow y DirectX Graphics.

En los sistemas de Apple

Desde Mac OS X Panther , las firmas OSType son una de las diversas fuentes que se pueden examinar para determinar un identificador de tipo uniforme y ya no se utilizan como firma principal del tipo de datos. Mac OS X (macOS) prefiere la convención más coloquial de etiquetar los tipos de archivo mediante extensiones de nombre de archivo. En el momento del cambio, este generó gran controversia entre los usuarios más veteranos, quienes creían que Apple estaba volviendo a un método más primitivo que colocaba incorrectamente los metadatos en el nombre del archivo.

Los códigos de tipo asociados al sistema de archivos no son fácilmente accesibles para que los usuarios los manipulen, aunque se pueden ver y cambiar con cierto software, en particular las herramientas de línea de comandos de macOS GetFileInfo y SetFile , que se instalan como parte de las herramientas para desarrolladores en /Developer/Tools , o la utilidad ResEdit disponible para Macs más antiguos. [ 4 ] [ 5 ]

Detalles técnicos

La secuencia de bytes generalmente se restringe a caracteres imprimibles ASCII , con caracteres de espacio reservados para rellenar secuencias más cortas. Se conserva la distinción entre mayúsculas y minúsculas, a diferencia de las extensiones de archivo . Los FourCC a veces se codifican en hexadecimal (por ejemplo, "0x31637661" para ' avc1 ') [ 6 ] [ 7 ] [ 8 ] y a veces se codifican de una manera legible para humanos (por ejemplo, " mp4a "). Sin embargo, algunos FourCC contienen caracteres no imprimibles y no son legibles para humanos sin un formato especial para su visualización; por ejemplo, el video 4:2:2 Y'CbCr de 10 bits puede tener un FourCC de ('Y', '3', 10, 10) [ 9 ] que ffmpeg muestra como .rawvideo (Y3[10] [10] / 0x0A0A3359), yuv422p10le

Los identificadores de cuatro bytes son útiles porque pueden estar compuestos por cuatro caracteres legibles con cualidades mnemotécnicas, y aun así caben en el espacio de memoria de cuatro bytes que normalmente se asigna a los enteros en sistemas de 32 bits (aunque los problemas de orden de bytes pueden dificultar su lectura). Por lo tanto, estos códigos pueden usarse de manera eficiente en el código del programa como enteros, además de proporcionar pistas en flujos de datos binarios cuando se inspeccionan.

Soporte del compilador

FourCC se escribe en formato big-endian con respecto a la secuencia de caracteres ASCII subyacente, de modo que aparece en el orden de bytes correcto cuando se lee como una cadena. Muchos compiladores de C, incluido GCC, definen un comportamiento literal de varios caracteres que alinea a la derecha al byte menos significativo, de modo que '1234'se convierte en ASCII. [ 10 ] Esta es la forma convencional de escribir códigos FourCC que utilizan los programadores de Mac OS para OSType. ( El Mac OS clásico era exclusivamente big-endian).0x31323334

En máquinas little-endian, se requiere un intercambio de bytes en el valor para que el resultado sea correcto. Tomando el ejemplo avc1 anterior: aunque el literal 'avc1' ya se convierte al valor entero 0x61766331 , una máquina little-endian habría invertido el orden de los bytes y almacenado el valor como 31 63 76 61. Para obtener la secuencia de bytes correcta 61 76 63 31 , se utiliza el valor 0x31637661 previamente intercambiado .

Usos comunes

Uno de los usos más conocidos de FourCC es identificar el códec o formato de codificación de vídeo en archivos AVI. Algunos identificadores comunes son DIVX , XVID y H264 . Para los formatos de codificación de audio , los archivos AVI y WAV utilizan un identificador de dos bytes, generalmente escrito en hexadecimal (como 0055 para MP3 ). En los archivos QuickTime, estos identificadores de dos bytes se anteponen con las letras "ms" para formar un código de cuatro caracteres. Los archivos RealMedia también utilizan códigos de cuatro caracteres; sin embargo, los códigos utilizados difieren de los que se encuentran en los archivos AVI o QuickTime.

Otros formatos de archivo que hacen un uso importante del concepto de ID de cuatro bytes son el formato de archivo MIDI estándar (SMF) , el formato de archivo de imagen PNG , el formato de archivo de malla 3DS (3D Studio Max) y el formato de perfil ICC .

Los códigos de cuatro caracteres también se utilizan en aplicaciones distintas a los formatos de archivo, por ejemplo:

  • Foro UEFI para proveedores en el Registro de ID de ACPI [ 11 ]
  • La especificación ACPI define identificadores de cuatro caracteres en el lenguaje fuente ACPI (ASL).
  • Synopsys permite determinar la identificación de un componente mediante los registros de una propiedad intelectual (colección DesignWare).

Otros usos de OSTypes incluyen:

  • como identificadores de campos de registro e identificadores de tipo y clase de evento en AppleEvents
  • para identificar componentes en el Administrador de componentes
  • como identificadores de “átomo” en los formatos de archivo de imagen y película de QuickTime.
  • como una forma independiente de la localización de identificar carpetas estándar en el Administrador de carpetas
  • En QuickDraw GX , se utilizaban como tipos de gxTag y también como tipos de elementos de colección en el Administrador de colecciones.
  • Constantes de enumeración en las API de Apple (como un número entero; orden de bytes del host)
  • Códigos de error "OSStatus" en ciertas bibliotecas, como QuickTime (como un entero; orden de bytes del host) [ 12 ]
  • Para el creador y el tipo de recurso en PalmOS, en el administrador de datos. [ 13 ]

Véase también

Referencias

  1. La base de datos de tipos/creadores
  2. "Firmas de archivos Macintosh" . Software y Servicios Duhem . Consultado el 1 de diciembre de 2015 .
  3. Morrison, Jerry (14 de enero de 1985) ."EA IFF 85" Estándar para archivos de formato de intercambio" . Electronic Arts .
  4. "GetFileInfo", Referencia de Darwin (página man), Apple
  5. "SetFile", Referencia de Darwin (página man), Apple
  6. online-metadata.com. "¿Qué es una etiqueta de códec?" . ¿Qué es una etiqueta de códec? . Consultado el 9 de junio de 2019 .
  7. "git.videolan.org Git - ffmpeg.git/blob - libavformat/isom.c" . git.videolan.org . Consultado el 9 de junio de 2019 .
  8. "FFmpeg/FFmpeg search" . GitHub . Consultado el 9 de junio de 2019 .
  9. "FFmpeg: archivo fuente libavcodec/raw.c" . ffmpeg.org . Consultado el 9 de junio de 2019 .
  10. "El preprocesador de C: comportamiento definido por la implementación" . gcc.gnu.org .
  11. "Registro de ID de ACPI" . uefi.org .
  12. "OSStatus — Errores de la API de Apple" . www.osstatus.com .
  13. "Referencia de la API del programador de Palm OS® Capítulo 30: Administrador de datos y recursos" . palm.wiki .

Referencias generales

  • Autoridad de registro oficial para la familia de normas ISOBMFF
  • Fleischman, E. (junio de 1998). "RFC2361 - Registros de códecs WAVE y AVI" . Autoridad de Números Asignados de Internet (IANA).
  • "GUID de subtipos de audio" . Microsoft . Consultado el 23 de febrero de 2017 .
  • Kroon, Dirk-Jan (16 de febrero de 2011). "Listar códecs de vídeo, FourCC" . MathWorks (publicado el 13 de septiembre de 2010). Esta función, GETFOURCC, proporciona una lista de los códecs de codificación de vídeo disponibles en la instalación actual de Windows.