summaryrefslogtreecommitdiffstats
path: root/gst/rtp/gstrtpdec.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2005-09-21 17:50:29 +0000
committerWim Taymans <wim.taymans@gmail.com>2005-09-21 17:50:29 +0000
commita297069e16a54bc5dc63ec903ec919b7f16bd632 (patch)
tree968aa948bf68a58f1a024b768baaeca1a8664989 /gst/rtp/gstrtpdec.c
parent9dd3929730bc3e2656eabfd8a8edfc7a61bb0176 (diff)
gst/rtp/gstrtpamrdec.c: Handle multiple AMr packets per payload. Handle CRC and parse ILL/ILP.
Original commit message from CVS: * gst/rtp/gstrtpamrdec.c: (gst_rtpamrdec_sink_setcaps), (gst_rtpamrdec_chain): Handle multiple AMr packets per payload. Handle CRC and parse ILL/ILP. * gst/rtp/gstrtpamrenc.c: (gst_rtpamrenc_setcaps): Make caps params strings for easy SDP mapping. * gst/rtp/gstrtpdec.c: (gst_rtpdec_init), (gst_rtpdec_getcaps): Handle capsnego better. * gst/rtp/gstrtpmp4vdec.c: (gst_rtpmp4vdec_setcaps): * gst/rtp/gstrtpmp4venc.c: (gst_rtpmp4venc_new_caps): Generate and parse config string in the caps.
Diffstat (limited to 'gst/rtp/gstrtpdec.c')
-rw-r--r--gst/rtp/gstrtpdec.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gst/rtp/gstrtpdec.c b/gst/rtp/gstrtpdec.c
index a7e7f6b8..96089c47 100644
--- a/gst/rtp/gstrtpdec.c
+++ b/gst/rtp/gstrtpdec.c
@@ -74,6 +74,7 @@ GST_STATIC_PAD_TEMPLATE ("sinkrtcp",
static void gst_rtpdec_class_init (gpointer g_class);
static void gst_rtpdec_init (GstRTPDec * rtpdec);
+static GstCaps *gst_rtpdec_getcaps (GstPad * pad);
static GstFlowReturn gst_rtpdec_chain_rtp (GstPad * pad, GstBuffer * buffer);
static GstFlowReturn gst_rtpdec_chain_rtcp (GstPad * pad, GstBuffer * buffer);
@@ -153,6 +154,7 @@ gst_rtpdec_init (GstRTPDec * rtpdec)
gst_pad_new_from_template (gst_static_pad_template_get
(&gst_rtpdec_sink_rtp_template), "sinkrtp");
gst_element_add_pad (GST_ELEMENT (rtpdec), rtpdec->sink_rtp);
+ gst_pad_set_getcaps_function (rtpdec->sink_rtp, gst_rtpdec_getcaps);
gst_pad_set_chain_function (rtpdec->sink_rtp, gst_rtpdec_chain_rtp);
/* the input rtcp pad */
@@ -166,6 +168,7 @@ gst_rtpdec_init (GstRTPDec * rtpdec)
rtpdec->src_rtp =
gst_pad_new_from_template (gst_static_pad_template_get
(&gst_rtpdec_src_rtp_template), "srcrtp");
+ gst_pad_set_getcaps_function (rtpdec->src_rtp, gst_rtpdec_getcaps);
gst_element_add_pad (GST_ELEMENT (rtpdec), rtpdec->src_rtp);
/* the output rtcp pad */
@@ -175,6 +178,19 @@ gst_rtpdec_init (GstRTPDec * rtpdec)
gst_element_add_pad (GST_ELEMENT (rtpdec), rtpdec->src_rtcp);
}
+static GstCaps *
+gst_rtpdec_getcaps (GstPad * pad)
+{
+ GstRTPDec *src;
+ GstPad *other;
+
+ src = GST_RTPDEC (GST_PAD_PARENT (pad));
+
+ other = pad == src->src_rtp ? src->sink_rtp : src->src_rtp;
+
+ return gst_pad_peer_get_caps (other);
+}
+
static GstFlowReturn
gst_rtpdec_chain_rtp (GstPad * pad, GstBuffer * buffer)
{