# fakevideosink

This element is the same as fakesink but will pretend to support various allocation meta API like GstVideoMeta in order to prevent memory copies. This is useful for throughput testing and testing zero-copy path while creating a new pipeline.

## Example launch lines

     gst-launch-1.0 videotestsrc ! fakevideosink
     gst-launch-1.0 videotestsrc ! fpsdisplaysink text-overlay=false video-sink=fakevideosink

Since 1.14

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──GstBin
                        ╰──fakevideosink

## Implemented interfaces

    GstChildProxy

## Factory details

Authors: – Nicolas Dufresne <nicolas.dufresne></nicolas.dufresne>

Classification: – `Video/Sink`

Rank – none

Plugin – debugutilsbad

Package – GStreamer Bad Plug-ins

## Pad Templates

### `sink`

    video/x-raw(ANY):
             format: { DMA_DRM, A444_16LE, A444_16BE, Y416_LE, AYUV64, RGBA64_LE, ARGB64, ARGB64_LE, BGRA64_LE, ABGR64_LE, Y416_BE, RGBA64_BE, ARGB64_BE, BGRA64_BE, ABGR64_BE, A422_16LE, A422_16BE, A420_16LE, A420_16BE, A444_12LE, GBRA_12LE, A444_12BE, GBRA_12BE, Y412_LE, Y412_BE, A422_12LE, A422_12BE, A420_12LE, A420_12BE, A444_10LE, GBRA_10LE, A444_10BE, GBRA_10BE, A422_10LE, A422_10BE, A420_10LE, A420_10BE, BGR10A2_LE, RGB10A2_LE, Y410, A444, GBRA, AYUV, VUYA, RGBA, RBGA, ARGB, BGRA, ABGR, A422, A420, AV12, Y444_16LE, GBR_16LE, Y444_16BE, GBR_16BE, Y216_LE, Y216_BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, BGR10x2_LE, RGB10x2_LE, r210, I422_10LE, I422_10BE, NV16_10LE40, NV16_10LE32, Y210, UYVP, v210, I420_10LE, I420_10BE, P010_10LE, NV12_10LE40, NV12_10LE32, P010_10BE, MT2110R, MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, Y444, BGRP, GBR, RGBP, NV24, v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, NV12_16L32S, NV12_32L32, NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, YUV9, YVU9, BGR16, RGB16, BGR15, RGB15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE16, GRAY10_LE32, GRAY8 }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

Presence – always

Direction – sink

Object type – GstPad

## Signals

### handoff

    handoff_callback (GstElement * fakevideosink,
                      GstBuffer * buffer,
                      GstPad * pad,
                      gpointer udata)

    def handoff_callback (fakevideosink, buffer, pad, udata):
        #python callback for the 'handoff' signal

    function handoff_callback(fakevideosink: GstElement * fakevideosink, buffer: GstBuffer * buffer, pad: GstPad * pad, udata: gpointer udata): {
        // javascript callback for the 'handoff' signal
    }

This signal gets emitted before unreffing the buffer.

Parameters:

`fakevideosink` –

the fakevideosink instance

`buffer` –

the buffer that just has been received

`pad` –

the pad that received it

`udata` –
No description available

Flags: Run Last

Since : 1.22

### preroll-handoff

    preroll_handoff_callback (GstElement * fakevideosink,
                              GstBuffer * buffer,
                              GstPad * pad,
                              gpointer udata)

    def preroll_handoff_callback (fakevideosink, buffer, pad, udata):
        #python callback for the 'preroll-handoff' signal

    function preroll_handoff_callback(fakevideosink: GstElement * fakevideosink, buffer: GstBuffer * buffer, pad: GstPad * pad, udata: gpointer udata): {
        // javascript callback for the 'preroll-handoff' signal
    }

This signal gets emitted before unreffing the buffer.

Parameters:

`fakevideosink` –

the fakevideosink instance

`buffer` –

the buffer that just has been received

`pad` –

the pad that received it

`udata` –
No description available

Flags: Run Last

Since : 1.22

## Properties

### allocation-meta-flags

    “allocation-meta-flags” Fake-video-sink-allocation-meta-flags *

Control the behaviour of the sink allocation query handler.

Flags : Read / Write

Default value : overlay-composition+crop

Since : 1.18

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

### can-activate-pull

    “can-activate-pull” gboolean

Can activate in pull mode

Flags : Read / Write

Default value : false

### can-activate-push

    “can-activate-push” gboolean

Can activate in push mode

Flags : Read / Write

Default value : true

### drop-out-of-segment

    “drop-out-of-segment” gboolean

Drop and don't render / hand off out-of-segment buffers

Flags : Read / Write

Default value : true

### dump

    “dump” gboolean

Dump buffer contents to stdout

Flags : Read / Write

Default value : false

### enable-last-sample

    “enable-last-sample” gboolean

Enable the last-sample property

Flags : Read / Write

Default value : true

### last-message

    “last-message” gchararray

The message describing current status

Flags : Read

Default value : NULL

### last-sample

    “last-sample” GstSample *

The last sample received in the sink

Flags : Read

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

### num-buffers

    “num-buffers” gint

Number of buffers to accept going EOS

Flags : Read / Write

Default value : -1

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

### signal-handoffs

    “signal-handoffs” gboolean

Send a signal before unreffing the buffer

Flags : Read / Write

Default value : false

### silent

    “silent” gboolean

Don't produce last_message events

Flags : Read / Write

Default value : true

### state-error

    “state-error” Fake-video-sink-state-error *

Generate a state change error

Flags : Read / Write

Default value : none (0)

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

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

## Named constants

### Fake-video-sink-allocation-meta-flags

Extra flags to configure the behaviour of the sink.

#### Members

`crop` (0x00000001) – Expose the crop meta as supported
`overlay-composition` (0x00000002) – Expose the overlay composition meta as supported

Since : 1.18

### Fake-video-sink-state-error

Proxy for GstFakeSinkError.

#### Members

`none` (0) – No state change errors
`null-to-ready` (1) – Fail state change from NULL to READY
`ready-to-paused` (2) – Fail state change from READY to PAUSED
`paused-to-playing` (3) – Fail state change from PAUSED to PLAYING
`playing-to-paused` (4) – Fail state change from PLAYING to PAUSED
`paused-to-ready` (5) – Fail state change from PAUSED to READY
`ready-to-null` (6) – Fail state change from READY to NULL

Since : 1.22

The results of the search are