## input-selector

input-selector — N-to-1 input stream selector

## Synopsis

    struct              GstInputSelector;

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GstObject
                   +----GstElement
                         +----GstInputSelector

## Properties

      "active-pad"               GstPad*               : Read / Write
      "cache-buffers"            gboolean              : Read / Write
      "n-pads"                   guint                 : Read
      "sync-mode"                GstInputSelectorSyncMode  : Read / Write
      "sync-streams"             gboolean              : Read / Write

## Signals

      "block"                                          : Action

## Description

Direct one out of N input streams to the output pad.

The input pads are from a GstPad subclass and have additional properties, which users may find useful, namely:

- "running-time": Running time of stream on pad (gint64)
- "tags": The currently active tags on the pad (GstTagList, boxed type)
- "active": If the pad is currently active (gboolean)
- "always-ok" : Make an inactive pads return GST_FLOW_OK instead of GST_FLOW_NOT_LINKED

## Synopsis

### Element Information

plugin | coreelements
author | Julien Moutte <julien@moutte.net>, Jan Schmidt <thaytan@mad.scientist.com>, Wim Taymans <wim.taymans@gmail.com>
class | Generic

### Element Pads

name | sink_%u
direction | sink
presence | request
details | ANY

name | src
direction | source
presence | always
details | ANY

## Details

### struct GstInputSelector

    struct GstInputSelector;

## Property Details

### The `"active-pad"` property

      "active-pad"               GstPad*               : Read / Write

The currently active sink pad.

### The `"cache-buffers"` property

      "cache-buffers"            gboolean              : Read / Write

If set to `TRUE` and GstInputSelector:sync-streams is also set to `TRUE`, the active pad will cache the buffers still considered valid (after current running time, see sync-mode) to avoid missing frames if/when the pad is reactivated.

The active pad may push more buffers than what is currently displayed/consumed and when changing pads those buffers will be discarded and the only way to reactivate that pad without loosing the already consumed buffers is to enable cache.

Default value: FALSE

### The `"n-pads"` property

      "n-pads"                   guint                 : Read

The number of sink pads.

Default value: 0

### The `"sync-mode"` property

      "sync-mode"                GstInputSelectorSyncMode  : Read / Write

Select how input-selector will sync buffers when in sync-streams mode.

Note that when using the "active-segment" mode, the "active-segment" may be ahead of current clock time when switching the active pad, as the current active pad may have pushed more buffers than what was displayed/consumed, which may cause delays and some missing buffers.

Default value: Sync using the current active segment

### The `"sync-streams"` property

      "sync-streams"             gboolean              : Read / Write

If set to `TRUE` all inactive streams will be synced to the running time of the active stream or to the current clock.

To make sure no buffers are dropped by input-selector that might be needed when switching the active pad, sync-mode should be set to "clock" and cache-buffers to TRUE.

Default value: TRUE

## Signal Details

### The `"block"` signal

    gint64              user_function                      (GstInputSelector *inputselector,
                                                            gpointer          user_data)          : Action

Block all sink pads in preparation for a switch. Returns the stop time of the current switch segment, as a running time, or 0 if there is no current active pad or the current active pad never received data.

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

## See Also

GstOutputSelector