audiomixer: Fix discont detection and buffer alignment code

Actually accumulate the sample counter to check the accumulated error
between actual timestamps and expected ones instead of just resetting
the error back to 0 with every new buffer.

Also don't reset discont_time whenever we don't resync. The whole point of
discont_time is to remember when we first detected a discont until we actually
act on it a bit later if the discont stayed around for discont_wait time.

https://bugzilla.gnome.org/show_bug.cgi?id=746032
This commit is contained in:
Sebastian Dröge 2015-03-12 17:11:31 +00:00
parent 4e221b7a65
commit 25d8f76ecd

View file

@ -1058,12 +1058,11 @@ gst_audio_mixer_fill_buffer (GstAudioMixer * audiomixer, GstAudioMixerPad * pad,
G_GUINT64_FORMAT ", got %" G_GUINT64_FORMAT,
pad->next_offset, start_offset);
pad->output_offset = -1;
pad->next_offset = end_offset;
} else {
pad->discont_time = GST_CLOCK_TIME_NONE;
pad->next_offset += pad->size / bpf;
}
pad->next_offset = end_offset;
if (pad->output_offset == -1) {
GstClockTime start_running_time;
GstClockTime end_running_time;