Skip to content
Snippets Groups Projects
Alexandre Janniaux's avatar
Alexandre Janniaux authored
After commit 0dd8096f made the drain
asynchronous, the clock at the end of the drain can be reset before the
end of the playback.

When finishing an input while draining asynchronously the audio and
video, it means that the clock can become invalidated and unusable if
the audio terminates before the video.

The video will then switch to the monotonic fallback, which is currently
not synchronized in offset with the master clock, and would lead to a
huge gap in time for the next picture being displayed, deferring as much
the draining of the video output.

The normal processing should be first to drain the decoder, and when
everything has been pushed, to first flush the decoder if a clock reset
is needed.

It was breaking the test_src_player::test_titles by randomly creating a
wait time of more than 90 seconds for the penultimate picture in the
video output, deferring the end of the test by that much. Now the clock
will stay valid with constant parameters until the end of all the
tracks.

Note that it does not fix the problem where the master clock has
finished, but we seek later in the file, which is a different
synchronization issue.

Fixes #27106

Co-authored-by: default avatarThomas Guillem <thomas@gllm.fr>
9a463265