summaryrefslogtreecommitdiffstats
path: root/vidix
diff options
context:
space:
mode:
authornick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-01-18 09:11:11 +0000
committernick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-01-18 09:11:11 +0000
commit555c6766839e256aebd2ad27307c74947abe0823 (patch)
tree977d2153ce201a6a745d8bbf0dab6feee544bb3f /vidix
parent6a8715f9b95a30b213f34792521b9e5386316825 (diff)
downloadmpv-555c6766839e256aebd2ad27307c74947abe0823.tar.bz2
mpv-555c6766839e256aebd2ad27307c74947abe0823.tar.xz
gamma correction support
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4230 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'vidix')
-rw-r--r--vidix/drivers/radeon_vid.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/vidix/drivers/radeon_vid.c b/vidix/drivers/radeon_vid.c
index c97219d1ef..1f0427ce37 100644
--- a/vidix/drivers/radeon_vid.c
+++ b/vidix/drivers/radeon_vid.c
@@ -1070,20 +1070,39 @@ int vixPlaybackGetEq( vidix_video_eq_t * eq)
return 0;
}
+#ifndef RAGE128
+#define RTFSaturation(a) (1.0 + ((a)*1.0)/1000.0)
+#define RTFBrightness(a) (((a)*1.0)/2000.0)
+#define RTFContrast(a) (1.0 + ((a)*1.0)/1000.0)
+#define RTFHue(a) (((a)*3.1416)/1000.0)
+#define RTFCheckParam(a) {if((a)<-1000) (a)=-1000; if((a)>1000) (a)=1000;}
+#endif
+
int vixPlaybackSetEq( const vidix_video_eq_t * eq)
{
#ifdef RAGE128
int br,sat;
+#else
+ int itu_space;
#endif
memcpy(&equal,eq,sizeof(vidix_video_eq_t));
#ifdef RAGE128
br = equal.brightness * 64 / 1000;
- sat = equal.saturation * 32 / 1000;
- if(sat < 0) sat = 0;
+ if(br < -64) br = -64; if(br > 63) br = 63;
+ sat = (equal.saturation + 1000) * 32 / 1000;
+ if(sat < 0) sat = 0; if(sat > 31) sat = 31;
OUTREG(OV0_COLOUR_CNTL, (br & 0x7f) | (sat << 8) | (sat << 16));
#else
- radeon_set_transform(equal.brightness,equal.contrast,
- equal.saturation,equal.hue,0);
+ itu_space = equal.flags == VEQ_FLG_ITU_R_BT_709 ? 1 : 0;
+ RTFCheckParam(equal.brightness);
+ RTFCheckParam(equal.saturation);
+ RTFCheckParam(equal.contrast);
+ RTFCheckParam(equal.hue);
+ radeon_set_transform(RTFBrightness(equal.brightness),
+ RTFContrast(equal.contrast),
+ RTFSaturation(equal.saturation),
+ RTFHue(equal.hue),
+ itu_space);
#endif
return 0;
}