59
- диапазону [0, 575] для формата 4:2:0.
- Расчет значений координат с точностью до половины пиксела осуществляется линейной интерполяцией:
C0r(x' + 1/2, у) = 1/2C0R(x’ у) + 1/2C0R(x’ + 1, у)
C0R(x', у' + 1/2) = 1/2C0R(x', у) + 1/2C0R(x', у' + 1)
C0R(x' + 1/2, у' + 1/2) = 1/4C0R(x', у') + 1/4C0R(x' + 1, у) + 1/4C0R(x', у' + 1) + V4C0r(x' + 1, у' + 1).
А.5.1.2 Полевой прогноз
Полевой прогноз P-макроблока рассчитывается по элементам двух полевых фрагментов опорного чересстрочного кадра (рисунок А.11). Один фрагмент содержит блок 16х8 элементов яркости и два блока 8х8 (4:2:2) или 8х4 (4:2:0) элементов цветоразностных компонент. Каждый из них может принадлежать любому из полей опорного кадра, поэтому при полевом предсказании формируются два вектора движения. Один из векторов определяет фрагмент, по которому предсказаны четные строки, другой — фрагмент, по которому предсказаны нечетные строки кодируемого P-макроблока. По аналогии с кадровым предсказанием каждый из фрагментов используется для получения четырех вариантов прогноза (см. таблицы А.3, А.4). При этом применяется сквозная нумерация строк по полю. После нахождения наилучших частных прогнозов для четных и нечетных строк P-макроблока окончательный прогноз формируется их чересстрочным объединением.
Рисунок А.11 — Формирование полевого прогноза P-макроблока
В элементарном потоке для каждого из двух передаваемых векторов движения, относящихся к одному и тому же P-макроблоку, указывается поле кадра, из фрагмента которого сформирован прогноз его четных (нечетных) строк. Первым всегда передается вектор для четных строк закодированного P-макроблока. Значения вертикальных составляющих обоих векторов задаются с точностью до половины межстрочного интервала.
А.5.1.3 Прогноз двойной опоры
В чересстрочных видеопоследовательностях, не имеющих B-кадров и B-полей, может применяться специальный прогноз P-макроблока, называемый прогнозом двойной опоры (Dual prime). В прогнозе двойной опоры частные прогнозы четных и нечетных строк P-макроблока усредняются с полевыми прогнозами альтернативных опорных полей. Формирование прогноза двойной опоры может производиться в следующем порядке:
- Кодируемый и опорный кадры разделяются на поля, в каждом из которых используется сквозная нумерация строк. Кодируемый макроблок в этом случае состоит их двух субмакроблоков 16х8 — один в четном, другой в нечетном поле. Оба кодируемых субмакроблока имеют одинаковые начальные координаты (х2, у2), но в своем поле. Предварительный опорный фрагмент также состоит из двух субфрагментов 16х8, имеющих одинаковые начальные координаты (х0, у0), каждый в своем поле.
- Для кодируемого субмакроблока четного поля из опорного субфрагмента четного поля формируются 4 прогноза с соответствующими начальными координатами (x0k, у0к), где k = 1...4 — номер прогноза. Координаты прогнозов вычисляются:
х01 = х0, у01 = у0,
х02 = х0 + 1/2, у02 = у0,
x03 = x0, y03 = y0 + 1/2; x04 = x0 + 1/2, y04 = y0 + 1/2,
где добавление дробной части означает, что значения массива прогноза получены межпиксельной интерполяцией. Соответствующие значения векторов движения: dx0k = x0k - x2, dy0k = y0k - y2.
Значения векторов движения для нечетного опорного поля, находящегося во времени между четным опорным и четным кодируемым полями, интерполируются в предположении поступательности движения: dxlk = dx0k/2, dylk = (dy0k + 1)/2. Результаты округляются до половины целого, причем значения с четвертью округляются до половины, наиболее удаленной от нуля. На основе интерполированных векторов вычисляются начальные координаты кандидатов на прогноз в нечетном опорном поле: x1k = x2 + dx1k, y1k = y2 + dy1k. Поскольку движение может быть не совсем поступательным, то для каждого из кандидатов дополнительно формируются 8 уточняющих (дифференциальных) прогнозов с начальными координатами (x1k ± 1/2, y1k ± 1/2):
x1 k + 1/2, y1 k,
x1 k - 1/2, y1 k,