Commit 1c5e9551 authored by Anton Khirnov's avatar Anton Khirnov

cmdutils: replace fprintf() by av_log()

This way, all messages can be easily disabled with -loglevel.

Behavior change -- configuration is printed with AV_LOG_VERBOSE, so it's
not shown by default.
parent 182cbe43
...@@ -91,7 +91,7 @@ double parse_number_or_die(const char *context, const char *numstr, int type, do ...@@ -91,7 +91,7 @@ double parse_number_or_die(const char *context, const char *numstr, int type, do
error= "Expected int for %s but found %s\n"; error= "Expected int for %s but found %s\n";
else else
return d; return d;
fprintf(stderr, error, context, numstr, min, max); av_log(NULL, AV_LOG_FATAL, error, context, numstr, min, max);
exit_program(1); exit_program(1);
return 0; return 0;
} }
...@@ -100,8 +100,8 @@ int64_t parse_time_or_die(const char *context, const char *timestr, int is_durat ...@@ -100,8 +100,8 @@ int64_t parse_time_or_die(const char *context, const char *timestr, int is_durat
{ {
int64_t us; int64_t us;
if (av_parse_time(&us, timestr, is_duration) < 0) { if (av_parse_time(&us, timestr, is_duration) < 0) {
fprintf(stderr, "Invalid %s specification for %s: %s\n", av_log(NULL, AV_LOG_FATAL, "Invalid %s specification for %s: %s\n",
is_duration ? "duration" : "date", context, timestr); is_duration ? "duration" : "date", context, timestr);
exit_program(1); exit_program(1);
} }
return us; return us;
...@@ -368,7 +368,7 @@ int opt_default(const char *opt, const char *arg) ...@@ -368,7 +368,7 @@ int opt_default(const char *opt, const char *arg)
if (o) if (o)
return 0; return 0;
fprintf(stderr, "Unrecognized option '%s'\n", opt); av_log(NULL, AV_LOG_ERROR, "Unrecognized option '%s'\n", opt);
return AVERROR_OPTION_NOT_FOUND; return AVERROR_OPTION_NOT_FOUND;
} }
...@@ -397,10 +397,10 @@ int opt_loglevel(const char *opt, const char *arg) ...@@ -397,10 +397,10 @@ int opt_loglevel(const char *opt, const char *arg)
level = strtol(arg, &tail, 10); level = strtol(arg, &tail, 10);
if (*tail) { if (*tail) {
fprintf(stderr, "Invalid loglevel \"%s\". " av_log(NULL, AV_LOG_FATAL, "Invalid loglevel \"%s\". "
"Possible levels are numbers or:\n", arg); "Possible levels are numbers or:\n", arg);
for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++) for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++)
fprintf(stderr, "\"%s\"\n", log_levels[i].name); av_log(NULL, AV_LOG_FATAL, "\"%s\"\n", log_levels[i].name);
exit_program(1); exit_program(1);
} }
av_log_set_level(level); av_log_set_level(level);
...@@ -415,7 +415,7 @@ int opt_timelimit(const char *opt, const char *arg) ...@@ -415,7 +415,7 @@ int opt_timelimit(const char *opt, const char *arg)
if (setrlimit(RLIMIT_CPU, &rl)) if (setrlimit(RLIMIT_CPU, &rl))
perror("setrlimit"); perror("setrlimit");
#else #else
fprintf(stderr, "Warning: -%s not implemented on this OS\n", opt); av_log(NULL, AV_LOG_WARNING, "-%s not implemented on this OS\n", opt);
#endif #endif
return 0; return 0;
} }
...@@ -427,7 +427,7 @@ void print_error(const char *filename, int err) ...@@ -427,7 +427,7 @@ void print_error(const char *filename, int err)
if (av_strerror(err, errbuf, sizeof(errbuf)) < 0) if (av_strerror(err, errbuf, sizeof(errbuf)) < 0)
errbuf_ptr = strerror(AVUNERROR(err)); errbuf_ptr = strerror(AVUNERROR(err));
fprintf(stderr, "%s: %s\n", filename, errbuf_ptr); av_log(NULL, AV_LOG_ERROR, "%s: %s\n", filename, errbuf_ptr);
} }
static int warned_cfg = 0; static int warned_cfg = 0;
...@@ -436,58 +436,59 @@ static int warned_cfg = 0; ...@@ -436,58 +436,59 @@ static int warned_cfg = 0;
#define SHOW_VERSION 2 #define SHOW_VERSION 2
#define SHOW_CONFIG 4 #define SHOW_CONFIG 4
#define PRINT_LIB_INFO(outstream,libname,LIBNAME,flags) \ #define PRINT_LIB_INFO(libname, LIBNAME, flags, level) \
if (CONFIG_##LIBNAME) { \ if (CONFIG_##LIBNAME) { \
const char *indent = flags & INDENT? " " : ""; \ const char *indent = flags & INDENT? " " : ""; \
if (flags & SHOW_VERSION) { \ if (flags & SHOW_VERSION) { \
unsigned int version = libname##_version(); \ unsigned int version = libname##_version(); \
fprintf(outstream, "%slib%-9s %2d.%3d.%2d / %2d.%3d.%2d\n", \ av_log(NULL, level, "%slib%-9s %2d.%3d.%2d / %2d.%3d.%2d\n",\
indent, #libname, \ indent, #libname, \
LIB##LIBNAME##_VERSION_MAJOR, \ LIB##LIBNAME##_VERSION_MAJOR, \
LIB##LIBNAME##_VERSION_MINOR, \ LIB##LIBNAME##_VERSION_MINOR, \
LIB##LIBNAME##_VERSION_MICRO, \ LIB##LIBNAME##_VERSION_MICRO, \
version >> 16, version >> 8 & 0xff, version & 0xff); \ version >> 16, version >> 8 & 0xff, version & 0xff); \
} \ } \
if (flags & SHOW_CONFIG) { \ if (flags & SHOW_CONFIG) { \
const char *cfg = libname##_configuration(); \ const char *cfg = libname##_configuration(); \
if (strcmp(LIBAV_CONFIGURATION, cfg)) { \ if (strcmp(LIBAV_CONFIGURATION, cfg)) { \
if (!warned_cfg) { \ if (!warned_cfg) { \
fprintf(outstream, \ av_log(NULL, level, \
"%sWARNING: library configuration mismatch\n", \ "%sWARNING: library configuration mismatch\n", \
indent); \ indent); \
warned_cfg = 1; \ warned_cfg = 1; \
} \ } \
fprintf(stderr, "%s%-11s configuration: %s\n", \ av_log(NULL, level, "%s%-11s configuration: %s\n", \
indent, #libname, cfg); \ indent, #libname, cfg); \
} \ } \
} \ } \
} \ } \
static void print_all_libs_info(FILE* outstream, int flags) static void print_all_libs_info(int flags, int level)
{ {
PRINT_LIB_INFO(outstream, avutil, AVUTIL, flags); PRINT_LIB_INFO(avutil, AVUTIL, flags, level);
PRINT_LIB_INFO(outstream, avcodec, AVCODEC, flags); PRINT_LIB_INFO(avcodec, AVCODEC, flags, level);
PRINT_LIB_INFO(outstream, avformat, AVFORMAT, flags); PRINT_LIB_INFO(avformat, AVFORMAT, flags, level);
PRINT_LIB_INFO(outstream, avdevice, AVDEVICE, flags); PRINT_LIB_INFO(avdevice, AVDEVICE, flags, level);
PRINT_LIB_INFO(outstream, avfilter, AVFILTER, flags); PRINT_LIB_INFO(avfilter, AVFILTER, flags, level);
PRINT_LIB_INFO(outstream, swscale, SWSCALE, flags); PRINT_LIB_INFO(swscale, SWSCALE, flags, level);
PRINT_LIB_INFO(outstream, postproc, POSTPROC, flags); PRINT_LIB_INFO(postproc, POSTPROC, flags, level);
} }
void show_banner(void) void show_banner(void)
{ {
fprintf(stderr, "%s version " LIBAV_VERSION ", Copyright (c) %d-%d the Libav developers\n", av_log(NULL, AV_LOG_INFO, "%s version " LIBAV_VERSION ", Copyright (c) %d-%d the Libav developers\n",
program_name, program_birth_year, this_year); program_name, program_birth_year, this_year);
fprintf(stderr, " built on %s %s with %s %s\n", av_log(NULL, AV_LOG_INFO, " built on %s %s with %s %s\n",
__DATE__, __TIME__, CC_TYPE, CC_VERSION); __DATE__, __TIME__, CC_TYPE, CC_VERSION);
fprintf(stderr, " configuration: " LIBAV_CONFIGURATION "\n"); av_log(NULL, AV_LOG_VERBOSE, " configuration: " LIBAV_CONFIGURATION "\n");
print_all_libs_info(stderr, INDENT|SHOW_CONFIG); print_all_libs_info(INDENT|SHOW_CONFIG, AV_LOG_VERBOSE);
print_all_libs_info(stderr, INDENT|SHOW_VERSION); print_all_libs_info(INDENT|SHOW_VERSION, AV_LOG_VERBOSE);
} }
void show_version(void) { void show_version(void) {
av_log_set_callback(log_callback_help);
printf("%s " LIBAV_VERSION "\n", program_name); printf("%s " LIBAV_VERSION "\n", program_name);
print_all_libs_info(stdout, SHOW_VERSION); print_all_libs_info(SHOW_VERSION, AV_LOG_INFO);
} }
void show_license(void) void show_license(void)
...@@ -777,7 +778,7 @@ int read_file(const char *filename, char **bufptr, size_t *size) ...@@ -777,7 +778,7 @@ int read_file(const char *filename, char **bufptr, size_t *size)
FILE *f = fopen(filename, "rb"); FILE *f = fopen(filename, "rb");
if (!f) { if (!f) {
fprintf(stderr, "Cannot read file '%s': %s\n", filename, strerror(errno)); av_log(NULL, AV_LOG_ERROR, "Cannot read file '%s': %s\n", filename, strerror(errno));
return AVERROR(errno); return AVERROR(errno);
} }
fseek(f, 0, SEEK_END); fseek(f, 0, SEEK_END);
...@@ -785,7 +786,7 @@ int read_file(const char *filename, char **bufptr, size_t *size) ...@@ -785,7 +786,7 @@ int read_file(const char *filename, char **bufptr, size_t *size)
fseek(f, 0, SEEK_SET); fseek(f, 0, SEEK_SET);
*bufptr = av_malloc(*size + 1); *bufptr = av_malloc(*size + 1);
if (!*bufptr) { if (!*bufptr) {
fprintf(stderr, "Could not allocate file buffer\n"); av_log(NULL, AV_LOG_ERROR, "Could not allocate file buffer\n");
fclose(f); fclose(f);
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment