[FFmpeg-devel] [PATCH] avformat/mpegts: only reset timestamps to NOPTS for DVB teletext

Marton Balint cus at passwd.hu
Thu Aug 13 10:33:56 EEST 2020



On Thu, 13 Aug 2020, Jan Ekström wrote:

> While having the possibility of non-NOPTS values that can suddenly
> jump in time due to adjustments to match PCR is not nice for DVB
> subtitles, apparently the parser for this format bases its behavior on
> whether the packets' timestamps are NOPTS or not.

Actually what matters is that the parser separates packets which have 
different PTS values. Having a DVB subtitle packet with no PTS is not even 
valid based on what I read from the specs:

"Each PES header shall carry a PTS, associated with all the subtitle data
contained within that PES packet. "

So I guess current code assumes that if a packet has no PTS then it is 
also part of the previous packet, but this also seems like a workaround 
for bad streams...

> Thus while we can adjust timestamps, we should exclude DVB subtitles 
> from the timestamp unsetting logic.

Ok, but to be frank the timestamp setting logic (even when it is 
used with PCR) also breaks the parser, because it might assign different 
PTS to PES packets which have the same PTS...

>
> Fixes #8844
> ---
> libavformat/mpegts.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
> index f71f18a57d..50d4d5e9bc 100644
> --- a/libavformat/mpegts.c
> +++ b/libavformat/mpegts.c
> @@ -1343,7 +1343,8 @@ skip:
>                         }
>                     }
> 
> -                    if (!pcr_found) {
> +                    if (pes->st->codecpar->codec_id == AV_CODEC_ID_DVB_TELETEXT &&
> +                        !pcr_found) {
>                         av_log(pes->stream, AV_LOG_VERBOSE,
>                                "Forcing DTS/PTS to be unset for a "
>                                "non-trustworthy PES packet for PID %d as "

Patch LGTM, I am just saying that the problems lies more deep...

Regards,
Marton


More information about the ffmpeg-devel mailing list