[FFmpeg-devel] [PATCH] Support alphablending in the overlay filter

Vitor Sessak vitor1001
Mon May 18 18:50:47 CEST 2009


Hi and sorry for the delay.

Martin Storsj? wrote:
> Hi,
> 
> The attached patch is an attempt at supporting alphablending of the 
> overlaid video/image in the overlay filter.
> 
> First, a third positional parameter is added to the filter, for enabling 
> blending. This should probably be rewritten using av_set_options_string as 
> a named parameter, e.g. blend=1.
> 
> Originally, the overlay filter gets one single AVFilterFormats list which 
> is assigned to all input and output pads (by 
> avfilter_default_query_formats). When configuring the formats of the 
> links, the main input trims this format list to the one format that the 
> main input has, forcing the second input to use the same format. Since the 
> main input probably won't contain alpha (while the second input will do, 
> in order to make any sense to do blending), the formats of these two 
> inputs need to be separate. To be able to do the blending in any sensible 
> way, the formats of the both inputs still need to be the same, except for 
> the alpha channel.

Yes, I have no idea of how to accept both YUVA+YUV or YUVA+YUVA for 
input for YUV output with current colorspace negotiation framework. 
Actually, I've already expected this problem to show up at some point 
(see 
https://lists.mplayerhq.hu/pipermail/ffmpeg-soc/2007-November/001812.html 
), but indeed a different system would be much more complicated to 
handle. Any ideas are welcome...

> In this initial attempt, the query_formats function forces the inputs to 
> PIX_FMT_YUV420P and PIX_FMT_YUVA420P respectively.
> 
> I didn't find any generic function for doing an alphablended copy of one 
> picture on top of another, so a quick n dirty implementation is included 
> within vf_overlay.c. I suppose this should be moved to some generic place 
> within avcodec?

I think C?dric's patch is a good starting point. Also, I think such 
function belongs to libavfilter and not libavcodec (blending is 
filtering IMHO).

-Vitor



More information about the ffmpeg-devel mailing list