[FFmpeg-devel] [PATCH v2] swr/swresample: avoid reapplication of firstpts

Gyan Doshi ffmpeg at gyani.pro
Sat Dec 16 12:15:24 EET 2023



On 2023-12-15 11:46 pm, Michael Niedermayer wrote:
> On Fri, Dec 15, 2023 at 12:30:46PM +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 firstpts initialized to AV_NOPTS_VALUE in swr_alloc and then
>> checked in swr_init to avoid resetting outpts, thus avoiding reapplication
>> of firstpts.
>>
>> Fixes #4131.
>> ---
>>   libswresample/options.c    | 1 +
>>   libswresample/swresample.c | 5 +++--
>>   2 files changed, 4 insertions(+), 2 deletions(-)
> LGTM
>
> also can a fate test be added for this ?

v3 with fate test sent.

Regards,
Gyan



More information about the ffmpeg-devel mailing list