[FFmpeg-devel] [PATCH] examples/muxing: zero AVPacket before av_read_frame()

Hendrik Leppkes h.leppkes at gmail.com
Tue Jan 28 16:06:04 CET 2014


On Tue, Jan 28, 2014 at 4:02 PM, Hendrik Leppkes <h.leppkes at gmail.com> wrote:
> On Tue, Jan 28, 2014 at 3:56 PM, Andrey Utkin
> <andrey.krieger.utkin at gmail.com> wrote:
>> 2014-01-28 Hendrik Leppkes <h.leppkes at gmail.com>:
>>> All uses of pkt in av_read_frame either call av_init_packet first to
>>> clear it, or completely overwrite it with another packet.
>>> I don't see where the input data ever matters?
>>
>> av_init_packet() description says
>>  * Note, this does not touch the data and size members, which have to be
>>  * initialized separately.
>> So it didn't really prepare uninitialized AVPacket before
>> av_read_frame(), at last before, when data was stored by `data`
>> pointer.
>> I wrongly assumed that it does not also set `buf`. But as i see in
>> code, it does set it to NULL.
>> I'll redo this patch unsing av_init_packet().
>
> Fact remains that ->data is never read by av_read_frame, only written
> to. The API does NOT require you to init the AVPacket in any way.
> If it would, it would be smarter to actually make it clear it itself.
>
> The example should really not include unnecessary functions.
>

Here is a references from actual use in the CLI ffmpeg, note the lack of init:
http://git.videolan.org/?p=ffmpeg.git;a=blob;f=ffmpeg.c;h=0a59116259ef6b5fa781d6e91adcac2f5621ec90;hb=HEAD#l2910

Not to mention, calling av_init_packet is superfluous, since the
function will do that internally anyway.

- Hendrik


More information about the ffmpeg-devel mailing list