# HG changeset patch # User takis # Date 1159558572 0 # Node ID 484d719a2028ec0da8cb5aae538ca7aa1fae1569 # Parent 89ed4a761f514c8908f1e9b389fbd498b3282745 Reformat the output of the list of available AVOptions, by indenting the parameters of certain options and displaying them _right after_ the actual option taking the parameter. diff -r 89ed4a761f51 -r 484d719a2028 opt.c --- a/opt.c Fri Sep 29 19:34:53 2006 +0000 +++ b/opt.c Fri Sep 29 19:36:12 2006 +0000 @@ -258,19 +258,28 @@ return num*intnum/den; } -int av_opt_show(void *obj, void *av_log_obj){ +static int opt_list(void *obj, void *av_log_obj, char *unit) +{ AVOption *opt=NULL; - if(!obj) - return -1; - - av_log(av_log_obj, AV_LOG_INFO, "%s AVOptions:\n", (*(AVClass**)obj)->class_name); - while((opt= av_next_option(obj, opt))){ if(!(opt->flags & (AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM))) continue; - av_log(av_log_obj, AV_LOG_INFO, "-%-17s ", opt->name); + /* Don't print CONST's on level one. + * Don't print anything but CONST's on level two. + * Only print items from the requested unit. + */ + if (!unit && opt->type==FF_OPT_TYPE_CONST) + continue; + else if (unit && opt->type!=FF_OPT_TYPE_CONST) + continue; + else if (unit && opt->type==FF_OPT_TYPE_CONST && strcmp(unit, opt->unit)) + continue; + else if (unit && opt->type == FF_OPT_TYPE_CONST) + av_log(av_log_obj, AV_LOG_INFO, " %-15s ", opt->name); + else + av_log(av_log_obj, AV_LOG_INFO, "-%-17s ", opt->name); switch( opt->type ) { @@ -309,7 +318,20 @@ if(opt->help) av_log(av_log_obj, AV_LOG_INFO, " %s", opt->help); av_log(av_log_obj, AV_LOG_INFO, "\n"); + if (opt->unit && opt->type != FF_OPT_TYPE_CONST) { + opt_list(obj, av_log_obj, opt->unit); + } } +} + +int av_opt_show(void *obj, void *av_log_obj){ + if(!obj) + return -1; + + av_log(av_log_obj, AV_LOG_INFO, "%s AVOptions:\n", (*(AVClass**)obj)->class_name); + + opt_list(obj, av_log_obj, NULL); + return 0; }