QuickTime Graphics — алгоритм сжатия и декомпрессии видео с потерями ( кодек ), разработанный Apple Inc. и впервые выпущенный как часть QuickTime 1.x в начале 1990-х годов. [1] Кодек также известен под названием Apple Graphics и его FourCC SMC . [2] [1] Кодек работает с 8-битными палитровыми данными RGB . [1] Формат потока битов QuickTime Graphics был подвергнут обратному проектированию, а декодер был реализован в проектах XAnim и libavcodec . [3] [2]
Входное видео, с которым работает кодек, находится в 8-битном палитровом цветовом пространстве RGB . Сжатие достигается за счет условного пополнения и сокращения палитры с 256 цветов до адаптивной палитры из 1-16 цветов для каждого блока 4×4. Поскольку Apple Video работает в области изображений без компенсации движения, декодирование происходит намного быстрее, чем кодеки в стиле MPEG , которые используют компенсацию движения и выполняют кодирование в области преобразования . В качестве компромисса производительность сжатия Apple Graphics ниже. Сложность декодирования составляет примерно 50% от сложности кодека QuickTime Animation . [4]
Каждый кадр сегментируется на блоки 4×4 в порядке растрового сканирования. Каждый блок может быть закодирован в одном из следующих режимов кодирования: режим пропуска, один цвет, режимы 2-, 4- и 8-цветной палитры, два режима повтора и PCM.
Режим пропуска реализует условное пополнение. Если блок кодируется в режиме пропуска, содержимое блока в том же месте в предыдущем кадре копируется в текущий кадр. [1] Прогоны пропущенных блоков кодируются в схеме кодирования длины прогона , что обеспечивает высокую степень сжатия в статических областях изображения. [1]
В одноцветном режиме весь блок 4×4 окрашен одним цветом. [1] Этот режим также можно рассматривать как режим одноцветной палитры.
В режимах палитры каждый блок 4×4 кодируется палитрой из 2, 4 или 8 цветов. [1] Для выбора одного из цветов палитры используются 1, 2 или 3 бита на пиксель соответственно. Палитру можно записать в битовый поток либо явно, либо как ссылку на запись в кэше палитры. [1] Кэш палитры представляет собой набор из трех кольцевых буферов, которые хранят 256 последних использованных палитр, по одной для каждого из режимов из 2, 4 и 8 цветов. [1]
Интерпретируемое как векторное квантование , трехмерные векторы с компонентами красного, зеленого и синего цветов квантуются с использованием прямой адаптивной кодовой книги с количеством записей от 1 до 8.
Существует два различных режима повтора. [1] В режиме повтора одного блока предыдущий блок повторяется указанное количество раз. [1] В режиме повтора двух блоков предыдущие два блока повторяются указанное количество раз. [1]
В 16-цветном режиме цвет каждого пикселя в блоке явно записывается в битовый поток. [1] Этот режим не имеет потерь и эквивалентен необработанному PCM без какого-либо сжатия.