Cinepak es un códec de vídeo con pérdida [1] desarrollado por Peter Barrett en SuperMac Technologies, y lanzado en 1991 con el Video Spigot, y luego en 1992 como parte de la suite de vídeo QuickTime de Apple Computer . Una de las primeras herramientas de compresión de vídeo en lograr vídeo de movimiento completo en CD-ROM , [2] fue diseñado para codificar vídeo de resolución 320×240 a velocidades de transferencia de CD-ROM de 1× (150 kbyte /s) . El nombre original de este códec era Compact Video , [3] razón por la cual su identificador FourCC es CVID . El códec fue portado a Microsoft Windows en 1993. También se utilizó en consolas de juegos de cuarta y quinta generación , como Atari Jaguar CD , [4] Sega CD , Sega Saturn y 3DO . [2] libavcodec incluye un decodificador Cinepak y un codificador, ambos licenciados bajo los términos de la LGPL .
Fue el códec de vídeo principal de las primeras versiones de QuickTime y Microsoft Video para Windows , pero luego fue reemplazado por Sorenson Video , Intel Indeo y, más recientemente, MPEG-4 Parte 2 y H.264/MPEG-4 AVC . [5] [6] Sin embargo, las películas comprimidas con Cinepak generalmente todavía se pueden reproducir en la mayoría de los reproductores multimedia.
Cinepak se basa en la cuantificación vectorial , que es un algoritmo significativamente diferente del algoritmo de transformada de coseno discreta (DCT) utilizado por la mayoría de los códecs actuales (en particular la familia MPEG , así como JPEG ). Esto permitió la implementación en CPU relativamente lentas (el video codificado en Cinepak generalmente se reproducirá bien incluso en un Motorola 68030 de 25 MHz , las consolas como la Sega CD generalmente usaban CPU aún más lentas, por ejemplo, una 68000 de 12,5 MHz), pero tendía a resultar en artefactos en bloques a tasas de bits bajas , lo que explicaba las críticas dirigidas a los videojuegos basados en FMV .
Los vectores que se cuantifican en Cinepak son bloques de píxeles de 2×2. Un bloque puede constar de 4 valores de luminancia (escala de grises) o de 4 valores de luminancia y 2 valores de crominancia ( submuestreo de crominancia 4:2:0 ). [7] [8] Los bloques cuantificados se almacenan en dos libros de códigos, denominados V1 y V4, cada uno con hasta 256 entradas. Los vectores del libro de códigos V1 representan bloques de píxeles de 4×4 reducidos, mientras que los del libro de códigos V4 representan bloques de píxeles de 2×2.
Para su procesamiento, Cinepak divide un vídeo en imágenes clave (intracodificadas) e imágenes intercodificadas. [7] En las imágenes clave, los libros de códigos se transmiten desde cero, mientras que en las imágenes intercodificadas, las entradas del libro de códigos se actualizan de forma selectiva. [7] Cada imagen se divide además en varias bandas horizontales. Los libros de códigos se pueden actualizar por banda. Cada banda se divide en bloques de píxeles de 4×4. [7] [8] Cada bloque se puede codificar a partir del libro de códigos V1 o V4. [7] [8] Al codificar a partir del libro de códigos V1, se escribe un índice de libro de códigos por bloque de 4×4 en el flujo de bits, y la entrada de libro de códigos 2×2 correspondiente se amplía a 4×4 píxeles. [7 ] [ 8] Al codificar a partir del libro de códigos V4, se escriben cuatro índices de libro de códigos por bloque de 4×4 en el flujo de bits, uno para cada subbloque de 2×2. [7] [8] Como alternativa a la codificación a partir del libro de códigos V1 o V4, se puede omitir un bloque de 4x4 en una imagen intercodificada. Un bloque omitido se copia sin cambios del cuadro anterior en un modo de reposición condicional. [7] [8] La velocidad de datos se puede controlar ajustando la velocidad de los cuadros clave y ajustando el error permitido en cada bloque.