cairooverlay

cairooverlay renders an overlay using a application provided render function.

The full example can be found in tests/examples/cairo/cairo_overlay.c

Example code


 #include <gst/gst.h>
 #include <gst/video/video.h>

 ...

 typedef struct {
   gboolean valid;
   int width;
   int height;
 } CairoOverlayState;

 ...

 static void
 prepare_overlay (GstElement * overlay, GstCaps * caps, gpointer user_data)
 {
   CairoOverlayState *state = (CairoOverlayState *)user_data;

   gst_video_format_parse_caps (caps, NULL, &state->width, &state->height);
   state->valid = TRUE;
 }

 static void
 draw_overlay (GstElement * overlay, cairo_t * cr, guint64 timestamp,
   guint64 duration, gpointer user_data)
 {
   CairoOverlayState *s = (CairoOverlayState *)user_data;
   double scale;

   if (!s->valid)
     return;

   scale = 2*(((timestamp/(int)1e7) % 70)+30)/100.0;
   cairo_translate(cr, s->width/2, (s->height/2)-30);
   cairo_scale (cr, scale, scale);

   cairo_move_to (cr, 0, 0);
   cairo_curve_to (cr, 0,-30, -50,-30, -50,0);
   cairo_curve_to (cr, -50,30, 0,35, 0,60 );
   cairo_curve_to (cr, 0,35, 50,30, 50,0 ); *
   cairo_curve_to (cr, 50,-30, 0,-30, 0,0 );
   cairo_set_source_rgba (cr, 0.9, 0.0, 0.1, 0.7);
   cairo_fill (cr);
 }

 ...

 cairo_overlay = gst_element_factory_make ("cairooverlay", "overlay");

 g_signal_connect (cairo_overlay, "draw", G_CALLBACK (draw_overlay),
   overlay_state);
 g_signal_connect (cairo_overlay, "caps-changed",
   G_CALLBACK (prepare_overlay), overlay_state);
 ...

Hierarchy

GObject
    ╰──GInitiallyUnowned
        ╰──GstObject
            ╰──GstElement
                ╰──GstBaseTransform
                    ╰──cairooverlay

Factory details

Authors: – Jon Nordby

Classification:Filter/Editor/Video

Rank – none

Plugin – gstcairo

Package – GStreamer Good Plug-ins git

Pad Templates

sink

video/x-raw:
         format: { BGRx, BGRA, RGB16 }
          width: [ 1, 2147483647 ]
         height: [ 1, 2147483647 ]
      framerate: [ 0/1, 2147483647/1 ]

Presencealways

Directionsink


src

video/x-raw:
         format: { BGRx, BGRA, RGB16 }
          width: [ 1, 2147483647 ]
         height: [ 1, 2147483647 ]
      framerate: [ 0/1, 2147483647/1 ]

Presencealways

Directionsrc


Signals

caps-changed

caps_changed_callback (GstElement * overlay,
                       GstCaps * caps,
                       gpointer udata)
def caps_changed_callback (overlay, caps, udata):
    #python callback for the 'caps-changed' signal
function caps_changed_callback(overlay: GstElement * overlay, caps: GstCaps * caps, udata: gpointer udata): {
    // javascript callback for the 'caps-changed' signal
}

This signal is emitted when the caps of the element has changed.

Parameters:

overlay

Overlay element emitting the signal.

caps

The GstCaps of the element.

udata
No description available

draw

draw_callback (GstElement * overlay,
               CairoContext* cr,
               guint64 timestamp,
               guint64 duration,
               gpointer udata)
def draw_callback (overlay, cr, timestamp, duration, udata):
    #python callback for the 'draw' signal
function draw_callback(overlay: GstElement * overlay, cr: CairoContext* cr, timestamp: guint64 timestamp, duration: guint64 duration, udata: gpointer udata): {
    // javascript callback for the 'draw' signal
}

This signal is emitted when the overlay should be drawn.

Parameters:

overlay

Overlay element emitting the signal.

cr

Cairo context to draw to.

timestamp

Timestamp (see GstClockTime) of the current buffer.

duration

Duration (see GstClockTime) of the current buffer.

udata
No description available

Properties

draw-on-transparent-surface

“draw-on-transparent-surface” gboolean

Let the draw signal work on a transparent surface and blend the results with the video at a later time

Flags : Read / Write

Default value : false


name

“name” gchararray

The name of the object

Flags : Read / Write / Construct

Default value : NULL


parent

“parent” GstObject *

The parent of the object

Flags : Read / Write


qos

“qos” gboolean

Handle Quality-of-Service events

Flags : Read / Write

Default value : false


The results of the search are