[FFmpeg-devel] [PATCH] lavu/opt: add const to av_opt_copy arg

Lukasz Marek lukasz.m.luki2 at gmail.com
Sun Nov 23 22:25:39 CET 2014


On 23.11.2014 02:29, Michael Niedermayer wrote:
> On Sun, Nov 23, 2014 at 01:01:19AM +0100, Lukasz Marek wrote:
>> On 23.11.2014 00:58, Lukasz Marek wrote:
>>> Signed-off-by: Lukasz Marek <lukasz.m.luki2 at gmail.com>
>>> ---
>>>   libavutil/opt.c | 2 +-
>>>   libavutil/opt.h | 2 +-
>>>   2 files changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/libavutil/opt.c b/libavutil/opt.c
>>> index 0546a37..47b1f0c 100644
>>> --- a/libavutil/opt.c
>>> +++ b/libavutil/opt.c
>>> @@ -1570,7 +1570,7 @@ static int opt_size(enum AVOptionType type)
>>>       return 0;
>>>   }
>>>
>>> -int av_opt_copy(void *dst, void *src)
>>> +int av_opt_copy(void *dst, FF_CONST_AVUTIL53 void *src)
>>>   {
>>>       const AVOption *o = NULL;
>>>       const AVClass *c;
>>> diff --git a/libavutil/opt.h b/libavutil/opt.h
>>> index 7338e78..6b6c996 100644
>>> --- a/libavutil/opt.h
>>> +++ b/libavutil/opt.h
>>> @@ -825,7 +825,7 @@ int av_opt_query_ranges(AVOptionRanges **, void *obj, const char *key, int flags
>>>    * @param src  Object to copy into
>>>    * @return 0 on success, negative on error
>>>    */
>>> -int av_opt_copy(void *dest, void *src);
>>> +int av_opt_copy(void *dest, FF_CONST_AVUTIL53 void *src);
>>>
>>>   /**
>>>    * Get a default list of allowed ranges for the given option.
>>>
>>
>> I added FF_CONST_AVUTILS53 macro, but is this really needed? Cannot
>> be just const?
>> I'm asking because I think it doesn't fix anything.
>> I guess is it API/ABI thing, but why?
>
> a user application could have a function pointer like
>
> all_ffmpeg_functions->opt_copy = av_opt_copy;
>
> and if we add const the prototype changes and this can fail to build
> with some compiler flags or C++ or whatever
>
> and yes i have seen an application that had function pointers to
> ffmpeg functions

Thx for explanation. It would be good to have option to disable this 
compability mode too. Sometimes it is not helping but annoying for most 
users.

I attached updated patch. I add const to av_next_option and av_opt_next 
to avoid warnings. It have to be applied on top of
[PATCH 1/2] lavu/opt: handle NULL obj in av_opt_next

There is much more places it could be added in opt.c, but this would 
again trigger adding in other files (like log.h) to avoid warnings.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-lavu-opt-add-const-to-av_opt_copy-arg-and-dependenci.patch
Type: text/x-patch
Size: 2638 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20141123/13bbf91c/attachment.bin>


More information about the ffmpeg-devel mailing list