## decodebin2 decodebin2 — Autoplug and decode to raw media |

## Synopsis

    struct              GstDecodeBin2;

## Object Hierarchy

      GObject
       +----GstObject
             +----GstElement
                   +----GstBin
                         +----GstDecodeBin2

## Implemented Interfaces

GstDecodeBin2 implements GstChildProxy.

## Properties

      "caps"                     GstCaps*              : Read / Write
      "subtitle-encoding"        gchar*                : Read / Write
      "sink-caps"                GstCaps*              : Read / Write

## Signals

      "autoplug-continue"                              : Run Last
      "autoplug-sort"                                  : Run Last
      "new-decoded-pad"                                : Run Last
      "removed-decoded-pad"                            : Run Last
      "unknown-type"                                   : Run Last
      "autoplug-factories"                             : Run Last
      "autoplug-select"                                : Run Last
      "drained"                                        : Run Last

## Description

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

At this stage, decodebin2 is considered UNSTABLE. The API provided in the signals is expected to change in the near future.

To try out decodebin2, you can set the USE_DECODEBIN2 environment variable (USE_DECODEBIN2=1 for example). This will cause playbin to use decodebin2 instead of the older GstDecodeBin for its internal auto-plugging.

## Synopsis

### Element Information

plugin | uridecodebin
author | Edward Hervey <edward@fluendo.com>
class | Generic/Bin/Decoder

### Element Pads

name | src%d
direction | source
presence | sometimes
details | ANY

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

## Details

### struct GstDecodeBin2

    struct GstDecodeBin2;

The opaque DecodeBin2 data structure

## Property Details

### The `"caps"` property

      "caps"                     GstCaps*              : Read / Write

The caps on which to stop decoding.

### The `"subtitle-encoding"` property

      "subtitle-encoding"        gchar*                : Read / Write

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.

Default value: NULL

### The `"sink-caps"` property

      "sink-caps"                GstCaps*              : Read / Write

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

## Signal Details

### The `"autoplug-continue"` signal

    gboolean            user_function                      (GstDecodeBin2 *bin,
                                                            GstPad        *pad,
                                                            GstCaps       *caps,
                                                            gpointer       user_data)      : Run Last

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

`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 decodebin2 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 'new-decoded-pad' signal).

### The `"autoplug-sort"` signal

    GValueArray*        user_function                      (GstDecodeBin2 *bin,
                                                            GstPad        *pad,
                                                            GstCaps       *caps,
                                                            GValueArray   *factories,
                                                            gpointer       user_data)      : Run Last

Once decodebin2 has found the possible GstElementFactory objects to try for `caps` on `pad`, this signal is emited. 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`.

`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.

### The `"new-decoded-pad"` signal

    void                user_function                      (GstDecodeBin2 *bin,
                                                            GstPad        *pad,
                                                            gboolean       islast,
                                                            gpointer       user_data)      : Run Last

This signal gets emitted as soon as a new pad of the same type as one of the valid 'raw' types is added.

`bin` : | The decodebin
`pad` : | The newly created pad
`islast` : | TRUE if this is the last pad to be added. Deprecated.
`user_data` : | user data set when the signal handler was connected.

### The `"removed-decoded-pad"` signal

    void                user_function                      (GstDecodeBin2 *bin,
                                                            GstPad        *pad,
                                                            gpointer       user_data)      : Run Last

This signal is emitted when a 'final' caps pad has been removed.

`bin` : | The decodebin
`pad` : | The pad that was removed
`user_data` : | user data set when the signal handler was connected.

### The `"unknown-type"` signal

    void                user_function                      (GstDecodeBin2 *bin,
                                                            GstPad        *pad,
                                                            GstCaps       *caps,
                                                            gpointer       user_data)      : Run Last

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

`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.

### The `"autoplug-factories"` signal

    GValueArray*        user_function                      (GstDecodeBin2 *bin,
                                                            GstPad        *pad,
                                                            GstCaps       *caps,
                                                            gpointer       user_data)      : Run Last

This function is emited when an array of possible factories for `caps` on `pad` is needed. Decodebin2 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.

`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".

### The `"autoplug-select"` signal

    GstAutoplugSelectResultuser_function                      (GstDecodeBin2     *bin,
                                                            GstPad            *pad,
                                                            GstCaps           *caps,
                                                            GstElementFactory *factory,
                                                            gpointer           user_data)      : Run Last

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

The signal handler should return a GST_TYPE_AUTOPLUG_SELECT_RESULT enum value indicating what decodebin2 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.

`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.

### The `"drained"` signal

    void                user_function                      (GstDecodeBin2 *bin,
                                                            gpointer       user_data)      : Run Last

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

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

Since 0.10.16