• Lane Brooks's avatar
    videomixer2: Add transparent background option for alpha channel formats · 69b5aedc
    Lane Brooks authored
    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.
    69b5aedc
videomixer2.c 60.3 KB