Контекстно-адаптивное двоичное арифметическое кодирование (КАДАК; CABAC от англ. Context-adaptive binary arithmetic coding) — форма энтропийного (статистического) кодирования, которое используется в видеокодеках стандарта H.264/MPEG-4 AVC. Используется техника сжатия без потерь для получения более высокой степени сжатия, чем большинство алгоритмов, которые доступны в кодировании видео.

Является одним из основных преимуществ кодека H.264/AVC. CABAC поддерживается только в основном (Main) и более высоких профилях кодека, а также требует затрачивать достаточно большое количество рабочих циклов процессора в чисто программной реализации, как с точки зрения циклов, так и с точки зрения мощности системы для декодирования (просмотра) видео, закодированного с использованием этой технологии. Также, труден в векторизации и распараллеливании. Стоит отметить, что существует контекстно-адаптивное неравномерное кодирование (англ. Context-adaptive variable-length coding, CAVLC), более низкоэффективная схема статистического кодирования, которая используется для повышения производительности на более слабых системах декодирования.

Алгоритм править

КАДАК имеет несколько режимов предсказания для разного контекста. Сначала конвертируются все небинарные символы в бинарные; далее, для каждого бита кодек выбирает, которую модель предсказания использовать; после этого он использует полученную от ближайших элементов информацию для оптимизации степени возможности предсказаний. Арифметическое кодирование является финальным шагом сжатия данных.

См. также править

Литература править

  • H.264/MPEG-4 Part 10 White Paper, руководство для MPEG CABAC, октябрь 2002 (англ.)

Ссылки править