From 4b9259c91393f1ec90b9de810e8d134b5141ac46 Mon Sep 17 00:00:00 2001 From: nick Date: Sun, 20 Jan 2002 17:11:05 +0000 Subject: RGB independed correction (similar to brightness) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4285 b3059339-0415-0410-9bf9-f77b7e298cf2 --- vidix/drivers/radeon_vid.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'vidix') diff --git a/vidix/drivers/radeon_vid.c b/vidix/drivers/radeon_vid.c index 72aa851736..de4ace11c1 100644 --- a/vidix/drivers/radeon_vid.c +++ b/vidix/drivers/radeon_vid.c @@ -309,15 +309,21 @@ REF_TRANSFORM trans[2] = * cont - contrast * * sat - saturation * * hue - hue * + * red_intense - intense of red component * + * green_intense - intense of green component * + * blue_intense - intense of blue component * * ref - index to the table of refernce transforms * * Outputs: NONE * ****************************************************************************/ static void radeon_set_transform(float bright, float cont, float sat, - float hue, unsigned ref) + float hue, float red_intense, + float green_intense,float blue_intense, + unsigned ref) { float OvHueSin, OvHueCos; float CAdjLuma, CAdjOff; + float RedAdj,GreenAdj,BlueAdj; float CAdjRCb, CAdjRCr; float CAdjGCb, CAdjGCr; float CAdjBCb, CAdjBCr; @@ -340,6 +346,9 @@ static void radeon_set_transform(float bright, float cont, float sat, CAdjLuma = cont * trans[ref].RefLuma; CAdjOff = cont * trans[ref].RefLuma * bright * 1023.0; + RedAdj = cont * trans[ref].RefLuma * red_intense * 1023.0; + GreenAdj = cont * trans[ref].RefLuma * green_intense * 1023.0; + BlueAdj = cont * trans[ref].RefLuma * blue_intense * 1023.0; CAdjRCb = sat * -OvHueSin * trans[ref].RefRCr; CAdjRCr = sat * OvHueCos * trans[ref].RefRCr; @@ -365,11 +374,11 @@ static void radeon_set_transform(float bright, float cont, float sat, OvGCr = CAdjGCr; OvBCb = CAdjBCb; OvBCr = CAdjBCr; - OvROff = CAdjOff - + OvROff = RedAdj + CAdjOff - OvLuma * Loff - (OvRCb + OvRCr) * Coff; - OvGOff = CAdjOff - + OvGOff = GreenAdj + CAdjOff - OvLuma * Loff - (OvGCb + OvGCr) * Coff; - OvBOff = CAdjOff - + OvBOff = BlueAdj + CAdjOff - OvLuma * Loff - (OvBCb + OvBCr) * Coff; #if 0 /* default constants */ OvROff = -888.5; @@ -1102,6 +1111,9 @@ int vixPlaybackSetEq( const vidix_video_eq_t * eq) RTFContrast(equal.contrast), RTFSaturation(equal.saturation), RTFHue(equal.hue), + RTFBrightness(equal.red_intense), + RTFBrightness(equal.green_intense), + RTFBrightness(equal.blue_intense), itu_space); #endif return 0; -- cgit v1.2.3