decodebin: GStreamer Base Plugins 1.0 Plugins Reference Manual

## decodebin decodebin |

## Properties

GstCaps * | caps | Read / Write
guint64 | connection-speed | Read / Write
gboolean | expose-all-streams | Read / Write
gint | high-percent | Read / Write
gint | low-percent | Read / Write
guint | max-size-buffers | Read / Write
guint | max-size-bytes | Read / Write
guint64 | max-size-time | Read / Write
gboolean | post-stream-topology | Read / Write
GstCaps * | sink-caps | Read / Write
gchar * | subtitle-encoding | Read / Write
gboolean | use-buffering | Read / Write

## Signals

gboolean | autoplug-continue | Run Last
GValueArray* | autoplug-factories | Run Last
gboolean | autoplug-query | Run Last
GstAutoplugSelectResult | autoplug-select | Run Last
GValueArray* | autoplug-sort | Run Last
void | drained | Run Last
void | unknown-type | Run Last

## Types and Values

struct | GstDecodeBin

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GstObject
                ╰── GstElement
                    ╰── GstBin
                        ╰── GstDecodeBin

## Implemented Interfaces

GstDecodeBin implements GstChildProxy.

## Description

GstBin that auto-magically constructs a decoding pipeline using available decoders and demuxers via auto-plugging.

decodebin is considered stable now and replaces the old decodebin element. uridecodebin uses decodebin internally and is often more convenient to use, as it creates a suitable source element as well.

## Synopsis

### Element Information

plugin | playback
author | Edward Hervey <edward.hervey@collabora.co.uk>, Sebastian Dröge <sebastian.droege@collabora.co.uk>
class | Generic/Bin/Decoder

### Element Pads

name | sink
direction | sink
presence | always
details | ANY

name | src_%u
direction | source
presence | sometimes
details | ANY

## Functions

## Types and Values

### struct GstDecodeBin

    struct GstDecodeBin;

The opaque GstDecodeBin data structure

## Property Details

### The `“caps”` property

      “caps”                     GstCaps *

The caps on which to stop decoding.

Flags: Read / Write

### The `“connection-speed”` property

      “connection-speed”         guint64

Network connection speed in kbps (0 = unknown).

Flags: Read / Write

Allowed values: <= 18446744073709551

Default value: 0

### The `“expose-all-streams”` property

      “expose-all-streams”       gboolean

Expose all streams, including those of unknown type or that don't match the 'caps' property.

Flags: Read / Write

Default value: TRUE

### The `“high-percent”` property

      “high-percent”             gint

High threshold percent for buffering to finish.

Flags: Read / Write

Allowed values: [0,100]

Default value: 99

### The `“low-percent”` property

      “low-percent”              gint

Low threshold percent for buffering to start.

Flags: Read / Write

Allowed values: [0,100]

Default value: 10

### The `“max-size-buffers”` property

      “max-size-buffers”         guint

Max amount of buffers in the queue (0=automatic).

Flags: Read / Write

Default value: 0

### The `“max-size-bytes”` property

      “max-size-bytes”           guint

Max amount of bytes in the queue (0=automatic).

Flags: Read / Write

Default value: 0

### The `“max-size-time”` property

      “max-size-time”            guint64

Max amount of time in the queue (in ns, 0=automatic).

Flags: Read / Write

Default value: 0

### The `“post-stream-topology”` property

      “post-stream-topology”     gboolean

Post stream-topology messages.

Flags: Read / Write

Default value: FALSE

### The `“sink-caps”` property

      “sink-caps”                GstCaps *

The caps of the input data. (NULL = use typefind element).

Flags: Read / Write

### The `“subtitle-encoding”` property

      “subtitle-encoding”        gchar *

Encoding to assume if input subtitles are not in UTF-8 encoding. If not set, the GST_SUBTITLE_ENCODING environment variable will be checked for an encoding to use. If that is not set either, ISO-8859-15 will be assumed.

Flags: Read / Write

Default value: NULL

### The `“use-buffering”` property

      “use-buffering”            gboolean

Emit GST_MESSAGE_BUFFERING based on low-/high-percent thresholds.

Flags: Read / Write

Default value: FALSE

## Signal Details

### The `“autoplug-continue”` signal

    gboolean
    user_function (GstDecodeBin *bin,
                   GstPad       *pad,
                   GstCaps      *caps,
                   gpointer      user_data)

This signal is emitted whenever decodebin finds a new stream. It is emitted before looking for any elements that can handle that stream.

> Invocation of signal handlers stops after the first signal handler returns `FALSE`. Signal handlers are invoked in the order they were connected in.

#### Parameters

bin | The decodebin. |
pad | The GstPad. |
caps | The GstCaps found. |
user_data | user data set when the signal handler was connected. |

#### Returns

`TRUE` if you wish decodebin to look for elements that can handle the given `caps` . If `FALSE`, those caps will be considered as final and the pad will be exposed as such (see 'pad-added' signal of GstElement).

Flags: Run Last

### The `“autoplug-factories”` signal

    GValueArray*
    user_function (GstDecodeBin *bin,
                   GstPad       *pad,
                   GstCaps      *caps,
                   gpointer      user_data)

This signal is emitted when an array of possible factories for `caps` on `pad` is needed. Decodebin will by default return an array with all compatible factories, sorted by rank.

If this function returns NULL, `pad` will be exposed as a final caps.

If this function returns an empty array, the pad will be considered as having an unhandled type media type.

> Only the signal handler that is connected first will ever by invoked. Don't connect signal handlers with the G_CONNECT_AFTER flag to this signal, they will never be invoked!

#### Parameters

bin | The decodebin. |
pad | The GstPad. |
caps | The GstCaps found. |
user_data | user data set when the signal handler was connected. |

#### Returns

a GValueArray* with a list of factories to try. The factories are by default tried in the returned order or based on the index returned by "autoplug-select".

Flags: Run Last

### The `“autoplug-query”` signal

    gboolean
    user_function (GstDecodeBin *bin,
                   GstPad       *child,
                   GstElement   *pad,
                   GstQuery     *query,
                   gpointer      user_data)

This signal is emitted whenever an autoplugged element that is not linked downstream yet and not exposed does a query. It can be used to tell the element about the downstream supported caps for example.

#### Parameters

bin | The decodebin. |
child | The child element doing the query |
pad | The GstPad. |
query | The GstQuery. |
user_data | user data set when the signal handler was connected. |

#### Returns

`TRUE` if the query was handled, `FALSE` otherwise.

Flags: Run Last

### The `“autoplug-select”` signal

    GstAutoplugSelectResult
    user_function (GstDecodeBin      *bin,
                   GstPad            *pad,
                   GstCaps           *caps,
                   GstElementFactory *factory,
                   gpointer           user_data)

This signal is emitted once decodebin has found all the possible GstElementFactory that can be used to handle the given `caps` . For each of those factories, this signal is emitted.

The signal handler should return a GST_TYPE_AUTOPLUG_SELECT_RESULT enum value indicating what decodebin should do next.

A value of GST_AUTOPLUG_SELECT_TRY will try to autoplug an element from `factory` .

A value of GST_AUTOPLUG_SELECT_EXPOSE will expose `pad` without plugging any element to it.

A value of GST_AUTOPLUG_SELECT_SKIP will skip `factory` and move to the next factory.

> The signal handler will not be invoked if any of the previously registered signal handlers (if any) return a value other than GST_AUTOPLUG_SELECT_TRY. Which also means that if you return GST_AUTOPLUG_SELECT_TRY from one signal handler, handlers that get registered next (again, if any) can override that decision.

#### Parameters

bin | The decodebin. |
pad | The GstPad. |
caps | The GstCaps. |
factory | A GstElementFactory to use. |
user_data | user data set when the signal handler was connected. |

#### Returns

a GST_TYPE_AUTOPLUG_SELECT_RESULT that indicates the required operation. the default handler will always return GST_AUTOPLUG_SELECT_TRY.

Flags: Run Last

### The `“autoplug-sort”` signal

    GValueArray*
    user_function (GstDecodeBin *bin,
                   GstPad       *pad,
                   GstCaps      *caps,
                   GValueArray  *factories,
                   gpointer      user_data)

Once decodebin has found the possible GstElementFactory objects to try for `caps` on `pad` , this signal is emitted. The purpose of the signal is for the application to perform additional sorting or filtering on the element factory array.

The callee should copy and modify `factories` or return `NULL` if the order should not change.

> Invocation of signal handlers stops after one signal handler has returned something else than `NULL`. Signal handlers are invoked in the order they were connected in. Don't connect signal handlers with the G_CONNECT_AFTER flag to this signal, they will never be invoked!

#### Parameters

bin | The decodebin. |
pad | The GstPad. |
caps | The GstCaps. |
factories | A GValueArray of possible GstElementFactory to use. |
user_data | user data set when the signal handler was connected. |

#### Returns

A new sorted array of GstElementFactory objects.

Flags: Run Last

### The `“drained”` signal

    void
    user_function (GstDecodeBin *bin,
                   gpointer      user_data)

This signal is emitted once decodebin has finished decoding all the data.

#### Parameters

bin | The decodebin |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“unknown-type”` signal

    void
    user_function (GstDecodeBin *bin,
                   GstPad       *pad,
                   GstCaps      *caps,
                   gpointer      user_data)

This signal is emitted when a pad for which there is no further possible decoding is added to the decodebin.

#### Parameters

bin | The decodebin. |
pad | The new pad containing caps that cannot be resolved to a 'final' stream type. |
caps | The GstCaps of the pad that cannot be resolved. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last