[FFmpeg-devel] [PATCH 8/8] avcodec/avcodec: Document current behaviour for extradata
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Sat Apr 24 15:53:44 EEST 2021
James Almer:
> On 4/24/2021 9:29 AM, Andreas Rheinhardt wrote:
>> Despite the documentation saying that it is not freed by libavcodec
>> for a decoder, avcodec_free_context() does so and has been doing so
>> since this function has been added more than seven years ago.
>>
>> Honouring the current documentation in avcodec_free_context() would
>> add memleaks to all users of it that don't free their extradata
>> manually; given how long this behaviour has been around we can safely
>> assume that these are many (i.e. the fftools are among them, as is
>> libavformat as well as parts of libavcodec itself).
>>
>> Therefore adapt the documentation to match actual behaviour.
>> This fixes ticket #5027.
>>
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
>> ---
>> libavcodec/avcodec.h | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>> index b9b487be41..4596d12647 100644
>> --- a/libavcodec/avcodec.h
>> +++ b/libavcodec/avcodec.h
>> @@ -633,6 +633,8 @@ typedef struct AVCodecContext {
>> * Must be allocated with the av_malloc() family of functions.
>> * - encoding: Set/allocated/freed by libavcodec.
>> * - decoding: Set/allocated/freed by user.
>> + * Additionally, avcodec_free_context() frees it regardless of
>> whether
>> + * the context is used for encoding or not.
>
> I'd prefer to instead change the decoding line to
>
> * - decoding: Set/allocated by user, freed by libavcodec.
This would be wrong as avcodec_close() does not free it for decoders.
Changing the behaviour would be a breaking change.
- Andreas
More information about the ffmpeg-devel
mailing list