Как система цветов UYVY (YUV 4:2:2, Y422, UYNV, HDYC) обрабатывает нечетные числа пикселей?

Согласно ссылке, которую я читал, некоторые плоские форматы YUV (например, UYVY) используют макропиксели, которые содержат данные для нескольких пикселей - в частности, в случае UYVY, значения яркости на пиксель и выборки U и V для каждого другого горизонтального пикселя,

То, что я не вижу описанным, это то, какое значение следует использовать для видео, когда размеры не делятся на 2. Например, если ширина кадра в пикселях нечетная, последний макропиксель в каждой строке переносится на следующую строку, или следует ли считать, что второе значение Y игнорируется во время декодирования? Есть ли стандарт для того, что это значение Y должно быть установлено (например, ноль)?

Если макропиксели действительно переносятся, то что должно быть в случае конечного макропикселя с размерами кадров с нечетным числом пикселей, например, 51x51?

1 ответ

Я спросил об этом на #ffmpeg на Freenode IRC, и добрый человек по имени iive дал мне несколько ответов.

Каждая строка обрабатывается отдельно, поэтому в макропикселе нет переноса значений из одной строки в другую. В случае нечетной ширины кадра значение Y из последнего пикселя дублируется. Итак, если у вас есть пиксель со значениями YUV [123, 45, 67] в конце строки макропиксель UYVY будет иметь значения [45, 123, 67, 123],

Также может быть заполнение в конце данных каждой строки, чтобы выровнять каждую линию кадра по границе, так что инструкции SIMD должны работать только с выровненными данными. Это зависит от того, какой именно формат вы используете.

Другие вопросы по тегам