Merge branch 'master' into 0.11

This commit is contained in:
Wim Taymans 2011-08-16 11:53:37 +02:00
commit 1aefff4959
2 changed files with 28 additions and 7 deletions

View file

@ -34,9 +34,17 @@ enum
PROP_LAST PROP_LAST
}; };
enum
{
SIGNAL_MEDIA_CONSTRUCTED,
SIGNAL_LAST
};
GST_DEBUG_CATEGORY_STATIC (rtsp_media_debug); GST_DEBUG_CATEGORY_STATIC (rtsp_media_debug);
#define GST_CAT_DEFAULT rtsp_media_debug #define GST_CAT_DEFAULT rtsp_media_debug
static guint gst_rtsp_media_factory_signals[SIGNAL_LAST] = { 0 };
static void gst_rtsp_media_factory_get_property (GObject * object, guint propid, static void gst_rtsp_media_factory_get_property (GObject * object, guint propid,
GValue * value, GParamSpec * pspec); GValue * value, GParamSpec * pspec);
static void gst_rtsp_media_factory_set_property (GObject * object, guint propid, static void gst_rtsp_media_factory_set_property (GObject * object, guint propid,
@ -103,6 +111,12 @@ gst_rtsp_media_factory_class_init (GstRTSPMediaFactoryClass * klass)
"The kernel UDP buffer size to use", 0, G_MAXUINT, "The kernel UDP buffer size to use", 0, G_MAXUINT,
DEFAULT_BUFFER_SIZE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); DEFAULT_BUFFER_SIZE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
gst_rtsp_media_factory_signals[SIGNAL_MEDIA_CONSTRUCTED] =
g_signal_new ("media-constructed", G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRTSPMediaFactoryClass,
media_constructed), NULL, NULL, g_cclosure_marshal_VOID__OBJECT,
G_TYPE_NONE, 1, GST_TYPE_RTSP_MEDIA);
klass->gen_key = default_gen_key; klass->gen_key = default_gen_key;
klass->get_element = default_get_element; klass->get_element = default_get_element;
klass->construct = default_construct; klass->construct = default_construct;
@ -490,9 +504,13 @@ gst_rtsp_media_factory_construct (GstRTSPMediaFactory * factory,
if (media == NULL) { if (media == NULL) {
/* nothing cached found, try to create one */ /* nothing cached found, try to create one */
if (klass->construct) if (klass->construct) {
media = klass->construct (factory, url); media = klass->construct (factory, url);
else if (media)
g_signal_emit (factory,
gst_rtsp_media_factory_signals[SIGNAL_MEDIA_CONSTRUCTED], 0, media,
NULL);
} else
media = NULL; media = NULL;
if (media) { if (media) {

View file

@ -98,7 +98,10 @@ struct _GstRTSPMediaFactoryClass {
GstElement * (*get_element) (GstRTSPMediaFactory *factory, const GstRTSPUrl *url); GstElement * (*get_element) (GstRTSPMediaFactory *factory, const GstRTSPUrl *url);
GstRTSPMedia * (*construct) (GstRTSPMediaFactory *factory, const GstRTSPUrl *url); GstRTSPMedia * (*construct) (GstRTSPMediaFactory *factory, const GstRTSPUrl *url);
void (*configure) (GstRTSPMediaFactory *factory, GstRTSPMedia *media); void (*configure) (GstRTSPMediaFactory *factory, GstRTSPMedia *media);
GstElement * (*create_pipeline)(GstRTSPMediaFactory *factory, GstRTSPMedia *media); GstElement * (*create_pipeline) (GstRTSPMediaFactory *factory, GstRTSPMedia *media);
/* signals */
void (*media_constructed)(GstRTSPMediaFactory *factory, GstRTSPMedia *media);
}; };
GType gst_rtsp_media_factory_get_type (void); GType gst_rtsp_media_factory_get_type (void);