## tee tee — 1-to-N pipe fitting |

## Synopsis

    struct              GstTee;
    enum                GstTeePullMode;

## Object Hierarchy

      GObject
       +----GstObject
             +----GstElement
                   +----GstTee

## Properties

      "has-chain"                gboolean              : Read / Write / Construct
      "has-sink-loop"            gboolean              : Read / Write / Construct
      "last-message"             gchar*                : Read
      "num-src-pads"             gint                  : Read
      "silent"                   gboolean              : Read / Write / Construct
      "pull-mode"                GstTeePullMode        : Read / Write / Construct
      "alloc-pad"                GstPad*               : Read / Write

## Description

Split data to multiple pads. Branching the data flow is useful when e.g. capturing a video where the video is shown on the screen and also encoded and written to a file. Another example is playing music and hooking up a visualisation module.

One needs to use separate queue elements (or a multiqueue) in each branch to provide separate threads for each branch. Otherwise a blocked dataflow in one branch would stall the other branches.

### Example launch line

    1
    gst-launch filesrc location=song.ogg ! decodebin2 ! tee name=t ! queue ! autoaudiosink t. ! queue ! audioconvert ! goom ! ffmpegcolorspace ! autovideosink

Play a song.ogg from local dir and render visualisations using the goom element.

## Synopsis

### Element Information

plugin | coreelements
author | Erik Walthinsen <omega@cse.ogi.edu>, Wim Taymans <wim@fluendo.com>
class | Generic

### Element Pads

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

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

## Details

### struct GstTee

    struct GstTee;

Opaque GstTee data structure.

### enum GstTeePullMode

    typedef enum {
      GST_TEE_PULL_MODE_NEVER,
      GST_TEE_PULL_MODE_SINGLE,
    } GstTeePullMode;

The different ways that tee can behave in pull mode. `TEE_PULL_MODE_NEVER` disables pull mode.

`GST_TEE_PULL_MODE_NEVER` | Never activate in pull mode.
`GST_TEE_PULL_MODE_SINGLE` | Only one src pad can be active in pull mode.

## Property Details

### The `"has-chain"` property

      "has-chain"                gboolean              : Read / Write / Construct

If the element can operate in push mode.

Default value: TRUE

### The `"has-sink-loop"` property

      "has-sink-loop"            gboolean              : Read / Write / Construct

If the element should spawn a thread (unimplemented and deprecated).

Default value: FALSE

### The `"last-message"` property

      "last-message"             gchar*                : Read

The message describing current status.

Default value: NULL

### The `"num-src-pads"` property

      "num-src-pads"             gint                  : Read

The number of source pads.

Allowed values: >= 0

Default value: 0

### The `"silent"` property

      "silent"                   gboolean              : Read / Write / Construct

Don't produce last_message events.

Default value: TRUE

### The `"pull-mode"` property

      "pull-mode"                GstTeePullMode        : Read / Write / Construct

Behavior of tee in pull mode.

Default value: Never activate in pull mode

### The `"alloc-pad"` property

      "alloc-pad"                GstPad*               : Read / Write

The pad used for gst_pad_alloc_buffer.

## See Also

GstIdentity