⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adjust_customer.c

📁 RTD2662板卡源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/*===========================================================
 * Copyright (c)      Realtek Semiconductor Corporation, 2005
 * All rights reserved.
 * ========================================================== */

/*==================== File Description ===================== */
/**
 * @file
 * 	This file is osd control declaration related functions.
 *
 * @author 	$Author: forster $
 * @date 	$Date: 2006-03-21 20:24:23 +0800 (?熸?浜? 21 涓夋? 2006) $
 * @version 	$Revision: 451 $
 * @ingroup Auto
 */

/**
 * @addtogroup Auto
 * @{
 */

#define _ADJUST_CUSTOMER_C
/*===================== Module dependency  ================== */
#include "Core\Header\Include.h"



//--------------------------------------------------
// Description  : Adjust sharpness
// Input Value  : None
// Output Value : None
//--------------------------------------------------

//--------------------------------------------------
// Description  : Adjust color precessing brightness
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CAdjustBrightness(void)
{
   	 if(_GET_INPUT_SOURCE() == _SOURCE_VGA)
	{
		pData[0] = (0 + stConBriData.Brightness - 50) + stColorTempData.ColorTemp[0];
		pData[1] = (0 + stConBriData.Brightness - 50) + stColorTempData.ColorTemp[1];
		pData[2] = (0 + stConBriData.Brightness - 50) + stColorTempData.ColorTemp[2];
	}
    else
    {
		pData[0] = (0x80 + stConBriData.Brightness - 78);
		pData[1] = (0x80 + stConBriData.Brightness - 78);
		pData[2] = (0x80 + stConBriData.Brightness - 78);
    }
	CAdjustSetBrightness();
    CAdjustBacklight();
}

//--------------------------------------------------
// Description  : Adjust color processing contrast
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CAdjustContrast(void)
{
	BYTE cnt;

	if(_GET_INPUT_SOURCE() == _SOURCE_VGA)
    {
	    for(cnt=0;cnt<3;cnt++)
		{
    		//pData[cnt] = (((WORD)stColorTempData.ColorTemp[cnt] * stConBriData.Contrast / 128) > 255) ? 255 : (BYTE)((WORD)stColorTempData.ColorTemp[cnt] * stConBriData.Contrast / 128);
        	pData[cnt] = (BYTE)(((WORD)stColorTempData.ColorTemp[cnt+3] * (stConBriData.Contrast+_CONTRAST_MIN) / 128) > 255) ? 255 : (BYTE)((WORD)stColorTempData.ColorTemp[cnt+3] * (stConBriData.Contrast+_CONTRAST_MIN) / 128);
		}
	}			
	else
    {
		pData[0] = (0x80 + stConBriData.Contrast - 38);
		pData[1] = (0x80 + stConBriData.Contrast - 38);
		pData[2] = (0x80 + stConBriData.Contrast - 38);
	}	

	CAdjustSetContrast();
}

#if (sRGB_Color_Enhance == _ENABLE)
void CAdjustYpbprhue(BYTE  ucYPbPrhue)
{
	CAdjustSaturationHue(ucYPbPrhue, _FALSE);
}

void CAdjustYpbprSaturation(BYTE  ucYPbPrSaturation)
{
	WORD    PB, PR ;
	BYTE temp;

	temp=ucYPbPrSaturation;

    if(_GET_INPUT_SOURCE() == _SOURCE_YPBPR)
    {
    	PR = (temp <= 50)  ? ((WORD)stYPbPrData.YPbPrGain[_RED] + ((50 - temp) << 2)) :
    	((WORD)stYPbPrData.YPbPrGain[_RED] - (temp - 50));
    
    	PB = (temp <= 50)  ? ((WORD)stYPbPrData.YPbPrGain[_BLUE] + ((50 - temp) << 2)) :
    	((WORD)stYPbPrData.YPbPrGain[_BLUE] - (temp - 50));
    
    	if(HIBYTE(PB)>0)
    		PB  = HIBYTE(PB) < 0x02 ? 0x00FF : 0 ;
    	if (HIBYTE(PR)>0)
    		PR  = HIBYTE(PR) < 0x02 ? 0x00FF : 0 ;
    
    #if(_ADC1_INPUT_SWAP_RG == _ON)
    
    	pData[1] = PR;
    	pData[0] = stYPbPrData.YPbPrGain[_GREEN];
    	pData[2] = PB;
    
    #elif(_ADC1_INPUT_SWAP_RB == _ON)
    
    	pData[2] = PR;
    	pData[1] = stYPbPrData.YPbPrGain[_GREEN];
    	pData[0] = PB;
    
    #elif(_ADC1_INPUT_SWAP_GB == _ON)
    
    	pData[0] = PR;
    	pData[2] = stYPbPrData.YPbPrGain[_GREEN];
    	pData[1] = PB;
    
    #else
    
    	pData[0] = PR;
    	pData[1] = stYPbPrData.YPbPrGain[_GREEN];
    	pData[2] = PB;
    
    #endif
    	//CAdjustSetYpbprSaturation();//eric 20070613
    	CAdjustSaturationHue(ucYPbPrSaturation, _TRUE);
    }

	//Lewis, adjust sRGB domain
	CAdjustSaturationHue(ucYPbPrSaturation, _TRUE);
}

#else
// cftsai 20061031 modify
INT16 code RR[]=
{
-155,-149,-143,-138,-132,-127,-121,-116,-111,-105,
-100, -95, -90, -85, -80, -75, -71, -66, -62, -57,
 -53, -49, -45, -40, -36, -33, -29, -25, -22, -18,
 -15, -12,  -8,  -5,  -2,   0,   2,   5,   7,  10,
  12,  14,  16,  18,  20,  22,  24,  25,  26,  28,
  29,  30,  31,  32,  32,  33,  33,  34,  34,  34,
  34,  34,  34,  33,  33,  32,  32,  31,  30,  29,
  28
};

INT16 code RG[]=
{
-100, -99, -98, -96, -95, -93, -92, -90, -88, -86,
 -84, -81, -79, -77, -74, -72, -69, -66, -63, -60,
 -57, -54, -51, -47, -44, -40, -36, -33, -29, -25,
 -21, -17, -13,  -8,  -4,   0,   4,   9,  13,  18,
  23,  28,  33,  38,  43,  48,  53,  58,  64,  69,
  74,  80,  86,  91,  97, 102, 108, 114, 120, 126,
 132, 138, 144, 150, 156, 162, 168, 174, 180, 186,
 193
};

INT16 code RB[]=
{
255, 249, 242, 235, 227, 220, 213, 206, 199, 192,
184, 177, 170, 162, 155, 148, 140, 133, 125, 118,
110, 103,  96,  88,  81,  73,  66,  58,  51,  44,
 36,  29,  21,  14,   7,   0,  -7, -14, -21, -28,
-35, -42, -49, -56, -63, -70, -77, -84, -91, -97,
-104, -110, -117, -123, -130, -136, -142, -148, -154, -160,
-166, -172, -178, -184, -189, -195, -200, -205, -211, -216,
-221
};

INT16 code GR[]=
{
162 ,157 ,152 ,147 ,142 ,137 ,132 ,127 ,
122 ,117 ,113 ,108 ,103 ,98  ,93  ,88  ,
84  ,79  ,74  ,70  ,65  ,60  ,56  ,51  ,
47  ,42  ,38  ,33  ,29  ,25  ,20  ,16  ,
12  ,8   ,4   ,0   ,-4  ,-7  ,-11 ,-15 ,
-19 ,-23 ,-27 ,-30 ,-34 ,-37 ,-41 ,-44 ,
-48 ,-51 ,-54 ,-57 ,-60 ,-63 ,-66 ,-69 ,
-72 ,-75 ,-77 ,-80 ,-83 ,-85 ,-87 ,-90 ,
-92 ,-94 ,-96 ,-98 ,-100,-102,-104
};

INT16 code GG[]=
{
-9 ,-7 ,-6 ,-4 ,-3 ,-2 ,-1 ,0  ,
1  ,2  ,3  ,3  ,4  ,5  ,5  ,6  ,
6  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,
7  ,7  ,6  ,6  ,5  ,5  ,4  ,3  ,
2  ,2  ,1  ,0  ,-1 ,-2 ,-3 ,-5 ,
-6 ,-8 ,-9 ,-11,-13,-15,-16,-18,
-20,-23,-25,-27,-29,-32,-34,-37,
-39,-42,-45,-48,-51,-53,-56,-60,
-63,-66,-69,-72,-76,-79,-83
};

INT16 code GB[]=
{
-152,-149,-145,-142,-138,-135,-131,-127,
-123,-120,-116,-112,-108,-103,-99 ,-95 ,
-91 ,-86 ,-82 ,-77 ,-73 ,-68 ,-64 ,-59 ,
-54 ,-49 ,-45 ,-40 ,-35 ,-30 ,-25 ,-20 ,
-15 ,-10 ,-5  ,0   ,5   ,10  ,15  ,20  ,
26  ,31  ,36  ,42  ,47  ,52  ,58  ,63  ,
69  ,74  ,79  ,85  ,90  ,96  ,101 ,107 ,
112 ,117 ,123 ,128 ,134 ,139 ,144 ,150 ,
155 ,160 ,166 ,171 ,176 ,181 ,187
};

INT16 code BR[]=
{
-172, -169, -165, -162 , -158, -154, -150, -146, -142, -138,
-133, -129, -124,-120,-115,-110,-105,-100,-95,-90,
-85,-80,-75,-69,-64,-58,-53,-47,-41,-35,
-30,-24,-18,-12,-6,0,6,12,18,24,
31,37,44,50,57,63,70,76,83,89,
96,103,109,116,123,130,136,143,150,157,
163,170,177,183,190,197,204,210,217,224,
230
};

INT16 code BG[]=
{
193 ,186 ,180 ,174 ,168 ,162 ,156 ,150 ,
144 ,138 ,132 ,126 ,120 ,114 ,108 ,102 ,
97  ,91  ,86  ,80  ,74  ,69  ,64  ,58  ,
53  ,48  ,43  ,38  ,33  ,28  ,23  ,18  ,
13  ,9   ,4   ,0   ,-4  ,-8  ,-13 ,-17 ,
-21 ,-25 ,-29 ,-33 ,-36 ,-40 ,-44 ,-47 ,
-51 ,-54 ,-57 ,-60 ,-63 ,-66 ,-69 ,-72 ,
-74 ,-77 ,-79 ,-81 ,-84 ,-86 ,-88 ,-90 ,
-92 ,-93 ,-95 ,-96 ,-98 ,-99 ,-100
};

INT16 code BB[]=
{
-20 ,-17, -14, -12, -9, -7, -5, -3,
-1  ,0   ,1   ,3   ,4   ,5   ,6   ,7   ,
8   ,9   ,9   ,10  ,10  ,10  ,10  ,10  ,
10  ,10  ,9   ,9   ,8   ,7   ,6   ,5   ,
4   ,3   ,1   ,0   ,-1  ,-3  ,-5  ,-7  ,
-9  ,-12 ,-14 ,-17 ,-20 ,-22 ,-25 ,-29 ,
-32 ,-35 ,-39 ,-42 ,-46 ,-50 ,-53 ,-57 ,
-62 ,-66 ,-70 ,-75 ,-79 ,-84 ,-88 ,-93 ,
-98 ,-103,-108,-114,-119,-124,-130
};

void CAdjustYpbprhue(BYTE  ucYPbPrhue)
{
	BYTE uchue ;

	uchue = ucYPbPrhue *0.7 ;
	//Write R
	pData[0] = ((RR[uchue] >> 8) & 0x01);	// RRH
	pData[1] = (RR[uchue] & 0xff);		// RRL
	pData[2] = ((RG[uchue] >> 8) & 0x01);	// RGH
	pData[3] = (RG[uchue] & 0xff);		// RGL
	pData[4] = ((RB[uchue] >> 8) & 0x01);	// RBH
	pData[5] = (RB[uchue] & 0xff);		// RBL
	CAdjustSetYpbprRhue();

	//Write G
	pData[0] = ((GR[uchue] >> 8) & 0x01);	// GRH
	pData[1] = (GR[uchue] & 0xff);		// GRL
	pData[2] = ((GG[uchue] >> 8) & 0x01);	// GGH
	pData[3] = (GG[uchue] & 0xff);		// GGL
	pData[4] = ((GB[uchue] >> 8) & 0x01);	// GBH
	pData[5] = (GB[uchue] & 0xff);		// GBL
	CAdjustSetYpbprGhue();

	//Write B
	pData[0] = ((BR[uchue] >> 8) & 0x01);	// BRH
	pData[1] = (BR[uchue] & 0xff);		// BRL
	pData[2] = ((BG[uchue] >> 8) & 0x01);	// BGH
	pData[3] = (BG[uchue] & 0xff);		// BGL
	pData[4] = ((BB[uchue] >> 8) & 0x01);	// BBH
	pData[5] = (BB[uchue] & 0xff);		// BBL
	CAdjustSetYpbprBhue();

	CScalerSetBit(_COLOR_CTRL_62, 0xff, 0x80);			// cftsai 20061031 added, ready to write
}


void CAdjustYpbprSaturation(BYTE  ucYPbPrSaturation)
{
    WORD    PB, PR ;

 	PR = (WORD)stYPbPrData.YPbPrGain[_RED] * (100 - ucYPbPrSaturation) /(WORD)50  ;
   	PB = (WORD)stYPbPrData.YPbPrGain[_BLUE] * (100 - ucYPbPrSaturation) /(WORD)50 ;
if(HIBYTE(PB)>0)
	PB  = 0x00FF ;
if (HIBYTE(PR)>0)
	PR  = 0x00FF ;

 #if(_ADC_INPUT_SWAP_RG == _ON)

    pData[1] = PR;
    pData[0] = stYPbPrData.YPbPrGain[_GREEN];
    pData[2] = PB;

#elif(_ADC_INPUT_SWAP_RB == _ON)

    pData[2] = PR;
    pData[1] = stYPbPrData.YPbPrGain[_GREEN];
    pData[0] = PB;

#elif(_ADC_INPUT_SWAP_GB == _ON)

    pData[0] = PR;
    pData[2] = stYPbPrData.YPbPrGain[_GREEN];
    pData[1] = PB;

#else

    pData[0] = PR;
    pData[1] = stYPbPrData.YPbPrGain[_GREEN];
    pData[2] = PB;

#endif
	CAdjustSetYpbprSaturation();

}
#endif		// sRGB_Color_Enhance end



#if(_AdjustCustomerColorMode==_ENABLE)
void CAdjustCustomerColorMode(void)
{
#if(_COLOR_PREFERENCE == _PANASONIC_STYLE)

// Brightness_R,Brightness_G,Brightness_B,Contrast_R,Contrast_G,Contrast_B,Sharpness_Num
// VDC_Contrast,VDC_Brightness,VDC_Saturation,VDC_Hue,VDC_Shaprness

	BYTE code ColorType[][12] = {
	// CVBS,SV
	//    B_R    B_G   B_B     C_R    C_G    C_B    Sharp   VD_Con   VD_Bri   VD_Sat   VD_Hue    VD_Sharp
		0x80,  0x80,  0x7F,  0x87,  0x80,  0x7A,   6,        38,           0x78,     64,         46,          0x17,

	// TV
	//    B_R    B_G   B_B     C_R    C_G    C_B    Sharp   VD_Con   VD_Bri   VD_Sat   VD_Hue    VD_Sharp
		0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  6,        52,           0x85,     52,         47,          0x17,
	   //0x80,  0x80,  0x80,  0x80,  0x80,  0x80,   6,        33,           0x85,     58,         46,          0x17,

	// YPbPr  , HDMI
	//    B_R    B_G   B_B     C_R    C_G    C_B    Sharp   VD_Con   VD_Bri   VD_Sat   VD_Hue    VD_Sharp
		0x80,  0x80,  0x7F,  0xB3,  0xAA,  0xA2,   6,        38,           0x78,     50,         50,          0x17,
	   //0x80,  0x80,  0x7F,  0xB3,  0xAA,  0xA2,   6,        38,           0x78,     50,         50,          0x17,


	};

	if(!bSourceVideo())
	{

			pData[0] = ColorType[2][0];
			pData[1] = ColorType[2][1];
			pData[2] = ColorType[2][2];
			pData[3] = ColorType[2][3];
			pData[4] = ColorType[2][4];
			pData[5] = ColorType[2][5];

			CScalerSetByte(_CB_ACCESS_PORT_64, 0x80);
    			CScalerWrite(_CB_DATA_PORT_65, 6, pData, _NON_AUTOINC);
    			CScalerSetByte(_CB_ACCESS_PORT_64, 0x00);

			SET_PEAKING_CORING(ColorType[2][6]);
			SET_CONTRAST(ColorType[2][7]);
			//SET_YPbPrSaturation(ColorType[2][9]);
			//SET_YPbPrHue(ColorType[2][10]);
                     SET_SATURATION(ColorType[2][9]);
			SET_HUE(ColorType[2][10]);			
			CEepromSaveSystemData();

			CAdjustPeakingFilter(GET_PEAKING_CORING());
			CAdjustContrast();
			//CAdjustYpbprSaturation(GET_YPbPrSaturation());
			//CAdjustYpbprhue(GET_YPbPrHue());
			CAdjustYpbprSaturation(GET_SATURATION());
			CAdjustYpbprhue(GET_HUE());
			CScalerSetBit(_COLOR_CTRL_62, 0xFF, _BIT2);

	}
	else
	{	
		if(_GET_INPUT_SOURCE() == _SOURCE_VIDEO_TV)
		{
			
			pData[0] = ColorType[1][0];
			pData[1] = ColorType[1][1];
			pData[2] = ColorType[1][2];
			pData[3] = ColorType[1][3];
			pData[4] = ColorType[1][4];
			pData[5] = ColorType[1][5];

			CScalerSetByte(_CB_ACCESS_PORT_64, 0x80);
    			CScalerWrite(_CB_DATA_PORT_65, 6, pData, _NON_AUTOINC);
    			CScalerSetByte(_CB_ACCESS_PORT_64, 0x00);


			SET_PEAKING_CORING(ColorType[1][6]);
			SET_CONTRAST(ColorType[1][7]);
			SET_SATURATION(ColorType[1][9]);
			SET_HUE(ColorType[1][10]);
			CVideoSetVDCBrightness(ColorType[1][8]);
			I2CByteWrite(0x80,_VIDEO_DEVICE,ColorType[1][11]);
			
			CEepromSaveSystemData();
		}
		else
		{
		
		
			pData[0] = ColorType[0][0];
			pData[1] = ColorType[0][1];
			pData[2] = ColorType[0][2];
			pData[3] = ColorType[0][3];
			pData[4] = ColorType[0][4];
			pData[5] = ColorType[0][5];

			CScalerSetByte(_CB_ACCESS_PORT_64, 0x80);
    			CScalerWrite(_CB_DATA_PORT_65, 6, pData, _NON_AUTOINC);
    			CScalerSetByte(_CB_ACCESS_PORT_64, 0x00);

			SET_PEAKING_CORING(ColorType[0][6]);
			SET_CONTRAST(ColorType[0][7]);
			SET_SATURATION(ColorType[0][9]);
			SET_HUE(ColorType[0][10]);
			CVideoSetVDCBrightness(ColorType[0][8]);
		    I2CByteWrite(0x80,_VIDEO_DEVICE,ColorType[0][11]);
			
			CEepromSaveSystemData();

		}
		CAdjustPeakingFilter(GET_PEAKING_CORING());
		CVideoSetContrast(GET_CONTRAST());
		CVideoSetSaturation(GET_SATURATION());
		gmi_CAdjustVDCHue(GET_HUE());		
	}


#endif


#if(sRGB_Color_Enhance == _ENABLE)

	CVideoSetSaturation(GET_SATURATION());
	gmi_CAdjustVDCHue(GET_HUE());
	CScalerSetBit(_COLOR_CTRL_62, ~_BIT2, _BIT2);		// enable sRGB

#endif

}
#endif


#if(_VIDEO_AUTO_WHITE_BLANCE == _ENABLE)
#define _VIDEO_SATURATION_MAX	0xFF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -