@@ -3676,11 +3676,7 @@ static void show_usage(void) | |||||
static void show_help(void) | static void show_help(void) | ||||
{ | { | ||||
AVCodec *c; | |||||
AVOutputFormat *oformat = NULL; | |||||
AVInputFormat *iformat = NULL; | |||||
const AVClass *class; | |||||
int flags = AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM; | |||||
av_log_set_callback(log_callback_help); | av_log_set_callback(log_callback_help); | ||||
show_usage(); | show_usage(); | ||||
show_help_options(options, "Main options:\n", | show_help_options(options, "Main options:\n", | ||||
@@ -3707,41 +3703,9 @@ static void show_help(void) | |||||
OPT_GRAB, | OPT_GRAB, | ||||
OPT_GRAB); | OPT_GRAB); | ||||
printf("\n"); | printf("\n"); | ||||
class = avcodec_get_class(); | |||||
av_opt_show2(&class, NULL, AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0); | |||||
printf("\n"); | |||||
/* individual codec options */ | |||||
c = NULL; | |||||
while ((c = av_codec_next(c))) { | |||||
if (c->priv_class) { | |||||
av_opt_show2(&c->priv_class, NULL, AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0); | |||||
printf("\n"); | |||||
} | |||||
} | |||||
class = avformat_get_class(); | |||||
av_opt_show2(&class, NULL, AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0); | |||||
printf("\n"); | |||||
/* individual muxer options */ | |||||
while ((oformat = av_oformat_next(oformat))) { | |||||
if (oformat->priv_class) { | |||||
av_opt_show2(&oformat->priv_class, NULL, AV_OPT_FLAG_ENCODING_PARAM, 0); | |||||
printf("\n"); | |||||
} | |||||
} | |||||
/* individual demuxer options */ | |||||
while ((iformat = av_iformat_next(iformat))) { | |||||
if (iformat->priv_class) { | |||||
av_opt_show2(&iformat->priv_class, NULL, AV_OPT_FLAG_DECODING_PARAM, 0); | |||||
printf("\n"); | |||||
} | |||||
} | |||||
class = sws_get_class(); | |||||
av_opt_show2(&class, NULL, AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0); | |||||
show_help_children(avcodec_get_class(), flags); | |||||
show_help_children(avformat_get_class(), flags); | |||||
show_help_children(sws_get_class(), flags); | |||||
} | } | ||||
static int opt_target(OptionsContext *o, const char *opt, const char *arg) | static int opt_target(OptionsContext *o, const char *opt, const char *arg) | ||||
@@ -2996,7 +2996,6 @@ static void show_usage(void) | |||||
static void show_help(void) | static void show_help(void) | ||||
{ | { | ||||
const AVClass *class; | |||||
av_log_set_callback(log_callback_help); | av_log_set_callback(log_callback_help); | ||||
show_usage(); | show_usage(); | ||||
show_help_options(options, "Main options:\n", | show_help_options(options, "Main options:\n", | ||||
@@ -3004,18 +3003,10 @@ static void show_help(void) | |||||
show_help_options(options, "\nAdvanced options:\n", | show_help_options(options, "\nAdvanced options:\n", | ||||
OPT_EXPERT, OPT_EXPERT); | OPT_EXPERT, OPT_EXPERT); | ||||
printf("\n"); | printf("\n"); | ||||
class = avcodec_get_class(); | |||||
av_opt_show2(&class, NULL, | |||||
AV_OPT_FLAG_DECODING_PARAM, 0); | |||||
printf("\n"); | |||||
class = avformat_get_class(); | |||||
av_opt_show2(&class, NULL, | |||||
AV_OPT_FLAG_DECODING_PARAM, 0); | |||||
show_help_children(avcodec_get_class(), AV_OPT_FLAG_DECODING_PARAM); | |||||
show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM); | |||||
#if !CONFIG_AVFILTER | #if !CONFIG_AVFILTER | ||||
printf("\n"); | |||||
class = sws_get_class(); | |||||
av_opt_show2(&class, NULL, | |||||
AV_OPT_FLAG_ENCODING_PARAM, 0); | |||||
show_help_children(sws_get_class(), AV_OPT_FLAG_ENCODING_PARAM); | |||||
#endif | #endif | ||||
printf("\nWhile playing:\n" | printf("\nWhile playing:\n" | ||||
"q, ESC quit\n" | "q, ESC quit\n" | ||||
@@ -360,13 +360,11 @@ static void opt_input_file(void *optctx, const char *arg) | |||||
static void show_help(void) | static void show_help(void) | ||||
{ | { | ||||
const AVClass *class = avformat_get_class(); | |||||
av_log_set_callback(log_callback_help); | av_log_set_callback(log_callback_help); | ||||
show_usage(); | show_usage(); | ||||
show_help_options(options, "Main options:\n", 0, 0); | show_help_options(options, "Main options:\n", 0, 0); | ||||
printf("\n"); | printf("\n"); | ||||
av_opt_show2(&class, NULL, | |||||
AV_OPT_FLAG_DECODING_PARAM, 0); | |||||
show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM); | |||||
} | } | ||||
static void opt_pretty(void) | static void opt_pretty(void) | ||||
@@ -130,6 +130,16 @@ void show_help_options(const OptionDef *options, const char *msg, int mask, int | |||||
} | } | ||||
} | } | ||||
void show_help_children(const AVClass *class, int flags) | |||||
{ | |||||
const AVClass *child = NULL; | |||||
av_opt_show2(&class, NULL, flags, 0); | |||||
printf("\n"); | |||||
while (child = av_opt_child_class_next(class, child)) | |||||
show_help_children(child, flags); | |||||
} | |||||
static const OptionDef* find_option(const OptionDef *po, const char *name){ | static const OptionDef* find_option(const OptionDef *po, const char *name){ | ||||
const char *p = strchr(name, ':'); | const char *p = strchr(name, ':'); | ||||
int len = p ? p - name : strlen(name); | int len = p ? p - name : strlen(name); | ||||
@@ -154,6 +154,12 @@ typedef struct { | |||||
void show_help_options(const OptionDef *options, const char *msg, int mask, int value); | void show_help_options(const OptionDef *options, const char *msg, int mask, int value); | ||||
/** | |||||
* Show help for all options with given flags in class and all its | |||||
* children. | |||||
*/ | |||||
void show_help_children(const AVClass *class, int flags); | |||||
/** | /** | ||||
* Parse the command line arguments. | * Parse the command line arguments. | ||||
* | * | ||||