Enable runtime control for colorful and/or module name output

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26402 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
zuxy 2008-04-12 12:51:07 +00:00
parent c3f944e14a
commit b74750a948
5 changed files with 104 additions and 96 deletions

View File

@ -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.

View File

@ -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

View File

@ -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;

15
configure vendored
View File

@ -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

173
mp_msg.c
View File

@ -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);
}