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);
void                gst_rtsp_media_factory_set_profiles (GstRTSPMediaFactory *factory,
                                                         GstRTSPProfile profiles);
GstRTSPProfile      gst_rtsp_media_factory_get_profiles (GstRTSPMediaFactory *factory);
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);
GstRTSPSuspendMode  gst_rtsp_media_factory_get_suspend_mode
                                                        (GstRTSPMediaFactory *factory);
void                gst_rtsp_media_factory_set_suspend_mode
                                                        (GstRTSPMediaFactory *factory,
                                                         GstRTSPSuspendMode mode);
void                gst_rtsp_media_factory_set_retransmission_time
                                                        (GstRTSPMediaFactory *factory,
                                                         GstClockTime time);
GstClockTime        gst_rtsp_media_factory_get_retransmission_time
                                                        (GstRTSPMediaFactory *factory);
void                gst_rtsp_media_factory_set_latency  (GstRTSPMediaFactory *factory,
                                                         guint latency);
guint               gst_rtsp_media_factory_get_latency  (GstRTSPMediaFactory *factory);
void                gst_rtsp_media_factory_set_media_gtype
                                                        (GstRTSPMediaFactory *factory,
                                                         GType media_gtype);
GType               gst_rtsp_media_factory_get_media_gtype
                                                        (GstRTSPMediaFactory *factory);
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
         +----GstRTSPMediaFactoryURI

Properties

  "buffer-size"              guint                 : Read / Write
  "clock"                    GstClock*             : Read / Write
  "eos-shutdown"             gboolean              : Read / Write
  "latency"                  guint                 : Read / Write
  "launch"                   gchar*                : Read / Write
  "profiles"                 GstRTSPProfile        : Read / Write
  "protocols"                GstRTSPLowerTrans     : Read / Write
  "shared"                   gboolean              : Read / Write
  "stop-on-disconnect"       gboolean              : Read / Write
  "suspend-mode"             GstRTSPSuspendMode    : Read / Write
  "transport-mode"           GstRTSPTransportMode  : 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 emitted when a media was constructed

media_configure ()

signal emitted 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. [transfer full]

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. [transfer full]

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. [transfer none]

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_set_profiles ()

void                gst_rtsp_media_factory_set_profiles (GstRTSPMediaFactory *factory,
                                                         GstRTSPProfile profiles);

Configure the allowed profiles for factory.

factory :

a GstRTSPMediaFactory

profiles :

the new flags

gst_rtsp_media_factory_get_profiles ()

GstRTSPProfile      gst_rtsp_media_factory_get_profiles (GstRTSPMediaFactory *factory);

Get the allowed profiles of factory.

factory :

a GstRTSPMediaFactory

Returns :

a GstRTSPProfile

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. [transfer none]

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_get_suspend_mode ()

GstRTSPSuspendMode  gst_rtsp_media_factory_get_suspend_mode
                                                        (GstRTSPMediaFactory *factory);

Get how media created from this factory will be suspended.

factory :

a GstRTSPMediaFactory

Returns :

a GstRTSPSuspendMode.

gst_rtsp_media_factory_set_suspend_mode ()

void                gst_rtsp_media_factory_set_suspend_mode
                                                        (GstRTSPMediaFactory *factory,
                                                         GstRTSPSuspendMode mode);

Configure how media created from this factory will be suspended.

factory :

a GstRTSPMediaFactory

mode :

the new GstRTSPSuspendMode

gst_rtsp_media_factory_set_retransmission_time ()

void                gst_rtsp_media_factory_set_retransmission_time
                                                        (GstRTSPMediaFactory *factory,
                                                         GstClockTime time);

Configure the time to store for possible retransmission

factory :

a GstRTSPMediaFactory

time :

a GstClockTime

gst_rtsp_media_factory_get_retransmission_time ()

GstClockTime        gst_rtsp_media_factory_get_retransmission_time
                                                        (GstRTSPMediaFactory *factory);

Get the time that is stored for retransmission purposes

factory :

a GstRTSPMediaFactory

Returns :

a GstClockTime

gst_rtsp_media_factory_set_latency ()

void                gst_rtsp_media_factory_set_latency  (GstRTSPMediaFactory *factory,
                                                         guint latency);

Configure the latency used for receiving media

factory :

a GstRTSPMediaFactory

latency :

latency in milliseconds

gst_rtsp_media_factory_get_latency ()

guint               gst_rtsp_media_factory_get_latency  (GstRTSPMediaFactory *factory);

Get the latency that is used for receiving media

factory :

a GstRTSPMediaFactory

Returns :

latency in milliseconds

gst_rtsp_media_factory_set_media_gtype ()

void                gst_rtsp_media_factory_set_media_gtype
                                                        (GstRTSPMediaFactory *factory,
                                                         GType media_gtype);

Configure the GType of the GstRTSPMedia subclass to create (by default, overridden construct vmethods may of course do something different)

factory :

a GstRTSPMediaFactory

media_gtype :

the GType of the class to create

Since 1.6


gst_rtsp_media_factory_get_media_gtype ()

GType               gst_rtsp_media_factory_get_media_gtype
                                                        (GstRTSPMediaFactory *factory);

Return the GType of the GstRTSPMedia subclass this factory will create.

factory :

a GstRTSPMediaFactory

Since 1.6


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 :

a new GstElement. [transfer floating]

Property Details

The "buffer-size" property

  "buffer-size"              guint                 : Read / Write

The kernel UDP buffer size to use.

Default value: 524288


The "clock" property

  "clock"                    GstClock*             : Read / Write

Clock to be used by the pipelines created for all medias of this factory.


The "eos-shutdown" property

  "eos-shutdown"             gboolean              : Read / Write

Send EOS down the pipeline before shutting down.

Default value: FALSE


The "latency" property

  "latency"                  guint                 : Read / Write

Latency used for receiving media in milliseconds.

Default value: 200


The "launch" property

  "launch"                   gchar*                : Read / Write

A launch description of the pipeline.

Default value: NULL


The "profiles" property

  "profiles"                 GstRTSPProfile        : Read / Write

Allowed transfer profiles.

Default value: GST_RTSP_PROFILE_AVP


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 "stop-on-disconnect" property

  "stop-on-disconnect"       gboolean              : Read / Write

If media from this factory should be stopped when a client disconnects without TEARDOWN.

Default value: TRUE


The "suspend-mode" property

  "suspend-mode"             GstRTSPSuspendMode    : Read / Write

Control how media will be suspended.

Default value: GST_RTSP_SUSPEND_MODE_NONE


The "transport-mode" property

  "transport-mode"           GstRTSPTransportMode  : Read / Write

If media from this factory is for PLAY or RECORD.

Default value: GST_RTSP_TRANSPORT_MODE_PLAY

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