]> git.sesse.net Git - ffmpeg/commit
af_asyncts: fix compensation and PTS monotonicity
authorJindřich Makovička <makovick@gmail.com>
Sat, 9 Mar 2013 09:08:09 +0000 (10:08 +0100)
committerAnton Khirnov <anton@khirnov.net>
Fri, 22 Mar 2013 19:09:34 +0000 (20:09 +0100)
commit20a8ee3061e6d777600c13db731bee3c25878991
tree103f498a4e78898034296d1f5d249e2c1bfcc7df
parent1e8b9738fa70e20967ddb542d2f9d5552fc51ec6
af_asyncts: fix compensation and PTS monotonicity

This patch improves af_asyncts behavior on streams with bogus PTS, which
are either non-monotonic, or contain PTS jitter, and trigger the
non-monotonicity error. With this patch, af_asyncts is able to correct
these streams and avoid the error.

Firstly, it fixes resample compensation calculation by supplying proper
units to avresample_set_compensation (sample count per second instead
of sample count per some arbitrary frame size). Also, the calculation of
the compensation itself is fixed - delta is proportional to an adjustment
of the compensation, not the compensation itself. Ideally, the compensation
should converge to a value that keeps delta at zero.

To be able to deal with sources with PTS jitter even without resampling,
small PTS errors are adjusted, so the output frames do not overlap.

Finally, one more monotonicity check is added.

The FATE reference changes because now there is 8 less samples of
silence because of the pts jitter.

Signed-off-by: Jindřich Makovička <makovick@gmail.com>
libavfilter/af_asyncts.c