61
При кодировании полей допускается также формирование прогнозов типа «Компенсация движения 16x8». В этом случае кодируемый макроблок поля разбивается на две части — верхнюю и нижнюю половины. Для каждой из частей производится формирование прогнозов из ранее переданных полей. На рисунке А.12 приведен пример, в котором прогноз верхней части получен из нечетного поля, а прогноз нижней части — из четного.
Рисунок А.12 — Формирование прогноза типа «компенсация движения 16x8» для P-поля
А.5.3 Кодирование макроблоков с предсказанием вперед
Кодируемый P-макроблок и его наилучший прогноз используются для вычисления ошибок предсказания:
DPY(x, y) = Y1(x, y) - pY(x, y),
ÜPCR{x', y') = C1 Rx' y') - pCR(x' y'),
DPCB(x', y') = C1ß(x' y') - pCß(x' y').
Вычисленные ошибки предсказания округляются до целых и вводятся в диапазон [-256, +255].
Последующие процедуры кодирования во многом схожи с процедурами, применяемыми при внутрикадро- вом кодировании макроблоков. Основные особенности и отличия состоят в следующем:
- Прямому (полевому или кадровому) дискретному косинусному преобразованию подвергаются массивы (блоки) ошибок предсказания DPY(x, y), DPCR(x', y') и DPCB(x', y'). Максимальные абсолютные значения вычисляемых трансформант S(m, n) могут быть получены из таблицы А.1 умножением приведенных в ней значений на дробь 256/i27.
- Для блоков ошибок предсказания не делается различий между постоянной составляющей S(0,0) и остальными трансформантами. Квантование всех трансформант осуществляется единообразно в соответствии с формулой
S^m, n) = 16 S(m, n) Q-1/ M(m, n).
Если коэффициенты M(m, n) в потоке не передаются, то они одинаковы и по умолчанию равны 16.
- В результате сканирования блока формируется линейная последовательность, состоящая из 64 квантованных трансформант.
- Групповое RLE-кодирование трансформант выполняется с использованием стандартизованных таблиц B.14 и B.16 ИСО/МЭК 13818-2 / МСЭ-Т H.262 [2].
Успешный прогноз обеспечивает высокую вероятность того, что в одном или более блоках P-макроблока все квантованные трансформанты S^m, n) равны нулю. В этом случае в заголовке P-макроблока кодом переменной длины передается таблица маскирования блоков (coded block pattern). Если нулевых блоков нет, то таблица маскирования отсутствует.
P-макроблок, у которого все блоки и значения векторов движения равны нулю, считается пропущенным (кроме первого и последнего макроблока в слайсе). Пропущенные макроблоки в элементарный поток не включаются.
Структура фрагмента элементарного видеопотока, формируемого в результате кодирования P-макроблока, приведена на рисунке А.13.
Рисунок А.13 — Результат кодирования P-макроблока