compositor
Compositor can accept AYUV, VUYA, ARGB and BGRA video streams. For each of the requested sink pads it will compare the incoming geometry and framerate to define the output parameters. Indeed output video frames will have the geometry of the biggest incoming video stream and the framerate of the fastest incoming one.
Compositor will do colorspace conversion.
Individual parameters for each input stream can be configured on the GstCompositorPad:
- "xpos": The x-coordinate position of the top-left corner of the picture (#gint)
- "ypos": The y-coordinate position of the top-left corner of the picture (#gint)
- "width": The width of the picture; the input will be scaled if necessary (#gint)
- "height": The height of the picture; the input will be scaled if necessary (#gint)
- "alpha": The transparency of the picture; between 0.0 and 1.0. The blending is a simple copy when fully-transparent (0.0) and fully-opaque (1.0). (#gdouble)
- "zorder": The z-order position of the picture in the composition (#guint)
Sample pipelines
gst-launch-1.0 \
videotestsrc pattern=1 ! \
video/x-raw,format=AYUV,framerate=\(fraction\)10/1,width=100,height=100 ! \
videobox border-alpha=0 top=-70 bottom=-70 right=-220 ! \
compositor name=comp sink_0::alpha=0.7 sink_1::alpha=0.5 ! \
videoconvert ! xvimagesink \
videotestsrc ! \
video/x-raw,format=AYUV,framerate=\(fraction\)5/1,width=320,height=240 ! comp.
A pipeline to demonstrate compositor used together with videobox. This should show a 320x240 pixels video test source with some transparency showing the background checker pattern. Another video test source with just the snow pattern of 100x100 pixels is overlaid on top of the first one on the left vertically centered with a small transparency showing the first video test source behind and the checker pattern under it. Note that the framerate of the output video is 10 frames per second.
gst-launch-1.0 videotestsrc pattern=1 ! \
video/x-raw, framerate=\(fraction\)10/1, width=100, height=100 ! \
compositor name=comp ! videoconvert ! ximagesink \
videotestsrc ! \
video/x-raw, framerate=\(fraction\)5/1, width=320, height=240 ! comp.
A pipeline to demonstrate bgra comping. (This does not demonstrate alpha blending).
gst-launch-1.0 videotestsrc pattern=1 ! \
video/x-raw,format =I420, framerate=\(fraction\)10/1, width=100, height=100 ! \
compositor name=comp ! videoconvert ! ximagesink \
videotestsrc ! \
video/x-raw,format=I420, framerate=\(fraction\)5/1, width=320, height=240 ! comp.
A pipeline to test I420
gst-launch-1.0 compositor name=comp sink_1::alpha=0.5 sink_1::xpos=50 sink_1::ypos=50 ! \
videoconvert ! ximagesink \
videotestsrc pattern=snow timestamp-offset=3000000000 ! \
"video/x-raw,format=AYUV,width=640,height=480,framerate=(fraction)30/1" ! \
timeoverlay ! queue2 ! comp. \
videotestsrc pattern=smpte ! \
"video/x-raw,format=AYUV,width=800,height=600,framerate=(fraction)10/1" ! \
timeoverlay ! queue2 ! comp.
A pipeline to demonstrate synchronized compositing (the second stream starts after 3 seconds)
Hierarchy
GObject ╰──GInitiallyUnowned ╰──GstObject ╰──GstElement ╰──GstAggregator ╰──GstVideoAggregator ╰──compositor
Implemented interfaces
Factory details
Authors: – Wim Taymans
Classification: – Filter/Editor/Video/Compositor
Rank – primary + 1
Plugin – compositor
Package – GStreamer Base Plug-ins
Pad Templates
sink_%u
video/x-raw:
format: { AYUV64, ARGB64, GBRA_12LE, GBRA_12BE, Y412_LE, Y412_BE, A444_10LE, GBRA_10LE, A444_10BE, GBRA_10BE, A422_10LE, A422_10BE, A420_10LE, A420_10BE, RGB10A2_LE, BGR10A2_LE, Y410, GBRA, ABGR, VUYA, BGRA, AYUV, ARGB, RGBA, A420, Y444_16LE, Y444_16BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, I422_10LE, I422_10BE, NV16_10LE32, Y210, v210, UYVP, I420_10LE, I420_10BE, P010_10LE, NV12_10LE32, NV12_10LE40, P010_10BE, Y444, GBR, NV24, xBGR, BGRx, xRGB, RGBx, BGR, IYU2, v308, RGB, Y42B, NV61, NV16, VYUY, UYVY, YVYU, YUY2, I420, YV12, NV21, NV12, NV12_64Z32, NV12_4L4, NV12_32L32, Y41B, IYU1, YVU9, YUV9, RGB16, BGR16, RGB15, BGR15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE32, GRAY8 }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
src
video/x-raw:
format: { AYUV, VUYA, BGRA, ARGB, RGBA, ABGR, Y444, Y42B, YUY2, UYVY, YVYU, I420, YV12, NV12, NV21, Y41B, RGB, BGR, xRGB, xBGR, RGBx, BGRx }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
Properties
background
“background” GstCompositorBackground *
Background type
Flags : Read / Write
Default value : checker (0)
zero-size-is-unscaled
“zero-size-is-unscaled” gboolean
Whether a pad with height or width 0 should be left unscaled in that dimension, or simply not composited in. Setting it to FALSE might be useful when animating those properties.
Flags : Read / Write
Default value : true
Named constants
GstCompositorBackground
The different backgrounds compositor can blend over.
Members
checker
(0) – Checker pattern
black
(1) – Black
white
(2) – White
transparent
(3) – Transparent Background to enable further compositing
GstCompositorPad
GObject ╰──GInitiallyUnowned ╰──GstObject ╰──GstPad ╰──GstAggregatorPad ╰──GstVideoAggregatorPad ╰──GstVideoAggregatorConvertPad ╰──GstCompositorPad
The opaque GstCompositorPad structure.
Properties
alpha
“alpha” gdouble
Alpha of the picture
Flags : Read / Write
Default value : 1
height
“height” gint
Height of the picture
Flags : Read / Write
Default value : -1
operator
“operator” GstCompositorOperator *
Blending operator to use for blending this pad over the previous ones
Flags : Read / Write
Default value : over (1)
width
“width” gint
Width of the picture
Flags : Read / Write
Default value : -1
xpos
“xpos” gint
X Position of the picture
Flags : Read / Write
Default value : 0
ypos
“ypos” gint
Y Position of the picture
Flags : Read / Write
Default value : 0
Named constants
GstCompositorOperator
The different blending operators that can be used by compositor.
See https://www.cairographics.org/operators/ for some explanation and visualizations.
Members
source
(0) – Source
over
(1) – Over
add
(2) – Add
The results of the search are