Из Википедии, бесплатной энциклопедии
  (Перенаправлено из CAVLC )
Перейти к навигации Перейти к поиску

Контекстно-адаптивное кодирование переменной длины ( CAVLC ) - это форма энтропийного кодирования, используемая при кодировании видео H.264 / MPEG-4 AVC . Это метод сжатия без потерь , как и почти все энтропийные кодеры. В H.264 / MPEG-4 AVC он используется для кодирования остаточных зигзагообразных блоков коэффициентов преобразования. Это альтернатива контекстному адаптивному двоичному арифметическому кодированию (CABAC). CAVLC требует значительно меньше обработки для декодирования, чем CABAC, хотя он не так эффективно сжимает данные. CAVLC поддерживается во всех профилях H.264, в отличие от CABAC, который не поддерживается в базовых и расширенных профилях.

CAVLC используется для кодирования остаточных, зигзагообразно упорядоченных блоков коэффициентов преобразования 4x4 (и 2x2). CAVLC предназначен для использования нескольких характеристик квантованных блоков 4x4:

  • После предсказания, преобразования и квантования блоки обычно разрежены (содержат в основном нули).
  • Наивысшие ненулевые коэффициенты после зигзагообразного сканирования часто представляют собой последовательности +/- 1. CAVLC компактно сигнализирует количество высокочастотных коэффициентов +/- 1.
  • Количество ненулевых коэффициентов в соседних блоках коррелируется. Количество коэффициентов кодируется с помощью справочной таблицы; выбор справочной таблицы зависит от количества ненулевых коэффициентов в соседних блоках.
  • Уровень (величина) ненулевых коэффициентов имеет тенденцию быть выше в начале переупорядоченного массива (около коэффициента постоянного тока) и ниже по направлению к более высоким частотам. CAVLC использует это преимущество, адаптируя выбор таблицы поиска VLC для параметра «уровень» в зависимости от недавно закодированных величин уровня.

Закодированные элементы [ править ]

Параметры, которые необходимо закодировать и передать, включают следующую таблицу:

Примеры CAVLC [ править ]

Во всех следующих примерах мы предполагаем, что таблица Num-VLC0 используется для кодирования coeff_token.

4x4CAVLC.svg

0, 3, 0, 1, -1, -1, 0, 1, 0… TotalCoeffs = 5 (индексируется от самой высокой частоты [4] до самой низкой частоты [0])

TotalZeros = 3

T1s = 3 (на самом деле есть 4 замыкающих, но только 3 могут быть закодированы как «особый случай»)

Кодировка:

Переданный битовый поток для этого блока - 000010001110010111101101.

Декодирование: выходной массив «строится» из декодированных значений, как показано ниже. Значения, добавляемые в выходной массив на каждом этапе, подчеркнуты.

Декодер вставил два нуля; однако TotalZeros равно 3, и поэтому перед самым низким коэффициентом вставляется еще 1 ноль, в результате чего получается окончательный выходной массив: 0, 3, 0, 1, −1, −1, 0, 1

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

Внешние ссылки [ править ]