diff options
author | Ramiro Polla <ramiro@lisha.ufsc.br> | 2009-06-16 23:02:53 +0000 |
---|---|---|
committer | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2009-06-16 23:02:53 +0000 |
commit | 77ddf4df944cf14e6f5cc3d407d383e7e4dc0de0 (patch) | |
tree | 88d3a54dd5733ff27b28f2a246fa65641d92a05b | |
parent | d2d5e067359873c3eebaa8e6fbedb5d2ddaab2e3 (diff) | |
download | ffmpeg-77ddf4df944cf14e6f5cc3d407d383e7e4dc0de0.tar.gz |
Make ffmpeg able to set the loglevel option using strings
corresponding to the various log levels.
Patch by Ramiro.
Originally committed as revision 19208 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | ffmpeg.c | 32 |
1 files changed, 30 insertions, 2 deletions
@@ -2356,7 +2356,35 @@ static int opt_me_threshold(const char *opt, const char *arg) static int opt_loglevel(const char *opt, const char *arg) { - int level = parse_number_or_die(opt, arg, OPT_INT, INT_MIN, INT_MAX); + 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; } @@ -3800,7 +3828,7 @@ static const OptionDef options[] = { { "loop_input", OPT_BOOL | OPT_EXPERT, {(void*)&loop_input}, "loop (current only works with images)" }, { "loop_output", HAS_ARG | OPT_INT | OPT_EXPERT, {(void*)&loop_output}, "number of times to loop output in formats that support looping (0 loops forever)", "" }, { "v", HAS_ARG | OPT_FUNC2, {(void*)opt_verbose}, "set ffmpeg verbosity level", "number" }, - { "loglevel", HAS_ARG | OPT_FUNC2, {(void*)opt_loglevel}, "set libav* logging level", "number" }, + { "loglevel", HAS_ARG | OPT_FUNC2, {(void*)opt_loglevel}, "set libav* logging level", "logging level number or string" }, { "target", HAS_ARG, {(void*)opt_target}, "specify target file type (\"vcd\", \"svcd\", \"dvd\", \"dv\", \"dv50\", \"pal-vcd\", \"ntsc-svcd\", ...)", "type" }, { "threads", OPT_FUNC2 | HAS_ARG | OPT_EXPERT, {(void*)opt_thread_count}, "thread count", "count" }, { "vsync", HAS_ARG | OPT_INT | OPT_EXPERT, {(void*)&video_sync_method}, "video sync method", "" }, |