Skip to content

audio: bad audio clipping with GST_FORMAT_TIME

When the buffer timestamp/duration is having a non finished value such as 0.333.. or 0.666.., the buffer clipping might loose a sample causing a tick in the audio playback.

Indeed the diff with segment boundaries should be scaled and rounded with 'gst_util_uint64_scale_round' and not with 'gst_util_uint64_scale' in GST_FORMAT_TIME case. Previously it was rounded always up but for 0.333.. diff it should be rounded down.

See additional unit test: 'test_buffer_clip_time_handles_rounding_third'

As the issue is a bit difficult to reproduce with a single/simple pipeline (needs seek), I attached this ges example which demonstrates the issue where we can ear a tick at 999ms, 1.999s 2.9999s etc. The tick can be heard when the buffer timestamp is x.xxx6666 or x.xxx333 based.

main.cpp tone meson.build

Edited by Stéphane Cerveau

Merge request reports