gstvideosink — Base class for video sinks


#include <gst/video/gstvideosink.h>

struct              GstVideoSink;
struct              GstVideoSinkClass;
struct              GstVideoRectangle;
#define             GST_VIDEO_SINK_HEIGHT               (obj)
#define             GST_VIDEO_SINK_PAD                  (obj)
#define             GST_VIDEO_SINK_WIDTH                (obj)
void                gst_video_sink_center_rect          (GstVideoRectangle src,
                                                         GstVideoRectangle dst,
                                                         GstVideoRectangle *result,
                                                         gboolean scaling);

Object Hierarchy



  "show-preroll-frame"       gboolean              : Read / Write / Construct


Provides useful functions and a base class for video sinks.

GstVideoSink will configure the default base sink to drop frames that arrive later than 20ms as this is considered the default threshold for observing out-of-sync frames.


struct GstVideoSink

struct GstVideoSink {
  gint width, height;

The video sink instance structure. Derived video sinks should set the height and width members.

gint width;

video width (derived class needs to set this)

gint height;

video height (derived class needs to set this)

struct GstVideoSinkClass

struct GstVideoSinkClass {
  GstBaseSinkClass parent_class;

  GstFlowReturn  (*show_frame) (GstVideoSink *video_sink, GstBuffer *buf);

The video sink class structure. Derived classes should override the show_frame virtual function.

GstBaseSinkClass parent_class;

the parent class structure

show_frame ()

render a video frame. Maps to GstBaseSinkClass.render() and GstBaseSinkClass.preroll() vfuncs. Rendering during preroll will be suppressed if the "show-preroll-frame" property is set to FALSE.

struct GstVideoRectangle

struct GstVideoRectangle {
  gint x;
  gint y;
  gint w;
  gint h;

Helper structure representing a rectangular area.

gint x;

X coordinate of rectangle's top-left point

gint y;

Y coordinate of rectangle's top-left point

gint w;

width of the rectangle

gint h;

height of the rectangle


#define GST_VIDEO_SINK_HEIGHT(obj) (GST_VIDEO_SINK_CAST (obj)->height)



Get the sink GstPad of obj.

obj :

a GstVideoSink


#define GST_VIDEO_SINK_WIDTH(obj) (GST_VIDEO_SINK_CAST (obj)->width)

gst_video_sink_center_rect ()

void                gst_video_sink_center_rect          (GstVideoRectangle src,
                                                         GstVideoRectangle dst,
                                                         GstVideoRectangle *result,
                                                         gboolean scaling);

Takes src rectangle and position it at the center of dst rectangle with or without scaling. It handles clipping if the src rectangle is bigger than the dst one and scaling is set to FALSE.

src :

the GstVideoRectangle describing the source area

dst :

the GstVideoRectangle describing the destination area

result :

a pointer to a GstVideoRectangle which will receive the result area

scaling :

a gboolean indicating if scaling should be applied or not

Property Details

The "show-preroll-frame" property

  "show-preroll-frame"       gboolean              : Read / Write / Construct

Whether to show video frames during preroll. If set to FALSE, video frames will only be rendered in PLAYING state.

Default value: TRUE