On Tue, Dec 12, 2023 at 04:50:08PM +0530, Gyan Doshi wrote: > During a resampling operation where > > 1) user has specified first_pts > 2) SWR_FLAG_RESAMPLE is not set initially (directly or otherwise) > 3) first_pts has been fulfilled (always using hard compensation) > > then upon first encountering a delay where a soft compensation is > required, swr_set_compensation will lead to another init of swr which > will reset outpts to the specified firstpts thus leading to an output > frame having its pts = firstpts. When the next input frame is received, > swr will see a large delay and inject silence from firstpts to the > current frame's pts. This can lead to severe desync and in worst case, > loss of audio playback. > > Parameter initcount added to keep track of swr_init calls of the swrcontext > and to ultimately avoid enforcing firstpts again. > > Fixes #4131. > --- > libswresample/swresample.c | 7 +++++-- > libswresample/swresample_internal.h | 1 + > libswresample/version.h | 2 +- > 3 files changed, 7 insertions(+), 3 deletions(-) Would it work to instead set firstpts = AV_NOPTS_VALUE on allocation and then use firstpts == AV_NOPTS_VALUE to detect if it has been set already ? If that workes, that seems simpler than counting init thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB While the State exists there can be no freedom; when there is freedom there will be no State. -- Vladimir Lenin