[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