Улучшение отношения сигнал/шум при микшировании видео изображения, сжатого по стандарту MPEG2, страница 12

macroblock_address определяет абсолютную координату текущего макроблока. Для верхнего левого макроблока этот параметр равен 0.

previous_macroblock_address определяет абсолютную координату предыдущего макроблока, не являющегося пропущенным и началом слоя.

В начале слоя previous_macroblock_address =(mb_row * mb_width)-1, где mb_column – горизонтальная координата макроблока в кадре, измеренная в единицах макроблока, mb_column = macroblock_address % mb_width, где mb_width – число макроблоков в строке кадра.

macroblock_type – параметр, показывающий тип кодирования содержимого макроблока, определенного в табл.В2..В8 стандарта.

macroblock_quant – вычисляется из macroblock_type по таблицам. Если равен 1, то quantiser_scale_code присутствует в потоке.

macroblock_motion_forward(backward) – также находится на основе macroblock_type. Этот флаг влияет на синтаксис битового потока.

macroblock_pattern - также находится на основе macroblock_type. Если равен 1, то в потоке присутствует coded_block_pattern().

macroblock_intra – также находится на основе macroblock_type. Этот флаг влияет на синтаксис битового потока.

spatial_temporal_weight_code_flag - Если равен 1, то в потоке присутствует spatial_temporal_weight_code. Если флаг равен 0, то spatial_temporal_weight_class находится по табл.В5-В7 стандарта.

spatial_temporal_weight_code – 2 бита, показывающие как пространственное и временное предсказание комбинируется. Подробнее описано в разделе 4.

frame_motion_type – 2 бита, показывающие тип предсказания в макроблоке, как показано в табл.П.2.36. Если frame_pred_frame_dct=1, то параметр frame_motion_type отсутствует. Это эквивалентно типу предсказания на основе кадра. В случае интра макроблоков при наличии флага concealment_motion_vectors frame_motion_type также отсутствует.

field_motion_type – два бита, показывающие тип предсказания в макроблоке – табл.П.2.37.

dct_type – флаг, показывающий к чему применялось ДКП у интра макроблока. Если равен 1, то к полю, если 0 – то к кадру.

motion_vector_count, а также mv_format, dmv находятся на основе field_motion_type или frame_motion_type, как показано в вышеприведенных таблицах.

motion_vertical_field_select[r][s] – флаг, показывающий какое поле будет опорным. Если флаг=0, то используется верхнее поле, 1 – нижнее.

motion_code[r][s][t] – код переменно длины, определенный в табл.В-10 стандарта.

motion_residual[r][s][t] – целое, число бит в котором на единицу меньше f_code[s][t].

dmvector[t] – код переменной длины, определенный в табл.В-11 стандарта.

coded_block_pattern_420 – переменной длины, служит для определения по табл.В-9 стандарта переменной vbp.

coded_block_pattern_1 и coded_block_pattern_2 – для 4:2:2 и 4:4:4 coded_block добавляется 2 или 6 битами. Тогда pattern_code[i] находится так:

for (i=0; i<12; I++) {

if (macroblock_intra)

pattern_code[i] = 1;

else

pattern_code[i] = 0;

}

if (macroblock_pattern) {

for (i=0; i<6; i++)

if ( cbp & (1<<(5-i)) ) pattern_code[i] = 1;

if (chroma_format == “4:2:2”)

for (i=6; i<8; i++)

if ( coded_block_pattern_1 & (1<<(7-i)) ) pattern_code[i] = 1;

if (chroma_format == “4:4:4”)

for (i=8; i<12; i++)

if ( coded_block_pattern_2 & (1<<(11-i)) ) pattern_code[i] = 1;

}

Если pattern_code[i]=1, то блок с номером i содержится в макроблоке. Возможное число блоков в макроблоке равно 6, 8, 12 – соответственно для 4:2:0, 4:2:2, 4:4:4.

1. 6 Процесс декодирования видео

Процесс декодирования описан в стандарте таким образом, что все декодеры дают на выходе численно идентичные результаты, за исключением выполнения операции обратного ДКП (ОДКП). ОДКП определено статистически, и возможны различные его реализации.

Вначале рассмотрим процесс декодирования без использования функций масштабирования видео, а потом – эти функции.

Упрощенная блок-диаграмма декодера приведена на рис.1.6.1.

Рис.1.6.1. Упрощенная блок-диаграмма декодера

Декодирование кода переменной длины

Обозначим через сс компонент цвета. Его связь с номером блока показана в табл.П.2.38. сс=0 для Y-компоненты, сс=1 для Cb и сс=2 для Cr.