Skip to content

Commit

Permalink
avtools: parse loglevel before all the other options.
Browse files Browse the repository at this point in the history
This way it can be applied to cmdutils too -- e.g. showing the banner
and printing startup messages.
  • Loading branch information
elenril committed Sep 26, 2011
1 parent 4ca59d1 commit 182cbe4
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 0 deletions.
1 change: 1 addition & 0 deletions avconv.c
Expand Up @@ -4019,6 +4019,7 @@ int main(int argc, char **argv)
reset_options(&o);

av_log_set_flags(AV_LOG_SKIP_REPEATED);
parse_loglevel(argc, argv, options);

avcodec_register_all();
#if CONFIG_AVDEVICE
Expand Down
1 change: 1 addition & 0 deletions avplay.c
Expand Up @@ -3050,6 +3050,7 @@ int main(int argc, char **argv)
int flags;

av_log_set_flags(AV_LOG_SKIP_REPEATED);
parse_loglevel(argc, argv, options);

/* register all codecs, demux and protocols */
avcodec_register_all();
Expand Down
1 change: 1 addition & 0 deletions avprobe.c
Expand Up @@ -399,6 +399,7 @@ int main(int argc, char **argv)
{
int ret;

parse_loglevel(argc, argv, options);
av_register_all();
init_opts();
#if CONFIG_AVDEVICE
Expand Down
1 change: 1 addition & 0 deletions avserver.c
Expand Up @@ -4668,6 +4668,7 @@ int main(int argc, char **argv)
{
struct sigaction sigact;

parse_loglevel(argc, argv, options);
av_register_all();

show_banner();
Expand Down
35 changes: 35 additions & 0 deletions cmdutils.c
Expand Up @@ -304,6 +304,41 @@ void parse_options(void *optctx, int argc, char **argv, const OptionDef *options
}
}

/*
* Return index of option opt in argv or 0 if not found.
*/
static int locate_option(int argc, char **argv, const OptionDef *options, const char *optname)
{
const OptionDef *po;
int i;

for (i = 1; i < argc; i++) {
const char *cur_opt = argv[i];

if (*cur_opt++ != '-')
continue;

po = find_option(options, cur_opt);
if (!po->name && cur_opt[0] == 'n' && cur_opt[1] == 'o')
po = find_option(options, cur_opt + 2);

if ((!po->name && !strcmp(cur_opt, optname)) ||
(po->name && !strcmp(optname, po->name)))
return i;

if (!po || po->flags & HAS_ARG)
i++;
}
return 0;
}

void parse_loglevel(int argc, char **argv, const OptionDef *options)
{
int idx = locate_option(argc, argv, options, "loglevel");
if (idx && argv[idx + 1])
opt_loglevel("loglevel", argv[idx + 1]);
}

#define FLAGS (o->type == FF_OPT_TYPE_FLAGS) ? AV_DICT_APPEND : 0
int opt_default(const char *opt, const char *arg)
{
Expand Down
5 changes: 5 additions & 0 deletions cmdutils.h
Expand Up @@ -174,6 +174,11 @@ void parse_options(void *optctx, int argc, char **argv, const OptionDef *options
*/
int parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options);

/**
* Find the '-loglevel' option in the commandline args and apply it.
*/
void parse_loglevel(int argc, char **argv, const OptionDef *options);

/**
* Check if the given stream matches a stream specifier.
*
Expand Down
1 change: 1 addition & 0 deletions ffmpeg.c
Expand Up @@ -4357,6 +4357,7 @@ int main(int argc, char **argv)
int64_t ti;

av_log_set_flags(AV_LOG_SKIP_REPEATED);
parse_loglevel(argc, argv, options);

avcodec_register_all();
#if CONFIG_AVDEVICE
Expand Down

0 comments on commit 182cbe4

Please sign in to comment.