[FFmpeg-devel] [PATCH] fftools/ffmpeg: Disable copy_ts on timestamp wraparound
Aleksey Skripka
caspy at undev.ru
Thu Oct 10 13:37:50 EEST 2019
Greetings!
Michael,
patch works good for mpegts input,
but for hls input it works only if add AVFMT_TS_DISCONT to .flags in ff_hls_demuxer structure (libavformat/hls.c).
Is it right way?
> On 3 May 2019, at 18:36, Michael Niedermayer <michael at niedermayer.cc> wrote:
>
> This allows handling more than 26.5h of mpeg* input
>
> Fixes: Ticket 7876
>
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
> fftools/ffmpeg.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
> index 01f04103cf..b58336679d 100644
> --- a/fftools/ffmpeg.c
> +++ b/fftools/ffmpeg.c
> @@ -4262,6 +4262,7 @@ static int process_input(int file_index)
> int ret, thread_ret, i, j;
> int64_t duration;
> int64_t pkt_dts;
> + int disable_discontinuity_correction = copy_ts;
>
> is = ifile->ctx;
> ret = get_input_packet(ifile, &pkt);
> @@ -4463,10 +4464,20 @@ static int process_input(int file_index)
> pkt.dts += duration;
>
> pkt_dts = av_rescale_q_rnd(pkt.dts, ist->st->time_base, AV_TIME_BASE_Q, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
> +
> + if (copy_ts && pkt_dts != AV_NOPTS_VALUE && ist->next_dts != AV_NOPTS_VALUE &&
> + (is->iformat->flags & AVFMT_TS_DISCONT) && ist->st->pts_wrap_bits < 60) {
> + int64_t wrap_dts = av_rescale_q_rnd(pkt.dts + (1LL<<ist->st->pts_wrap_bits),
> + ist->st->time_base, AV_TIME_BASE_Q,
> + AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
> + if (FFABS(wrap_dts - ist->next_dts) < FFABS(pkt_dts - ist->next_dts)/10)
> + disable_discontinuity_correction = 0;
> + }
> +
> if ((ist->dec_ctx->codec_type == AVMEDIA_TYPE_VIDEO ||
> ist->dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) &&
> pkt_dts != AV_NOPTS_VALUE && ist->next_dts != AV_NOPTS_VALUE &&
> - !copy_ts) {
> + !disable_discontinuity_correction) {
> int64_t delta = pkt_dts - ist->next_dts;
> if (is->iformat->flags & AVFMT_TS_DISCONT) {
> if (delta < -1LL*dts_delta_threshold*AV_TIME_BASE ||
> --
> 2.21.0
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list