diff --git a/avconv_opt.c b/avconv_opt.c index 7d4922c375fd9fa483386331f1261cf4df81dd24..2c6af6a94b67177fdf85a41b187c26213f84eaf2 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 4322802e2c5656bb63fc6cdb7f872d3ca02512c6..0c642e07b0b994c6f33df27d1e6a451cf4982d36 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 b708cb66839f978e4c1859cb1f3d2dc239f9c39a..00e0ad09e0659b65c871228bc0bc4425ed3117e7 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 c97b4ca21346e418da681145377ad0f755fdfd54..9e6289914a4e53d1fcd39e57c989f9ccb8b57f4d 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 50076c231dcadd23d712a89b6ea1da7c5d6b59a4..6576eba95cc3bd3166d18fb7513780c9e30dabfe 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 39125ce4ba9b499866d5b7569929158a6d3bb24d..212aa71fc6a5a59bb24e5eeb9ad2eb34073177ad 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