diff mp_msg.c @ 26370:b450d3591845

Enable runtime control for colorful and/or module name output
author zuxy
date Sat, 12 Apr 2008 12:51:07 +0000
parents afa125da85cf
children e7c989f7a7c9
line wrap: on
line diff
--- a/mp_msg.c	Fri Apr 11 23:06:33 2008 +0000
+++ b/mp_msg.c	Sat Apr 12 12:51:07 2008 +0000
@@ -1,6 +1,3 @@
-
-//#define MSG_USE_COLORS
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
@@ -30,6 +27,8 @@
 int mp_msg_levels[MSGT_MAX]; // verbose level of this module. initialized to -2
 int mp_msg_level_all = MSGL_STATUS;
 int verbose = 0;
+int mp_msg_color = 0;
+int mp_msg_module = 0;
 #ifdef USE_ICONV
 char *mp_msg_charset = NULL;
 static char *old_charset = NULL;
@@ -86,9 +85,92 @@
     return lev <= (mp_msg_levels[mod] == -2 ? mp_msg_level_all + verbose : mp_msg_levels[mod]);
 }
 
+static void set_msg_color(FILE* stream, int lev)
+{
+    static const unsigned char v_colors[10] = {9, 1, 3, 15, 7, 2, 2, 8, 8, 8};
+    int c = v_colors[lev];
+#ifdef MP_ANNOY_ME
+    /* that's only a silly color test */
+    {
+        int c;
+        static int flag = 1;
+        if (flag)
+            for(c = 0; c < 24; c++)
+                printf("\033[%d;3%dm***  COLOR TEST %d  ***\n", c>7, c&7, c);
+        flag = 0;
+    }
+#endif
+    if (mp_msg_color)
+        fprintf(stream, "\033[%d;3%dm", c >> 3, c & 7);
+}
+
+static void print_msg_module(FILE* stream, int mod)
+{
+    static const char *module_text[MSGT_MAX] = {
+        "GLOBAL",
+        "CPLAYER",
+        "GPLAYER",
+        "VIDEOOUT",
+        "AUDIOOUT",
+        "DEMUXER",
+        "DS",
+        "DEMUX",
+        "HEADER",
+        "AVSYNC",
+        "AUTOQ",
+        "CFGPARSER",
+        "DECAUDIO",
+        "DECVIDEO",
+        "SEEK",
+        "WIN32",
+        "OPEN",
+        "DVD",
+        "PARSEES",
+        "LIRC",
+        "STREAM",
+        "CACHE",
+        "MENCODER",
+        "XACODEC",
+        "TV",
+        "OSDEP",
+        "SPUDEC",
+        "PLAYTREE",
+        "INPUT",
+        "VFILTER",
+        "OSD",
+        "NETWORK",
+        "CPUDETECT",
+        "CODECCFG",
+        "SWS",
+        "VOBSUB",
+        "SUBREADER",
+        "AFILTER",
+        "NETST",
+        "MUXER",
+        "OSDMENU",
+        "IDENTIFY",
+        "RADIO",
+        "ASS",
+        "LOADER",
+        "STATUSLINE",
+    };
+    int c2 = (mod + 1) % 15 + 1;
+
+    if (!mp_msg_module)
+        return;
+    if (mp_msg_color)
+        fprintf(stream, "\033[%d;3%dm", c2 >> 3, c2 & 7);
+    fprintf(stream, "%9s", module_text[mod]);
+    if (mp_msg_color)
+        fprintf(stream, "\033[0;37m");
+    fprintf(stream, ": ");
+}
+
 void mp_msg(int mod, int lev, const char *format, ... ){
     va_list va;
     char tmp[MSGSIZE_MAX];
+    FILE *stream = lev <= MSGL_WARN ? stderr : stdout;
+    static int header = 1;
 
     if (!mp_msg_test(mod, lev)) return; // do not display
     va_start(va, format);
@@ -133,82 +215,11 @@
     }
 #endif
 
-#ifdef MSG_USE_COLORS
-/* that's only a silly color test */
-#ifdef MP_ANNOY_ME
-    { int c;
-      static int flag=1;
-      if(flag)
-      for(c=0;c<24;c++)
-          printf("\033[%d;3%dm***  COLOR TEST %d  ***\n",(c>7),c&7,c);
-      flag=0;
-    }
-#endif
-    {   unsigned char v_colors[10]={9,1,3,15,7,2,2,8,8,8};
-        static const char *mod_text[MSGT_MAX]= {
-                                "GLOBAL",
-                                "CPLAYER",
-                                "GPLAYER",
-                                "VIDEOOUT",
-                                "AUDIOOUT",
-                                "DEMUXER",
-                                "DS",
-                                "DEMUX",
-                                "HEADER",
-                                "AVSYNC",
-                                "AUTOQ",
-                                "CFGPARSER",
-                                "DECAUDIO",
-                                "DECVIDEO",
-                                "SEEK",
-                                "WIN32",
-                                "OPEN",
-                                "DVD",
-                                "PARSEES",
-                                "LIRC",
-                                "STREAM",
-                                "CACHE",
-                                "MENCODER",
-                                "XACODEC",
-                                "TV",
-                                "OSDEP",
-                                "SPUDEC",
-                                "PLAYTREE",
-                                "INPUT",
-                                "VFILTER",
-                                "OSD",
-                                "NETWORK",
-                                "CPUDETECT",
-                                "CODECCFG",
-                                "SWS",
-                                "VOBSUB",
-                                "SUBREADER",
-                                "AFILTER",
-                                "NETST",
-                                "MUXER",
-                                "OSDMENU",
-                                "IDENTIFY",
-                                "RADIO",
-                                "ASS",
-                                "LOADER",
-                                "STATUSLINE",
-        };
-
-        int c=v_colors[lev];
-        int c2=(mod+1)%15+1;
-        static int header=1;
-        FILE *stream= (lev) <= MSGL_WARN ? stderr : stdout;
-        if(header){
-            fprintf(stream, "\033[%d;3%dm%9s\033[0;37m: ",c2>>3,c2&7, mod_text[mod]);
-        }
-        fprintf(stream, "\033[%d;3%dm",c>>3,c&7);
-        header=    tmp[strlen(tmp)-1] == '\n'
-                 ||tmp[strlen(tmp)-1] == '\r';
-    }
-#endif
-    if (lev <= MSGL_WARN){
-        fprintf(stderr, "%s", tmp);fflush(stderr);
-    } else {
-        printf("%s", tmp);fflush(stdout);
-    }
+    if (header)
+        print_msg_module(stream, mod);
+    set_msg_color(stream, lev);
+    header = tmp[strlen(tmp)-1] == '\n' || tmp[strlen(tmp)-1] == '\r';
+ 
+    fprintf(stream, "%s", tmp);
+    fflush(stream);
 }