[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