[FFmpeg-devel] [PATCH v1] lavf/mov: Fix timestamp rescale on sidx atom

Jun Li junli1026 at gmail.com
Tue Sep 24 07:29:56 EEST 2019


On Thu, Aug 15, 2019 at 1:02 AM mypopy at gmail.com <mypopy at gmail.com> wrote:

> On Thu, Aug 15, 2019 at 12:49 PM Jun Li <junli1026 at gmail.com> wrote:
> >
> > On Thu, Jun 20, 2019 at 2:02 AM Jun Li <junli1026 at gmail.com> wrote:
> >
> > >
> > >
> > > On Tue, May 21, 2019 at 1:05 AM Jun Li <junli1026 at gmail.com> wrote:
> > >
> > >>
> > >>
> > >> On Thu, May 16, 2019 at 1:00 AM Jun Li <junli1026 at gmail.com> wrote:
> > >>
> > >>>
> > >>>
> > >>> On Sun, May 12, 2019 at 7:44 PM Jun Li <junli1026 at gmail.com> wrote:
> > >>>
> > >>>>
> > >>>>
> > >>>> On Fri, May 10, 2019 at 7:25 PM Jun Li <junli1026 at gmail.com> wrote:
> > >>>>
> > >>>>>
> > >>>>> On Thu, May 9, 2019 at 2:08 AM Jun Li <junli1026 at gmail.com> wrote:
> > >>>>>
> > >>>>>> Fix #5090
> > >>>>>> Fix the timestamp rescale issue, from sidx timebase to
> > >>>>>> stream's timebase.
> > >>>>>> ---
> > >>>>>>  libavformat/mov.c | 2 +-
> > >>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> > >>>>>>
> > >>>>>> diff --git a/libavformat/mov.c b/libavformat/mov.c
> > >>>>>> index 78f692872b..d058855e6c 100644
> > >>>>>> --- a/libavformat/mov.c
> > >>>>>> +++ b/libavformat/mov.c
> > >>>>>> @@ -5017,7 +5017,7 @@ static int mov_read_sidx(MOVContext *c,
> > >>>>>> AVIOContext *pb, MOVAtom atom)
> > >>>>>>              return AVERROR_PATCHWELCOME;
> > >>>>>>          }
> > >>>>>>          avio_rb32(pb); // sap_flags
> > >>>>>> -        timestamp = av_rescale_q(pts, st->time_base, timescale);
> > >>>>>> +        timestamp = av_rescale_q(pts, timescale, st->time_base);
> > >>>>>>
> > >>>>>>          index = update_frag_index(c, offset);
> > >>>>>>          frag_stream_info = get_frag_stream_info(&c->frag_index,
> > >>>>>> index, track_id);
> > >>>>>> --
> > >>>>>> 2.17.1
> > >>>>>>
> > >>>>>
> > >>>>> Ping
> > >>>>>
> > >>>>
> > >>>> This change is for fix the issue of calculating sidx_pts.
> > >>>> Sidx box has "earliest_presentation_time", used as pts of  the
> referent
> > >>>> track, sidx also has timescale field.
> > >>>> So the operation should convert from sidx's timescale to track's
> > >>>> timescale, this patch is for addressing this, as well as fixing
> #5090.
> > >>>>
> > >>>> Of course this is based on my understanding, so please correct me
> if I
> > >>>> am wrong. Thanks !
> > >>>>
> > >>>>
> > >>> Ping.
> > >>> I believe this is a bug and triggered whenever sidx box's timescale
> is
> > >>> different from track's timescale.
> > >>> Created this kind of content and verified that ffplay couldn't play
> > >>> while VLC plays well.
> > >>> Then I checked VLC's implementation:
> > >>>
> > >>>
> https://github.com/videolan/vlc/blob/5609c1b41d6fbca6323103619c6139caf7bc9e6e/modules/demux/mp4/mp4.c#L4735
> > >>>
> > >>> Hope someone could help to have a review ? Thanks ! :)
> > >>>
> > >>> Best Regards,
> > >>> -Jun
> > >>>
> > >>>
> > >>>> Best Regards,
> > >>>> Jun
> > >>>>
> > >>>
> > >> Ping x 3
> > >>
> > >
> > > Ping x 4.
> > > I believe this is an obvious bug and happened whenever sidx box's
> > > timescale is different from track's timescale.
> > > I created this kind of content and verified that ffplay couldn't play
> > > while VLC plays well.
> > > This is  VLC's implementation:
> > >
> > >
> https://github.com/videolan/vlc/blob/5609c1b41d6fbca6323103619c6139caf7bc9e6e/modules/demux/mp4/mp4.c#L4735
> > >
> >
> > Ping x 5
> Tested and verified with ffplay/ffprobe, now the sample video DTS is
> monotonically increasing without wrap around.
> _______________________________________________
> 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".


Ping x 6


More information about the ffmpeg-devel mailing list