## uridecodebin

uridecodebin — Autoplug and decode an URI to raw media

## Synopsis

    struct              GstURIDecodeBin;
    enum                GstAutoplugSelectResult;

## Object Hierarchy

      GObject
       +----GstObject
             +----GstElement
                   +----GstBin
                         +----GstURIDecodeBin

## Implemented Interfaces

GstURIDecodeBin implements GstChildProxy.

## Properties

      "uri"                      gchar*                : Read / Write
      "connection-speed"         guint                 : Read / Write
      "caps"                     GstCaps*              : Read / Write
      "subtitle-encoding"        gchar*                : Read / Write
      "source"                   GstElement*           : Read
      "buffer-duration"          gint64                : Read / Write
      "buffer-size"              gint                  : Read / Write
      "download"                 gboolean              : Read / Write
      "use-buffering"            gboolean              : Read / Write
      "expose-all-streams"       gboolean              : Read / Write
      "ring-buffer-max-size"     guint64               : Read / Write

## Signals

      "autoplug-continue"                              : Run Last
      "autoplug-factories"                             : Run Last
      "autoplug-select"                                : Run Last
      "unknown-type"                                   : Run Last
      "drained"                                        : Run Last

## Description

Decodes data from a URI into raw media. It selects a source element that can handle the given "uri" scheme and connects it to a decodebin2.

## Details

### struct GstURIDecodeBin

    struct GstURIDecodeBin;

uridecodebin element struct

### enum GstAutoplugSelectResult

    typedef enum {
      GST_AUTOPLUG_SELECT_TRY,
      GST_AUTOPLUG_SELECT_EXPOSE,
      GST_AUTOPLUG_SELECT_SKIP
    } GstAutoplugSelectResult;

return values for the autoplug-select signal.

`GST_AUTOPLUG_SELECT_TRY` | try to autoplug the current factory
`GST_AUTOPLUG_SELECT_EXPOSE` | expose the pad as a raw stream
`GST_AUTOPLUG_SELECT_SKIP` | skip the current factory

## Property Details

### The `"uri"` property

      "uri"                      gchar*                : Read / Write

URI to decode.

Default value: NULL

### The `"connection-speed"` property

      "connection-speed"         guint                 : Read / Write

Network connection speed in kbps (0 = unknown).

Allowed values: <= 4294967

Default value: 0

### The `"caps"` property

      "caps"                     GstCaps*              : Read / Write

The caps on which to stop decoding. (NULL = default).

### 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 `"source"` property

      "source"                   GstElement*           : Read

Source object used.

### The `"buffer-duration"` property

      "buffer-duration"          gint64                : Read / Write

Buffer duration when buffering streams (-1 default value).

Allowed values: >= G_MAXULONG

Default value: -1

### The `"buffer-size"` property

      "buffer-size"              gint                  : Read / Write

Buffer size when buffering streams (-1 default value).

Allowed values: >= G_MAXULONG

Default value: -1

### The `"download"` property

      "download"                 gboolean              : Read / Write

Attempt download buffering when buffering network streams.

Default value: FALSE

### The `"use-buffering"` property

      "use-buffering"            gboolean              : Read / Write

Perform buffering on demuxed/parsed media.

Default value: FALSE

### The `"expose-all-streams"` property

      "expose-all-streams"       gboolean              : Read / Write

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

Default value: TRUE

### The `"ring-buffer-max-size"` property

      "ring-buffer-max-size"     guint64               : Read / Write

Max. amount of data in the ring buffer (bytes, 0 = ring buffer disabled).

Allowed values: <= G_MAXUINT

Default value: 0

## Signal Details

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

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

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

`bin` : | The uridecodebin
`pad` : | The GstPad.
`caps` : | The GstCaps found.
`user_data` : | user data set when the signal handler was connected.
Returns : | TRUE if you wish uridecodebin 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-factories"` signal

    GValueArray*        user_function                      (GstURIDecodeBin *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. Uridecodebin 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                      (GstURIDecodeBin   *pad,
                                                            GstPad            *caps,
                                                            GstCaps           *factory,
                                                            GstElementFactory *Returns,
                                                            gpointer           user_data)      : Run Last

This signal is emitted once uridecodebin 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.

`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 `"unknown-type"` signal

    void                user_function                      (GstURIDecodeBin *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 uridecodebin.

`bin` : | The uridecodebin
`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 `"drained"` signal

    void                user_function                      (GstURIDecodeBin *arg0,
                                                            gpointer         user_data)      : Run Last

This signal is emitted when the data for the current uri is played.

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