Originally committed as revision 19209 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.6
| @@ -213,6 +213,41 @@ int opt_default(const char *opt, const char *arg){ | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| int opt_loglevel(const char *opt, const char *arg) | |||||
| { | |||||
| const struct { const char *name; int level; } const log_levels[] = { | |||||
| { "quiet" , AV_LOG_QUIET }, | |||||
| { "panic" , AV_LOG_PANIC }, | |||||
| { "fatal" , AV_LOG_FATAL }, | |||||
| { "error" , AV_LOG_ERROR }, | |||||
| { "warning", AV_LOG_WARNING }, | |||||
| { "info" , AV_LOG_INFO }, | |||||
| { "verbose", AV_LOG_VERBOSE }, | |||||
| { "debug" , AV_LOG_DEBUG }, | |||||
| }; | |||||
| char *tail; | |||||
| int level; | |||||
| int i; | |||||
| for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++) { | |||||
| if (!strcmp(log_levels[i].name, arg)) { | |||||
| av_log_set_level(log_levels[i].level); | |||||
| return 0; | |||||
| } | |||||
| } | |||||
| level = strtol(arg, &tail, 10); | |||||
| if (*tail) { | |||||
| fprintf(stderr, "Invalid loglevel \"%s\". " | |||||
| "Possible levels are numbers or:\n", arg); | |||||
| for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++) | |||||
| fprintf(stderr, "\"%s\"\n", log_levels[i].name); | |||||
| exit(1); | |||||
| } | |||||
| av_log_set_level(level); | |||||
| return 0; | |||||
| } | |||||
| void set_context_opts(void *ctx, void *opts_ctx, int flags) | void set_context_opts(void *ctx, void *opts_ctx, int flags) | ||||
| { | { | ||||
| int i; | int i; | ||||
| @@ -50,6 +50,11 @@ extern struct SwsContext *sws_opts; | |||||
| */ | */ | ||||
| int opt_default(const char *opt, const char *arg); | int opt_default(const char *opt, const char *arg); | ||||
| /** | |||||
| * Sets the libav* libraries log level. | |||||
| */ | |||||
| int opt_loglevel(const char *opt, const char *arg); | |||||
| /** | /** | ||||
| * Parses a string and returns its corresponding value as a double. | * Parses a string and returns its corresponding value as a double. | ||||
| * Exits from the application if the string cannot be correctly | * Exits from the application if the string cannot be correctly | ||||
| @@ -2354,41 +2354,6 @@ static int opt_me_threshold(const char *opt, const char *arg) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| static int opt_loglevel(const char *opt, const char *arg) | |||||
| { | |||||
| const struct { const char *name; int level; } const log_levels[] = { | |||||
| { "quiet" , AV_LOG_QUIET }, | |||||
| { "panic" , AV_LOG_PANIC }, | |||||
| { "fatal" , AV_LOG_FATAL }, | |||||
| { "error" , AV_LOG_ERROR }, | |||||
| { "warning", AV_LOG_WARNING }, | |||||
| { "info" , AV_LOG_INFO }, | |||||
| { "verbose", AV_LOG_VERBOSE }, | |||||
| { "debug" , AV_LOG_DEBUG }, | |||||
| }; | |||||
| char *tail; | |||||
| int level; | |||||
| int i; | |||||
| for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++) { | |||||
| if (!strcmp(log_levels[i].name, arg)) { | |||||
| av_log_set_level(log_levels[i].level); | |||||
| return 0; | |||||
| } | |||||
| } | |||||
| level = strtol(arg, &tail, 10); | |||||
| if (*tail) { | |||||
| fprintf(stderr, "Invalid loglevel \"%s\". " | |||||
| "Possible levels are numbers or:\n", arg); | |||||
| for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++) | |||||
| fprintf(stderr, "\"%s\"\n", log_levels[i].name); | |||||
| av_exit(1); | |||||
| } | |||||
| av_log_set_level(level); | |||||
| return 0; | |||||
| } | |||||
| static int opt_verbose(const char *opt, const char *arg) | static int opt_verbose(const char *opt, const char *arg) | ||||
| { | { | ||||
| verbose = parse_number_or_die(opt, arg, OPT_INT64, -10, 10); | verbose = parse_number_or_die(opt, arg, OPT_INT64, -10, 10); | ||||