Pergunta

Eu estou escrevendo um aplicativo que exporta vídeo que eu capturei (PAL SDI). O espaço original de cores é UYVY (4: 2: 2). Quando eu converso os quadros com Swscale para 4: 2: 0 e codificam com o avcodec, obtenho sangramento de cor entre os campos. Eu suspeito que isso é do swscale não estar ciente do quadro sendo entrelaçado. Aqui está um exemplo de uma parte de uma estrutura Bob-Deinterlaced do meu vídeo exportado mostrando um dos campos:

cor sangramento entre os campos

Como você pode ver, a cor sangra do outro campo. Como faço para evitar que isso aconteça? Eu olhei para a biblioteca e tentei encontrar qualquer coisa no Swscale que diz para respeitar os campos, mas eu não encontrei nada.

Eu armazenei cada campo em buffers separados, para que eu possa processar os campos individualmente antes da mão, se isso ajudaria.

Grato por qualquer ajuda sobre isso!

Cumprimentos Carl

Editar: Basicamente, o que eu quero é produzir PAL DV. Eu suspeito que o Swscale é capaz de de alguma forma produzir este tipo de 420 entrelaçado, já que o FFMPEG (o aplicativo) pode lidar com isso (eu acho).

Foi útil?

Solução

A resposta é fazer duas operações de swscale, uma para cada campo.Você pode enganar o Swscale para usar o mesmo buffer especificando metade da altura com o duplo passo e, em seguida, compensando a segunda operação por uma linha.

Eu finalmente recebi a resposta da lista do libav.O código de exemplo pode ser encontrado em Mplayer / libmpcodecs / vf_scale.c e libavfilter / vf_scale.c

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top