rtpsession: forward the caps event

This commit is contained in:
Wim Taymans 2011-12-10 11:11:00 +01:00
parent a705b2ec17
commit da980884dd

View file

@ -1337,9 +1337,8 @@ gst_rtp_session_event_recv_rtp_sink (GstPad * pad, GstObject * parent,
/* process */ /* process */
gst_event_parse_caps (event, &caps); gst_event_parse_caps (event, &caps);
ret = gst_rtp_session_sink_setcaps (pad, rtpsession, caps); gst_rtp_session_sink_setcaps (pad, rtpsession, caps);
/* and eat */ ret = gst_pad_push_event (rtpsession->recv_rtp_src, event);
gst_event_unref (event);
break; break;
} }
case GST_EVENT_FLUSH_STOP: case GST_EVENT_FLUSH_STOP:
@ -1490,7 +1489,7 @@ gst_rtp_session_sink_setcaps (GstPad * pad, GstRtpSession * rtpsession,
gst_rtp_session_cache_caps (rtpsession, caps); gst_rtp_session_cache_caps (rtpsession, caps);
GST_RTP_SESSION_UNLOCK (rtpsession); GST_RTP_SESSION_UNLOCK (rtpsession);
return gst_pad_set_caps (rtpsession->recv_rtp_src, caps); return TRUE;
} }
/* receive a packet from a sender, send it to the RTP session manager and /* receive a packet from a sender, send it to the RTP session manager and
@ -1657,9 +1656,8 @@ gst_rtp_session_event_send_rtp_sink (GstPad * pad, GstObject * parent,
/* process */ /* process */
gst_event_parse_caps (event, &caps); gst_event_parse_caps (event, &caps);
ret = gst_rtp_session_setcaps_send_rtp (pad, rtpsession, caps); gst_rtp_session_setcaps_send_rtp (pad, rtpsession, caps);
/* and eat */ ret = gst_pad_push_event (rtpsession->send_rtp_src, event);
gst_event_unref (event);
break; break;
} }
case GST_EVENT_FLUSH_STOP: case GST_EVENT_FLUSH_STOP:
@ -1718,15 +1716,14 @@ gst_rtp_session_event_send_rtp_sink (GstPad * pad, GstObject * parent,
} }
static GstCaps * static GstCaps *
gst_rtp_session_getcaps_send_rtp (GstPad * pad, GstCaps * filter) gst_rtp_session_getcaps_send_rtp (GstPad * pad, GstRtpSession * rtpsession,
GstCaps * filter)
{ {
GstRtpSession *rtpsession;
GstRtpSessionPrivate *priv; GstRtpSessionPrivate *priv;
GstCaps *result; GstCaps *result;
GstStructure *s1, *s2; GstStructure *s1, *s2;
guint ssrc; guint ssrc;
rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
priv = rtpsession->priv; priv = rtpsession->priv;
ssrc = rtp_session_get_internal_ssrc (priv->session); ssrc = rtp_session_get_internal_ssrc (priv->session);
@ -1748,8 +1745,6 @@ gst_rtp_session_getcaps_send_rtp (GstPad * pad, GstCaps * filter)
GST_DEBUG_OBJECT (rtpsession, "getting caps %" GST_PTR_FORMAT, result); GST_DEBUG_OBJECT (rtpsession, "getting caps %" GST_PTR_FORMAT, result);
gst_object_unref (rtpsession);
return result; return result;
} }
@ -1758,6 +1753,9 @@ gst_rtp_session_query_send_rtp (GstPad * pad, GstObject * parent,
GstQuery * query) GstQuery * query)
{ {
gboolean res = FALSE; gboolean res = FALSE;
GstRtpSession *rtpsession;
rtpsession = GST_RTP_SESSION (parent);
switch (GST_QUERY_TYPE (query)) { switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_CAPS: case GST_QUERY_CAPS:
@ -1765,7 +1763,7 @@ gst_rtp_session_query_send_rtp (GstPad * pad, GstObject * parent,
GstCaps *filter, *caps; GstCaps *filter, *caps;
gst_query_parse_caps (query, &filter); gst_query_parse_caps (query, &filter);
caps = gst_rtp_session_getcaps_send_rtp (pad, filter); caps = gst_rtp_session_getcaps_send_rtp (pad, rtpsession, filter);
gst_query_set_caps_result (query, caps); gst_query_set_caps_result (query, caps);
gst_caps_unref (caps); gst_caps_unref (caps);
res = TRUE; res = TRUE;
@ -1793,7 +1791,7 @@ gst_rtp_session_setcaps_send_rtp (GstPad * pad, GstRtpSession * rtpsession,
GST_DEBUG_OBJECT (rtpsession, "setting internal SSRC to %08x", ssrc); GST_DEBUG_OBJECT (rtpsession, "setting internal SSRC to %08x", ssrc);
rtp_session_set_internal_ssrc (priv->session, ssrc); rtp_session_set_internal_ssrc (priv->session, ssrc);
} }
return gst_pad_set_caps (rtpsession->send_rtp_src, caps); return TRUE;
} }
/* Recieve an RTP packet or a list of packets to be send to the receivers, /* Recieve an RTP packet or a list of packets to be send to the receivers,