mirror of https://github.com/mpv-player/mpv
The touched code is for seek resets and such - we simply want to reset the entire resample state. But I noticed after a seek a tiny bit of audio is missing (mpv's audio sync code inserted silence to compensate). It turns out swr_drop_output() either does not reset some internal state as we expect, or it's designed to drop not only buffered samples, but also future samples. On the other hand, libavresample's avresample_read(), does not have this problem. (It is also pretty explicit in what it does - return/skip buffered data, nothing else.) Is the libswresample behavior a bug? Or a feature? Does nobody even know? Who cares - use the hammer to unfuck the situation. Destroy and deallocate the libswresample context and recreate it. On every seek. |
||
---|---|---|
.. | ||
af.c | ||
af.h | ||
af_channels.c | ||
af_drc.c | ||
af_equalizer.c | ||
af_format.c | ||
af_lavcac3enc.c | ||
af_lavfi.c | ||
af_lavrresample.c | ||
af_pan.c | ||
af_rubberband.c | ||
af_scaletempo.c | ||
af_volume.c | ||
equalizer.h | ||
tools.c |