Fix excessive seeking with negative audio delay.
authorCarl Hetherington <cth@carlh.net>
Tue, 5 Jul 2016 08:49:00 +0000 (09:49 +0100)
committerCarl Hetherington <cth@carlh.net>
Fri, 8 Jul 2016 00:50:29 +0000 (01:50 +0100)
commitd4014e6e3de7cdf8168a82621cf6a5a6d47379c8
treed7cbc48961c7e1becd89b0ed60cc0f50ee6723c7
parentcb157d1480cc4cc15cab0c17bf9eaf4d81394d31
Fix excessive seeking with negative audio delay.

Before this commit, an audio delay of -110ms on a test project
would result in a seek on every video and audio fetch.

This commit does two things to fix that:

1.  Don't discard audio data that arrives with a timestamp
before the last seek time.  In the case that we are fixing
we had the following sequence:

- video seeks to some frame F
- this causes audio data to arrive a little before F
- this audio data is discarded
- and audio get happens just after F
- the audio code thinks it must seek rather than just pass()ing
since it has no data

If we keep the audio data from before the seek our _decoded
will be much closer to the audio request, so a pass() is more
likely to happen.

2.  Extend the length of time that we will happily pass() for
rather than seeking when looking for audio data.  Seeking is
really bad so we can tolerate quite long times here.  The sensible
length of this value should probably be investigated as the
one in this commit is a finger-in-the-air guess.
src/lib/audio_decoder_stream.cc