Короткое определение

Финальный lossless-этап – превращает поток квантованных коэффициентов и syntax-элементов в наименьшую возможную последовательность бит.

Entropy coding – финальное lossless-сжатие, которое любой видеокодек применяет прямо перед записью bitstream на диск. После всех хитрых трюков – prediction, motion compensation, DCT, квантизации – у энкодера остаётся длинный поток чисел. Entropy coding берёт этот поток и упаковывает его в кратчайшую возможную последовательность бит без дальнейшей потери информации. Это чистая компрессия данных: та же математика, что в zip-файлах, применённая к выходу энкодера.

Принцип – тот, что доказал Шеннон в 1948 году: если символ встречается часто, дай ему короткий код; если редко – более длинный. Поэтому поток, где 0 встречается в 80 % случаев, в среднем кодируется значительно меньше чем одним битом на символ. Современные кодеки идут дальше с context-adaptive entropy coding (`cabac` в H.264 и HEVC, `cavlc` в раннем H.264, daala_bool в AV1) – они обновляют оценки вероятностей на лету по мере прохода по кадру, и длины кодов становятся ещё ближе к теоретическому оптимуму.

Практический эффект: entropy coding в одиночку отвечает примерно за 10–20 % эффективности сжатия современного кодека. На качество он не влияет вовсе – будучи lossless, исходные числа всегда можно восстановить. Но цена – сложность декодера: чем продвинутее entropy coder, тем больше вычислений нужно декодеру; поэтому маломощные устройства (старые телефоны, дверные видеоглазки) иногда используют более простые entropy-кодеры. Для продуктовых решений это невидимая «сантехника» – её не настраивают вручную, но именно она часть причины, по которой каждое новое поколение кодека требует больше кремния для декодирования.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.