GstRTSPMediaFactory

## GstRTSPMediaFactory GstRTSPMediaFactory — A factory for media pipelines |

## Synopsis

    struct              GstRTSPMediaFactory;
    struct              GstRTSPMediaFactoryClass;
    GstRTSPMediaFactory * gst_rtsp_media_factory_new        (void);
    gchar *             gst_rtsp_media_factory_get_launch   (GstRTSPMediaFactory *factory);
    void                gst_rtsp_media_factory_set_launch   (GstRTSPMediaFactory *factory,
                                                             const gchar *launch);
    GstRTSPPermissions * gst_rtsp_media_factory_get_permissions
                                                            (GstRTSPMediaFactory *factory);
    void                gst_rtsp_media_factory_set_permissions
                                                            (GstRTSPMediaFactory *factory,
                                                             GstRTSPPermissions *permissions);
    void                gst_rtsp_media_factory_add_role     (GstRTSPMediaFactory *factory,
                                                             const gchar *role,
                                                             const gchar *fieldname,
                                                             ...);
    void                gst_rtsp_media_factory_set_shared   (GstRTSPMediaFactory *factory,
                                                             gboolean shared);
    gboolean            gst_rtsp_media_factory_is_shared    (GstRTSPMediaFactory *factory);
    gboolean            gst_rtsp_media_factory_is_eos_shutdown
                                                            (GstRTSPMediaFactory *factory);
    void                gst_rtsp_media_factory_set_eos_shutdown
                                                            (GstRTSPMediaFactory *factory,
                                                             gboolean eos_shutdown);
    GstRTSPLowerTrans   gst_rtsp_media_factory_get_protocols
                                                            (GstRTSPMediaFactory *factory);
    void                gst_rtsp_media_factory_set_protocols
                                                            (GstRTSPMediaFactory *factory,
                                                             GstRTSPLowerTrans protocols);
    GstRTSPAddressPool * gst_rtsp_media_factory_get_address_pool
                                                            (GstRTSPMediaFactory *factory);
    void                gst_rtsp_media_factory_set_address_pool
                                                            (GstRTSPMediaFactory *factory,
                                                             GstRTSPAddressPool *pool);
    guint               gst_rtsp_media_factory_get_buffer_size
                                                            (GstRTSPMediaFactory *factory);
    void                gst_rtsp_media_factory_set_buffer_size
                                                            (GstRTSPMediaFactory *factory,
                                                             guint size);
    GstRTSPMedia *      gst_rtsp_media_factory_construct    (GstRTSPMediaFactory *factory,
                                                             const GstRTSPUrl *url);
    GstElement *        gst_rtsp_media_factory_create_element
                                                            (GstRTSPMediaFactory *factory,
                                                             const GstRTSPUrl *url);

## Object Hierarchy

      GObject
       +----GstRTSPMediaFactory

## Properties

      "buffer-size"              guint                 : Read / Write
      "eos-shutdown"             gboolean              : Read / Write
      "launch"                   gchar*                : Read / Write
      "protocols"                GstRTSPLowerTrans     : Read / Write
      "shared"                   gboolean              : Read / Write
      "suspend-mode"             GstRTSPSuspendMode    : Read / Write

## Signals

      "media-configure"                                : Run Last
      "media-constructed"                              : Run Last

## Description

The GstRTSPMediaFactory is responsible for creating or recycling GstRTSPMedia objects based on the passed URL.

The default implementation of the object can create GstRTSPMedia objects containing a pipeline created from a launch description set with `gst_rtsp_media_factory_set_launch()`.

Media from a factory can be shared by setting the shared flag with `gst_rtsp_media_factory_set_shared()`. When a factory is shared, `gst_rtsp_media_factory_construct()` will return the same GstRTSPMedia when the url matches.

Last reviewed on 2013-07-11 (1.0.0)

## Details

### struct GstRTSPMediaFactory

    struct GstRTSPMediaFactory;

The definition and logic for constructing the pipeline for a media. The media can contain multiple streams like audio and video.

### struct GstRTSPMediaFactoryClass

    struct GstRTSPMediaFactoryClass {
      GObjectClass  parent_class;

      gchar *         (*gen_key)            (GstRTSPMediaFactory *factory, const GstRTSPUrl *url);

      GstElement *    (*create_element)     (GstRTSPMediaFactory *factory, const GstRTSPUrl *url);
      GstRTSPMedia *  (*construct)          (GstRTSPMediaFactory *factory, const GstRTSPUrl *url);
      GstElement *    (*create_pipeline)    (GstRTSPMediaFactory *factory, GstRTSPMedia *media);
      void            (*configure)          (GstRTSPMediaFactory *factory, GstRTSPMedia *media);

      /* signals */
      void            (*media_constructed)  (GstRTSPMediaFactory *factory, GstRTSPMedia *media);
      void            (*media_configure)    (GstRTSPMediaFactory *factory, GstRTSPMedia *media);
    };

The GstRTSPMediaFactory class structure.

GObjectClass `parent_class`; |
`gen_key` () | convert `url` to a key for caching shared GstRTSPMedia objects. The default implementation of this function will use the complete URL including the query parameters to return a key.
`create_element` () | Construct and return a GstElement that is a GstBin containing the elements to use for streaming the media. The bin should contain payloaders pay%d for each stream. The default implementation of this function returns the bin created from the launch parameter.
`construct` () | the vmethod that will be called when the factory has to create the GstRTSPMedia for `url`. The default implementation of this function calls create_element to retrieve an element and then looks for pay%d to create the streams.
`create_pipeline` () | create a new pipeline or re-use an existing one and add the GstRTSPMedia's element created by `construct` to the pipeline.
`configure` () | configure the media created with `construct`. The default implementation will configure the 'shared' property of the media.
`media_constructed` () | signal emited when a media was constructed
`media_configure` () | signal emited when a media should be configured

### gst_rtsp_media_factory_new ()

    GstRTSPMediaFactory * gst_rtsp_media_factory_new        (void);

Create a new GstRTSPMediaFactory instance.

Returns : | a new GstRTSPMediaFactory object.

### gst_rtsp_media_factory_get_launch ()

    gchar *             gst_rtsp_media_factory_get_launch   (GstRTSPMediaFactory *factory);

Get the `gst_parse_launch()` pipeline description that will be used in the default prepare vmethod.

`factory` : | a GstRTSPMediaFactory
Returns : | the configured launch description. `g_free()` after usage.

### gst_rtsp_media_factory_set_launch ()

    void                gst_rtsp_media_factory_set_launch   (GstRTSPMediaFactory *factory,
                                                             const gchar *launch);

The `gst_parse_launch()` line to use for constructing the pipeline in the default prepare vmethod.

The pipeline description should return a GstBin as the toplevel element which can be accomplished by enclosing the dscription with brackets '(' ')'.

The description should return a pipeline with payloaders named pay0, pay1, etc.. Each of the payloaders will result in a stream.

`factory` : | a GstRTSPMediaFactory
`launch` : | the launch description

### gst_rtsp_media_factory_get_permissions ()

    GstRTSPPermissions * gst_rtsp_media_factory_get_permissions
                                                            (GstRTSPMediaFactory *factory);

Get the permissions object from `factory`.

`factory` : | a GstRTSPMediaFactory
Returns : | a GstRTSPPermissions object, unref after usage. [transfer full]

### gst_rtsp_media_factory_set_permissions ()

    void                gst_rtsp_media_factory_set_permissions
                                                            (GstRTSPMediaFactory *factory,
                                                             GstRTSPPermissions *permissions);

Set `permissions` on `factory`.

`factory` : | a GstRTSPMediaFactory
`permissions` : | a GstRTSPPermissions

### gst_rtsp_media_factory_add_role ()

    void                gst_rtsp_media_factory_add_role     (GstRTSPMediaFactory *factory,
                                                             const gchar *role,
                                                             const gchar *fieldname,
                                                             ...);

A convenience method to add `role` with `fieldname` and additional arguments to the permissions of `factory`. If `factory` had no permissions, new permissions will be created and the role will be added to it.

`factory` : | a GstRTSPMediaFactory
`role` : | a role
`fieldname` : | the first field name
`...` : | additional arguments

### gst_rtsp_media_factory_set_shared ()

    void                gst_rtsp_media_factory_set_shared   (GstRTSPMediaFactory *factory,
                                                             gboolean shared);

Configure if media created from this factory can be shared between clients.

`factory` : | a GstRTSPMediaFactory
`shared` : | the new value

### gst_rtsp_media_factory_is_shared ()

    gboolean            gst_rtsp_media_factory_is_shared    (GstRTSPMediaFactory *factory);

Get if media created from this factory can be shared between clients.

`factory` : | a GstRTSPMediaFactory
Returns : | `TRUE` if the media will be shared between clients.

### gst_rtsp_media_factory_is_eos_shutdown ()

    gboolean            gst_rtsp_media_factory_is_eos_shutdown
                                                            (GstRTSPMediaFactory *factory);

Get if media created from this factory will have an EOS event sent to the pipeline before shutdown.

`factory` : | a GstRTSPMediaFactory
Returns : | `TRUE` if the media will receive EOS before shutdown.

### gst_rtsp_media_factory_set_eos_shutdown ()

    void                gst_rtsp_media_factory_set_eos_shutdown
                                                            (GstRTSPMediaFactory *factory,
                                                             gboolean eos_shutdown);

Configure if media created from this factory will have an EOS sent to the pipeline before shutdown.

`factory` : | a GstRTSPMediaFactory
`eos_shutdown` : | the new value

### gst_rtsp_media_factory_get_protocols ()

    GstRTSPLowerTrans   gst_rtsp_media_factory_get_protocols
                                                            (GstRTSPMediaFactory *factory);

Get the allowed protocols of `factory`.

`factory` : | a GstRTSPMediaFactory
Returns : | a GstRTSPLowerTrans

### gst_rtsp_media_factory_set_protocols ()

    void                gst_rtsp_media_factory_set_protocols
                                                            (GstRTSPMediaFactory *factory,
                                                             GstRTSPLowerTrans protocols);

Configure the allowed lower transport for `factory`.

`factory` : | a GstRTSPMediaFactory
`protocols` : | the new flags

### gst_rtsp_media_factory_get_address_pool ()

    GstRTSPAddressPool * gst_rtsp_media_factory_get_address_pool
                                                            (GstRTSPMediaFactory *factory);

Get the GstRTSPAddressPool used as the address pool of `factory`.

`factory` : | a GstRTSPMediaFactory
Returns : | the GstRTSPAddressPool of `factory`. `g_object_unref()` after usage. [transfer full]

### gst_rtsp_media_factory_set_address_pool ()

    void                gst_rtsp_media_factory_set_address_pool
                                                            (GstRTSPMediaFactory *factory,
                                                             GstRTSPAddressPool *pool);

configure `pool` to be used as the address pool of `factory`.

`factory` : | a GstRTSPMediaFactory
`pool` : | a GstRTSPAddressPool

### gst_rtsp_media_factory_get_buffer_size ()

    guint               gst_rtsp_media_factory_get_buffer_size
                                                            (GstRTSPMediaFactory *factory);

Get the kernel UDP buffer size.

`factory` : | a GstRTSPMedia
Returns : | the kernel UDP buffer size.

### gst_rtsp_media_factory_set_buffer_size ()

    void                gst_rtsp_media_factory_set_buffer_size
                                                            (GstRTSPMediaFactory *factory,
                                                             guint size);

Set the kernel UDP buffer size.

`factory` : | a GstRTSPMedia
`size` : | the new value

### gst_rtsp_media_factory_construct ()

    GstRTSPMedia *      gst_rtsp_media_factory_construct    (GstRTSPMediaFactory *factory,
                                                             const GstRTSPUrl *url);

Construct the media object and create its streams. Implementations should create the needed gstreamer elements and add them to the result object. No state changes should be performed on them yet.

One or more GstRTSPStream objects should be created from the result with `gst_rtsp_media_create_stream()`.

After the media is constructed, it can be configured and then prepared with `gst_rtsp_media_prepare()`.

`factory` : | a GstRTSPMediaFactory
`url` : | the url used
Returns : | a new GstRTSPMedia if the media could be prepared. [transfer full]

### gst_rtsp_media_factory_create_element ()

    GstElement *        gst_rtsp_media_factory_create_element
                                                            (GstRTSPMediaFactory *factory,
                                                             const GstRTSPUrl *url);

Construct and return a GstElement that is a GstBin containing the elements to use for streaming the media.

The bin should contain payloaders pay%d for each stream. The default implementation of this function returns the bin created from the launch parameter.

`factory` : | a GstRTSPMediaFactory
`url` : | the url used
Returns : | (transfer floating) a new GstElement.

## Property Details

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

      "buffer-size"              guint                 : Read / Write

The kernel UDP buffer size to use.

Default value: 524288

### The `"eos-shutdown"` property

      "eos-shutdown"             gboolean              : Read / Write

Send EOS down the pipeline before shutting down.

Default value: FALSE

### The `"launch"` property

      "launch"                   gchar*                : Read / Write

A launch description of the pipeline.

Default value: NULL

### The `"protocols"` property

      "protocols"                GstRTSPLowerTrans     : Read / Write

Allowed lower transport protocols.

Default value: GST_RTSP_LOWER_TRANS_UDP|GST_RTSP_LOWER_TRANS_UDP_MCAST|GST_RTSP_LOWER_TRANS_TCP

### The `"shared"` property

      "shared"                   gboolean              : Read / Write

If media from this factory is shared.

Default value: FALSE

### The `"suspend-mode"` property

      "suspend-mode"             GstRTSPSuspendMode    : Read / Write

Control how media will be suspended.

Default value: GST_RTSP_SUSPEND_MODE_NONE

## Signal Details

### The `"media-configure"` signal

    void                user_function                      (GstRTSPMediaFactory *gstrtspmediafactory,
                                                            GstRTSPMedia        *arg1,
                                                            gpointer             user_data)                : Run Last

### The `"media-constructed"` signal

    void                user_function                      (GstRTSPMediaFactory *gstrtspmediafactory,
                                                            GstRTSPMedia        *arg1,
                                                            gpointer             user_data)                : Run Last

## See Also

GstRTSPMountPoints, GstRTSPMedia