[FFmpeg-devel] [PATCH 1/6] avutil/opt: add AV_OPT_FLAG_CHILD_CONSTS

Michael Niedermayer michael at niedermayer.cc
Tue May 12 01:53:44 EEST 2020


On Mon, May 11, 2020 at 09:35:17PM +0200, Marton Balint wrote:
> This will be used for AVCodecContext->profile. By specifying constants in the
> encoders we won't have to use the common AVCodecContext options table and
> different encoders can use the same profile name even with different values.
> 
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
>  doc/APIchanges      | 3 +++
>  libavutil/opt.c     | 3 ++-
>  libavutil/opt.h     | 1 +
>  libavutil/version.h | 2 +-
>  4 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/doc/APIchanges b/doc/APIchanges
> index 75cfdb08b0..235888c174 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -15,6 +15,9 @@ libavutil:     2017-10-21
>  
>  API changes, most recent first:
>  
> +2020-05-xx - xxxxxxxxxx - lavu 56.44.101 - opt.h
> +  Add AV_OPT_FLAG_CHILD_CONSTS.
> +
>  2020-05-10 - xxxxxxxxxx - lavu 56.44.100 - hwcontext_vulkan.h
>    Add enabled_inst_extensions, num_enabled_inst_extensions, enabled_dev_extensions
>    and num_enabled_dev_extensions fields to AVVulkanDeviceContext
> diff --git a/libavutil/opt.c b/libavutil/opt.c
> index b792dec01c..423313bce2 100644
> --- a/libavutil/opt.c
> +++ b/libavutil/opt.c
> @@ -256,11 +256,12 @@ static int set_string_number(void *obj, void *target_obj, const AVOption *o, con
>          }
>  
>          {
> -            const AVOption *o_named = av_opt_find(target_obj, i ? buf : val, o->unit, 0, 0);
>              int res;
>              int ci = 0;
>              double const_values[64];
>              const char * const_names[64];
> +            int search_flags = (o->flags & AV_OPT_FLAG_CHILD_CONSTS) ? AV_OPT_SEARCH_CHILDREN : 0;
> +            const AVOption *o_named = av_opt_find(target_obj, i ? buf : val, o->unit, 0, search_flags);
>              if (o_named && o_named->type == AV_OPT_TYPE_CONST)
>                  d = DEFAULT_NUMVAL(o_named);
>              else {
> diff --git a/libavutil/opt.h b/libavutil/opt.h
> index 1969c984dd..e46119572a 100644
> --- a/libavutil/opt.h
> +++ b/libavutil/opt.h
> @@ -291,6 +291,7 @@ typedef struct AVOption {
>  #define AV_OPT_FLAG_RUNTIME_PARAM   (1<<15) ///< a generic parameter which can be set by the user at runtime
>  #define AV_OPT_FLAG_FILTERING_PARAM (1<<16) ///< a generic parameter which can be set by the user for filtering
>  #define AV_OPT_FLAG_DEPRECATED      (1<<17) ///< set if option is deprecated, users should refer to AVOption.help text for more information

> +#define AV_OPT_FLAG_CHILD_CONSTS    (1<<18) ///< set if option constants can also reside in child objects

why is this needed and not default ?

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Modern terrorism, a quick summary: Need oil, start war with country that
has oil, kill hundread thousand in war. Let country fall into chaos,
be surprised about raise of fundamantalists. Drop more bombs, kill more
people, be surprised about them taking revenge and drop even more bombs
and strip your own citizens of their rights and freedoms. to be continued
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20200512/fb6827a8/attachment.sig>


More information about the ffmpeg-devel mailing list