Swscale цветового пространства конвертировать чересстрочные кадры?
Я пишу приложение, которое экспортирует захваченное мной видео (PAL SDI). Оригинальное цветовое пространство - это уйвы (4:2:2). Когда я конвертирую кадры со шкалой swscale в 4:2:0 и кодирую с помощью avcodec, я получаю цветовое кровотечение между полями. Я подозреваю, что это из-за того, что swscale не знает о чересстрочной развертке кадра. Вот пример части боб-деинтерлейсированного кадра из моего экспортированного видео, показывающего одно из полей:
Как видите, цвет вытекает из другого поля. Как я могу предотвратить это? Я посмотрел на библиотеку и попытался найти что-нибудь в swscale, которое говорит ей, чтобы уважать поля, но я ничего не нашел.
Я храню каждое поле в отдельных буферах, так что я могу обрабатывать поля по отдельности, прежде чем это произойдет, если это поможет.
Благодарю за любую помощь в этом!
С уважением, Карл
Изменить: В основном, я хочу, чтобы вывести PAL DV. Я подозреваю, что swscale может каким-то образом создавать этот тип чересстрочного 420, так как ffmpeg (приложение) может справиться с этим (я думаю).
1 ответ
Ответ - сделать две операции swscale, по одной для каждого поля. Вы можете обмануть swscale, чтобы использовать тот же буфер, указав половину высоты с двойным шагом, а затем сместив вторую операцию на одну строку.
Я наконец получил ответ из списка пользователей libav. Пример кода можно найти в MPlayer/libmpcodecs/vf_scale.c и libavfilter/vf_scale.c