# kmssink

kmssink is a simple video sink that renders video frames directly in a plane of a DRM device.

In advance usage, the behaviour of kmssink can be change using the supported properties. Note that plane and connectors IDs and properties can be enumerated using the modetest command line tool.

## Example launch line

     gst-launch-1.0 videotestsrc ! kmssink
     gst-launch-1.0 videotestsrc ! kmssink plane-properties=s,rotation=4

## Hierarchy

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

## Implemented interfaces

    GstVideoOverlay

## Factory details

Authors: – Víctor Jáquez

Classification: – `Sink/Video`

Rank – secondary

Plugin – kms

Package – GStreamer Bad Plug-ins

## Pad Templates

### `sink`

    video/x-raw:
             format: { BGRA, RGBA, P016_LE, P010_10LE, NV24, BGRx, RGBx, RGB, BGR, Y42B, NV61, NV16, UYVY, YVYU, YUY2, I420, YV12, NV21, NV12, RGB16, BGR16 }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

Presence – always

Direction – sink

Object type – GstPad

## Properties

### bus-id

    “bus-id” gchararray

If you have a system with multiple displays for the same driver-name, you can choose which display to use by setting the DRM bus ID. Otherwise, the driver decides which one.

Flags : Read / Write / Construct

Default value : NULL

### can-scale

    “can-scale” gboolean

User can tell kmssink if the driver can support scale.

Flags : Read / Write / Construct

Default value : true

### connector-id

    “connector-id” gint

A GPU has several output connectors, for example: LVDS, VGA, HDMI, etc. By default the first LVDS is tried, then the first eDP, and at the end, the first connected one.

Flags : Read / Write / Construct

Default value : -1

### connector-properties

    “connector-properties” GstStructure *

Additional properties for the connector. Keys are strings and values unsigned 64 bits integers.

Flags : Read / Write

### display-height

    “display-height” gint

Actual height of the display. This is read only and only available in PAUSED and PLAYING state. It's meant to be used with gst_video_overlay_set_render_rectangle function.

Flags : Read

Default value : 0

### display-width

    “display-width” gint

Actual width of the display. This is read only and only available in PAUSED and PLAYING state. It's meant to be used with gst_video_overlay_set_render_rectangle function.

Flags : Read

Default value : 0

### driver-name

    “driver-name” gchararray

If you have a system with multiple GPUs, you can choose which GPU to use setting the DRM device driver name. Otherwise, the first one from an internal list is used.

Flags : Read / Write / Construct

Default value : NULL

### force-modesetting

    “force-modesetting” gboolean

If the output connector is already active, the sink automatically uses an overlay plane. Enforce mode setting in the kms sink and output to the base plane to override the automatic behavior.

Flags : Read / Write / Construct

Default value : false

### plane-id

    “plane-id” gint

There could be several planes associated with a CRTC. By default the first plane that's possible to use with a given CRTC is tried.

Flags : Read / Write / Construct

Default value : -1

### plane-properties

    “plane-properties” GstStructure *

Additional properties for the plane. Keys are strings and values unsigned 64 bits integers.

Flags : Read / Write

### render-rectangle

    “render-rectangle” GstValueArray *

The render rectangle ('<x, y, width, height>')

Flags : Read / Write

### restore-crtc

    “restore-crtc” gboolean

Restore previous CRTC setting if new CRTC mode was set forcefully. By default this is enabled if user set CRTC with a new mode on an already active CRTC wich was having a valid mode.

Flags : Read / Write / Construct

Default value : true

The results of the search are