Mercurial > mplayer.hg
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); |