From 2ac5bd293b16714085dc72ae23c4adf834c1db56 Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Thu, 14 Apr 2016 14:02:27 +0100 Subject: [PATCH] oggdemux: fix audio glitches with low bitrate vorbis A low bitrate stream which can pack more than 2 seconds of audio in a page would cause the stream's position to be updated not often enough, and would trigger a spurious "jump" via a GAP event. Instead, we update the stream position after calculating the new overall segment position. https://bugzilla.gnome.org/show_bug.cgi?id=764966 --- ext/ogg/gstoggdemux.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/ogg/gstoggdemux.c b/ext/ogg/gstoggdemux.c index 9fe3a284e8..cf65573df2 100644 --- a/ext/ogg/gstoggdemux.c +++ b/ext/ogg/gstoggdemux.c @@ -808,8 +808,6 @@ gst_ogg_demux_chain_peer (GstOggPad * pad, ogg_packet * packet, pad->discont = FALSE; } - pad->position = ogg->segment.position; - /* don't push the header packets when we are asked to skip them */ if (!packet->b_o_s || push_headers) { if (pad->last_ret == GST_FLOW_OK) { @@ -854,6 +852,8 @@ gst_ogg_demux_chain_peer (GstOggPad * pad, ogg_packet * packet, GST_DEBUG_OBJECT (ogg, "ogg current time %" GST_TIME_FORMAT " (%" G_GINT64_FORMAT ")", GST_TIME_ARGS (current_time), current_time); + pad->position = ogg->segment.position; + /* check stream eos */ if (!pad->is_eos && !delta_unit && ((ogg->segment.rate > 0.0 &&