# deinterlace

deinterlace deinterlaces interlaced video frames to progressive video frames. For this different algorithms can be selected which will be described later.

## Example launch line

     gst-launch-1.0 -v filesrc location=/path/to/file ! decodebin ! videoconvert ! deinterlace ! videoconvert ! autovideosink

This pipeline deinterlaces a video file with the default deinterlacing options.

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──deinterlace

## Factory details

Authors: – Martin Eikermann , Sebastian Dröge

Classification: – `Filter/Effect/Video/Deinterlace`

Rank – none

Plugin – deinterlace

Package – GStreamer Good Plug-ins

## Pad Templates

### `sink`

    video/x-raw:
             format: { AYUV, ARGB, ABGR, RGBA, BGRA, Y444, xRGB, xBGR, RGBx, BGRx, RGB, BGR, YUY2, YVYU, UYVY, Y42B, I420, YV12, Y41B, NV12, NV21, Y444_16LE, Y444_12LE, Y444_10LE, I422_12LE, I422_10LE, I420_12LE, I420_10LE }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

    video/x-raw(ANY):
             format: { DMA_DRM, A444_16LE, A444_16BE, AYUV64, RGBA64_LE, ARGB64, ARGB64_LE, BGRA64_LE, ABGR64_LE, 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, 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, r210, I422_10LE, I422_10BE, 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_LE32, GRAY8 }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

Presence – always

Direction – sink

Object type – GstPad

### `src`

    video/x-raw:
             format: { AYUV, ARGB, ABGR, RGBA, BGRA, Y444, xRGB, xBGR, RGBx, BGRx, RGB, BGR, YUY2, YVYU, UYVY, Y42B, I420, YV12, Y41B, NV12, NV21, Y444_16LE, Y444_12LE, Y444_10LE, I422_12LE, I422_10LE, I420_12LE, I420_10LE }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

    video/x-raw(ANY):
             format: { DMA_DRM, A444_16LE, A444_16BE, AYUV64, RGBA64_LE, ARGB64, ARGB64_LE, BGRA64_LE, ABGR64_LE, 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, 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, r210, I422_10LE, I422_10BE, 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_LE32, GRAY8 }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

Presence – always

Direction – src

Object type – GstPad

## Properties

### drop-orphans

    “drop-orphans” gboolean

This selects whether to drop orphan fields at the beginning of telecine patterns in active locking mode.

Flags : Read / Write

Default value : true

### fields

    “fields” GstDeinterlaceFields *

This selects which fields should be output. If "all" is selected the output framerate will be double.

Flags : Read / Write

Default value : all (0)

### ignore-obscure

    “ignore-obscure” gboolean

This selects whether to ignore obscure/rare telecine patterns. NTSC 2:3 pulldown variants are the only really common patterns.

Flags : Read / Write

Default value : true

### locking

    “locking” GstDeinterlaceLocking *

This selects which approach to pattern locking is used which affects processing latency and accuracy of timestamp adjustment for telecine streams.

Flags : Read / Write

Default value : none (0)

### method

    “method” GstDeinterlaceMethods *

Selects the different deinterlacing algorithms that can be used. These provide different quality and CPU usage.

Some methods provide parameters which can be set by getting the "method" child via the GstChildProxy interface and setting the appropriate properties on it.

- tomsmocomp Motion Adaptive: Motion Search
- greedyh Motion Adaptive: Advanced Detection
- greedyl Motion Adaptive: Simple Detection
- vfir Blur vertical
- linear Linear interpolation
- linearblend Linear interpolation in time domain. Any motion causes significant ghosting, so this method should not be used.
- scalerbob Double lines
- weave Weave. Bad quality, do not use.
- weavetff Progressive: Top Field First. Bad quality, do not use.
- weavebff Progressive: Bottom Field First. Bad quality, do not use.
- yadif YADIF Adaptive.

Flags : Read / Write

Default value : linear (4)

### mode

    “mode” GstDeinterlaceModes *

This selects whether the deinterlacing methods should always be applied or if they should only be applied on content that has the "interlaced" flag on the caps.

Flags : Read / Write

Default value : auto (0)

### tff

    “tff” GstDeinterlaceFieldLayout *

Deinterlace top field first

Flags : Read / Write

Default value : auto (0)

## Named constants

### GstDeinterlaceFieldLayout

#### Members

`auto` (0) – Auto detection
`tff` (1) – Top field first
`bff` (2) – Bottom field first

### GstDeinterlaceFields

#### Members

`all` (0) – All fields
`top` (1) – Top fields only
`bottom` (2) – Bottom fields only
`auto` (3) – Automatically detect

### GstDeinterlaceLocking

#### Members

`none` (0) – No pattern locking
`auto` (1) – Choose passive/active locking depending on whether upstream is live
`active` (2) – Block until pattern-locked. Use accurate timestamp interpolation within a pattern repeat.
`passive` (3) – Do not block. Use naïve timestamp adjustment until pattern-locked based on state history.

### GstDeinterlaceMethods

#### Members

`tomsmocomp` (0) – Motion Adaptive: Motion Search
`greedyh` (1) – Motion Adaptive: Advanced Detection
`greedyl` (2) – Motion Adaptive: Simple Detection
`vfir` (3) – Blur Vertical
`linear` (4) – Linear
`linearblend` (5) – Blur: Temporal (Do Not Use)
`scalerbob` (6) – Double lines
`weave` (7) – Weave (Do Not Use)
`weavetff` (8) – Progressive: Top Field First (Do Not Use)
`weavebff` (9) – Progressive: Bottom Field First (Do Not Use)
`yadif` (10) – YADIF Adaptive Deinterlacer

### GstDeinterlaceModes

#### Members

`auto` (0) – Auto detection (best effort)
`interlaced` (1) – Force deinterlacing
`disabled` (2) – Run in passthrough mode
`auto-strict` (3) – Auto detection (strict)

The results of the search are