[FFmpeg-devel] [PATCH v2 6/6] lavu/frame: deprecate AVFrame.pkt_{pos, size}

Anton Khirnov anton at khirnov.net
Wed Mar 15 17:03:43 EET 2023


Quoting Michael Niedermayer (2023-03-15 00:00:06)
> On Sat, Mar 11, 2023 at 11:54:52AM +0100, Anton Khirnov wrote:
> > These fields are supposed to store information about the packet the
> > frame was decoded from, specifically the byte offset it was stored at
> > and its size.
> > 
> > However,
> > - the fields are highly ad-hoc - there is no strong reason why
> >   specifically those (and not any other) packet properties should have a
> >   dedicated field in AVFrame; unlike e.g. the timestamps, there is no
> >   fundamental link between coded packet offset/size and decoded frames
> > - they only make sense for frames produced by decoding demuxed packets,
> >   and even then it is not always the case that the encoded data was
> >   stored in the file as a contiguous sequence of bytes (in order for pos
> >   to be well-defined)
> 
> > - pkt_pos was added without much explanation, apparently to allow
> >   passthrough of this information through lavfi in order to handle byte
> >   seeking in ffplay. That is now implemented using arbitrary user data
> >   passthrough in AVFrame.opaque_ref.
> 
> One intended use i remember was that errors are detected after decoding,
> be that bitstream, metadata, aspect ratio, yuv type, ...
> while the location of the error is in the source file around the packets
> position. pkt_pos allows one to patch errors in the source file without
> remuxing

That is still possible, as shown in patches 2 and 4.

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list