[FFmpeg-cvslog] avconv: split printing "main options" into global and per-file.

Anton Khirnov git at videolan.org
Mon Aug 20 17:41:35 CEST 2012


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Wed Aug 15 10:31:46 2012 +0200| [f9fada2704df7994e8e4451ac78d8d5569faa8a2] | committer: Anton Khirnov

avconv: split printing "main options" into global and per-file.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f9fada2704df7994e8e4451ac78d8d5569faa8a2
---

 avconv_opt.c |   32 +++++++++++++++++++++-----------
 avplay.c     |    4 ++--
 avprobe.c    |    2 +-
 avserver.c   |    2 +-
 cmdutils.c   |    3 ++-
 cmdutils.h   |    3 ++-
 6 files changed, 29 insertions(+), 17 deletions(-)

diff --git a/avconv_opt.c b/avconv_opt.c
index 7d4922c..2c6af6a 100644
--- a/avconv_opt.c
+++ b/avconv_opt.c
@@ -1791,6 +1791,8 @@ static int opt_filter_complex(const char *opt, const char *arg)
 
 void show_help_default(const char *opt, const char *arg)
 {
+    /* per-file options have at least one of those set */
+    const int per_file = OPT_SPEC | OPT_OFFSET | OPT_FUNC2;
     int show_advanced = 0, show_avoptions = 0;
 
     if (opt) {
@@ -1812,27 +1814,35 @@ void show_help_default(const char *opt, const char *arg)
            "\n", program_name);
 
     show_help_options(options, "Print help / information / capabilities:",
-                      OPT_EXIT, 0);
-    show_help_options(options, "Main options:",
-                      0, OPT_EXPERT | OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE |
-                      OPT_EXIT);
+                      OPT_EXIT, 0, 0);
+
+    show_help_options(options, "Global options (affect whole program "
+                      "instead of just one file:",
+                      0, per_file | OPT_EXIT | OPT_EXPERT, 0);
+    if (show_advanced)
+        show_help_options(options, "Advanced global options:", OPT_EXPERT,
+                          per_file | OPT_EXIT, 0);
+
+    show_help_options(options, "Per-file main options:", 0,
+                      OPT_EXPERT | OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE |
+                      OPT_EXIT, per_file);
     if (show_advanced)
-        show_help_options(options, "Advanced options:",
-                          OPT_EXPERT, OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE);
+        show_help_options(options, "Advanced per-file options:",
+                          OPT_EXPERT, OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE, per_file);
 
     show_help_options(options, "Video options:",
-                      OPT_VIDEO, OPT_EXPERT | OPT_AUDIO);
+                      OPT_VIDEO, OPT_EXPERT | OPT_AUDIO, 0);
     if (show_advanced)
         show_help_options(options, "Advanced Video options:",
-                          OPT_EXPERT | OPT_VIDEO, OPT_AUDIO);
+                          OPT_EXPERT | OPT_VIDEO, OPT_AUDIO, 0);
 
     show_help_options(options, "Audio options:",
-                      OPT_AUDIO, OPT_EXPERT | OPT_VIDEO);
+                      OPT_AUDIO, OPT_EXPERT | OPT_VIDEO, 0);
     if (show_advanced)
         show_help_options(options, "Advanced Audio options:",
-                          OPT_EXPERT | OPT_AUDIO, OPT_VIDEO);
+                          OPT_EXPERT | OPT_AUDIO, OPT_VIDEO, 0);
     show_help_options(options, "Subtitle options:",
-                      OPT_SUBTITLE, 0);
+                      OPT_SUBTITLE, 0, 0);
     printf("\n");
 
     if (show_avoptions) {
diff --git a/avplay.c b/avplay.c
index 4322802..0c642e0 100644
--- a/avplay.c
+++ b/avplay.c
@@ -2924,8 +2924,8 @@ void show_help_default(const char *opt, const char *arg)
 {
     av_log_set_callback(log_callback_help);
     show_usage();
-    show_help_options(options, "Main options:", 0, OPT_EXPERT);
-    show_help_options(options, "Advanced options:", OPT_EXPERT, 0);
+    show_help_options(options, "Main options:", 0, OPT_EXPERT, 0);
+    show_help_options(options, "Advanced options:", OPT_EXPERT, 0, 0);
     printf("\n");
     show_help_children(avcodec_get_class(), AV_OPT_FLAG_DECODING_PARAM);
     show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM);
diff --git a/avprobe.c b/avprobe.c
index b708cb6..00e0ad0 100644
--- a/avprobe.c
+++ b/avprobe.c
@@ -872,7 +872,7 @@ void show_help_default(const char *opt, const char *arg)
 {
     av_log_set_callback(log_callback_help);
     show_usage();
-    show_help_options(options, "Main options:", 0, 0);
+    show_help_options(options, "Main options:", 0, 0, 0);
     printf("\n");
     show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM);
 }
diff --git a/avserver.c b/avserver.c
index c97b4ca..9e62899 100644
--- a/avserver.c
+++ b/avserver.c
@@ -4634,7 +4634,7 @@ void show_help_default(const char *opt, const char *arg)
     printf("usage: avserver [options]\n"
            "Hyper fast multi format Audio/Video streaming server\n");
     printf("\n");
-    show_help_options(options, "Main options:", 0, 0);
+    show_help_options(options, "Main options:", 0, 0, 0);
 }
 
 static const OptionDef options[] = {
diff --git a/cmdutils.c b/cmdutils.c
index 50076c2..6576eba 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -114,7 +114,7 @@ int64_t parse_time_or_die(const char *context, const char *timestr,
 }
 
 void show_help_options(const OptionDef *options, const char *msg, int req_flags,
-                       int rej_flags)
+                       int rej_flags, int alt_flags)
 {
     const OptionDef *po;
     int first;
@@ -124,6 +124,7 @@ void show_help_options(const OptionDef *options, const char *msg, int req_flags,
         char buf[64];
 
         if (((po->flags & req_flags) != req_flags) ||
+            (alt_flags && !(po->flags & alt_flags)) ||
             (po->flags & rej_flags))
             continue;
 
diff --git a/cmdutils.h b/cmdutils.h
index 39125ce..212aa71 100644
--- a/cmdutils.h
+++ b/cmdutils.h
@@ -160,9 +160,10 @@ typedef struct {
  * @param msg title of this group. Only printed if at least one option matches.
  * @param req_flags print only options which have all those flags set.
  * @param rej_flags don't print options which have any of those flags set.
+ * @param alt_flags print only options that have at least one of those flags set
  */
 void show_help_options(const OptionDef *options, const char *msg, int req_flags,
-                       int rej_flags);
+                       int rej_flags, int alt_flags);
 
 /**
  * Show help for all options with given flags in class and all its



More information about the ffmpeg-cvslog mailing list