QuickTime Graphics es un algoritmo de compresión y descompresión de vídeo con pérdida ( códec ) desarrollado por Apple Inc. y lanzado por primera vez como parte de QuickTime 1.x a principios de los años 1990. [1] El códec también se conoce con el nombre de Apple Graphics y su SMC FourCC . [2] [1] El códec opera con datos RGB paletizados de 8 bits . [1] El formato de flujo de bits de QuickTime Graphics ha sido sometido a ingeniería inversa y se ha implementado un decodificador en los proyectos XAnim y libavcodec . [3] [2]
El vídeo de entrada sobre el que opera el códec se encuentra en un espacio de color RGB paletizado de 8 bits . La compresión se logra mediante la reposición condicional y reduciendo la paleta de 256 colores a una paleta adaptable por bloque de 4x4 de 1 a 16 colores. Debido a que Apple Video opera en el dominio de la imagen sin compensación de movimiento, la decodificación es mucho más rápida que los códecs de estilo MPEG que utilizan compensación de movimiento y realizan la codificación en un dominio de transformación . Como contrapartida, el rendimiento de compresión de Apple Graphics es menor. La complejidad de la decodificación es aproximadamente el 50 % de la del códec QuickTime Animation . [4]
Cada cuadro se divide en bloques de 4×4 en orden de escaneo de trama. Cada bloque se puede codificar en uno de los siguientes modos de codificación: modo de omisión, un solo color, modos de paleta de 2, 4 y 8 colores, dos modos de repetición y PCM.
El modo de salto permite la reposición condicional. Si un bloque se codifica en modo de salto, el contenido del bloque en la misma ubicación en el cuadro anterior se copia al cuadro actual. [1] Las secuencias de bloques salteados se codifican en un esquema de codificación de longitud de secuencia , lo que permite una alta relación de compresión en áreas estáticas de la imagen. [1]
En el modo de un solo color, todo el bloque 4×4 se pinta con un solo color. [1] Este modo también puede considerarse como un modo de paleta de 1 color.
En los modos de paleta, cada bloque de 4 × 4 se codifica con una paleta de 2, 4 u 8 colores. [1] Para seleccionar uno de los colores de la paleta, se utilizan 1, 2 o 3 bits por píxel, respectivamente. La paleta se puede escribir en el flujo de bits de forma explícita o como referencia a una entrada en la caché de paletas. [1] La caché de paletas es un conjunto de tres búferes circulares que almacenan las 256 paletas utilizadas más recientemente, una para cada uno de los modos de 2, 4 y 8 colores. [1]
Interpretados como cuantificación vectorial , los vectores tridimensionales con componentes rojo, verde y azul se cuantifican utilizando un libro de códigos adaptativo hacia adelante con entre 1 y 8 entradas.
Existen dos modos de repetición diferentes. [1] En el modo de repetición de un solo bloque, el bloque anterior se repite una cantidad específica de veces. [1] En el modo de repetición de dos bloques, los dos bloques anteriores se repiten una cantidad específica de veces. [1]
En el modo de 16 colores, el color de cada píxel de un bloque se escribe explícitamente en el flujo de bits. [1] Este modo no tiene pérdidas y es equivalente al PCM sin formato sin ninguna compresión.