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

Loading