[FFmpeg-devel] [PATCH] ffmpeg: apply discontinuity adjustment per-stream

Michael Niedermayer michael at niedermayer.cc
Tue Jan 10 22:10:18 EET 2023


On Tue, Jan 03, 2023 at 03:52:17PM +0530, Gyan Doshi wrote:
> At present, the offset for discontinuity adjustment is applied per-file but
> the check for discontinuity is intra-stream so the same discontinuity when
> seen in multiple streams with copyts, leads to compounded adjustment of the
> discontinuity offset. This introduces gaps in streams, leading to loss of sync
> or even de facto loss of stream.
> 
> The ts_offset_discont parameter is transferred to InputStream and adjusted
> based on intra-stream gaps.
> ---
> Here's a simulated example to demonstrate the issue:
> 1) generate input
> ffmpeg -f lavfi -i nullsrc=s=32x32:r=1,format=gray -f lavfi -i anullsrc=cl=mono:r=8000 -c:v libx264 -preset superfast -bf 0 -crf 50 -c:a aac -b:a 64k -muxpreload 0 -muxdelay 0 -output_ts_offset 95000 -t 100000 src-100000s.ts
> 
> 2) demo
> ffmpeg -copyts -i "src-100000.ts" -vf "showinfo=checksum=0" -af "ashowinfo" -f null - -report
> 
> ==Before patch==
> 
> timestamp discontinuity for stream #0:1 (id=257, type=audio): -95443717689, new offset= 95443717689
> timestamp discontinuity for stream #0:0 (id=256, type=video): -95443717689, new offset= 190887435378
> 
> [Parsed_ashowinfo_0 @ 000002700af98800] n:0 pts:759998976 pts_time:94999.9
> [Parsed_ashowinfo_0 @ 000002700af98800] n:1 pts:760000000 pts_time:95000
>  ... 
> [Parsed_ashowinfo_0 @ 000002700af98800] n:745202 pts:1523085824 pts_time:190386
> [Parsed_ashowinfo_0 @ 000002700af98800] n:745203 pts:1523086848 pts_time:190386
> [Parsed_ashowinfo_0 @ 000002700af98800] n:745204 pts:2286637614 pts_time:285830
> [Parsed_ashowinfo_0 @ 000002700af98800] n:745205 pts:2286638638 pts_time:285830
> 
> 
> [Parsed_showinfo_0 @ 000002700ec34700] n:   0 pts:8550000000 pts_time:95000
> [Parsed_showinfo_0 @ 000002700ec34700] n:   1 pts:8550090000 pts_time:95001
>  ... 
> [Parsed_showinfo_0 @ 000002700ec34700] n:95380 pts:17134200000 pts_time:190380
> [Parsed_showinfo_0 @ 000002700ec34700] n:95381 pts:17134290000 pts_time:190381
> [Parsed_showinfo_0 @ 000002700ec34700] n:95382 pts:25724314592 pts_time:285826
> [Parsed_showinfo_0 @ 000002700ec34700] n:95383 pts:25724404592 pts_time:285827
> 
> ==After patch==
> 
> timestamp discontinuity for stream #0:1 (id=257, type=audio): -95443717689, new stream offset= 95443717689
> timestamp discontinuity for stream #0:0 (id=256, type=video): -95443717689, new stream offset= 95443717689
> 
> [Parsed_ashowinfo_0 @ 0000023c773c8880] n:0 pts:759998976 pts_time:94999.9
> [Parsed_ashowinfo_0 @ 0000023c773c8880] n:1 pts:760000000 pts_time:95000
>  ... 
> [Parsed_ashowinfo_0 @ 0000023c773c8880] n:745202 pts:1523085824 pts_time:190386
> [Parsed_ashowinfo_0 @ 0000023c773c8880] n:745203 pts:1523086848 pts_time:190386
> [Parsed_ashowinfo_0 @ 0000023c773c8880] n:745204 pts:1523087872 pts_time:190386
> [Parsed_ashowinfo_0 @ 0000023c773c8880] n:745205 pts:1523088896 pts_time:190386
> 
> 
> [Parsed_showinfo_0 @ 0000023c795d07c0] n:   0 pts:8550000000 pts_time:95000
> [Parsed_showinfo_0 @ 0000023c795d07c0] n:   1 pts:8550090000 pts_time:95001
>  ... 
> [Parsed_showinfo_0 @ 0000023c795d07c0] n:95380 pts:17134200000 pts_time:190380
> [Parsed_showinfo_0 @ 0000023c795d07c0] n:95381 pts:17134290000 pts_time:190381
> [Parsed_showinfo_0 @ 0000023c795d07c0] n:95382 pts:17134380000 pts_time:190382
> [Parsed_showinfo_0 @ 0000023c795d07c0] n:95383 pts:17134470000 pts_time:190383
> 
> 
> 
>  fftools/ffmpeg.c | 12 ++++++------
>  fftools/ffmpeg.h |  8 ++++----
>  2 files changed, 10 insertions(+), 10 deletions(-)

I havent looked into this but i have a slightly ungood feeling about this
change

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Dictatorship naturally arises out of democracy, and the most aggravated
form of tyranny and slavery out of the most extreme liberty. -- Plato
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20230110/409f98ee/attachment.sig>


More information about the ffmpeg-devel mailing list