Swscale цветового пространства конвертировать чересстрочные кадры? - PullRequest
3 голосов
/ 13 марта 2012

Я пишу приложение, которое экспортирует захваченное мной видео (PAL SDI). Оригинальное цветовое пространство - это уйвы (4: 2: 2). Когда я конвертирую кадры со шкалой swscale в 4: 2: 0 и кодирую с помощью avcodec, я получаю цветовое кровотечение между полями. Я подозреваю, что это из-за того, что swscale не знает о чересстрочной развертке кадра. Вот пример части боб-деинтерлейсированного кадра из моего экспортированного видео с одним из полей:

color bleeding between fields

Как видите, цвет вытекает из другого поля. Как мне избежать этого? Я посмотрел на библиотеку и попытался найти в swscale что-нибудь, что говорит об уважении полей, но я ничего не нашел.

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

Благодарен за любую помощь в этом!

С уважением Карл

Редактировать: По сути, я хочу вывести PAL DV. Я подозреваю, что swscale может каким-то образом создавать этот тип чересстрочного 420, так как ffmpeg (приложение) может справиться с этим (я думаю).

1 Ответ

3 голосов
/ 29 мая 2012

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

Я наконец получил ответ из списка пользователей libav. Пример кода можно найти в MPlayer / libmpcodecs / vf_scale.c и libavfilter / vf_scale.c

...