# dfbvideosink

DfbVideoSink renders video frames using the DirectFB library. Rendering can happen in two different modes :

- Standalone: this mode will take complete control of the monitor forcing DirectFB to fullscreen layout.

  This is convenient to test using the gst-launch-1.0 command line tool or other simple applications. It is possible to interrupt playback while being in this mode by pressing the Escape key. This mode handles navigation events for every input device supported by the DirectFB library, it will look for available video modes in the fb.modes file and try to switch the framebuffer video mode to the most suitable one. Depending on hardware acceleration capabilities the element will handle scaling or not.

  If no acceleration is available it will do clipping or centering of the video frames respecting the original aspect ratio.

- Embedded: this mode will render video frames in a surface provided by the application developer. This is a more advanced usage of the element and it is required to integrate video playback in existing DirectFB applications.

  When using this mode the element just renders to the surface provided by the application, that means it won't handle navigation events and won't resize the surface to fit video frames geometry. Application has to implement the necessary code to grab information about the negotiated geometry and resize there surface accordingly.

For both modes the element implements a buffer pool allocation system to optimize memory allocation time and handle reverse negotiation. Indeed if you insert an element like videoscale in the pipeline the video sink will negotiate with it to try get a scaled video for either the fullscreen layout or the application provided external surface.

## Example application

## Example pipelines

     gst-launch-1.0 -v videotestsrc ! dfbvideosink hue=20000 saturation=40000 brightness=25000

test the colorbalance interface implementation in dfbvideosink

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──GstBaseSink
                        ╰──GstVideoSink
                            ╰──dfbvideosink

## Implemented interfaces

    GstNavigation
    GstColorBalance

## Factory details

Authors: – Julien Moutte

Classification: – `Sink/Video`

Rank – marginal

Plugin – directfb

Package – GStreamer Bad Plug-ins

## Pad Templates

### `sink`

    video/x-raw:
          framerate: [ 0/1, 2147483647/1 ]
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]

Presence – always

Direction – sink

Object type – GstPad

## Properties

### async

    “async” gboolean

Go asynchronously to PAUSED

Flags : Read / Write

Default value : true

### blocksize

    “blocksize” guint

Size in bytes to pull per buffer (0 = default)

Flags : Read / Write

Default value : 4096

### brightness

    “brightness” gint

The brightness of the video

Flags : Read / Write

Default value : -1

### contrast

    “contrast” gint

The contrast of the video

Flags : Read / Write

Default value : -1

### enable-last-sample

    “enable-last-sample” gboolean

Enable the last-sample property

Flags : Read / Write

Default value : true

### hue

    “hue” gint

The hue of the video

Flags : Read / Write

Default value : -1

### last-sample

    “last-sample” GstSample *

The last sample received in the sink

Flags : Read

### layer-mode

    “layer-mode” GstDfbVideoSinkLayerMode *

The cooperative level handling the access permission (set this to 'administrative' when the cursor is required)

Flags : Read / Write

Default value : exclusive (1)

### max-bitrate

    “max-bitrate” guint64

The maximum bits per second to render (0 = disabled)

Flags : Read / Write

Default value : 0

### max-lateness

    “max-lateness” gint64

Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)

Flags : Read / Write

Default value : 5000000

### pixel-aspect-ratio

    “pixel-aspect-ratio” gchararray

The pixel aspect ratio of the device

Flags : Read / Write

Default value : NULL

### processing-deadline

    “processing-deadline” guint64

Maximum processing time for a buffer in nanoseconds

Flags : Read / Write

Default value : 15000000

### qos

    “qos” gboolean

Generate Quality-of-Service events upstream

Flags : Read / Write

Default value : true

### render-delay

    “render-delay” guint64

Additional render delay of the sink in nanoseconds

Flags : Read / Write

Default value : 0

### saturation

    “saturation” gint

The saturation of the video

Flags : Read / Write

Default value : -1

### show-preroll-frame

    “show-preroll-frame” gboolean

Whether to render video frames during preroll

Flags : Read / Write / Construct

Default value : true

### stats

    “stats” GstStructure *

Sink Statistics

Flags : Read

Default value :

    application/x-gst-base-sink-stats, average-rate=(double)0, dropped=(guint64)0, rendered=(guint64)0;

### surface

    “surface” gpointer

The target surface for video

Flags : Read / Write

### sync

    “sync” gboolean

Sync on the clock

Flags : Read / Write

Default value : true

### throttle-time

    “throttle-time” guint64

The time to keep between rendered buffers (0 = disabled)

Flags : Read / Write

Default value : 0

### ts-offset

    “ts-offset” gint64

Timestamp offset in nanoseconds

Flags : Read / Write

Default value : 0

### vsync

    “vsync” gboolean

Wait for next vertical sync to draw frames

Flags : Read / Write

Default value : true

## Named constants

### GstDfbVideoSinkLayerMode

#### Members

`none` (0) – NONE
`exclusive` (1) – DLSCL_EXCLUSIVE
`administrative` (2) – DLSCL_ADMINISTRATIVE

The results of the search are