diff options
-rw-r--r-- | DOCS/man/en/mplayer.1 | 8 | ||||
-rw-r--r-- | cfg-common-opts.h | 2 | ||||
-rw-r--r-- | cfg-common.h | 2 | ||||
-rwxr-xr-x | configure | 15 | ||||
-rw-r--r-- | mp_msg.c | 173 |
5 files changed, 104 insertions, 96 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1 index 98ddf67da6..8e2cc8ee9d 100644 --- a/DOCS/man/en/mplayer.1 +++ b/DOCS/man/en/mplayer.1 @@ -692,6 +692,14 @@ debug level 4 .PD 1 . .TP +.B \-msgcolor +Enable colorful console output on terminals that support ANSI color. +. +.TP +.B \-msgmodule +Prepend module name in front of each console message. +. +.TP .B "\-quiet\ " Make console output less verbose; in particular, prevents the status line (i.e.\& A: 0.7 V: 0.6 A-V: 0.068 ...) from being displayed. diff --git a/cfg-common-opts.h b/cfg-common-opts.h index b6f9d4cc0f..244e064529 100644 --- a/cfg-common-opts.h +++ b/cfg-common-opts.h @@ -9,6 +9,8 @@ {"really-quiet", &verbose, CONF_TYPE_FLAG, CONF_GLOBAL, 0, -10, NULL}, {"v", cfg_inc_verbose, CONF_TYPE_FUNC, CONF_GLOBAL|CONF_NOSAVE, 0, 0, NULL}, {"msglevel", msgl_config, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL}, + {"msgcolor", &mp_msg_color, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL}, + {"msgmodule", &mp_msg_module, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL}, #ifdef USE_ICONV {"msgcharset", &mp_msg_charset, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL}, #endif diff --git a/cfg-common.h b/cfg-common.h index ea967295e3..a5f03582a6 100644 --- a/cfg-common.h +++ b/cfg-common.h @@ -4,6 +4,8 @@ #include "config.h" extern char *mp_msg_charset; +extern int mp_msg_color; +extern int mp_msg_module; // codec/filter opts: (defined at libmpcodecs/vd.c) extern float screen_size_xy; @@ -411,7 +411,6 @@ Miscellaneous options: \$LINGUAS is also honored) [en] (Available: $LANGUAGES all) --with-install=PATH path to a custom install program - --enable-color-console enable color console output (UNSUPPORTED) [disable] Advanced options: --enable-mmx enable MMX [autodetect] @@ -672,7 +671,6 @@ _w32threads=auto _ass=auto _rpath=no _asmalign_pot=auto -_color_console=no _stream_cache=yes _def_stream_cache="#define USE_STREAM_CACHE 1" _need_shmem=yes @@ -1118,8 +1116,6 @@ for ac_option do --disable-ass) _ass=no ;; --enable-rpath) _rpath=yes ;; --disable-rpath) _rpath=no ;; - --enable-color-console) _color_console=yes ;; - --disable-color-console) _color_console=no ;; --enable-fribidi) _fribidi=yes ;; --disable-fribidi) _fribidi=no ;; @@ -7544,14 +7540,6 @@ fi echores "$_maemo" fi -echocheck "color console output" -if test "$_color_console" = yes ; then - _def_color_console='#define MSG_USE_COLORS 1' -else - _def_color_console='#undef MSG_USE_COLORS' -fi -echores "$_color_console" - # linker paths should be the same for mencoder and mplayer _ld_tmp="" for I in $_libs_mplayer ; do @@ -8003,9 +7991,6 @@ $_def_crash_debug /* Toggles debugging informations */ $_def_debug -/* Toggles color console output */ -$_def_color_console - /* Indicates that libcdio is available for VCD and CD-DA playback */ $_def_libcdio @@ -1,6 +1,3 @@ - -//#define MSG_USE_COLORS - #include <stdio.h> #include <stdlib.h> #include <stdarg.h> @@ -30,6 +27,8 @@ int use_gui; 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 @@ int mp_msg_test(int mod, int lev) 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 @@ void mp_msg(int mod, int lev, const char *format, ... ){ } #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); } |