/** * Retrieve the gain calibration value for the specified sampling parameters. * * @param rate ADS1256_SPS_t The sample rate to lookup for. * @param gain ADS1256_PGA_t The gain to lookup for. * @param buffer ADS1256_BUFFER_t The buffer setting to lookup for. * @param temperature float The temperature value to lookup for. * @retval The determined calibration value. */ uint32_t Tekdaqc_GetGainCalibration(ADS1256_SPS_t rate, ADS1256_PGA_t gain, ADS1256_BUFFER_t buffer, float temperature) { uint8_t rate_index = 0U; uint8_t gain_index = 0U; uint8_t buffer_index = 0U; ComputeTableIndices(&rate_index, &gain_index, &buffer_index, rate, gain, buffer); uint32_t baseGain = baseGainCalibrations[rate_index][gain_index][buffer_index]; if (CALIBRATION_VALID != TRUE) { #ifdef CALIBRATION_TABLE_DEBUG printf("[Calibration Table] The calibration table is not valid, returning ADC calibration only (0x%" PRIX32 ").\n\r", baseGain); #endif return baseGain; } if (temperature < CAL_TEMP_LOW || temperature > CAL_TEMP_HIGH) { /* The temperature is out of range, we will return the closest */ #ifdef CALIBRATION_TABLE_DEBUG printf("[Calibration Table] The requested temperature %f was out of range. Minimum is %f and maximum is %f.\n\r", temperature, CAL_TEMP_LOW, CAL_TEMP_HIGH); #endif snprintf(TOSTRING_BUFFER, sizeof(TOSTRING_BUFFER), "Error fetching the gain calibration value for temperature: %f Deg C. Temperature out of range. Allowable range is %f to %f Deg C", temperature, CAL_TEMP_LOW, CAL_TEMP_HIGH); TelnetWriteErrorMessage(TOSTRING_BUFFER); if (temperature < CAL_TEMP_LOW) { temperature = CAL_TEMP_LOW; } else { temperature = CAL_TEMP_HIGH; } } uint8_t num_temp_steps = (uint8_t) (temperature / CAL_TEMP_STEP); float low_temp = CAL_TEMP_LOW * num_temp_steps; float high_temp = CAL_TEMP_HIGH * num_temp_steps; float factor = (temperature - CAL_TEMP_LOW) / CAL_TEMP_STEP; uint32_t offset = ComputeOffset(rate, gain, buffer, low_temp); //Add one for the move to gain uint32_t Address = CAL_DATA_START_ADDR + 4 * offset; //Multiply offset by 4 because entries are 4bytes long uint32_t data_low = (*(__IO uint32_t*) Address); offset = ComputeOffset(rate, gain, buffer, high_temp); //Add one for the move to gain Address = CAL_DATA_START_ADDR + 4 * offset; //Multiply offset by 4 because entries are 4bytes long uint32_t data_high = (*(__IO uint32_t*) Address); return (baseGain + InterpolateValue(data_low, data_high, factor)); }
ER ipe_IQparam(UINT32 ParamMode, IPE_IQINFO *IQInfo) { UINT32 ISO_Value = GetISOIdx(); INT16 SatOfs; //#NT#2011/11/17#Ethan Lau -begin //#NT#cause 220 ife have no rounding,always have truncation error memcpy(&IQ_ColorEffectTable, &(ColorEffectTable[gImageAlgInfo.ImageEffect]), sizeof(IPE_COLOR_EFFECT_PARAM)); IQ_ColorEffectTable.CbOfs += IfeCCOft(ParamMode, ISO_Value); IQ_ColorEffectTable.CrOfs += IfeCCOft(ParamMode, ISO_Value); //#NT#2011/11/17#Ethan Lau -end switch(ParamMode) { case IPE_PRV_SETTING : case IPE_CAP_SETTING : IQInfo->FuncUpdateSel = IPE_FUNC_SET; IQInfo->FuncSel = IPE_NR_EN | IPE_RLPF_EN | IPE_GLPF_EN | IPE_BLPF_EN | IPE_CCR_EN | IPE_CTRL_EN | IPE_HADJ_EN | IPE_CADJ_EN | IPE_CADJ_YENH_EN | IPE_CADJ_YCON_EN | IPE_CADJ_CCON_EN | IPE_CADJ_CLPF_EN; IQInfo->ParamUpdateSel = IPE_SET_NR | IPE_SET_EDGE | IPE_SET_COLOR_GAIN | IPE_SET_COLOR | IPE_SET_COLOREFFECT ; memcpy(&IQ_IPE_EdgeParam, IPE_ISOParam[ISO_Value].EdgeParamSel, sizeof(STR_IPE_EDGE_ENHMAP_PARA)); IQInfo->EDGE_PARAM = &IQ_IPE_EdgeParam; IQInfo->NR_PARAM = IPE_ISOParam[ISO_Value].NRParamSel; IQInfo->EdgeKerDiv = IPE_ISOParam[ISO_Value].EdgeKerDivSel; IQInfo->Estab = IPE_ISOParam[ISO_Value].EstabSel; IQInfo->FStab = IPE_ISOParam[ISO_Value].FStabSel; IQInfo->FDtab = IPE_ISOParam[ISO_Value].FDtabSel; IQInfo->COLOR_EFFECT_PARAM = &IQ_ColorEffectTable;//&ColorEffectTable[gImageAlgInfo.ImageEffect]; IQInfo->HueTab = IPE_hueTab; IQInfo->SatTab = IPE_satTab; IQInfo->IntTab = IPE_intTab; IQInfo->DDSTab = IPE_ddsTab; IQInfo->COLOR_PARAM.ColorGain.ChR = 256; IQInfo->COLOR_PARAM.ColorGain.ChGr = 256; IQInfo->COLOR_PARAM.ColorGain.ChGb = 256; IQInfo->COLOR_PARAM.ColorGain.ChB = 256; #if (IPE_CC_TYPE == INDENITY_CC) IQInfo->COLOR_PARAM.ColorCorrect=Indenity_CC; #else IQInfo->COLOR_PARAM.ColorCorrect=Normal_CC; #endif IQInfo->COLOR_PARAM.ColorSupWeight= 42;//42; IQInfo->EDGE_PARAM->EdgEnhanceP = (IQInfo->EDGE_PARAM->EdgEnhanceP * Sharpness[ISO_Value][gImageAlgInfo.Sharpness])>>6; IQInfo->EDGE_PARAM->EdgEnhanceN = (IQInfo->EDGE_PARAM->EdgEnhanceN * Sharpness[ISO_Value][gImageAlgInfo.Sharpness])>>6; IQInfo->COLOR_EFFECT_PARAM->SatOfs= Saturation[ISO_Value][gImageAlgInfo.Saturation];//adpk have no saturation #if 0 //Image Effect Capture IPE parameter if ( IE_GetCapStatus() == TRUE ) { switch ( IE_GetCapIndex() ) { case IE_INDEX_ARF_PopArt: { IQInfo->FuncSel |= (IPE_CADJ_EN | IPE_CADJ_CCON_EN); IQInfo->COLOR_EFFECT_PARAM = &IPE_ColorEffect_PopArt[ISO_Value]; IQInfo->HueTab = NULL; IQInfo->SatTab = NULL; IQInfo->IntTab = NULL; IQInfo->DDSTab = NULL; } break; case IE_INDEX_ARF_Sketch: { //IQInfo->FuncSel |= (IPE_CADJ_EN | IPE_YCTH_EN | IPE_CADJ_YENH_EN); //IQInfo->YCFIX_EFFECT_PARAM = &IPE_YCFixEffect_Sketch[ISO_Value]; //IQInfo->EDGE_EFFECT_PARAM = &IPE_EdgeEffect_Sketch[ISO_Value]; //IQInfo->EDGE_PARAM = &IPE_EdgeParam_Sketch[ISO_Value]; } break; case IE_INDEX_ARF_ToyPhoto: case IE_INDEX_ARF_FishEye: case IE_INDEX_ARF_FantasticFocus: case IE_INDEX_ARF_RoughMonoChorme: break; } } #endif break; case IPE_PRV_AE_SETTING : IQInfo->FuncUpdateSel = IPE_FUNC_NOUPDATE; //IQInfo->ParamUpdateSel = IPE_SET_NR | IPE_SET_EDGE | IPE_SET_COLOR; IQInfo->ParamUpdateSel = IPE_SET_NR | IPE_SET_EDGE | IPE_SET_COLOR|IPE_SET_COLOREFFECT; memcpy(&IQ_IPE_EdgeParam, IPE_ISOParam[ISO_Value].EdgeParamSel, sizeof(STR_IPE_EDGE_ENHMAP_PARA)); IQInfo->EDGE_PARAM = &IQ_IPE_EdgeParam; IQInfo->NR_PARAM = IPE_ISOParam[ISO_Value].NRParamSel; //IQInfo->EDGE_PARAM = IPE_ISOParam[ISO_Value].EdgeParamSel; IQInfo->EdgeKerDiv = IPE_ISOParam[ISO_Value].EdgeKerDivSel; IQInfo->Estab = IPE_ISOParam[ISO_Value].EstabSel; IQInfo->FStab = IPE_ISOParam[ISO_Value].FStabSel; IQInfo->FDtab = IPE_ISOParam[ISO_Value].FDtabSel; IQInfo->COLOR_EFFECT_PARAM = &IQ_ColorEffectTable; //&ColorEffectTable[gImageAlgInfo.ImageEffect]; #if (IPE_CC_TYPE == INDENITY_CC) IQInfo->COLOR_PARAM.ColorCorrect=Indenity_CC; #else IQInfo->COLOR_PARAM.ColorCorrect=Normal_CC; #endif IQInfo->COLOR_PARAM.ColorSupWeight=42;//42; IQInfo->EDGE_PARAM->EdgEnhanceP = (IQInfo->EDGE_PARAM->EdgEnhanceP * Sharpness[ISO_Value][gImageAlgInfo.Sharpness])>>6; IQInfo->EDGE_PARAM->EdgEnhanceN = (IQInfo->EDGE_PARAM->EdgEnhanceN * Sharpness[ISO_Value][gImageAlgInfo.Sharpness])>>6; //IQInfo->COLOR_EFFECT_PARAM->SatOfs= Saturation[ISO_Value][gImageAlgInfo.Saturation];adpk have no saturation IQInfo->HueTab = IPE_hueTab; IQInfo->SatTab = IPE_satTab; IQInfo->IntTab = IPE_intTab; IQInfo->DDSTab = IPE_ddsTab; SatOfs = (INT16)(-InterpolateValue(AEAlg_GetPrvEVValue(), 64, 0, 640, 2560)); IQ_ColorEffectTable.SatOfs += SatOfs; SatOfs = (INT16)(-InterpolateValue(AEAlg_GetPrvEVValue(), 5, 0, 640, 2560)); IQ_ColorEffectTable.SatOfs += SatOfs; break; case IPE_PRV_AF_SETTING : IQInfo->FuncUpdateSel = IPE_FUNC_SET; IQInfo->FuncSel |= IPE_VACC_EN; IQInfo->ParamUpdateSel = IPE_SET_EDGE | IPE_SET_VA; IQInfo->EdgeKerDiv = IPE_AFedgeKernelDiv; break; case IPE_COLOREFFECT: if ( Is_AELock() == TRUE ) { IQInfo->FuncUpdateSel = IPE_FUNC_NOUPDATE; IQInfo->ParamUpdateSel = IPE_SET_COLOREFFECT; //#NT#2011/09/08#Ethan Lau -begin //#NT#avoid to re-config ColorEffectTable IQInfo->COLOR_EFFECT_PARAM = &IQ_ColorEffectTable; //#NT#2011/09/08#Ethan Lau -end IQInfo->HueTab = IPE_hueTab; IQInfo->SatTab = IPE_satTab; IQInfo->IntTab = IPE_intTab; IQInfo->DDSTab = IPE_ddsTab; } break; case IPE_SHARPNESS: if ( Is_AELock() == TRUE ) { IQInfo->FuncUpdateSel = IPE_FUNC_NOUPDATE; IQInfo->ParamUpdateSel = IPE_SET_EDGE; //#NT#2011/09/08#Ethan Lau -begin //#NT#avoid to config dram addr : 0x0 memcpy(&IQ_IPE_EdgeParam, IPE_ISOParam[ISO_Value].EdgeParamSel, sizeof(STR_IPE_EDGE_ENHMAP_PARA)); IQInfo->EDGE_PARAM = &IQ_IPE_EdgeParam; //#NT#2011/09/08#Ethan Lau -end IQInfo->EDGE_PARAM->EdgEnhanceP = (IQInfo->EDGE_PARAM->EdgEnhanceP * Sharpness[ISO_Value][gImageAlgInfo.Sharpness])>>6; IQInfo->EDGE_PARAM->EdgEnhanceN = (IQInfo->EDGE_PARAM->EdgEnhanceN * Sharpness[ISO_Value][gImageAlgInfo.Sharpness])>>6; IQInfo->EdgeKerDiv = NULL; IQInfo->Estab = NULL; } break; case IPE_SATURATION: if ( Is_AELock() == TRUE ) { IQInfo->FuncUpdateSel = IPE_FUNC_NOUPDATE; IQInfo->ParamUpdateSel = IPE_SET_COLOREFFECT; //#NT#2011/09/08#Ethan Lau -begin //#NT#avoid to re-config the satofs configed by ColorEffectTable IQInfo->COLOR_EFFECT_PARAM = &IQ_ColorEffectTable; IQInfo->COLOR_EFFECT_PARAM->SatOfs += Saturation[ISO_Value][gImageAlgInfo.Saturation]; //#NT#2011/09/08#Ethan Lau -end IQInfo->HueTab = IPE_hueTab; IQInfo->SatTab = IPE_satTab; IQInfo->IntTab = IPE_intTab; IQInfo->DDSTab = IPE_ddsTab; } break; default : debug_err(("ipe_IQparam() param mode(%d) selection error!\r\n",ParamMode)); return E_SYS; break; }
ER ipe_IQparam(UINT32 ParamMode, IPE_IQINFO *IQInfo) { IPE_ISONumEnum ISO_Value; UINT32 ratio; //#NT#20091123#ethanlau -begin UINT32 *LinearItpl_rbw,*LinearItpl_gw,up,low; BOOL bInterpolation = FALSE; PImageAlgInfo pimginfo; pimginfo = UI_GetParameter(); if(!Firstflag) { #if 0 LinearItpl_RBW_0 = IPE_ISOParam[ISONUM0].NRParamSel->RBW; LinearItpl_GW_0 = IPE_ISOParam[ISONUM0].NRParamSel->GW; LinearItpl_RBW_1 = IPE_ISOParam[ISONUM1].NRParamSel->RBW; LinearItpl_GW_1 = IPE_ISOParam[ISONUM1].NRParamSel->GW; LinearItpl_RBW_2 = IPE_ISOParam[ISONUM2].NRParamSel->RBW; LinearItpl_GW_2 = IPE_ISOParam[ISONUM2].NRParamSel->GW; Firstflag = TRUE; #endif } ISO_Value = GetISOIdx(0); //debug_err(("ISO_Value = %d\r\n", ISO_Value)); //#NT#20091123#ethanlau -end switch(ParamMode) { //#NT#2009/06/29#Jarkko Chang -begin //#NT#prepare for 96630 preview using case IPE_PRV_SETTING : IQInfo->FuncUpdateSel = IPE_FUNC_SET; IQInfo->FuncSel = IPE_RLPF_EN | IPE_GLPF_EN | IPE_BLPF_EN | IPE_CCR_EN | IPE_CTRL_EN | IPE_HADJ_EN | IPE_CADJ_EN | IPE_CADJ_YENH_EN | IPE_CADJ_YCON_EN | IPE_CADJ_CCON_EN | IPE_CADJ_CLPF_EN | IPE_NR_EN; //#NT#2010/01/08#YH Lee -begin //#NT# Mod param update select, only used functions are updated //IQInfo->ParamUpdateSel = IPE_SET_ALL&~IPE_SET_GAMMA; //IQInfo->ParamUpdateSel = IPE_SET_ALL; IQInfo->ParamUpdateSel = IPE_SET_NR | IPE_SET_EDGE | IPE_SET_COLOR_GAIN | IPE_SET_COLOR | IPE_SET_COLOREFFECT; //#NT#2010/01/08#YH Lee -end //#NT#2009/08/31#Jarkko Chang -end IQInfo->GammaLut[IPE_R_CHANNEL] = GammaLUT_128Tab; IQInfo->GammaLut[IPE_G_CHANNEL] = GammaLUT_128Tab; IQInfo->GammaLut[IPE_B_CHANNEL] = GammaLUT_128Tab; IQInfo->NR_PARAM = IPE_ISOParam[ISO_Value].NRParamSel; IQInfo->NRStab = IPE_ISOParam[ISO_Value].NRStabSel; IQInfo->NRDtab = IPE_ISOParam[ISO_Value].NRDtabSel; IQInfo->EDGE_PARAM = IPE_ISOParam[ISO_Value].EdgeParamSel; //#NT#20091127#ethanlau -begin IQInfo->EDGE_PARAM->EdgEnhance = Sharpness[ISO_Value][pimginfo->Sharpness]; //#NT#20091127#ethanlau -end IQInfo->EdgeKerH = IPE_ISOParam[ISO_Value].EdgeKerDivSel; IQInfo->EdgeKerV = IPE_ISOParam[ISO_Value].EdgeKerDivSel; IQInfo->Emap = IPE_ISOParam[ISO_Value].EmapSel; IQInfo->Estab = IPE_ISOParam[ISO_Value].EstabSel; IQInfo->FStab = IPE_ISOParam[ISO_Value].FStabSel; IQInfo->FDtab = IPE_ISOParam[ISO_Value].FDtabSel; IQInfo->COLOR_EFFECT_PARAM = &ColorEffectTable[pimginfo->ImageEffect]; //#NT#20091127#ethanlau -begin //IQInfo->COLOR_EFFECT_PARAM->SatOfs= Saturation[pimginfo->Saturation]; //#NT#20091127#ethanlau -end //#NT#2011/09/30#Spark Chou -begin //#NT# IQInfo->COLOR_EFFECT_PARAM->SatOfs = InterpolateValue(AE_Param.ISO_Gain,0, IQ_SATOFS_HIGHISO, IQ_ITPL_STARTHISO, IQ_ITPL_ENDISO); IQInfo->COLOR_EFFECT_PARAM->IntOfs = InterpolateValue(AE_Param.ISO_Gain, 0, IQ_INTOFS_HIGHISO, IQ_ITPL_STARTHISO, IQ_ITPL_ENDISO); IQInfo->COLOR_EFFECT_PARAM->CCon = InterpolateValue(AE_Param.ISO_Gain, 128, IQ_CCON_HIGHISO, IQ_ITPL_STARTHISO, IQ_ITPL_ENDISO); IQInfo->COLOR_EFFECT_PARAM->YCon = InterpolateValue(AE_Param.ISO_Gain, 128, IQ_YCON_HIGHISO, IQ_ITPL_STARTHISO, IQ_ITPL_ENDISO); //debug_err(("^RIntOfs=%d CCon=%d YCon=%d\r\n", IQInfo->COLOR_EFFECT_PARAM->IntOfs, IQInfo->COLOR_EFFECT_PARAM->CCon, IQInfo->COLOR_EFFECT_PARAM->YCon)); //#NT#2011/09/30#Spark Chou -end //#NT#2010/11/09#JJ Huang -begin IQInfo->HueTab = IPE_hueTab; IQInfo->SatTab = IPE_satTab; IQInfo->IntTab = IPE_intTab; IQInfo->DDSTab = IPE_ddsTab; //#NT#2010/11/09#JJ Huang -end IQInfo->COLOR_PARAM.CGRange=IPE_CG_2_8; IQInfo->COLOR_PARAM.ColorGain.ChR=256; IQInfo->COLOR_PARAM.ColorGain.ChGr=256; IQInfo->COLOR_PARAM.ColorGain.ChGb=256; IQInfo->COLOR_PARAM.ColorGain.ChB=256; IQInfo->COLOR_PARAM.ColorOffset.ChR=0; IQInfo->COLOR_PARAM.ColorOffset.ChGr=0; IQInfo->COLOR_PARAM.ColorOffset.ChGb=0; IQInfo->COLOR_PARAM.ColorOffset.ChB=0; IQInfo->COLOR_PARAM.ColorCorrect=Normal_CC; //#NT#2011/01/27#JJ Huang -begin IQInfo->COLOR_PARAM.ColorSupWeight=33;//22; //#NT#2011/01/27#JJ Huang -end //#NT#2011/10/05#Spark Chou -begin //#NT# gDynaGammaSetting = TRUE; //#NT#2011/10/05#Spark Chou -end break; //#NT#2009/06/29#Jarkko Chang -end case IPE_CAP_SETTING : case IPE_D2D_SETTING : IQInfo->FuncUpdateSel = IPE_FUNC_SET; IQInfo->FuncSel = IPE_RLPF_EN | IPE_GLPF_EN | IPE_BLPF_EN | IPE_CCR_EN | IPE_CTRL_EN | IPE_HADJ_EN | IPE_CADJ_EN | IPE_CADJ_YENH_EN | IPE_CADJ_YCON_EN | IPE_CADJ_CCON_EN | IPE_CADJ_CLPF_EN | IPE_NR_EN ; //#NT#2010/01/08#YH Lee -begin //#NT# Mod param update select, only used functions are updated //IQInfo->ParamUpdateSel = IPE_SET_ALL&~IPE_SET_GAMMA; //IQInfo->ParamUpdateSel = IPE_SET_ALL; IQInfo->ParamUpdateSel = IPE_SET_NR | IPE_SET_EDGE | IPE_SET_COLOR_GAIN | IPE_SET_COLOR | IPE_SET_COLOREFFECT; //#NT#2010/01/08#YH Lee -end //#NT#2009/08/31#Jarkko Chang -end IQInfo->GammaLut[IPE_R_CHANNEL] = GammaLUT_128Tab; IQInfo->GammaLut[IPE_G_CHANNEL] = GammaLUT_128Tab; IQInfo->GammaLut[IPE_B_CHANNEL] = GammaLUT_128Tab; IQInfo->NR_PARAM = IPE_ISOParam[ISO_Value].NRParamSel; IQInfo->NRStab = IPE_ISOParam[ISO_Value].NRStabSel; IQInfo->NRDtab = IPE_ISOParam[ISO_Value].NRDtabSel; IQInfo->EDGE_PARAM = IPE_ISOParam[ISO_Value].EdgeParamSel; //#NT#20091127#ethanlau -begin IQInfo->EDGE_PARAM->EdgEnhance = Sharpness[ISO_Value][pimginfo->Sharpness]; //#NT#20091127#ethanlau -end IQInfo->EdgeKerH = IPE_ISOParam[ISO_Value].EdgeKerDivSel; IQInfo->EdgeKerV = IPE_ISOParam[ISO_Value].EdgeKerDivSel; IQInfo->Emap = IPE_ISOParam[ISO_Value].EmapSel; IQInfo->Estab = IPE_ISOParam[ISO_Value].EstabSel; IQInfo->FStab = IPE_ISOParam[ISO_Value].FStabSel; IQInfo->FDtab = IPE_ISOParam[ISO_Value].FDtabSel; IQInfo->COLOR_EFFECT_PARAM = &ColorEffectTable[pimginfo->ImageEffect]; //#NT#20091127#ethanlau -begin //IQInfo->COLOR_EFFECT_PARAM->SatOfs= Saturation[pimginfo->Saturation]; //#NT#20091127#ethanlau -end //#NT#2010/11/09#JJ Huang -begin IQInfo->HueTab = IPE_hueTab; IQInfo->SatTab = IPE_satTab; IQInfo->IntTab = IPE_intTab; IQInfo->DDSTab = IPE_ddsTab; //#NT#2010/11/09#JJ Huang -end IQInfo->COLOR_PARAM.CGRange=IPE_CG_2_8; IQInfo->COLOR_PARAM.ColorGain.ChR=256; IQInfo->COLOR_PARAM.ColorGain.ChGr=256; IQInfo->COLOR_PARAM.ColorGain.ChGb=256; IQInfo->COLOR_PARAM.ColorGain.ChB=256; IQInfo->COLOR_PARAM.ColorOffset.ChR=0; IQInfo->COLOR_PARAM.ColorOffset.ChGr=0; IQInfo->COLOR_PARAM.ColorOffset.ChGb=0; IQInfo->COLOR_PARAM.ColorOffset.ChB=0; IQInfo->COLOR_PARAM.ColorCorrect=Normal_CC; //#NT#2011/01/27#JJ Huang -begin IQInfo->COLOR_PARAM.ColorSupWeight=33;//22; //#NT#2011/01/27#JJ Huang -end break; case IPE_PRV_AE_SETTING : IQInfo->FuncUpdateSel = IPE_FUNC_NOUPDATE; IQInfo->ParamUpdateSel = IPE_SET_NR | IPE_SET_EDGE | IPE_SET_COLOR | IPE_SET_COLOREFFECT; IQInfo->NR_PARAM = IPE_ISOParam[ISO_Value].NRParamSel; //#NT#20091123#ethanlau -end IQInfo->NRStab = IPE_ISOParam[ISO_Value].NRStabSel; IQInfo->NRDtab = IPE_ISOParam[ISO_Value].NRDtabSel; IQInfo->EDGE_PARAM = IPE_ISOParam[ISO_Value].EdgeParamSel; //#NT#20091127#ethanlau -begin IQInfo->EDGE_PARAM->EdgEnhance = Sharpness[ISO_Value][pimginfo->Sharpness]; if ( AE_Param.ISO_Gain > 1600 ) IQInfo->EDGE_PARAM->EdgEnhance = Sharpness[ISO_Value][pimginfo->Sharpness]>>1; //debug_err(("pimginfo->Sharpness = %d\r\n", pimginfo->Sharpness)); //#NT#20091127#ethanlau -end //#NT#2010/09/17#ethanlau -begin IQInfo->COLOR_EFFECT_PARAM = &ColorEffectTable[pimginfo->ImageEffect]; IQInfo->COLOR_EFFECT_PARAM->SatOfs= Saturation[pimginfo->Saturation]; //#NT#2010/09/17#ethanlau -end //#NT#2011/09/30#Spark Chou -begin //#NT IQInfo->COLOR_EFFECT_PARAM->SatOfs = InterpolateValue(AE_Param.ISO_Gain,0, IQ_SATOFS_HIGHISO, IQ_ITPL_STARTHISO, IQ_ITPL_ENDISO); IQInfo->COLOR_EFFECT_PARAM->IntOfs = InterpolateValue(AE_Param.ISO_Gain, 0, IQ_INTOFS_HIGHISO, IQ_ITPL_STARTHISO, IQ_ITPL_ENDISO); IQInfo->COLOR_EFFECT_PARAM->CCon = InterpolateValue(AE_Param.ISO_Gain, 128, IQ_CCON_HIGHISO, IQ_ITPL_STARTHISO, IQ_ITPL_ENDISO); IQInfo->COLOR_EFFECT_PARAM->YCon = InterpolateValue(AE_Param.ISO_Gain, 128, IQ_YCON_HIGHISO, IQ_ITPL_STARTHISO, IQ_ITPL_ENDISO); //debug_err(("^RIntOfs=%d CCon=%d YCon=%d\r\n", IQInfo->COLOR_EFFECT_PARAM->IntOfs, IQInfo->COLOR_EFFECT_PARAM->CCon, IQInfo->COLOR_EFFECT_PARAM->YCon)); //#NT#2011/09/30#Spark Chou -end IQInfo->EdgeKerH = IPE_ISOParam[ISO_Value].EdgeKerDivSel; IQInfo->EdgeKerV = IPE_ISOParam[ISO_Value].EdgeKerDivSel; IQInfo->Emap = IPE_ISOParam[ISO_Value].EmapSel; IQInfo->Estab = IPE_ISOParam[ISO_Value].EstabSel; IQInfo->FStab = IPE_ISOParam[ISO_Value].FStabSel; IQInfo->FDtab = IPE_ISOParam[ISO_Value].FDtabSel; IQInfo->COLOR_PARAM.ColorOffset.ChR=0; IQInfo->COLOR_PARAM.ColorOffset.ChGr=0; IQInfo->COLOR_PARAM.ColorOffset.ChGb=0; IQInfo->COLOR_PARAM.ColorOffset.ChB=0; IQInfo->COLOR_PARAM.ColorGain.ChR=256; IQInfo->COLOR_PARAM.ColorGain.ChGr=256; IQInfo->COLOR_PARAM.ColorGain.ChGb=256; IQInfo->COLOR_PARAM.ColorGain.ChB=256; IQInfo->COLOR_PARAM.ColorCorrect=Normal_CC; //#NT#2011/01/27#JJ Huang -begin IQInfo->COLOR_PARAM.ColorSupWeight=33;//22; //#NT#2011/01/27#JJ Huang -end //#NT#2011/03/02#ethanlau -begin //#NT#add for dis if(dis_isEnabled()) { IQInfo->EdgeKerH = &DIS_Ker; IQInfo->EdgeKerV = &DIS_Ker; IQInfo->ETH_PARAM = &DIS_EthParam; IQInfo->FuncUpdateSel = IPE_FUNC_ENABLE; IQInfo->FuncSel |= IPE_EDGETH_EN; IQInfo->ParamUpdateSel |= IPE_SET_ETH; } //#NT#2011/03/02#ethanlau -end break; case IPE_PRV_AF_SETTING : //#NT#2010/11/01#Jarkko Chang -begin IQInfo->FuncUpdateSel = IPE_FUNC_ENABLE; //#NT#2010/11/01#Jarkko Chang -end IQInfo->FuncSel |= IPE_VACC_EN; IQInfo->ParamUpdateSel = IPE_SET_EDGE | IPE_SET_VA; IQInfo->EdgeKerH = IPE_AFedgeKernelDiv; IQInfo->EdgeKerV = IPE_AFedgeKernelDiv; break; default : debug_err(("ipe_IQparam() param mode selection error!\r\n")); return E_SYS; break; } //Move Gamma setting out from IPE driver if(IQInfo->ParamUpdateSel & IPE_SET_GAMMA) { CPU_WriteGammaTab(IQInfo->GammaLut[IPE_R_CHANNEL], IQInfo->GammaLut[IPE_G_CHANNEL], IQInfo->GammaLut[IPE_B_CHANNEL]); } return E_OK; }
void Controller::Update() { uint32 i; FadeState *pState; float curTime, t; if(m_bFirstUpdate) { FirstUpdate(); m_bFirstUpdate = LTFALSE; } if(m_State == CState_Fade) { // Find out if we're even interpolating. curTime = g_pLTServer->GetTime(); if(curTime > (m_fStartTime + m_fDuration)) { for(i=0; i < MAX_CONTROLLER_TARGETS; i++) { pState = &m_Fades[i]; if(!pState->m_hTarget) continue; InterpolateValue(pState, 1.0f); } return; } t = (curTime - m_fStartTime) / m_fDuration; t = GetWaveFn(m_WaveType)(t); // Apply wave function. for(i=0; i < MAX_CONTROLLER_TARGETS; i++) { pState = &m_Fades[i]; if(!pState->m_hTarget) continue; InterpolateValue(pState, t); } Activate(); } else if(m_State == CState_Flicker) { if(g_pLTServer->GetTime() > m_fNextFlickerTime) { // Send the message. for(i=0; i < MAX_CONTROLLER_TARGETS; i++) { pState = &m_Fades[i]; if(!pState->m_hTarget) continue; SendTriggerMsgToObject(this, pState->m_hTarget, LTFALSE, m_FlickerMsg); } // Go again? if(m_FlickerCounter != FLICKER_FOREVER) --m_FlickerCounter; if(m_FlickerCounter == 0) HandleOffCommand(CParsedMsg()); m_fNextFlickerTime = g_pLTServer->GetTime() + GetRandom(m_fIntervalMin, m_fIntervalMax); } Activate(); } else { Deactivate(); } }