videomixer2: Add transparent background option for alpha channel formats
authorLane Brooks <dirjud@gmail.com>
Wed, 19 Jan 2011 19:07:17 +0000 (12:07 -0700)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 1 Apr 2011 09:35:26 +0000 (11:35 +0200)
commit69b5aedc5878fb399e4ac10c743a64c142b238f6
tree771caa0b2eb680e5f5bf4bc007673d99e5e33a10
parent176b8ffbfffb39d0d340e3e5f19f1081884523d7
videomixer2: Add transparent background option for alpha channel formats

This option allows the videomixer2 element to output a valid alpha
channel when the inputs contain a valid alpha channel. This allows
mixing to occur in multiple stages serially.

The following pipeline shows an example of such a pipeline:

gst-launch videotestsrc background-color=0x000000 pattern=ball ! video/x-raw-yuv,format=\(fourcc\)AYUV ! videomixer2 background=transparent name=mix1 ! videomixer2 name=mix2 ! ffmpegcolorspace ! autovideosink  videotestsrc ! video/x-raw-yuv,format=\(fourcc\)AYUV ! mix2.

The first videotestsrc in this pipeline creates a moving ball on a
transparent background. It is then passed to the first videomixer2.
Previously, this videomixer2 would have forced the alpha channel to
1.0 and given a background of checker, black, or white to the
stream. With this patch, however, you can now specify the background
as transparent, and the alpha channel of the input will be
preserved. This allows for further mixing downstream, as is shown in
the above pipeline where the a second videomixer2 is used to mix in a
background of an smpte videotestsrc. So the result is a ball hovering
over the smpte test source. This could, of course, have been
accomplished with a single mixer element, but staged mixing is useful
when it is not convenient to mix all video at once (e.g. a pipeline
where a foreground and background bin exist and are mixed at the final
output, but the foreground bin needs an internal mixer to create
transitions between clips).

Fixes bug #639994.
gst/videomixer/blend.c
gst/videomixer/blend.h
gst/videomixer/blendorc.orc
gst/videomixer/videomixer2.c
gst/videomixer/videomixer2.h