CVS: main/libmpdemux tv.c,1.51,1.52 tv.h,1.22,1.23 tvi_v4l.c,1.60,1.61
Update of /cvsroot/mplayer/main/libmpdemux In directory mail:/var/tmp.root/cvs-serv5576/libmpdemux Modified Files: tv.c tv.h tvi_v4l.c Log Message: color equalizer for tv input Index: tv.c =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/tv.c,v retrieving revision 1.51 retrieving revision 1.52 diff -u -r1.51 -r1.52 --- tv.c 19 Mar 2003 16:26:58 -0000 1.51 +++ tv.c 23 Mar 2003 15:05:14 -0000 1.52 @@ -71,6 +71,10 @@ #endif char* tv_param_adevice = NULL; #endif +int tv_param_brightness = 0; +int tv_param_contrast = 0; +int tv_param_hue = 0; +int tv_param_saturation = 0; /* ================== DEMUX_TV ===================== */ /* @@ -442,6 +446,12 @@ /* set height */ funcs->control(tvh->priv, TVI_CONTROL_VID_GET_HEIGHT, &sh_video->disp_h); + + /* set color eq */ + tv_set_color_options(tvh, TV_COLOR_BRIGHTNESS, tv_param_brightness); + tv_set_color_options(tvh, TV_COLOR_HUE, tv_param_hue); + tv_set_color_options(tvh, TV_COLOR_SATURATION, tv_param_saturation); + tv_set_color_options(tvh, TV_COLOR_CONTRAST, tv_param_contrast); demuxer->video->sh = sh_video; sh_video->ds = demuxer->video; Index: tv.h =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/tv.h,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- tv.h 19 Mar 2003 16:26:58 -0000 1.22 +++ tv.h 23 Mar 2003 15:05:14 -0000 1.23 @@ -42,6 +42,10 @@ #endif extern char* tv_param_adevice; #endif +extern int tv_param_brightness; +extern int tv_param_contrast; +extern int tv_param_hue; +extern int tv_param_saturation; typedef struct tvi_info_s { Index: tvi_v4l.c =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/tvi_v4l.c,v retrieving revision 1.60 retrieving revision 1.61 diff -u -r1.60 -r1.61 --- tvi_v4l.c 21 Mar 2003 16:46:38 -0000 1.60 +++ tvi_v4l.c 23 Mar 2003 15:05:14 -0000 1.61 @@ -929,6 +929,12 @@ return(1); } +// 2nd order polynomial with p(-100)=0, p(100)=65535, p(0)=y0 +static int poly(int x, int y0) +{ + return ((65535-2*y0)*x*x+6553500*x+20000*y0)/20000; +} + static int control(priv_t *priv, int cmd, void *arg) { mp_msg(MSGT_TV, MSGL_DBG2, "\ndebug: control(priv=%p, cmd=%d, arg=%p)\n", @@ -1042,19 +1048,19 @@ } return(TVI_CONTROL_TRUE); case TVI_CONTROL_VID_SET_BRIGHTNESS: - priv->picture.brightness = (int)*(void **)arg; + priv->picture.brightness = 65535*((int)*(void **)arg+100)/200; control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); return(TVI_CONTROL_TRUE); case TVI_CONTROL_VID_SET_HUE: - priv->picture.hue = (int)*(void **)arg; + priv->picture.hue = 65535*((int)*(void **)arg+100)/200; control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); return(TVI_CONTROL_TRUE); case TVI_CONTROL_VID_SET_SATURATION: - priv->picture.colour = (int)*(void **)arg; + priv->picture.colour = 65535*((int)*(void **)arg+100)/200; control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); return(TVI_CONTROL_TRUE); case TVI_CONTROL_VID_SET_CONTRAST: - priv->picture.contrast = (int)*(void **)arg; + priv->picture.contrast = poly((int)*(void **)arg, 24576); control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); return(TVI_CONTROL_TRUE); case TVI_CONTROL_VID_GET_FPS:
participants (1)
-
Jindrich Makovicka CVS