Commit b85517dd authored by Sebastian Dröge's avatar Sebastian Dröge 🍵

audiobuffersplit: Keep track of resync time separately

If we drain after a discont, the discont time given by the stream
synchronizer is already the time after the discontinuity. But we need to
drain all pending data based on the previous discont time instead.
parent 6996453c
......@@ -328,11 +328,7 @@ gst_audio_buffer_split_output (GstAudioBufferSplit * self, gboolean force,
GstFlowReturn ret = GST_FLOW_OK;
GstClockTime resync_time;
GST_OBJECT_LOCK (self);
resync_time =
gst_audio_stream_align_get_timestamp_at_discont (self->stream_align);
GST_OBJECT_UNLOCK (self);
resync_time = self->resync_time;
size = samples_per_buffer * bpf;
/* If we accumulated enough error for one sample, include one
......@@ -418,6 +414,7 @@ gst_audio_buffer_split_handle_discont (GstAudioBufferSplit * self,
self->current_offset = 0;
self->accumulated_error = 0;
self->resync_time = GST_BUFFER_PTS (buffer);
}
return ret;
......
......@@ -53,6 +53,7 @@ struct _GstAudioBufferSplit {
GstAdapter *adapter;
GstAudioStreamAlign *stream_align;
GstClockTime resync_time;
guint64 current_offset; /* offset from start time in samples */
guint samples_per_buffer;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment