# input-selector

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

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──input-selector

## Factory details

Authors: – Julien Moutte <julien@moutte.net>, Jan Schmidt <thaytan@mad.scientist.com>, Wim Taymans <wim.taymans@gmail.com></wim.taymans@gmail.com></thaytan@mad.scientist.com></julien@moutte.net>

Classification: – `Generic`

Rank – none

Plugin – coreelements

Package – GStreamer

## Pad Templates

### `sink_%u`

    ANY

Presence – request

Direction – sink

Object type – GstSelectorPad

### `src`

    ANY

Presence – always

Direction – src

Object type – GstPad

## Properties

### active-pad

    “active-pad” GstPad *

The currently active sink pad

Flags : Read / Write

### cache-buffers

    “cache-buffers” gboolean

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 losing the already consumed buffers is to enable cache.

Flags : Read / Write

Default value : false

### drop-backwards

    “drop-backwards” gboolean

If set to TRUE and GstInputSelector:sync-streams is also set to TRUE, every time the input is switched, buffers that would go backwards related to the last output buffer pre-switch will be dropped.

Flags : Read / Write

Default value : false

Since : 1.22

### n-pads

    “n-pads” guint

The number of sink pads

Flags : Read

Default value : 0

### sync-mode

    “sync-mode” Input-selector-sync-mode *

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.

Flags : Read / Write

Default value : active-segment (0)

### sync-streams

    “sync-streams” gboolean

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.

Flags : Read / Write

Default value : true

## Named constants

### Input-selector-sync-mode

The different ways that input-selector can behave when in sync-streams mode.

#### Members

`active-segment` (0) – Sync using the current active segment
`clock` (1) – Sync using the clock

The results of the search are