@@ -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) | 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; | int show_advanced = 0, show_avoptions = 0; | ||||
if (opt) { | if (opt) { | ||||
@@ -1812,27 +1814,35 @@ void show_help_default(const char *opt, const char *arg) | |||||
"\n", program_name); | "\n", program_name); | ||||
show_help_options(options, "Print help / information / capabilities:", | 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) | 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:", | show_help_options(options, "Video options:", | ||||
OPT_VIDEO, OPT_EXPERT | OPT_AUDIO); | |||||
OPT_VIDEO, OPT_EXPERT | OPT_AUDIO, 0); | |||||
if (show_advanced) | if (show_advanced) | ||||
show_help_options(options, "Advanced Video options:", | 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:", | show_help_options(options, "Audio options:", | ||||
OPT_AUDIO, OPT_EXPERT | OPT_VIDEO); | |||||
OPT_AUDIO, OPT_EXPERT | OPT_VIDEO, 0); | |||||
if (show_advanced) | if (show_advanced) | ||||
show_help_options(options, "Advanced Audio options:", | 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:", | show_help_options(options, "Subtitle options:", | ||||
OPT_SUBTITLE, 0); | |||||
OPT_SUBTITLE, 0, 0); | |||||
printf("\n"); | printf("\n"); | ||||
if (show_avoptions) { | if (show_avoptions) { | ||||
@@ -2924,8 +2924,8 @@ void show_help_default(const char *opt, const char *arg) | |||||
{ | { | ||||
av_log_set_callback(log_callback_help); | av_log_set_callback(log_callback_help); | ||||
show_usage(); | 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"); | printf("\n"); | ||||
show_help_children(avcodec_get_class(), AV_OPT_FLAG_DECODING_PARAM); | show_help_children(avcodec_get_class(), AV_OPT_FLAG_DECODING_PARAM); | ||||
show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM); | show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM); | ||||
@@ -872,7 +872,7 @@ void show_help_default(const char *opt, const char *arg) | |||||
{ | { | ||||
av_log_set_callback(log_callback_help); | av_log_set_callback(log_callback_help); | ||||
show_usage(); | show_usage(); | ||||
show_help_options(options, "Main options:", 0, 0); | |||||
show_help_options(options, "Main options:", 0, 0, 0); | |||||
printf("\n"); | printf("\n"); | ||||
show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM); | show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM); | ||||
} | } | ||||
@@ -4634,7 +4634,7 @@ void show_help_default(const char *opt, const char *arg) | |||||
printf("usage: avserver [options]\n" | printf("usage: avserver [options]\n" | ||||
"Hyper fast multi format Audio/Video streaming server\n"); | "Hyper fast multi format Audio/Video streaming server\n"); | ||||
printf("\n"); | printf("\n"); | ||||
show_help_options(options, "Main options:", 0, 0); | |||||
show_help_options(options, "Main options:", 0, 0, 0); | |||||
} | } | ||||
static const OptionDef options[] = { | static const OptionDef options[] = { | ||||
@@ -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, | 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; | const OptionDef *po; | ||||
int first; | int first; | ||||
@@ -124,6 +124,7 @@ void show_help_options(const OptionDef *options, const char *msg, int req_flags, | |||||
char buf[64]; | char buf[64]; | ||||
if (((po->flags & req_flags) != req_flags) || | if (((po->flags & req_flags) != req_flags) || | ||||
(alt_flags && !(po->flags & alt_flags)) || | |||||
(po->flags & rej_flags)) | (po->flags & rej_flags)) | ||||
continue; | continue; | ||||
@@ -160,9 +160,10 @@ typedef struct { | |||||
* @param msg title of this group. Only printed if at least one option matches. | * @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 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 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, | 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 | * Show help for all options with given flags in class and all its | ||||