diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-01-27 11:59:08 +0100 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-01-27 19:05:23 +0100 |
commit | 3285c45dbcf7b7e33c0105ec85f6526aa981f34f (patch) | |
tree | 42f316a566769a3f775ac137005186fecc21f269 | |
parent | b8507414306d5047da7260f3a305816c3f9bc4ec (diff) |
rtpssrccdemux: Factor out getting dpad by pad
-rw-r--r-- | gst/rtpmanager/gstrtpssrcdemux.c | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/gst/rtpmanager/gstrtpssrcdemux.c b/gst/rtpmanager/gstrtpssrcdemux.c index 257cb9d40..4e9affa0c 100644 --- a/gst/rtpmanager/gstrtpssrcdemux.c +++ b/gst/rtpmanager/gstrtpssrcdemux.c @@ -636,6 +636,22 @@ create_failed: } } +static GstRtpSsrcDemuxPad * +find_demux_pad_for_pad (GstRtpSsrcDemux * demux, GstPad * pad) +{ + GSList *walk; + + for (walk = demux->srcpads; walk; walk = g_slist_next (walk)) { + GstRtpSsrcDemuxPad *dpad = (GstRtpSsrcDemuxPad *) walk->data; + if (dpad->rtp_pad == pad || dpad->rtcp_pad == pad) { + return dpad; + } + } + + return NULL; +} + + static gboolean gst_rtp_ssrc_demux_src_event (GstPad * pad, GstObject * parent, GstEvent * event) @@ -651,21 +667,14 @@ gst_rtp_ssrc_demux_src_event (GstPad * pad, GstObject * parent, case GST_EVENT_CUSTOM_BOTH_OOB: s = gst_event_get_structure (event); if (s && !gst_structure_has_field (s, "ssrc")) { - GSList *walk; - - for (walk = demux->srcpads; walk; walk = g_slist_next (walk)) { - GstRtpSsrcDemuxPad *dpad = (GstRtpSsrcDemuxPad *) walk->data; + GstRtpSsrcDemuxPad *dpad = find_demux_pad_for_pad (demux, pad); - if (dpad->rtp_pad == pad || dpad->rtcp_pad == pad) { - GstStructure *ws; + if (dpad) { + GstStructure *ws; - event = - GST_EVENT_CAST (gst_mini_object_make_writable - (GST_MINI_OBJECT_CAST (event))); - ws = gst_event_writable_structure (event); - gst_structure_set (ws, "ssrc", G_TYPE_UINT, dpad->ssrc, NULL); - break; - } + event = gst_event_make_writable (event); + ws = gst_event_writable_structure (event); + gst_structure_set (ws, "ssrc", G_TYPE_UINT, dpad->ssrc, NULL); } } break; |