Cuatro CC

Identificador de un tipo de archivo

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 . Tiene su origen en el sistema de metadatos OSType o ResType utilizado en el Mac OS clásico y se adoptó para el formato de archivo de intercambio Amiga / Electronic Arts y sus derivados. La idea se reutilizó posteriormente para identificar tipos de datos comprimidos en QuickTime y DirectShow .

Historia

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

En 1985, Electronic Arts introdujo el metaformato (familia de formatos de archivo) Interchange File Format (IFF), ideado originalmente para su uso en Amiga . Estos archivos consistían en una secuencia de "fragmentos" que podían contener datos arbitrarios, cada uno de los cuales tenía como prefijo un identificador de cuatro bytes. La especificación IFF menciona explícitamente que los orígenes de la idea de FourCC se encuentran en Apple. [3]

Este IFF fue adoptado por varios desarrolladores, incluidos Apple para los archivos AIFF y Microsoft para los archivos RIFF (que se usaron como base para los formatos de archivo AVI y WAV ). Apple se refirió 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 Four-Character Codes . Microsoft también adoptó los códigos FourCC para identificar los formatos de datos utilizados en DirectX , específicamente dentro de DirectShow y DirectX Graphics.

En sistemas 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 la firma de tipo de datos principal. Mac OS X (macOS) prefiere la convención más coloquial de etiquetar los tipos de archivos mediante extensiones de nombre de archivo. En el momento del cambio, el cambio fue una fuente de gran controversia entre los usuarios más antiguos, que creían que Apple estaba volviendo a una forma más primitiva que coloca 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 antiguas. [4] [5]

Detalles técnicos

La secuencia de bytes suele estar restringida a caracteres ASCII imprimibles , 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 (p. ej., "0x31637661" para " avc1 ") [6] [7] [8] y a veces se codifican de forma legible para humanos (p. ej., " 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 vídeo Y'CbCr 4:2:2 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 por humanos con cualidades mnemotécnicas, y al mismo tiempo caben en el espacio de memoria de cuatro bytes que normalmente se asigna a los números enteros en los sistemas de 32 bits (aunque los problemas de endian pueden hacerlos menos legibles). Por lo tanto, los códigos se pueden usar de manera eficiente en el código del programa como números enteros, además de brindar pistas en flujos de datos binarios cuando se inspeccionan.

Compatibilidad con compiladores

FourCC se escribe en big endian en relación con 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 múltiples caracteres de alineación a la derecha con el 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 las máquinas little-endian, se requiere un intercambio de bytes en el valor para que el resultado sea correcto. Tomando el ejemplo avc1 de arriba: aunque el literal 'avc1' ya se convierte al valor entero 0x61766331 , una máquina little-endian habría invertido el orden de 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 pre-intercambiado 0x31637661 .

Usos comunes

Uno de los usos más conocidos de FourCC es identificar el códec de vídeo o el formato de codificación de vídeo en los archivos AVI. Los identificadores comunes incluyen DIVX , XVID y H264 . Para los formatos de codificación de audio , los archivos AVI y WAV utilizan un identificador de dos bytes, normalmente escrito en hexadecimal (como 0055 para MP3 ). En los archivos QuickTime, estos identificadores de dos bytes tienen como prefijo 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 reales 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 ACPI [11]
  • La especificación ACPI define identificadores de cuatro caracteres en el lenguaje fuente ACPI (ASL)
  • Sinopsis para indicar el ID de un componente a través de los registros de una IP (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 "átomos" en los formatos de archivos de imágenes y películas QuickTime
  • como una forma independiente de la localización de identificar carpetas estándar en el Administrador de carpetas
  • En QuickDraw GX , se usaron como tipos 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 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]

Véase también

Referencias

  1. ^ La base de datos de tipo/creador
  2. ^ "Firmas de archivos de Macintosh". Logiciels & Services 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 de manual), Apple
  5. ^ "SetFile", referencia de Darwin (página de manual), 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/Búsqueda FFmpeg". 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 C: comportamiento definido por la implementación". gcc.gnu.org .
  11. ^ "Registro de identificación ACPI". uefi.org .
  12. ^ "OSStatus — Errores de la API de Apple". www.osstatus.com .

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 en Internet (IANA).
  • "GUID de subtipos de audio". Microsoft . Consultado el 23 de febrero de 2017 .
  • Kroon, Dirk-Jan (16 de febrero de 2011). "List Video Codecs, FourCC". MathWorks (publicado el 13 de septiembre de 2010). Esta función GETFOURCC ofrece una lista de los codificadores y códecs de vídeo disponibles en la instalación actual de Windows.
Obtenido de "https://es.wikipedia.org/w/index.php?title=FourCC&oldid=1222145503"