Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше
Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике
6.2. Кодек Н.264
Как
и в предыдущих стандартах, рекомендация Н.264 не дает явного описания «кодека»
(т.е. пары КОдер/ДЕКодер). Вместо этого делается описание синтаксиса
закодированного битового видеопотока вместе с методом его декодирования. По
всей видимости, на практике «правильные» кодер и декодер будут состоять из
функциональных элементов, показанных на рис. 6.1 и 6.2. За исключением
деблокирующего фильтра большинство функциональных элементов (прогноз,
преобразование, квантование, энтропийное кодирование) присутствовали и в
предыдущих стандартах (MPEG-1, MPEG-2, MPEG-4, Н.261, Н.263).
Однако в Н.264 произошла существенная переработка всех функциональных
элементов.
Рис. 6.1. Кодер Н.264.
Рис. 6.2. Декодер Н.264.
Кодер (рис. 6.1)
имеет два направления потоков данных: «прямое» (слева направо) и
«реконструированное» (справа налево). Поток данных в декодере (рис. 6.2)
изображен в направлении справа налево, для того чтобы подчеркнуть его схожесть
с потоком кодера. Перед детальным объяснением стандарта Н.264 мы приведем основные
шаги кодирования и декодирования кадра (или полукадра) видеопоследовательности.
Здесь мы сознательно упрощаем описание для лучшего обзора ключевых этапов
кодирования и декодирования. Термин «блок» используется для обозначения части
макроблока или части подмакроблока (при кодировании в моде inter) сэмплов яркости
и связанных с ними компонентов хроматичноcти (при кодировании
в моде intra).
Кодер (прямое
направление потока данных). Входной кадр или полукадр обрабатывается
единицами макроблоков. Каждый макроблок кодируется в моде intra или inter, и для каждого
блока макроблока формируется прогноз PRED (помеченный на
рис. 6.1 буквой Р) на основе реконструкции сэмплов снимка. В моде intra прогноз PRED формируется с
помощью сэмплов текущего слоя, ранее закодированных, декодированных и
реконструированных ( на рис. 6.1:
заметим, что при создании PRED используются
нефильтрованные сэмплы). В моде inter прогноз PRED строится с помощью
компенсации движения по одному или двум ссылочным кадрам, выбранным из списка 0
и/или из списка 1 ссылочных снимков. На рисунках ссылочный кадр показан в виде
ранее закодированного снимка , а ссылочный прогноз для каждой части
макроблока (в моде inter) может быть взят из прошлых или будущих снимков (в
порядке их отображения на дисплее), которые уже были закодированы ранее,
реконструированы и отфильтрованы.
Прогноз PRED вычитается из
текущего блока, и их разность (которую мы будем для удобства называть остатком)
обозначается . Далее к блоку применяется
соответствующее преобразование, результат квантуется, и создается блок . Полученное множество
квантованных коэффициентов переупорядочивается и кодируется энтропийным
кодером. Выходные коэффициенты энтропийного кодера вместе с некоторой
дополнительной информацией, необходимой при декодировании каждого блока
данного макроблока (мода прогноза, параметры квантователя, информация о
векторах движения и т.п.), записываются в битовый поток, который проходит
через «абстрактный сетевой модуль» NAL (Network Abstraction Layer) для дальнейшей
передачи или хранения.
Кодер
(направление реконструкции потока данных). Каждый
закодированный и переданный блок макроблока декодируется (реконструируется)
самим кодером для получения ссылочного материала последующих прогнозов. При
этом коэффициенты деквантуются () и к результату
применяется обратное преобразование () для получения разностного
(остаточного) блока . Прогнозный блок PRED складывается с
блоком для образования
реконструированного блока , (декодированная версия исходного блока, и означает, что он
не фильтрован). Затем применяется фильтр для погашения эффекта блочной
дисторсии (искажения). В итоге реконструированный ссылочный кадр строится по
ряду блоков .
Декодер. Декодер получает
сжатый битовый поток из NAL, и сначала применяет энтропийный декодер
для получения элементов данных, из которых формируются множества квантованных
коэффициентов .
Эти коэффициенты деквантуются, к результату применяется обратное
преобразование, и получается блок (идентичный блоку кодера). Используя информационный
заголовок, извлеченный из битового потока, декодер создает блок-прогноз PRED, который в
точности совпадает с исходным блоком PRED кодера. Этот блок
складывается с для получения
блока , который затем фильтруется
для формирования декодированного блока .