[FFmpeg-devel] [PATCH 6/6] avformat/av1dec: Disallow seeking by bytes

James Almer jamrial at gmail.com
Sun Aug 22 18:00:35 EEST 2021


On 8/22/2021 11:37 AM, Andreas Rheinhardt wrote:
> James Almer:
>> On 8/22/2021 10:25 AM, Andreas Rheinhardt wrote:
>>> The low overhead OBU format provides no means to resync after performing
>>> a byte-based seek; in other words: Byte based seeking is just not
>>> supported.
>>>
>>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
>>> ---
>>> The reason I didn't disallow this earlier was that there is one scenario
>>> where such a seek would work: When one  already knows the correct
>>> position for the start of a frame. But otherwise it just doesn't work.
>>>
>>> Somehow ffplay tries byte based seeking even for formats with the
>>> AVFMT_NO_BYTE_SEEK flag set. Line 2837 should probably be changed to no
>>> longer do that.
>>>
>>>    libavformat/av1dec.c | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/libavformat/av1dec.c b/libavformat/av1dec.c
>>> index 88a3c325e4..37f21483b9 100644
>>> --- a/libavformat/av1dec.c
>>> +++ b/libavformat/av1dec.c
>>> @@ -428,7 +428,7 @@ const AVInputFormat ff_obu_demuxer = {
>>>        .read_packet    = obu_read_packet,
>>>        .read_close     = av1_read_close,
>>>        .extensions     = "obu",
>>> -    .flags          = AVFMT_GENERIC_INDEX,
>>> +    .flags          = AVFMT_GENERIC_INDEX | AVFMT_NO_BYTE_SEEK,
>>>        .priv_class     = &av1_demuxer_class,
>>>    };
>>>    #endif
>>
>> LGTM.
>>
>> Maybe also AVFMT_NOTIMESTAMPS could be added.
> 
> But isn't AV1 able to contain timestamps via its timing_info() and
> metadata_timecode() structure?
> 
> - Andreas

But those are not values exported by the demuxer, which is what i 
interpreted the flag is about. But i see other raw demuxers with similar 
codec level timing information that don't set it, so i guess not.


More information about the ffmpeg-devel mailing list