media: emit prepared signal when prepared
authorWim Taymans <wim.taymans@collabora.co.uk>
Mon, 13 Dec 2010 15:58:36 +0000 (16:58 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Fri, 17 Dec 2010 17:45:10 +0000 (18:45 +0100)
Make a 'prepared' signal and emit it when we successfully prepared the element.
This signal can be used to configure the media object after it has been prepared
for streaming.

gst/rtsp-server/rtsp-media.c
gst/rtsp-server/rtsp-media.h

index 6f03057..8f3b643 100644 (file)
@@ -46,6 +46,7 @@ enum
 
 enum
 {
+  SIGNAL_PREPARED,
   SIGNAL_UNPREPARED,
   SIGNAL_LAST
 };
@@ -103,6 +104,11 @@ gst_rtsp_media_class_init (GstRTSPMediaClass * klass)
           "Send an EOS event to the pipeline before unpreparing",
           DEFAULT_EOS_SHUTDOWN, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  gst_rtsp_media_signals[SIGNAL_PREPARED] =
+      g_signal_new ("prepared", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+      G_STRUCT_OFFSET (GstRTSPMediaClass, prepared), NULL, NULL,
+      g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, G_TYPE_NONE);
+
   gst_rtsp_media_signals[SIGNAL_UNPREPARED] =
       g_signal_new ("unprepared", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
       G_STRUCT_OFFSET (GstRTSPMediaClass, unprepared), NULL, NULL,
@@ -1592,6 +1598,8 @@ gst_rtsp_media_prepare (GstRTSPMedia * media)
   if (status == GST_RTSP_MEDIA_STATUS_ERROR)
     goto state_failed;
 
+  g_signal_emit (media, gst_rtsp_media_signals[SIGNAL_PREPARED], 0, NULL);
+
   GST_INFO ("object %p is prerolled", media);
 
   return TRUE;
index 45fa22e..6e35b20 100644 (file)
@@ -250,6 +250,7 @@ struct _GstRTSPMediaClass {
   gboolean     (*unprepare)       (GstRTSPMedia *media);
 
   /* signals */
+  gboolean     (*prepared)        (GstRTSPMedia *media);
   gboolean     (*unprepared)      (GstRTSPMedia *media);
 };