From bcd3ce5903b6eaed835ecc4825938e18a53e52d8 Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Sun, 22 Jun 2008 01:30:41 +0000 Subject: [PATCH] add callback for av_log Originally committed as revision 13866 to svn://svn.ffmpeg.org/ffmpeg/trunk --- ffserver.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/ffserver.c b/ffserver.c index 4679166347..58239605c2 100644 --- a/ffserver.c +++ b/ffserver.c @@ -318,12 +318,9 @@ static char *ctime1(char *buf2) return buf2; } -static void __attribute__ ((format (printf, 1, 2))) http_log(const char *fmt, ...) +static void http_vlog(const char *fmt, va_list vargs) { static int print_prefix = 1; - va_list ap; - va_start(ap, fmt); - if (logfile) { if (print_prefix) { char buf[32]; @@ -331,10 +328,29 @@ static void __attribute__ ((format (printf, 1, 2))) http_log(const char *fmt, .. fprintf(logfile, "%s ", buf); } print_prefix = strstr(fmt, "\n") != NULL; - vfprintf(logfile, fmt, ap); + vfprintf(logfile, fmt, vargs); fflush(logfile); } - va_end(ap); +} + +void __attribute__ ((format (printf, 1, 2))) http_log(const char *fmt, ...) +{ + va_list vargs; + va_start(vargs, fmt); + http_vlog(fmt, vargs); + va_end(vargs); +} + +static void http_av_log(void *ptr, int level, const char *fmt, va_list vargs) +{ + static int print_prefix = 1; + AVClass *avc = ptr ? *(AVClass**)ptr : NULL; + if (level > av_log_level) + return; + if (print_prefix && avc) + http_log("[%s @ %p]", avc->item_name(ptr), avc); + print_prefix = strstr(fmt, "\n") != NULL; + http_vlog(fmt, vargs); } static void log_connection(HTTPContext *c) @@ -4518,6 +4534,7 @@ int main(int argc, char **argv) logfile = stdout; else logfile = fopen(logfilename, "a"); + av_log_set_callback(http_av_log); } if (http_server() < 0) {