Введение

Наиболее широко используемый стандарт сжатия видео

Advanced Video Coding (AVC), также известный как H.264 или MPEG-4 Part 10, — это стандарт сжатия видео, основанный на блочном, компенсационном кодировании с учетом движения. На данный момент это самый распространенный формат для записи, сжатия и распространения видеоконтента, используемый 91% разработчиков видеоиндустрии по состоянию на сентябрь 2019 года. Он поддерживает максимальное разрешение 8K UHD. Коммерческое использование запатентованных технологий H.264 требует выплаты лицензионных отчислений компании Via и другим владельцам патентов. MPEG LA разрешила бесплатное использование технологий H.264 для потокового интернет-видео, доступного конечным пользователям бесплатно, а Cisco Systems выплатила лицензионные отчисления MPEG LA от имени пользователей бинарных файлов для своего кодировщика H.264 с открытым исходным кодом openH264.

Именование

Название H.264 соответствует номенклатуре ITU-T, где рекомендациям присваивается буква, обозначающая их серию, и номер рекомендации в этой серии. H.264 входит в состав "Рекомендаций серии H: аудиовизуальные и мультимедийные системы". H.264 далее классифицируется как "H.200–H.499: Инфраструктура аудиовизуальных служб" и "H.260–H.279: Кодирование движущегося видео". Название MPEG-4 AVC связано с номенклатурой ISO/IEC MPEG, где стандарт является частью 10 ISO/IEC 14496, представляющего собой набор стандартов, известных как MPEG-4. Стандарт был разработан совместно в рамках партнерства VCEG и MPEG после предварительной разработки в ITU-T в качестве проекта VCEG под названием H.26L. Поэтому стандарт часто называют H.264/AVC, AVC/H.264, H.264/MPEG-4 AVC или MPEG-4/H.264 AVC, чтобы подчеркнуть их общую историю. Иногда его также называют "кодеком JVT", ссылаясь на организацию Joint Video Team (JVT), которая его разработала. (Подобные партнерства и множественные названия не являются редкостью. Например, стандарт сжатия видео, известный как MPEG-2, также возник в результате сотрудничества между MPEG и ITU-T, где видео MPEG-2 известно сообществу ITU-T как H.262.) Некоторые программные приложения (например, VLC media player) внутренне идентифицируют этот стандарт как AVC1.

Общая история

В начале 1998 года группа экспертов по видеокодированию (VCEG – ITU T SG16 Q.6) опубликовала запрос предложений по проекту H.26L, целью которого было удвоение эффективности кодирования (то есть уменьшение вдвое битрейта, необходимого для заданного уровня качества) по сравнению с любыми другими существующими стандартами видеокодирования для широкого спектра приложений. Председателем VCEG был Гэри Салливан (Microsoft, ранее PictureTel, США). Первый проект нового стандарта был принят в августе 1999 года. В 2000 году Томас Виганд (Heinrich Hertz Institute, Германия) стал сопредседателем VCEG. В декабре 2001 года VCEG и группа экспертов по движущимся изображениям (MPEG – ISO/IEC JTC 1/SC 29/WG 11) сформировали совместную видеогруппу (JVT) с целью завершения разработки стандарта видеокодирования. Официальное утверждение спецификации состоялось в марте 2003 года. Председателями JVT были (и являются) Гэри Салливан, Томас Виганд и Аджай Лютра (Motorola, США: позднее Arris, США). В июле 2004 года был завершен проект Fidelity Range Extensions (FRExt). С января 2005 года по ноябрь 2007 года JVT работала над расширением H.264/AVC в направлении масштабируемости посредством аннекса (G), названного Scalable Video Coding (SVC). В состав руководства JVT вошел Йенс Райнер Ом (RWTH Aachen University, Германия). С июля 2006 года по ноябрь 2009 года JVT работала над Multiview Video Coding (MVC), расширением H.264/AVC для 3D-телевидения и телевидения с ограниченным диапазоном свободной точки обзора. Эта работа включала разработку двух новых профилей стандарта: Multiview High Profile и Stereo High Profile. В процессе разработки стандарта были разработаны дополнительные сообщения для передачи дополнительной информации об улучшении (SEI). SEI-сообщения могут содержать различные типы данных, указывающие время отображения видеокадров или описывающие различные свойства закодированного видео, а также способы его использования или улучшения. Также определены SEI-сообщения, которые могут содержать произвольные пользовательские данные. SEI-сообщения не влияют на основной процесс декодирования, но могут указывать, как рекомендуется обрабатывать или отображать видео. Другие высокоуровневые свойства видеоконтента передаются в информации о пригодности видео для использования (VUI), например, указание цветового пространства для интерпретации видеоконтента. По мере разработки новых цветовых пространств, таких как для видео с высоким динамическим диапазоном и широкой цветовой гаммой, были добавлены дополнительные идентификаторы VUI для их обозначения.

Расширения диапазона верности и профессиональные профили

Стандартизация первой версии H.264/AVC была завершена в мае 2003 года. В первом проекте по расширению первоначального стандарта JVT разработала так называемые расширения диапазона точности (FRExt). Эти расширения обеспечили более качественное кодирование видео за счет поддержки повышенной разрядности выборки и цветовой информации с более высоким разрешением, включая структуры дискретизации, известные как Y′CBCR 4:2:2 (также известные как YUV 4:2:2) и 4:4:4. В проект FRExt также были включены другие функции, такие как добавление целочисленного дискретного косинусного преобразования (integer DCT) размером 8x8 с адаптивным переключением между преобразованиями 4x4 и 8x8, матрицы квантования, основанные на психовизуальном восприятии, задаваемые кодировщиком, эффективное межкадровое кодирование без потерь и поддержка дополнительных цветовых пространств. Проектные работы по FRExt были завершены в июле 2004 года, а работы по оформлению документации – в сентябре 2004 года. Затем были разработаны пять новых профилей (см. версию 7 ниже), предназначенных главным образом для профессиональных приложений, с добавлением поддержки расширенного цветового охвата, определением дополнительных индикаторов соотношения сторон, определением двух дополнительных типов "дополнительной информации для улучшения" (подсказка для постфильтрации и тональное отображение) и отменой одного из предыдущих профилей FRExt (профиль High 4:4:4), который, по отзывам отрасли, следовало спроектировать иначе.

Масштабируемое видео кодирование

Следующей важной функцией, добавленной в стандарт, стало масштабируемое кодирование видео (SVC). SVC, описанный в Приложении G к H.264/AVC, позволяет создавать битовые потоки, содержащие слои подбитовых потоков, которые также соответствуют стандарту, включая один такой битовый поток, известный как "базовый слой", который может быть декодирован кодеком H.264/AVC, не поддерживающим SVC. Для временной масштабируемости битового потока (то есть наличия подбитового потока с меньшей частотой временной дискретизации, чем у основного битового потока) полные блоки доступа удаляются из битового потока при создании подбитового потока. В этом случае высокоуровневый синтаксис и опорные кадры межпредсказания в битовом потоке формируются соответствующим образом. С другой стороны, для пространственной и качественной масштабируемости битового потока (то есть наличия подбитового потока с более низким пространственным разрешением/качеством, чем у основного битового потока) из битового потока удаляются NAL (Network Abstraction Layer) при создании подбитового потока. В этом случае для эффективного кодирования обычно используется межслойное предсказание (то есть предсказание сигнала с более высоким пространственным разрешением/качеством на основе данных сигнала с более низким пространственным разрешением/качеством). Разработка расширений масштабируемого кодирования видео была завершена в ноябре 2007 года.

Кодирование видео с несколькими видами

Следующей важной функцией, добавленной в стандарт, стало кодирование многоканального видео (MVC). Определенное в Приложении H к H.264/AVC, MVC позволяет создавать битовые потоки, представляющие несколько видов видеосцены. Важным примером этой функциональности является кодирование стереоскопического 3D-видео. В рамках разработки MVC были созданы два профиля: Multiview High profile поддерживает произвольное количество видов, а Stereo High profile разработан специально для стереоскопического видео с двумя видами. Расширения для кодирования многоканального видео были завершены в ноябре 2009 года.

Стереоскопическое кодирование 3D-AVC и MFC

Позже были разработаны дополнительные расширения, включавшие 3D-кодирование видео с совместным кодированием карт глубины и текстуры (обозначаемое как 3D AVC), многорезолютное кадрово-совместимое (MFC) стереоскопическое и 3D-MFC кодирование, различные дополнительные комбинации функций, а также увеличенные размеры и частоту кадров.

Версии

Версии стандарта H.264/AVC включают следующие завершенные пересмотры, исправления и изменения (датами являются окончательные даты утверждения в ITU T, в то время как окончательные даты утверждения "Международного стандарта" в ISO/IEC несколько отличаются и немного позже в большинстве случаев). Каждая версия представляет собой изменения относительно следующей нижней версии, которая интегрирована в текст. Версия 1 (издание 1): (30 мая 2003 года) Первая утвержденная версия H.264/AVC, содержащая базовый, основной и расширенный профили. Версия 2 (издание 1.1): (7 мая 2004 года) Исправление, содержащее различные незначительные исправления. Версия 3 (издание 2): (1 марта 2005 года) Основное дополнение, содержащее первую поправку, устанавливающую расширения диапазона верности (FRExt). В этой версии были добавлены профили High, High 10, High 4:2:2 и High 4:4:4. Через несколько лет профиль High стал наиболее часто используемым профилем стандарта. Версия 4 (издание 2.1): (13 сентября 2005 года) Исправление, содержащее различные незначительные исправления и добавление трех индикаторов соотношения сторон. Версия 5 (издание 2.2): (13 июня 2006 года) Изменение, состоящее в удалении предыдущего профиля High 4:4:4 (обработанного в качестве исправления в ISO/IEC). Версия 6 (издание 2.2): (13 июня 2006 года) Изменение, состоящее из незначительных дополнений, таких как расширенная поддержка цветового пространства с расширенным охватом (в комплекте с вышеупомянутыми индикаторами соотношения сторон в ISO/IEC). Версия 8 (издание 3): (22 ноября 2007 года) Основное дополнение к H.264/AVC, содержащее поправку для масштабируемого видеокодирования (SVC), включающую масштабируемые базовые, масштабируемые High и масштабируемые High Intra профили. Версия 9 (издание 3.1): (13 января 2009 года) Исправление, содержащее незначительные исправления. Версия 10 (издание 4): (16 марта 2009 года) Изменение, содержащее определение нового профиля (Constrained Baseline profile), поддерживающего только общий поднабор возможностей, представленных в различных ранее определенных профилях. Версия 11 (издание 4): (16 марта 2009 года) Основное дополнение к H.264/AVC, содержащее поправку для расширения Multiview Video Coding (MVC), включая профиль Multiview High. Версия 13 (издание 5): (9 марта 2010 года) Исправление, содержащее незначительные исправления. Версия 15 (издание 6): (29 июня 2011 года) Исправление, содержащее незначительные исправления. Версия 17 (издание 8): (13 апреля 2013 года) Изменение с дополнительными индикаторами сообщений SEI. Версия 18 (издание 8): (13 апреля 2013 года) Поправка, определяющая кодирование данных карты глубины для 3D-стереоскопического видео, включая профиль Multiview Depth High. Версия 22 (издание 9): (13 февраля 2014 года) Поправка, уточняющая возможность улучшения совместимости многоразрешенных кадров (MFC) для 3D-стереоскопического видео, профиль MFC High и незначительные исправления. Версия 24 (издание 11): (14 октября 2016 года) Поправка, определяющая дополнительные уровни возможностей декодера, поддерживающие большие размеры изображения (уровни 6, 6.1 и 6.2), сообщение SEI с метаданными зеленого цвета, сообщение SEI с альтернативной информацией о глубине и дополнительные идентификаторы кодовых точек VUI, связанные с цветом. Версия 25 (издание 12): (13 апреля 2017 года) Поправка, определяющая профиль Progressive High 10, гибридную логарифмическую гамму (HLG) и дополнительные цветовые кодовые точки VUI и сообщения SEI. Версия 26 (издание 13): (13 июня 2019 года) Поправка, определяющая дополнительные сообщения SEI для окружающей среды просмотра, информации об уровне освещенности контента, цветового объема контента, равноугольной проекции, кубической проекции, вращения сферы, упаковки по регионам, всенаправленного обзора, манифеста SEI и префикса SEI. Версия 27 (издание 14): (22 августа 2021 года) Изменение, определяющее дополнительные сообщения SEI для аннотированных регионов и информации об интервале затвора, а также различные незначительные исправления и уточнения.

Приложения

Видеоформат H.264 имеет очень широкий спектр применения, охватывающий все формы цифрового сжатого видео – от потокового вещания в интернете с низкой скоростью передачи данных до HDTV-трансляций и приложений цифрового кино с почти безпотерьным кодированием. При использовании H.264 сообщается об экономии битовой скорости на 50% и более по сравнению с MPEG-2 Частью 2. Например, заявляется, что H.264 обеспечивает такое же качество цифрового спутникового телевидения, как и современные реализации MPEG-2, при битрейте менее чем вдвое ниже. Современные реализации MPEG-2 работают примерно на скорости 3,5 Мбит/с, а H.264 – всего 1,5 Мбит/с. Компания Sony утверждает, что режим записи AVC со скоростью 9 Мбит/с обеспечивает качество изображения, эквивалентное формату HDV, который использует приблизительно 18–25 Мбит/с. Для обеспечения совместимости и беспроблемного внедрения H.264/AVC многие организации по стандартизации внесли изменения или дополнения в свои видеостандарты, чтобы пользователи могли использовать H.264/AVC. Форматы Blu-ray Disc и прекращенный формат HD DVD включают H.264/AVC High Profile в число трех обязательных форматов сжатия видео. Проект цифрового видеовещания (DVB) одобрил использование H.264/AVC для телевещания в конце 2004 года. Комитет по стандартам передовых телевизионных систем (ATSC) в США одобрил использование H.264/AVC для телевещания в июле 2008 года, хотя этот стандарт пока не используется для стационарных ATSC-трансляций в США. Он также одобрен для использования с более новым стандартом ATSC M/H (Mobile/Handheld), использующим части AVC и SVC стандарта H.264. Технология нашла применение во многих продуктах на рынках видеонаблюдения (CCTV) и систем безопасности. Многие распространенные зеркальные фотоаппараты (DSLR) используют видео H.264, упакованное в контейнеры QuickTime MOV, в качестве родного формата записи.

Форматы, полученные из других форм

AVCHD — это формат записи высокой четкости, разработанный компаниями Sony и Panasonic, использующий H.264 (соответствующий стандарту H.264, но добавляющий дополнительные функции и ограничения, специфичные для приложений). AVC Intra — это формат сжатия, использующий только внутрикадровую компрессию, разработанный компанией Panasonic. XAVC — это формат записи, разработанный Sony, использующий уровень 5.2 H.264/MPEG 4 AVC, являющийся самым высоким уровнем, поддерживаемым этим видеостандартом. XAVC может поддерживать разрешение 4K (4096 × 2160 и 3840 × 2160) со скоростью до 60 кадров в секунду (fps). Камера Sony PMW F55 может записывать XAVC в разрешении 4K при 30 fps со скоростью 300 Мбит/с и в разрешении 2K при 30 fps со скоростью 100 Мбит/с. XAVC может записывать 4K разрешение при 60 fps с цветовой субдискретизацией 4:2:2 со скоростью 600 Мбит/с.

Поддержка функций в определенных профилях

Особенности CBP BP XP MP ProHiP HiP Hi10P Hi422P Hi444PP I и P слайсы
Глубина битов (на отсчет)
Форматы цветности
Гибкий порядок макроблоков (FMO)
Произвольный порядок слайсов (ASO)
Резервные слайсы (RS)
Разделение данных
SI и SP слайсы
Перемежающаяся развертка (PicAFF, MBAFF)
B слайсы
Множественные опорные кадры
Фильтр удаления блочности в цикле
Энтропийное кодирование CAVLC
Энтропийное кодирование CABAC
4:0:0 (монохромный)
Адаптивность преобразования 8×8 против 4×4
Матрицы масштабирования квантования
Раздельное управление параметрами квантования CB и CR
Раздельное кодирование цветовых плоскостей
Прогнозируемое без потерь кодирование

Уровни

В соответствии с термином, используемым в стандарте, "уровень" – это определенный набор ограничений, указывающих на степень требуемой производительности декодера для профиля. Например, уровень поддержки в профиле определяет максимальное разрешение изображения, частоту кадров и битрейт, которые может использовать декодер. Декодер, соответствующий определенному уровню, должен быть способен декодировать все битовые потоки, закодированные для этого уровня, и все более низкие уровни. + Уровни с максимальными значениями свойств. Microsoft с выпуском Internet Explorer 9 добавила поддержку видео HTML 5, кодированного с использованием H.264. На симпозиуме Gartner/ITXpo в ноябре 2010 года генеральный директор Microsoft Стив Баллмер ответил на вопрос "HTML 5 или Silverlight?" словами: "Если вы хотите сделать что-то универсальное, нет сомнений, что мир переходит на HTML5". В январе 2011 года Google объявила о прекращении поддержки H.264 в своем браузере Chrome и поддержке Theora и WebM/VP8 для использования только открытых форматов. 18 марта 2012 года Mozilla объявила о поддержке H.264 в Firefox на мобильных устройствах в связи с широким распространением видео, закодированного с использованием H.264, и повышенной энергоэффективностью использования специализированного аппаратного декодера H.264, распространенного на таких устройствах. 20 февраля 2013 года Mozilla реализовала поддержку декодирования H.264 в Firefox для Windows 7 и более поздних версий. Эта функция использует встроенные библиотеки декодирования Windows. Firefox 35.0, выпущенный 13 января 2015 года, поддерживает H.264 на OS X 10.6 и выше. 30 октября 2013 года Роуэн Троллоп из Cisco Systems объявил, что Cisco выпустит как бинарные файлы, так и исходный код видеокодека H.264 под названием OpenH264 под лицензией Simplified BSD и будет выплачивать все роялти за его использование в MPEG LA для любых программных проектов, использующих предварительно скомпилированные бинарные файлы Cisco, тем самым делая бинарные файлы OpenH264 от Cisco бесплатными для использования. Однако любые программные проекты, использующие исходный код Cisco вместо его бинарных файлов, будут нести юридическую ответственность за выплату всех роялти в MPEG LA. Целевые архитектуры процессоров включают x86 и ARM, а целевые операционные системы – Linux, Windows XP и более поздние версии, Mac OS X и Android; iOS заметно отсутствовала в этом списке, поскольку она не позволяет приложениям загружать и устанавливать двоичные модули из Интернета. Также 30 октября 2013 года Брендан Эйх из Mozilla написал, что в будущих версиях Firefox будут использоваться бинарные файлы Cisco для добавления поддержки H.264 в Firefox в тех случаях, когда кодеки платформы недоступны. Cisco опубликовала исходный код OpenH264 9 декабря 2013 года. Хотя iOS не поддерживалась выпуском программного обеспечения Cisco 2013 года, Apple обновила свой Video Toolbox Framework с iOS 8 (выпущенной в сентябре 2014 года), чтобы обеспечить прямой доступ к аппаратному кодированию и декодированию видео H.264/AVC.

Оборудование

Поскольку кодирование и декодирование H.264 требует значительной вычислительной мощности для определенных типов арифметических операций, программные реализации, работающие на процессорах общего назначения, как правило, менее энергоэффективны. Однако новейшие четырехъядерные процессоры x86 общего назначения обладают достаточной вычислительной мощностью для выполнения кодирования SD и HD в реальном времени. Эффективность сжатия зависит от алгоритмических реализаций видео, а не от того, используется аппаратная или программная реализация. Поэтому разница между аппаратной и программной реализациями заключается главным образом в энергоэффективности, гибкости и стоимости. Для повышения энергоэффективности и уменьшения размеров аппаратного обеспечения может использоваться специализированное оборудование, либо для полного процесса кодирования или декодирования, либо для ускорения в среде, управляемой процессором. Решения на базе процессора известны своей большей гибкостью, особенно когда кодирование должно выполняться одновременно в нескольких форматах, с разными битрейтами и разрешениями (видео для нескольких экранов), а также с дополнительными функциями поддержки контейнерных форматов, продвинутыми интегрированными рекламными функциями и т.д. Программное решение на базе процессора обычно значительно упрощает балансировку нагрузки между несколькими одновременными сеансами кодирования в пределах одного и того же процессора. Процессоры Intel Core i3/i5/i7 второго поколения "Sandy Bridge", представленные на выставке CES (Consumer Electronics Show) в январе 2011 года, предлагают аппаратный full HD H.264 кодер на чипе, известный как Intel Quick Sync Video. Аппаратный кодер H.264 может быть ASIC или FPGA. ASIC-кодеры с функциональностью H.264 доступны от многих различных полупроводниковых компаний, но базовая конструкция, используемая в ASIC, обычно лицензируется у одной из нескольких компаний, таких как Chips&Media, Allegro DVT, On2 (ранее Hantro, приобретенная Google), Imagination Technologies, NGCodec. Некоторые компании предлагают как FPGA, так и ASIC. Texas Instruments производит линейку ядер ARM + DSP, которые выполняют DSP H.264 BP кодирование 1080p со скоростью 30 кадров в секунду. Это обеспечивает гибкость в отношении кодеков (которые реализованы в виде высокооптимизированного DSP-кода), при этом являясь более эффективным решением, чем программное обеспечение на обычном процессоре.