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

Jun Li junli1026 at gmail.com
Thu Aug 15 07:41:01 EEST 2019


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


More information about the ffmpeg-devel mailing list