[FFmpeg-devel] [PATCH, V2] avformat/concat: Fix wrong wrapped timestamp
吴志强
mymoeyard at gmail.com
Mon Dec 18 09:17:46 EET 2017
Thanks for your replay.
I see wrap timestamp control is enable by pts_wrap_bits(default 33),
but mp4 demuxer will later set this to 64 (means disabled).
Now pts_wrap_bits are always tied to 33 without copy it, which seems
strange.
Normally the pts_wrap_reference is based on first packet of a file in
avformat_find_stream_info.
Without copy the value, the value is based on first packet of read_packet,
will be non-zero after seeking.
2017-12-17 22:55 GMT+08:00 Nicolas George <george at nsup.org>:
> mymoeyard at gmail.com (2017-12-14):
> > From: Wu Zhiqiang <mymoeyard at gmail.com>
> >
> > When using concat protocol, start from middle of file will generate
> non-zero wrap reference.
> > If seek to time before the wrap reference, wrap control will generate
> wrong wrapped timestamp.
> > Copy wrap related stream properties when reading header can fix this
> problem.
> >
> > Signed-off-by: Wu Zhiqiang <mymoeyard at gmail.com>
> > ---
> > libavformat/concatdec.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c
> > index 0e189012ad..8dae2737df 100644
> > --- a/libavformat/concatdec.c
> > +++ b/libavformat/concatdec.c
> > @@ -188,6 +188,11 @@ static int copy_stream_props(AVStream *st, AVStream
> *source_st)
> > st->time_base = source_st->time_base;
> > st->sample_aspect_ratio = source_st->sample_aspect_ratio;
> >
> > + /* Fix wrap control problem */
> > + avpriv_set_pts_info(st, source_st->pts_wrap_bits,
> source_st->time_base.num, source_st->time_base.den);
> > + st->pts_wrap_behavior = source_st->pts_wrap_behavior;
> > + st->pts_wrap_reference = source_st->pts_wrap_reference;
> > +
> > av_dict_copy(&st->metadata, source_st->metadata, 0);
> > return 0;
> > }
>
> The concat demuxer is mine to maintain, but I am not very familiar with
> the wrapped timestamps handling, and the commit message does not
> enlighten me.
>
> (By the way, please wrap it at 60-70 characters.)
>
> The way I see it, if the library takes care of de-wrapping timestamps,
> then the concat demuxer will see de-wrapped timestamps from the
> underlying demuxer, and the timestamps do not need to be de-wrapped a
> second time: setting the wrap information is unnecessary and even wrong.
>
> Please explain what I am missing.
>
> Regards,
>
> --
> Nicolas George
>
More information about the ffmpeg-devel
mailing list