[SCM] libav/experimental: add callback for av_log

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:23:54 UTC 2013


The following commit has been merged in the experimental branch:
commit bcd3ce5903b6eaed835ecc4825938e18a53e52d8
Author: Baptiste Coudurier <baptiste.coudurier at gmail.com>
Date:   Sun Jun 22 01:30:41 2008 +0000

    add callback for av_log
    
    Originally committed as revision 13866 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/ffserver.c b/ffserver.c
index 4679166..5823960 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) {

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list