0

В соответствии с reference, которые я читал, некоторые плоские форматы YUV (например, UYVY) используют макропиксели, которые содержат данные для нескольких пикселей - в частности, в случае UYVY, значения яркости на пиксель и образцы U и V для каждого другого горизонтальный пиксель.Как цветная система UYVY (YUV 4: 2: 2, Y422, UYNV, HDYC) обрабатывает нечетные пиксели?

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

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

ответ

2

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

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

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