From: "Sébastien Rossi" <sebastien.rossi@bbright.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH] avformat/mpegts: correct timestamp overflow on multiple pcr loopback
Date: Fri, 24 Jun 2022 14:30:19 +0200
Message-ID: <CAC7sDL-aF-TLcpmQrn=tpaNrc7PjTT+ZSatxETjzb77zz02fzg@mail.gmail.com> (raw)
In-Reply-To: <20220623233105.GN396728@pb2>
The issue I tried to patch is that on ts stream that last more than 26,5h
(time between pcr loopback) we had pts and dts discontinuities. In
wrap_timestamp function in demux.c, I've seen there's some code to correct
timestamp overflow, but when the stream last more than 26,5h, timestamps
are upper than pts_wrap_reference two times. So the second time we outrun
the pts_wrap_reference we lose the timestamp correction and have some
errors like pts < dts.
What I tried to do is to restamp pts and dts using mpegts pcr information.
The preserve_continuity function checks relative position between timestamp
(dts or pts) and pcr, and handle cases when pcr have already loopback and
timestamp not or vice versa. Then it applicates correction to the timestamp
depending on pcr loopback count.
I can provide a stream with a duration of 30h, if you want to.
Could you tell me how to reproduce the segfault you've seen ?
Sébastien Rossi
Le ven. 24 juin 2022 à 01:31, Michael Niedermayer <michael@niedermayer.cc>
a écrit :
> On Thu, Jun 23, 2022 at 05:45:52PM +0200, Sébastien Rossi wrote:
> > - Detect and count PCR loopback
> > - Correct DTS and PTS with PCR loopback count to avoid timestamp overflow
> > and preserve timestamp continuity
>
> > libavformat/mpegts.c | 45 +
> > tests/ref/fate/ts-opus-demux | 1028
> +++++++++++++++++++++----------------------
> > 2 files changed, 556 insertions(+), 517 deletions(-)
> > 43462e655164b7eda6d3a5e8a85bc42556891742
> 0001-avformat-mpegts-correct-timestamp-overflow-on-multip.patch
> > From 19305e9c1beffb34b73c71f721a6dea2b9fc483f Mon Sep 17 00:00:00 2001
> > From: sebastien_rossi <sebastien.rossi@bbright.com>
> > Date: Thu, 23 Jun 2022 17:20:06 +0200
> > Subject: [PATCH] avformat/mpegts: correct timestamp overflow on multiple
> pcr
> > loopback
>
> not entirely sure what you are trying to do, did you look at the timestamp
> handling in the generic code?
> also this sort of timestamp modification can have issues with seeking
>
> also this segfaults
>
> ==13685== Invalid read of size 8
> ==13685== at 0x690357: new_pes_packet (in ffmpeg/ffmpeg_g)
> ==13685== by 0x6937AB: mpegts_push_data (in ffmpeg/ffmpeg_g)
> ==13685== by 0x690CE7: handle_packet (in ffmpeg/ffmpeg_g)
> ==13685== by 0x6911A4: handle_packets (in ffmpeg/ffmpeg_g)
> ==13685== by 0x6912E1: mpegts_read_packet (in ffmpeg/ffmpeg_g)
> ==13685== by 0x5F42D4: ff_read_packet (in ffmpeg/ffmpeg_g)
> ==13685== by 0x5F50C4: read_frame_internal (in ffmpeg/ffmpeg_g)
> ==13685== by 0x5F6EA0: avformat_find_stream_info (in ffmpeg/ffmpeg_g)
> ==13685== by 0x2F1644: open_input_file (in ffmpeg/ffmpeg_g)
> ==13685== by 0x2F7C5B: ffmpeg_parse_options (in ffmpeg/ffmpeg_g)
> ==13685== by 0x2E60F4: main (in ffmpeg/ffmpeg_g)
> ==13685== Address 0x10 is not stack'd, malloc'd or (recently) free'd
>
> [...]
>
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Avoid a single point of failure, be that a person or equipment.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2022-06-24 12:30 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-23 15:45 Sébastien Rossi
2022-06-23 23:31 ` Michael Niedermayer
2022-06-24 12:30 ` Sébastien Rossi [this message]
2022-06-24 20:34 ` Michael Niedermayer
2022-06-27 12:25 ` Sébastien Rossi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAC7sDL-aF-TLcpmQrn=tpaNrc7PjTT+ZSatxETjzb77zz02fzg@mail.gmail.com' \
--to=sebastien.rossi@bbright.com \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git