QuickTime Graphics es un algoritmo ( códec ) de compresión y descompresión de video con pérdidas desarrollado por Apple Inc. y lanzado por primera vez como parte de QuickTime 1.x a principios de la década de 1990. [1] El códec también se conoce con el nombre de Apple Graphics y su FourCC SMC . [2] [1] El códec funciona con datos RGB paletizados de 8 bits . [1] El formato de flujo de bits de QuickTime Graphics ha sido modificado por ingeniería inversa y se ha implementado un decodificador en los proyectos XAnim y libavcodec . [3] [2]
El video de entrada con el que opera el códec está en un espacio de color RGB con paleta de 8 bits . La compresión se logra mediante la reposición condicional y reduciendo la paleta de 256 colores a una paleta adaptativa por bloque de 4 × 4 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 usan compensación de movimiento y realizan la codificación en un dominio de transformación . Como compensación, el rendimiento de compresión de Apple Graphics es menor. La complejidad de decodificación es aproximadamente el 50% de la del códec de animación QuickTime . [4]
Cada cuadro está segmentado en bloques de 4 × 4 en orden de exploración de trama. Cada bloque se puede codificar en uno de los siguientes modos de codificación: modo de omisión, color único, modos de paleta de 2, 4 y 8 colores, dos modos de repetición y PCM.
El modo de salto se da cuenta de la reposición condicional . Si un bloque se codifica en modo de omisión, el contenido del bloque en la misma ubicación en el cuadro anterior se copia en el cuadro actual. [1] Las series de bloques de salto se codifican en un esquema de codificación de longitud de serie , 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 está pintado con un solo color. [1] Este modo también se puede considerar como un modo de paleta de 1 color.
En los modos de paleta, cada bloque de 4 × 4 está codificado 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 paleta. [1] La caché de paleta 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 directo con entre 1 y 8 entradas.
Hay dos modos de repetición diferentes. [1] En el modo de repetición de bloque único, el bloque anterior se repite un número específico de veces. [1] En el modo de repetición de dos bloques, los dos bloques anteriores se repiten un número específico 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 a PCM en bruto sin compresión.