## RBPlayerGstTee RBPlayerGstTee — player interface for inserting additional sinks |

## Synopsis

    #include <rb-player-gst-tee.h>

                        RBPlayerGstTee;
                        RBPlayerGstTeeIface;
    gboolean            rb_player_gst_tee_add_tee           (RBPlayerGstTee *player,
                                                             GstElement *element);
    gboolean            rb_player_gst_tee_remove_tee        (RBPlayerGstTee *player,
                                                             GstElement *element);

## Object Hierarchy

      GInterface
       +----RBPlayerGstTee

## Signals

      "tee-inserted"                                   : Run Last / No Recursion
      "tee-pre-remove"                                 : Run Last / No Recursion

## Description

This interface allows a caller to add a new sink to the GStreamer playback pipeline.

## Details

### RBPlayerGstTee

    typedef struct _RBPlayerGstTee RBPlayerGstTee;

### RBPlayerGstTeeIface

    typedef struct {
    	GTypeInterface g_iface;

    	/* virtual functions */
    	gboolean (*add_tee)		(RBPlayerGstTee *player, GstElement *element);
    	gboolean (*remove_tee)		(RBPlayerGstTee *player, GstElement *element);

    	/* signals */
    	void		(*tee_inserted)		(RBPlayerGstTee *player, GstElement *tee);
    	void		(*tee_pre_remove) (RBPlayerGstTee *player, GstElement *tee);
    } RBPlayerGstTeeIface;

### rb_player_gst_tee_add_tee ()

    gboolean            rb_player_gst_tee_add_tee           (RBPlayerGstTee *player,
                                                             GstElement *element);

Adds a new sink to the playback pipeline. The sink may not be inserted immediately. The 'tee-inserted' signal will be emitted when this actually happens.

`player` : | RBPlayerGstTee implementation
`element` : | new sink element (or bin) to add
Returns : | TRUE if the sink will be added

### rb_player_gst_tee_remove_tee ()

    gboolean            rb_player_gst_tee_remove_tee        (RBPlayerGstTee *player,
                                                             GstElement *element);

Removes a sink from the playback pipeline. The sink may not be removed immediately. The 'tee-pre-remove' signal will be emitted immediately before this actually happens.

`player` : | RBPlayerGstTee implementation
`element` : | the sink element (or bin) to remove
Returns : | TRUE if the sink was found and will be removed

## Signal Details

### The `"tee-inserted"` signal

    void                user_function                      (RBPlayerGstTee *player,
                                                            GObject        *tee,
                                                            gpointer        user_data)      : Run Last / No Recursion

The 'tee-inserted' signal is emitted when the tee element has been inserted into the pipeline and fully linked

`player` : | the RBPlayerGstTee implementation
`tee` : | the element which has been inserted
`user_data` : | user data set when the signal handler was connected.

### The `"tee-pre-remove"` signal

    void                user_function                      (RBPlayerGstTee *player,
                                                            GObject        *tee,
                                                            gpointer        user_data)      : Run Last / No Recursion

The 'tee-pre-remove' signal is emitted immediately before the element is unlinked and removed from the pipeline

`player` : | the RBPlayerGstTee implementation
`tee` : | the element which is about to be removed
`user_data` : | user data set when the signal handler was connected.