From: Wim Taymans Date: Fri, 19 Mar 2010 14:15:29 +0000 (+0100) Subject: media: allow configuration of allowed lower transport X-Git-Tag: 1.6.0~871 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ac8343ea6267a94c63c41d169b99de1943eda898;p=platform%2Fupstream%2Fgst-rtsp-server.git media: allow configuration of allowed lower transport --- diff --git a/configure.ac b/configure.ac index 5529ede..0218fd2 100644 --- a/configure.ac +++ b/configure.ac @@ -37,8 +37,8 @@ AC_SUBST(GST_MAJORMINOR) AM_PROG_LIBTOOL dnl *** required versions of GStreamer stuff *** -GST_REQ=0.10.25 -GSTPB_REQ=0.10.25 +GST_REQ=0.10.28.1 +GSTPB_REQ=0.10.28.1 dnl export for .pc files AC_SUBST([GST_REQ]) diff --git a/gst/rtsp-server/rtsp-media.c b/gst/rtsp-server/rtsp-media.c index c4f824b..e4c11d7 100644 --- a/gst/rtsp-server/rtsp-media.c +++ b/gst/rtsp-server/rtsp-media.c @@ -26,6 +26,7 @@ #define DEFAULT_SHARED FALSE #define DEFAULT_REUSABLE FALSE +#define DEFAULT_PROTOCOLS GST_RTSP_LOWER_TRANS_UDP | GST_RTSP_LOWER_TRANS_TCP /* define to dump received RTCP packets */ #undef DUMP_STATS @@ -35,6 +36,7 @@ enum PROP_0, PROP_SHARED, PROP_REUSABLE, + PROP_PROTOCOLS, PROP_LAST }; @@ -87,6 +89,11 @@ gst_rtsp_media_class_init (GstRTSPMediaClass * klass) "If this media pipeline can be reused after an unprepare", DEFAULT_REUSABLE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_PROTOCOLS, + g_param_spec_flags ("protocols", "Protocols", + "Allowed lower transport protocols", GST_TYPE_RTSP_LOWER_TRANS, + DEFAULT_PROTOCOLS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + 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, @@ -111,6 +118,10 @@ gst_rtsp_media_init (GstRTSPMedia * media) media->streams = g_array_new (FALSE, TRUE, sizeof (GstRTSPMediaStream *)); media->lock = g_mutex_new (); media->cond = g_cond_new (); + + media->shared = DEFAULT_SHARED; + media->reusable = DEFAULT_REUSABLE; + media->protocols = DEFAULT_PROTOCOLS; } static void @@ -189,6 +200,9 @@ gst_rtsp_media_get_property (GObject * object, guint propid, case PROP_REUSABLE: g_value_set_boolean (value, gst_rtsp_media_is_reusable (media)); break; + case PROP_PROTOCOLS: + g_value_set_flags (value, gst_rtsp_media_get_protocols (media)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, propid, pspec); } @@ -207,6 +221,9 @@ gst_rtsp_media_set_property (GObject * object, guint propid, case PROP_REUSABLE: gst_rtsp_media_set_reusable (media, g_value_get_boolean (value)); break; + case PROP_PROTOCOLS: + gst_rtsp_media_set_protocols (media, g_value_get_flags (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, propid, pspec); } @@ -355,6 +372,37 @@ gst_rtsp_media_is_reusable (GstRTSPMedia * media) } /** + * gst_rtsp_media_set_protocols: + * @media: a #GstRTSPMedia + * @protocols: the new flags + * + * Configure the allowed lower transport for @media. + */ +void +gst_rtsp_media_set_protocols (GstRTSPMedia * media, GstRTSPLowerTrans protocols) +{ + g_return_if_fail (GST_IS_RTSP_MEDIA (media)); + + media->protocols = protocols; +} + +/** + * gst_rtsp_media_get_protocols: + * @media: a #GstRTSPMedia + * + * Get the allowed protocols of @media. + * + * Returns: a #GstRTSPLowerTrans + */ +GstRTSPLowerTrans +gst_rtsp_media_get_protocols (GstRTSPMedia * media) +{ + g_return_val_if_fail (GST_IS_RTSP_MEDIA (media), GST_RTSP_LOWER_TRANS_UNKNOWN); + + return media->protocols; +} + +/** * gst_rtsp_media_n_streams: * @media: a #GstRTSPMedia * diff --git a/gst/rtsp-server/rtsp-media.h b/gst/rtsp-server/rtsp-media.h index 8abf05f..ec3e832 100644 --- a/gst/rtsp-server/rtsp-media.h +++ b/gst/rtsp-server/rtsp-media.h @@ -161,7 +161,9 @@ typedef enum { * @cond: for signaling the object * @shared: if this media can be shared between clients * @reusable: if this media can be reused after an unprepare + * @protocols: the allowed lower transport for this stream * @reused: if this media has been reused + * @is_ipv6: if this media is using ipv6 * @element: the data providing element * @streams: the different streams provided by @element * @dynamic: list of dynamic elements managed by @element @@ -190,6 +192,7 @@ struct _GstRTSPMedia { gboolean shared; gboolean reusable; + GstRTSPLowerTrans protocols; gboolean reused; gboolean is_ipv6; @@ -254,6 +257,9 @@ gboolean gst_rtsp_media_is_shared (GstRTSPMedia *media); void gst_rtsp_media_set_reusable (GstRTSPMedia *media, gboolean reusable); gboolean gst_rtsp_media_is_reusable (GstRTSPMedia *media); +void gst_rtsp_media_set_protocols (GstRTSPMedia *media, GstRTSPLowerTrans protocols); +GstRTSPLowerTrans gst_rtsp_media_get_protocols (GstRTSPMedia *media); + /* prepare the media for playback */ gboolean gst_rtsp_media_prepare (GstRTSPMedia *media); gboolean gst_rtsp_media_is_prepared (GstRTSPMedia *media);