summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2005-08-18 19:47:38 +0000
committerWim Taymans <wim.taymans@gmail.com>2005-08-18 19:47:38 +0000
commit519f58bb6b618f1603b91ebb02290aeb8560769a (patch)
tree2713805fd8f7ddf75d9cb6f51ba01ad58b2fa1b1 /gst
parentdc2d99dc17b766ae02e96b2b72810cd94c8f07d2 (diff)
gst/rtp/gstrtpamrenc.*: Added payload_type and ssrc properties to the payloader.
Original commit message from CVS: * 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...
Diffstat (limited to 'gst')
-rw-r--r--gst/rtp/gstrtpamrenc.c30
-rw-r--r--gst/rtp/gstrtpamrenc.h2
-rw-r--r--gst/rtp/gstrtpamrpay.c30
-rw-r--r--gst/rtp/gstrtpamrpay.h2
-rw-r--r--gst/rtsp/gstrtspsrc.c10
-rw-r--r--gst/rtsp/rtspurl.c3
6 files changed, 72 insertions, 5 deletions
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)