Стандарт сжатия видео AVC (Advanced Video Coding) был предложен группой экспертов JVT (Joint Video Team) в мае 2003 года. В то время он представлял собой революционный прорыв в технологиях сжатия видео. Новый стандарт полностью превзошел повсеместно использовавшиеся тогда стандарты MPEG-2 и MPEG-4 Part 2 (SP, ASP). По некоторым оценкам для хранения видео, сжатого по стандарту AVC, требуется в 2 раза меньший объем памяти, чем для видео, сжатого по стандарту MPEG-2 при одинаковом качестве.
Новый стандарт позволил получить видео стандартной четкости вещательного качества при потоке в 1,5 Мбит/с. Такая степень сжатия позволяет передать примерно 12 сжатых телевизионных каналов в полосе частот, прежде занятой одним аналоговым ТВ-каналом. Также, внедрение AVC позволило телеоператорам предоставлять новые услуги для видео в местах, где они до этого были не доступны и открыло возможность “упаковывать” большее количество каналов видео в узкий и дорогостоящий диапазон частот при передаче. Преимущества в эффективности кодирования, такие как хорошее качество видео при низких битрэйтах, сделали AVC безусловным лидером в системах интернет телевидения, и вывели эту индустрию на качественно новый уровень. Также AVC позволил существенно увеличить качество цифрового телевидения и сделал широкодоступным телевидение высокой четкости HDTV.
Низкая плата за лицензию от MPEG-LA также способствовала стремительному внедрению стандарта, и, к настоящему времени, H.264/AVC успешно закрепился на рынке. В 2010 году количество решений на базе AVC превзошло количество аналогичных решений на базе устаревшего стандарта MPEG-2 и увеличивалось с каждым годом вплоть до принятия следующего стандарта сжатия видео H.265/HEVC.
Основные характеристики стандарта H.264/AVC
Стандарт H.264 обеспечивает усовершенствованную технологию кодирования по методам, схожим с технологией кодирования предыдущих стандартов MPEG и ITU-T. Более высокая производительность и качество обеспечиваются новыми инструментальными средствами, которые включают в себя следующие.
Улучшенная оценка движения
Оценка движения позволяет искать субмакроблоки различного размера от 16x16 до 4x4 пикселов. Векторы движения теперь допускают точность до 1/4 пиксела для сигнала яркости, и до 1/8 пиксела для сигнала цветности. Кроме этого, существенно улучшено кодирование векторов движения; используется их предсказание.
Пространственное предсказание
H.264 выполняет внутрикадровое предсказание для intra-кодированных блоков, позволяя применить до 9 различных способов такого предсказания в зависимости от направления.
Оптимизация параметров кодирования
Классический метод кодирования предполагает принятие локально оптимальных решений на каждом этапе. Очевидно, что в таком случае результирующее решение может не оказаться оптимальным. Стандарт AVC предлагает новый алгоритм оптимизации параметров кодирования RDO (Rate distortion optimization), суть которого состоит в выборе таких параметров, использование которых наилучшим образом отразится на результате.
Модифицированное ДКП
Для преобразования остаточной информации, используется модифицированное целое дискретное косинусное преобразование (МДКП), которое предотвращает ошибки округления. Важным отличием от предыдущих стандартов являются размеры блоков для ДКП. AVC позволяет осуществлять преобразования над блоками размера 8x8 и 4x4 пиксела.
Фильтрация границ блоков
Еще одним новшеством стандарта AVC стало использование деблокирующего фильтра, основной задачей которого является сглаживание блочных артефактов на границах макроблоков в изображении. Таким образом, улучается визуальное восприятие каждого кадра и всего видеоряда в целом.
Улучшение кодирования при плавных движениях
В AVC добавлен ряд новых условий для кодирования макроблоков в режиме «skip». Фактически, в этом случае, макроблок не кодируется, а используется другой макроблок в той же позиции, но с другого кадра. Таким образом, достигается существенный выигрыш на малых битрейтах или при плавных движениях камеры, когда вся картинка движется одинаково.
Энтропийное кодирование
Стандарт обеспечивает два более производительных процесса энтропийного кодирования. Context-adaptive variable length coding (CAVLC - контекстно-адаптированное кодирование с различной длиной кодового слова) - энтропийный кодер, принцип действия которого близок к алгоритму сжатия Хаффмана. CAVLC позволяет быстро сжимать информацию, при этом обеспечивает приемлемую степень сжатия.
Context-adaptive binary arithmetic coding (CABAC - контекстно-адаптированное двоичное арифметическое кодирование) представляет собой арифметический кодер. Использование CABACа позволяет добиться эффективности сжатия близкой к максимально возможной, однако он требует существенно больше ресурсов, чем CAVLC.
5 июля 2018