Message ID | 20190509090756.5684-1-junli1026@gmail.com |
---|---|
State | Accepted |
Commit | c23797bc336c507188a502a5758b24a4595f14ec |
Headers | show |
On Thu, May 9, 2019 at 2:08 AM Jun Li <junli1026@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
On Fri, May 10, 2019 at 7:25 PM Jun Li <junli1026@gmail.com> wrote: > > On Thu, May 9, 2019 at 2:08 AM Jun Li <junli1026@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 ! Best Regards, Jun
On Sun, May 12, 2019 at 7:44 PM Jun Li <junli1026@gmail.com> wrote: > > > On Fri, May 10, 2019 at 7:25 PM Jun Li <junli1026@gmail.com> wrote: > >> >> On Thu, May 9, 2019 at 2:08 AM Jun Li <junli1026@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 > > > >
On Thu, May 16, 2019 at 1:00 AM Jun Li <junli1026@gmail.com> wrote: > > > On Sun, May 12, 2019 at 7:44 PM Jun Li <junli1026@gmail.com> wrote: > >> >> >> On Fri, May 10, 2019 at 7:25 PM Jun Li <junli1026@gmail.com> wrote: >> >>> >>> On Thu, May 9, 2019 at 2:08 AM Jun Li <junli1026@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
On Tue, May 21, 2019 at 1:05 AM Jun Li <junli1026@gmail.com> wrote: > > > On Thu, May 16, 2019 at 1:00 AM Jun Li <junli1026@gmail.com> wrote: > >> >> >> On Sun, May 12, 2019 at 7:44 PM Jun Li <junli1026@gmail.com> wrote: >> >>> >>> >>> On Fri, May 10, 2019 at 7:25 PM Jun Li <junli1026@gmail.com> wrote: >>> >>>> >>>> On Thu, May 9, 2019 at 2:08 AM Jun Li <junli1026@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
On Thu, Jun 20, 2019 at 2:02 AM Jun Li <junli1026@gmail.com> wrote: > > > On Tue, May 21, 2019 at 1:05 AM Jun Li <junli1026@gmail.com> wrote: > >> >> >> On Thu, May 16, 2019 at 1:00 AM Jun Li <junli1026@gmail.com> wrote: >> >>> >>> >>> On Sun, May 12, 2019 at 7:44 PM Jun Li <junli1026@gmail.com> wrote: >>> >>>> >>>> >>>> On Fri, May 10, 2019 at 7:25 PM Jun Li <junli1026@gmail.com> wrote: >>>> >>>>> >>>>> On Thu, May 9, 2019 at 2:08 AM Jun Li <junli1026@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
On Thu, Aug 15, 2019 at 12:49 PM Jun Li <junli1026@gmail.com> wrote: > > On Thu, Jun 20, 2019 at 2:02 AM Jun Li <junli1026@gmail.com> wrote: > > > > > > > On Tue, May 21, 2019 at 1:05 AM Jun Li <junli1026@gmail.com> wrote: > > > >> > >> > >> On Thu, May 16, 2019 at 1:00 AM Jun Li <junli1026@gmail.com> wrote: > >> > >>> > >>> > >>> On Sun, May 12, 2019 at 7:44 PM Jun Li <junli1026@gmail.com> wrote: > >>> > >>>> > >>>> > >>>> On Fri, May 10, 2019 at 7:25 PM Jun Li <junli1026@gmail.com> wrote: > >>>> > >>>>> > >>>>> On Thu, May 9, 2019 at 2:08 AM Jun Li <junli1026@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.
On Thu, Aug 15, 2019 at 1:02 AM mypopy@gmail.com <mypopy@gmail.com> wrote: > On Thu, Aug 15, 2019 at 12:49 PM Jun Li <junli1026@gmail.com> wrote: > > > > On Thu, Jun 20, 2019 at 2:02 AM Jun Li <junli1026@gmail.com> wrote: > > > > > > > > > > > On Tue, May 21, 2019 at 1:05 AM Jun Li <junli1026@gmail.com> wrote: > > > > > >> > > >> > > >> On Thu, May 16, 2019 at 1:00 AM Jun Li <junli1026@gmail.com> wrote: > > >> > > >>> > > >>> > > >>> On Sun, May 12, 2019 at 7:44 PM Jun Li <junli1026@gmail.com> wrote: > > >>> > > >>>> > > >>>> > > >>>> On Fri, May 10, 2019 at 7:25 PM Jun Li <junli1026@gmail.com> wrote: > > >>>> > > >>>>> > > >>>>> On Thu, May 9, 2019 at 2:08 AM Jun Li <junli1026@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@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". Ping x 6
On Tue, Sep 24, 2019 at 12:38 PM Jun Li <junli1026@gmail.com> wrote: > > On Thu, Aug 15, 2019 at 1:02 AM mypopy@gmail.com <mypopy@gmail.com> wrote: > > > On Thu, Aug 15, 2019 at 12:49 PM Jun Li <junli1026@gmail.com> wrote: > > > > > > On Thu, Jun 20, 2019 at 2:02 AM Jun Li <junli1026@gmail.com> wrote: > > > > > > > > > > > > > > > On Tue, May 21, 2019 at 1:05 AM Jun Li <junli1026@gmail.com> wrote: > > > > > > > >> > > > >> > > > >> On Thu, May 16, 2019 at 1:00 AM Jun Li <junli1026@gmail.com> wrote: > > > >> > > > >>> > > > >>> > > > >>> On Sun, May 12, 2019 at 7:44 PM Jun Li <junli1026@gmail.com> wrote: > > > >>> > > > >>>> > > > >>>> > > > >>>> On Fri, May 10, 2019 at 7:25 PM Jun Li <junli1026@gmail.com> wrote: > > > >>>> > > > >>>>> > > > >>>>> On Thu, May 9, 2019 at 2:08 AM Jun Li <junli1026@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@ffmpeg.org > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > To unsubscribe, visit link above, or email > > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > > > Ping x 6 If no other comments, will apply after 24 hours, Thanks
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);