rtspsrc: Add sdes property and proxy it to rtpbin
authorYouness Alaoui <youness.alaoui@collabora.co.uk>
Thu, 8 Aug 2013 15:54:41 +0000 (11:54 -0400)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 21 Aug 2013 07:06:02 +0000 (09:06 +0200)
gst/rtsp/gstrtspsrc.c
gst/rtsp/gstrtspsrc.h

index e431004..70b3f25 100644 (file)
@@ -217,6 +217,7 @@ enum
   PROP_MULTICAST_IFACE,
   PROP_NTP_SYNC,
   PROP_USE_PIPELINE_CLOCK,
+  PROP_SDES,
   PROP_LAST
 };
 
@@ -575,6 +576,11 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass)
           DEFAULT_USE_PIPELINE_CLOCK,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  g_object_class_install_property (gobject_class, PROP_SDES,
+      g_param_spec_boxed ("sdes", "SDES",
+          "The SDES items of this session",
+          GST_TYPE_STRUCTURE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
   /**
    * GstRTSPSrc::handle-request:
    * @rtspsrc: a #GstRTSPSrc
@@ -686,6 +692,7 @@ gst_rtspsrc_init (GstRTSPSrc * src)
   src->multi_iface = g_strdup (DEFAULT_MULTICAST_IFACE);
   src->ntp_sync = DEFAULT_NTP_SYNC;
   src->use_pipeline_clock = DEFAULT_USE_PIPELINE_CLOCK;
+  src->sdes = NULL;
 
   /* get a list of all extensions */
   src->extensions = gst_rtsp_ext_list_get ();
@@ -728,6 +735,9 @@ gst_rtspsrc_finalize (GObject * object)
   if (rtspsrc->provided_clock)
     gst_object_unref (rtspsrc->provided_clock);
 
+  if (rtspsrc->sdes)
+    gst_structure_free (rtspsrc->sdes);
+
   /* free locks */
   g_rec_mutex_clear (&rtspsrc->stream_rec_lock);
   g_rec_mutex_clear (&rtspsrc->state_rec_lock);
@@ -934,6 +944,9 @@ gst_rtspsrc_set_property (GObject * object, guint prop_id, const GValue * value,
     case PROP_USE_PIPELINE_CLOCK:
       rtspsrc->use_pipeline_clock = g_value_get_boolean (value);
       break;
+    case PROP_SDES:
+      rtspsrc->sdes = g_value_dup_boxed (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -1056,6 +1069,9 @@ gst_rtspsrc_get_property (GObject * object, guint prop_id, GValue * value,
     case PROP_USE_PIPELINE_CLOCK:
       g_value_set_boolean (value, rtspsrc->use_pipeline_clock);
       break;
+    case PROP_SDES:
+      g_value_set_boxed (value, rtspsrc->sdes);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -2665,6 +2681,10 @@ gst_rtspsrc_stream_configure_manager (GstRTSPSrc * src, GstRTSPStream * stream,
             src->use_pipeline_clock, NULL);
       }
 
+      if (src->sdes && g_object_class_find_property (klass, "sdes")) {
+        g_object_set (src->manager, "sdes", src->sdes, NULL);
+      }
+
       if (g_object_class_find_property (klass, "drop-on-latency")) {
         g_object_set (src->manager, "drop-on-latency", src->drop_on_latency,
             NULL);
index 751c699..e042a3d 100644 (file)
@@ -225,6 +225,7 @@ struct _GstRTSPSrc {
   gchar            *multi_iface;
   gboolean          ntp_sync;
   gboolean          use_pipeline_clock;
+  GstStructure     *sdes;
 
   /* state */
   GstRTSPState       state;