## gstvideosink gstvideosink — Base class for video sinks |

## Synopsis

    #include <gst/video/gstvideosink.h>

                        GstVideoSink;
                        GstVideoSinkClass;
                        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

      GObject
       +----GstObject
             +----GstElement
                   +----GstBaseSink
                         +----GstVideoSink

## Description

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.

## Details

### GstVideoSink

    typedef struct _GstVideoSink GstVideoSink;

### GstVideoSinkClass

    typedef struct {
      GstBaseSinkClass parent_class;

      gpointer _gst_reserved[GST_PADDING];
    } GstVideoSinkClass;

### GstVideoRectangle

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

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

### GST_VIDEO_SINK_HEIGHT()

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

`obj` : |

### GST_VIDEO_SINK_PAD()

    #define GST_VIDEO_SINK_PAD(obj) GST_BASE_SINK_PAD(obj)

Get the sink GstPad of `obj`.

`obj` : | a GstVideoSink

### GST_VIDEO_SINK_WIDTH()

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

`obj` : |

### 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