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

Jun Li junli1026 at gmail.com
Thu Jun 20 12:02:09 EEST 2019


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


More information about the ffmpeg-devel mailing list