#include "rtsp-media.h"
-#define DEFAULT_SHARED FALSE
-#define DEFAULT_REUSABLE FALSE
-#define DEFAULT_PROTOCOLS GST_RTSP_LOWER_TRANS_UDP | GST_RTSP_LOWER_TRANS_TCP
+#define DEFAULT_SHARED FALSE
+#define DEFAULT_REUSABLE FALSE
+#define DEFAULT_PROTOCOLS GST_RTSP_LOWER_TRANS_UDP | GST_RTSP_LOWER_TRANS_TCP
//#define DEFAULT_PROTOCOLS GST_RTSP_LOWER_TRANS_UDP_MCAST
-#define DEFAULT_EOS_SHUTDOWN FALSE
-#define DEFAULT_BUFFER_SIZE 0x80000
+#define DEFAULT_EOS_SHUTDOWN FALSE
+#define DEFAULT_BUFFER_SIZE 0x80000
+#define DEFAULT_MULTICAST_GROUP "224.2.0.1"
/* define to dump received RTCP packets */
#undef DUMP_STATS
PROP_PROTOCOLS,
PROP_EOS_SHUTDOWN,
PROP_BUFFER_SIZE,
+ PROP_MULTICAST_GROUP,
PROP_LAST
};
"The kernel UDP buffer size to use", 0, G_MAXUINT,
DEFAULT_BUFFER_SIZE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_MULTICAST_GROUP,
+ g_param_spec_string ("multicast-group", "Multicast Group",
+ "The Multicast group to send media to",
+ DEFAULT_MULTICAST_GROUP, 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,
media->protocols = DEFAULT_PROTOCOLS;
media->eos_shutdown = DEFAULT_EOS_SHUTDOWN;
media->buffer_size = DEFAULT_BUFFER_SIZE;
+ media->multicast_group = g_strdup (DEFAULT_MULTICAST_GROUP);
}
void
g_source_destroy (media->source);
g_source_unref (media->source);
}
+ g_free (media->multicast_group);
g_mutex_free (media->lock);
g_cond_free (media->cond);
case PROP_BUFFER_SIZE:
g_value_set_uint (value, gst_rtsp_media_get_buffer_size (media));
break;
+ case PROP_MULTICAST_GROUP:
+ g_value_take_string (value, gst_rtsp_media_get_multicast_group (media));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, propid, pspec);
}
case PROP_BUFFER_SIZE:
gst_rtsp_media_set_buffer_size (media, g_value_get_uint (value));
break;
+ case PROP_MULTICAST_GROUP:
+ gst_rtsp_media_set_multicast_group (media, g_value_get_string (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, propid, pspec);
}
}
/**
+ * gst_rtsp_media_set_multicast_group:
+ * @media: a #GstRTSPMedia
+ * @mc: the new multicast group
+ *
+ * Set the multicast group that media from @media will be streamed to.
+ */
+void
+gst_rtsp_media_set_multicast_group (GstRTSPMedia * media, const gchar * mc)
+{
+ g_return_if_fail (GST_IS_RTSP_MEDIA (media));
+
+ g_mutex_lock (media->lock);
+ g_free (media->multicast_group);
+ media->multicast_group = g_strdup (mc);
+ g_mutex_unlock (media->lock);
+}
+
+/**
+ * gst_rtsp_media_get_multicast_group:
+ * @media: a #GstRTSPMedia
+ *
+ * Get the multicast group that media from @media will be streamed to.
+ *
+ * Returns: the multicast group
+ */
+gchar *
+gst_rtsp_media_get_multicast_group (GstRTSPMedia * media)
+{
+ gchar *result;
+
+ g_return_val_if_fail (GST_IS_RTSP_MEDIA (media), NULL);
+
+ g_mutex_lock (media->lock);
+ result = g_strdup (media->multicast_group);
+ g_mutex_unlock (media->lock);
+
+ return result;
+}
+
+/**
* gst_rtsp_media_set_auth:
* @media: a #GstRTSPMedia
* @auth: a #GstRTSPAuth