summaryrefslogtreecommitdiffstats
path: root/gst/rtpmanager/gstrtpjitterbuffer.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2007-05-14 15:28:36 +0000
committerWim Taymans <wim.taymans@gmail.com>2007-05-14 15:28:36 +0000
commit1e1c12e87ed1d4ec135330653c9390522d3e04dc (patch)
tree8eb1f01d31d0432aa128f19bf752df90e1d717c7 /gst/rtpmanager/gstrtpjitterbuffer.c
parent6eb0124ae65fcb49d1b999ce4b8d4d6faba0c05a (diff)
downloadgst-plugins-bad-1e1c12e87ed1d4ec135330653c9390522d3e04dc.tar.gz
gst-plugins-bad-1e1c12e87ed1d4ec135330653c9390522d3e04dc.tar.bz2
gst-plugins-bad-1e1c12e87ed1d4ec135330653c9390522d3e04dc.zip
gst/rtpmanager/async_jitter_queue.c: Fix leak when flushing.
Original commit message from CVS: * gst/rtpmanager/async_jitter_queue.c: (async_jitter_queue_set_flushing_unlocked): Fix leak when flushing. * gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_clear_pt_map), (gst_rtp_bin_class_init): * gst/rtpmanager/gstrtpbin.h: Add clear-pt-map signal. * gst/rtpmanager/gstrtpjitterbuffer.c: (gst_rtp_jitter_buffer_flush_stop), (gst_rtp_jitter_buffer_sink_event), (gst_rtp_jitter_buffer_loop): Init clock-rate to -1 to mark unknow clock rate. Fix flushing.
Diffstat (limited to 'gst/rtpmanager/gstrtpjitterbuffer.c')
-rw-r--r--gst/rtpmanager/gstrtpjitterbuffer.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c
index 0bd0cb1a..e49f41a6 100644
--- a/gst/rtpmanager/gstrtpjitterbuffer.c
+++ b/gst/rtpmanager/gstrtpjitterbuffer.c
@@ -468,6 +468,7 @@ gst_rtp_jitter_buffer_flush_stop (GstRTPJitterBuffer * jitterbuffer)
gst_segment_init (&priv->segment, GST_FORMAT_TIME);
priv->last_popped_seqnum = -1;
priv->next_seqnum = -1;
+ priv->clock_rate = -1;
/* allow pops from the src pad task */
async_jitter_queue_unset_flushing_unlocked (jitterbuffer->priv->queue);
async_jitter_queue_unlock (priv->queue);
@@ -617,6 +618,8 @@ gst_rtp_jitter_buffer_sink_event (GstPad * pad, GstEvent * event)
jitterbuffer = GST_RTP_JITTER_BUFFER (gst_pad_get_parent (pad));
priv = jitterbuffer->priv;
+ GST_DEBUG_OBJECT (jitterbuffer, "received %s", GST_EVENT_TYPE_NAME (event));
+
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_NEWSEGMENT:
{
@@ -649,14 +652,17 @@ gst_rtp_jitter_buffer_sink_event (GstPad * pad, GstEvent * event)
}
case GST_EVENT_FLUSH_START:
gst_rtp_jitter_buffer_flush_start (jitterbuffer);
+ ret = gst_pad_push_event (priv->srcpad, event);
break;
case GST_EVENT_FLUSH_STOP:
- gst_rtp_jitter_buffer_flush_stop (jitterbuffer);
+ ret = gst_pad_push_event (priv->srcpad, event);
+ ret = gst_rtp_jitter_buffer_src_activate_push (priv->srcpad, TRUE);
break;
case GST_EVENT_EOS:
{
/* push EOS in queue. We always push it at the head */
async_jitter_queue_lock (priv->queue);
+ GST_DEBUG_OBJECT (jitterbuffer, "queuing EOS");
/* check for flushing, we need to discard the event and return FALSE when
* we are flushing */
ret = priv->srcresult == GST_FLOW_OK;
@@ -947,8 +953,9 @@ again:
/* bring timestamp to gst time */
timestamp = gst_util_uint64_scale (GST_SECOND, rtp_time, priv->clock_rate);
- GST_DEBUG_OBJECT (jitterbuffer, "rtptime %u, timestamp %" GST_TIME_FORMAT,
- rtp_time, GST_TIME_ARGS (timestamp));
+ GST_DEBUG_OBJECT (jitterbuffer,
+ "rtptime %u, clock-rate %u, timestamp %" GST_TIME_FORMAT, rtp_time,
+ priv->clock_rate, GST_TIME_ARGS (timestamp));
/* bring to running time */
running_time = gst_segment_to_running_time (&priv->segment, GST_FORMAT_TIME,