Jump to content

Контекстно-адаптивное кодирование переменной длины

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

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

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

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

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

Параметры Описание
Тип макроблока Метод прогнозирования для каждого кодированного макроблока
Шаблон кодированного блока Указывает, какие блоки внутри макроблока содержат кодированные коэффициенты.
Система отсчета параметров квантователя Передается как значение разницы от предыдущего значения QP.
Индекс опорного кадра Определить опорные кадры для взаимного предсказания
Вектор движения Передается как разница (mvd) от прогнозируемого вектора движения.
Остаточные данные Данные коэффициентов для каждого блока 4×4 или 2×2.

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

Элемент Ценить Код
coeff_token TotalCoeffs=5, T1s=3 0000100
Знак Т1 (4) + 0
Знак Т1 (3) - 1
Знак Т1 (2) - 1
Уровень (1) +1 (используйте Level_VLC0) 1
Уровень (0) +3 (используйте Level_VLC1) 0010
ВсегоНулей 3 111
run_before(4) НольЛефт=3; run_before=1 10
run_before(3) НольЛефт=2; run_before=0 1
run_before(2) НольЛефт=2; run_before=0 1
run_before(1) НольЛефт=2; run_before=1 01
run_before (0) НольЛефт=1; run_before=1 Код не требуется; последний коэффициент.
Код Элемент Ценить Выходной массив
0000100 coeff_token Всего коэффициентов=5, T1s=3 Пустой
0 Знак Т1 + 1
1 Знак Т1 - −1 , 1
1 Знак Т1 - −1 , −1, 1
1 Уровень +1 1 , −1, −1, 1
0010 Уровень +3 3 , 1, −1, −1, 1
111 ВсегоНулей 3 3, 1, −1, −1, 1
10 run_before 1 3, 1, −1, −1, 0 , 1
1 run_before 0 3, 1, −1, −1, 0, 1
1 run_before 0 3, 1, −1, −1, 0, 1
01 run_before 1 3, 0 , 1, −1, −1, 0, 1

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

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

ВсегоНулей = 3

T1s = 3 (на самом деле их 4 в конце, но только 3 можно закодировать как «специальные»случай")

Кодировка:

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

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

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

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

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

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


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a2ca27c67e25ebd43bb1c14d5c124801__1712936100
URL1:https://arc.ask3.ru/arc/aa/a2/01/a2ca27c67e25ebd43bb1c14d5c124801.html
Заголовок, (Title) документа по адресу, URL1:
Context-adaptive variable-length coding - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)