changeset 3788:484d719a2028 libavcodec

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.
author takis
date Fri, 29 Sep 2006 19:36:12 +0000
parents 89ed4a761f51
children 730ad999e379
files opt.c
diffstat 1 files changed, 29 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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;
 }