FFMPEG swscale 1920x1080 UYVY422 до нечетной ширины дает неправильные цвета

Я использую libswscale (из FFMPEG) для масштабирования изображения 1920x1080 UYVY422 до размера, который определяется программно, в зависимости от того, к какому размеру окна мы рендерим.

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

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

1920x1080 scaled to 867x488
doesn't work

1920x1080 scaled to 1016x572
works

19280x1080 scaled to 975x548
doesn't work

19280x1080 scaled to 962x541
works

С тех пор я обновил свой код, чтобы всегда масштабировать до четной ширины.

if ((targetSize.cx % 2) != 0)
{
    targetSize.cx = targetSize.cx - 1;
}

Это работает с этим кодом. Тем не менее, я до сих пор не понимаю, почему это происходит. Если я масштабирую изображение с оригинальной и нечетной шириной, должен ли я убедиться, что моя ширина также нечетная? Я хотел бы понять это.

0 ответов

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