audioaggregator: Reset offset if the output rate is renegotiated

On next aggregation the new offset will be calculated based on the
segment position.

Without this a rate change would cause a jump forwards or backwards in
the output timeline.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/794>
This commit is contained in:
Sebastian Dröge 2020-08-20 16:31:38 +03:00 committed by Sebastian Dröge
parent 5bfb438d3b
commit 1208d4e635

View file

@ -1099,6 +1099,9 @@ gst_audio_aggregator_negotiated_src_caps (GstAggregator * agg, GstCaps * caps)
GST_INFO_OBJECT (aagg, "setting caps to %" GST_PTR_FORMAT, caps);
gst_caps_replace (&aagg->current_caps, caps);
if (old_info.rate != info.rate)
aagg->priv->offset = -1;
memcpy (&srcpad->info, &info, sizeof (info));
gst_audio_aggregator_update_converters (aagg, &info, &old_info);