comparison libmpdemux/tvi_v4l.c @ 9663:596ad944a65e

color equalizer for tv input
author henry
date Sun, 23 Mar 2003 15:05:14 +0000
parents 8bb1a24ed0a8
children c79bcf85f68c
comparison
equal deleted inserted replaced
9662:2ac95540dc55 9663:596ad944a65e
927 /* we'll launch the video capture later, when a first request for a frame arrives */ 927 /* we'll launch the video capture later, when a first request for a frame arrives */
928 928
929 return(1); 929 return(1);
930 } 930 }
931 931
932 // 2nd order polynomial with p(-100)=0, p(100)=65535, p(0)=y0
933 static int poly(int x, int y0)
934 {
935 return ((65535-2*y0)*x*x+6553500*x+20000*y0)/20000;
936 }
937
932 static int control(priv_t *priv, int cmd, void *arg) 938 static int control(priv_t *priv, int cmd, void *arg)
933 { 939 {
934 mp_msg(MSGT_TV, MSGL_DBG2, "\ndebug: control(priv=%p, cmd=%d, arg=%p)\n", 940 mp_msg(MSGT_TV, MSGL_DBG2, "\ndebug: control(priv=%p, cmd=%d, arg=%p)\n",
935 priv, cmd, arg); 941 priv, cmd, arg);
936 switch(cmd) 942 switch(cmd)
1040 mp_msg(MSGT_TV, MSGL_ERR, "ioctl get picture failed: %s\n", strerror(errno)); 1046 mp_msg(MSGT_TV, MSGL_ERR, "ioctl get picture failed: %s\n", strerror(errno));
1041 return(TVI_CONTROL_FALSE); 1047 return(TVI_CONTROL_FALSE);
1042 } 1048 }
1043 return(TVI_CONTROL_TRUE); 1049 return(TVI_CONTROL_TRUE);
1044 case TVI_CONTROL_VID_SET_BRIGHTNESS: 1050 case TVI_CONTROL_VID_SET_BRIGHTNESS:
1045 priv->picture.brightness = (int)*(void **)arg; 1051 priv->picture.brightness = 65535*((int)*(void **)arg+100)/200;
1046 control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); 1052 control(priv, TVI_CONTROL_VID_SET_PICTURE, 0);
1047 return(TVI_CONTROL_TRUE); 1053 return(TVI_CONTROL_TRUE);
1048 case TVI_CONTROL_VID_SET_HUE: 1054 case TVI_CONTROL_VID_SET_HUE:
1049 priv->picture.hue = (int)*(void **)arg; 1055 priv->picture.hue = 65535*((int)*(void **)arg+100)/200;
1050 control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); 1056 control(priv, TVI_CONTROL_VID_SET_PICTURE, 0);
1051 return(TVI_CONTROL_TRUE); 1057 return(TVI_CONTROL_TRUE);
1052 case TVI_CONTROL_VID_SET_SATURATION: 1058 case TVI_CONTROL_VID_SET_SATURATION:
1053 priv->picture.colour = (int)*(void **)arg; 1059 priv->picture.colour = 65535*((int)*(void **)arg+100)/200;
1054 control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); 1060 control(priv, TVI_CONTROL_VID_SET_PICTURE, 0);
1055 return(TVI_CONTROL_TRUE); 1061 return(TVI_CONTROL_TRUE);
1056 case TVI_CONTROL_VID_SET_CONTRAST: 1062 case TVI_CONTROL_VID_SET_CONTRAST:
1057 priv->picture.contrast = (int)*(void **)arg; 1063 priv->picture.contrast = poly((int)*(void **)arg, 24576);
1058 control(priv, TVI_CONTROL_VID_SET_PICTURE, 0); 1064 control(priv, TVI_CONTROL_VID_SET_PICTURE, 0);
1059 return(TVI_CONTROL_TRUE); 1065 return(TVI_CONTROL_TRUE);
1060 case TVI_CONTROL_VID_GET_FPS: 1066 case TVI_CONTROL_VID_GET_FPS:
1061 (int)*(void **)arg=priv->fps; 1067 (int)*(void **)arg=priv->fps;
1062 return(TVI_CONTROL_TRUE); 1068 return(TVI_CONTROL_TRUE);