diff options
-rw-r--r-- | ChangeLog | 16 | ||||
-rw-r--r-- | gst/rtp/gstrtpamrenc.c | 30 | ||||
-rw-r--r-- | gst/rtp/gstrtpamrenc.h | 2 | ||||
-rw-r--r-- | gst/rtp/gstrtpamrpay.c | 30 | ||||
-rw-r--r-- | gst/rtp/gstrtpamrpay.h | 2 | ||||
-rw-r--r-- | gst/rtsp/gstrtspsrc.c | 10 | ||||
-rw-r--r-- | gst/rtsp/rtspurl.c | 3 |
7 files changed, 88 insertions, 5 deletions
@@ -1,5 +1,21 @@ 2005-08-18 Wim Taymans <wim@fluendo.com> + * gst/rtp/gstrtpamrenc.c: (gst_rtpamrenc_class_init), + (gst_rtpamrenc_init), (gst_rtpamrenc_chain), + (gst_rtpamrenc_set_property), (gst_rtpamrenc_get_property): + * gst/rtp/gstrtpamrenc.h: + Added payload_type and ssrc properties to the payloader. + + * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_send), (gst_rtspsrc_open), + (gst_rtspsrc_close), (gst_rtspsrc_play): + Options need to be stripped and are in the Public header field. + + * gst/rtsp/rtspurl.c: (rtsp_url_parse): + Fix url / parsing... + + +2005-08-18 Wim Taymans <wim@fluendo.com> + * gst/rtp/Makefile.am: * gst/rtp/gstrtp.c: (plugin_init): * gst/rtp/gstrtpamrdec.c: (gst_rtpamrdec_get_type), diff --git a/gst/rtp/gstrtpamrenc.c b/gst/rtp/gstrtpamrenc.c index de368ec4..d5986e35 100644 --- a/gst/rtp/gstrtpamrenc.c +++ b/gst/rtp/gstrtpamrenc.c @@ -38,11 +38,15 @@ enum }; #define DEFAULT_MTU 1024 +#define DEFAULT_PT 96 +#define DEFAULT_SSRC 0 enum { PROP_0, - PROP_MTU + PROP_MTU, + PROP_PT, + PROP_SSRC }; static GstStaticPadTemplate gst_rtpamrenc_sink_template = @@ -131,6 +135,14 @@ gst_rtpamrenc_class_init (GstRtpAMREncClass * klass) g_param_spec_uint ("mtu", "MTU", "Maximum size of one packet", 28, G_MAXUINT, DEFAULT_MTU, G_PARAM_READWRITE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PT, + g_param_spec_uint ("pt", "payload type", + "The payload type of the packets", + 0, 0x80, DEFAULT_PT, G_PARAM_READWRITE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SSRC, + g_param_spec_uint ("ssrc", "SSRC", + "The SSRC of the packets", + 0, G_MAXUINT, DEFAULT_SSRC, G_PARAM_READWRITE)); gstelement_class->change_state = gst_rtpamrenc_change_state; } @@ -150,6 +162,8 @@ gst_rtpamrenc_init (GstRtpAMREnc * rtpamrenc) gst_element_add_pad (GST_ELEMENT (rtpamrenc), rtpamrenc->sinkpad); rtpamrenc->mtu = DEFAULT_MTU; + rtpamrenc->pt = DEFAULT_PT; + rtpamrenc->ssrc = DEFAULT_SSRC; } static GstFlowReturn @@ -176,6 +190,8 @@ gst_rtpamrenc_chain (GstPad * pad, GstBuffer * buffer) /* FIXME, assert for now */ g_assert (GST_BUFFER_SIZE (outbuf) < rtpamrenc->mtu); + gst_rtpbuffer_set_payload_type (outbuf, rtpamrenc->pt); + gst_rtpbuffer_set_ssrc (outbuf, rtpamrenc->ssrc); gst_rtpbuffer_set_seq (outbuf, rtpamrenc->seqnum++); gst_rtpbuffer_set_timestamp (outbuf, timestamp * 8000 / GST_SECOND); @@ -222,6 +238,12 @@ gst_rtpamrenc_set_property (GObject * object, guint prop_id, case PROP_MTU: rtpamrenc->mtu = g_value_get_uint (value); break; + case PROP_PT: + rtpamrenc->pt = g_value_get_uint (value); + break; + case PROP_SSRC: + rtpamrenc->ssrc = g_value_get_uint (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -240,6 +262,12 @@ gst_rtpamrenc_get_property (GObject * object, guint prop_id, GValue * value, case PROP_MTU: g_value_set_uint (value, rtpamrenc->mtu); break; + case PROP_PT: + g_value_set_uint (value, rtpamrenc->pt); + break; + case PROP_SSRC: + g_value_set_uint (value, rtpamrenc->ssrc); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; diff --git a/gst/rtp/gstrtpamrenc.h b/gst/rtp/gstrtpamrenc.h index 3da7f960..7d9e06fe 100644 --- a/gst/rtp/gstrtpamrenc.h +++ b/gst/rtp/gstrtpamrenc.h @@ -47,6 +47,8 @@ struct _GstRtpAMREnc GstPad *srcpad; guint16 seqnum; + guint pt; + guint ssrc; guint mtu; }; diff --git a/gst/rtp/gstrtpamrpay.c b/gst/rtp/gstrtpamrpay.c index de368ec4..d5986e35 100644 --- a/gst/rtp/gstrtpamrpay.c +++ b/gst/rtp/gstrtpamrpay.c @@ -38,11 +38,15 @@ enum }; #define DEFAULT_MTU 1024 +#define DEFAULT_PT 96 +#define DEFAULT_SSRC 0 enum { PROP_0, - PROP_MTU + PROP_MTU, + PROP_PT, + PROP_SSRC }; static GstStaticPadTemplate gst_rtpamrenc_sink_template = @@ -131,6 +135,14 @@ gst_rtpamrenc_class_init (GstRtpAMREncClass * klass) g_param_spec_uint ("mtu", "MTU", "Maximum size of one packet", 28, G_MAXUINT, DEFAULT_MTU, G_PARAM_READWRITE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PT, + g_param_spec_uint ("pt", "payload type", + "The payload type of the packets", + 0, 0x80, DEFAULT_PT, G_PARAM_READWRITE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SSRC, + g_param_spec_uint ("ssrc", "SSRC", + "The SSRC of the packets", + 0, G_MAXUINT, DEFAULT_SSRC, G_PARAM_READWRITE)); gstelement_class->change_state = gst_rtpamrenc_change_state; } @@ -150,6 +162,8 @@ gst_rtpamrenc_init (GstRtpAMREnc * rtpamrenc) gst_element_add_pad (GST_ELEMENT (rtpamrenc), rtpamrenc->sinkpad); rtpamrenc->mtu = DEFAULT_MTU; + rtpamrenc->pt = DEFAULT_PT; + rtpamrenc->ssrc = DEFAULT_SSRC; } static GstFlowReturn @@ -176,6 +190,8 @@ gst_rtpamrenc_chain (GstPad * pad, GstBuffer * buffer) /* FIXME, assert for now */ g_assert (GST_BUFFER_SIZE (outbuf) < rtpamrenc->mtu); + gst_rtpbuffer_set_payload_type (outbuf, rtpamrenc->pt); + gst_rtpbuffer_set_ssrc (outbuf, rtpamrenc->ssrc); gst_rtpbuffer_set_seq (outbuf, rtpamrenc->seqnum++); gst_rtpbuffer_set_timestamp (outbuf, timestamp * 8000 / GST_SECOND); @@ -222,6 +238,12 @@ gst_rtpamrenc_set_property (GObject * object, guint prop_id, case PROP_MTU: rtpamrenc->mtu = g_value_get_uint (value); break; + case PROP_PT: + rtpamrenc->pt = g_value_get_uint (value); + break; + case PROP_SSRC: + rtpamrenc->ssrc = g_value_get_uint (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -240,6 +262,12 @@ gst_rtpamrenc_get_property (GObject * object, guint prop_id, GValue * value, case PROP_MTU: g_value_set_uint (value, rtpamrenc->mtu); break; + case PROP_PT: + g_value_set_uint (value, rtpamrenc->pt); + break; + case PROP_SSRC: + g_value_set_uint (value, rtpamrenc->ssrc); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; diff --git a/gst/rtp/gstrtpamrpay.h b/gst/rtp/gstrtpamrpay.h index 3da7f960..7d9e06fe 100644 --- a/gst/rtp/gstrtpamrpay.h +++ b/gst/rtp/gstrtpamrpay.h @@ -47,6 +47,8 @@ struct _GstRtpAMREnc GstPad *srcpad; guint16 seqnum; + guint pt; + guint ssrc; guint mtu; }; diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index b27378d0..1e04ef7c 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -581,7 +581,7 @@ gst_rtspsrc_open (GstRTSPSrc * src) gchar **options; gint i; - rtsp_message_get_header (&response, RTSP_HDR_ALLOW, &respoptions); + rtsp_message_get_header (&response, RTSP_HDR_PUBLIC, &respoptions); if (!respoptions) goto no_options; @@ -590,7 +590,13 @@ gst_rtspsrc_open (GstRTSPSrc * src) i = 0; while (options[i]) { - gint method = rtsp_find_method (options[i]); + gchar *stripped; + gint method; + + stripped = g_strdup (options[i]); + stripped = g_strstrip (stripped); + method = rtsp_find_method (stripped); + g_free (stripped); /* keep bitfield of supported methods */ if (method != -1) diff --git a/gst/rtsp/rtspurl.c b/gst/rtsp/rtspurl.c index 830520bb..7f58cb45 100644 --- a/gst/rtsp/rtspurl.c +++ b/gst/rtsp/rtspurl.c @@ -17,6 +17,7 @@ * Boston, MA 02111-1307, USA. */ #include <stdlib.h> +#include <string.h> #include "rtspurl.h" @@ -49,7 +50,7 @@ rtsp_url_parse (const gchar * urlstr, RTSPUrl ** url) return RTSP_EINVAL; } - slash = g_strrstr (p, "/"); + slash = strstr (p, "/"); at = g_strrstr (p, "@"); if (at && slash && at > slash) |