# fakevideodec

The fake video decoder ignores input bitstream except to enforce caps restrictions. It reads video `width`, `height` and `framerate` from caps. Then it just pushes video frames without doing any decoding. It can Also handle raw frames decoding them as they come, faking that it is decoding them.

When faking decoding encoded data, it draws a snake moving from left to right in the middle of the frame. This is a light weight drawing while it still provides an idea about how smooth is the rendering.

The fake video decoder inherits from GstVideoDecoder. It is useful to measure how smooth will be the whole rendering pipeline if you had the most efficient video decoder. Also useful to bisect issues for example when suspecting issues in a specific video decoder.

It is also useful to to use it to test the GstVideoDecoder base class.

## Examples:

### Fake decoding raw frames

    $ gst-launch-1.0 videotestsrc !  fakevideodec ! videoconvert ! autovideosink

### False decoding encoded framers

    $ GST_PLUGIN_FEATURE_RANK=fakevideodec:1000 gst-launch-1.0 playbin3 uri=file:///path/to/video

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──GstVideoDecoder
                        ╰──fakevideodec

## Factory details

Authors: – Julien Isorce <julien.isorce@gmail.com></julien.isorce@gmail.com>

Classification: – `Codec/Decoder/Video`

Rank – none

Plugin – basedebug

Package – GStreamer Base Plug-ins

## Pad Templates

### `sink`

    video/x-h264:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
             parsed: true
    video/x-h263:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
             parsed: true
    video/x-theora:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
    video/x-vp6:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
    video/x-vp6-flash:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
    video/x-vp8:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
    video/x-vp9:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
    video/x-divx:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
    video/x-msmpeg:
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
    video/mpeg:
        mpegversion: { (int)1, (int)2, (int)4 }
       systemstream: false
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
    video/x-flash-video:
         flvversion: 1
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
    video/x-raw:
             format: { RGBA, RGBx, BGRA, BGRx, RGB16 }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]
    video/x-wmv:
         wmvversion: { (int)1, (int)2, (int)3 }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 1/1, 2147483647/1 ]

Presence – always

Direction – sink

Object type – GstPad

### `src`

    video/x-raw:
             format: { RGBA, RGBx, BGRA, BGRx, RGB16 }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

Presence – always

Direction – src

Object type – GstPad

The results of the search are