diff options
author | Clément Bœsch <u@pkh.me> | 2015-10-17 14:54:31 +0200 |
---|---|---|
committer | Clément Bœsch <u@pkh.me> | 2015-10-19 00:04:33 +0200 |
commit | ce0a117ed4f99c5eac2fd365cbdebba568a0ead8 (patch) | |
tree | ec7264f8c0be87376cf0da8f897622631423c76e | |
parent | 32403d1fabb602d71358fcb186fbbc6896db86a4 (diff) | |
download | ffmpeg-ce0a117ed4f99c5eac2fd365cbdebba568a0ead8.tar.gz |
avutil/opt: display a better default value for int/int64 options
Example:
% ./ffmpeg -h encoder=aac
-aac_coder <int> E...A... Coding algorithm (from -1 to 3) (default twoloop)
faac E...A... FAAC-inspired method
anmr E...A... ANMR method
twoloop E...A... Two loop searching method
fast E...A... Constant quantizer
[...]
-rw-r--r-- | libavutil/opt.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/libavutil/opt.c b/libavutil/opt.c index 03160c7602..36eeeb09e2 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -928,6 +928,19 @@ static void log_value(void *av_log_obj, int level, double d) } } +static const char *get_opt_const_name(void *obj, const char *unit, int64_t value) +{ + const AVOption *opt = NULL; + + if (!unit) + return NULL; + while ((opt = av_opt_next(obj, opt))) + if (opt->type == AV_OPT_TYPE_CONST && !strcmp(opt->unit, unit) && + opt->default_val.i64 == value) + return opt->name; + return NULL; +} + static void opt_list(void *obj, void *av_log_obj, const char *unit, int req_flags, int rej_flags) { @@ -1057,10 +1070,17 @@ static void opt_list(void *obj, void *av_log_obj, const char *unit, av_log(av_log_obj, AV_LOG_INFO, "%"PRIX64, opt->default_val.i64); break; case AV_OPT_TYPE_DURATION: - case AV_OPT_TYPE_INT: - case AV_OPT_TYPE_INT64: log_value(av_log_obj, AV_LOG_INFO, opt->default_val.i64); break; + case AV_OPT_TYPE_INT: + case AV_OPT_TYPE_INT64: { + const char *def_const = get_opt_const_name(obj, opt->unit, opt->default_val.i64); + if (def_const) + av_log(av_log_obj, AV_LOG_INFO, "%s", def_const); + else + log_value(av_log_obj, AV_LOG_INFO, opt->default_val.i64); + break; + } case AV_OPT_TYPE_DOUBLE: case AV_OPT_TYPE_FLOAT: log_value(av_log_obj, AV_LOG_INFO, opt->default_val.dbl); |