/****************************************************************************** *_Copyright (c) 2009 Digital Stream Technology Inc. All Rights Reserved. * * Module: dsthalpic.c * * Description * * Notes * * @author Junku Park (hwatk@dstreamtech.com) * @version $Revision: 1.1 $ * ******************************************************************************/ #include #include #include "dsthalcommon.h" #include "dsthallocal.h" #include "dstddsys.h" #include "dstddpic.h" /****************************************************************************** * Global variable declaration ******************************************************************************/ ////////////////////////////////////////////////////////////////////////////// // Picture Configuration // // g_CurPicConfig: Current Picture Configuration // g_NextPicConfig: Will be applied on next capture stop/start. // g_DefaultPicConfig // ////////////////////////////////////////////////////////////////////////////// PIC_CONFIG_t g_CurPicConfig, g_NextPicConfig; PIC_CONFIG_t g_CurPicConfigPIP, g_NextPicConfigPIP; PIC_CONFIG_t g_DefaultPicConfig = { // Picture Parameters { 50, 455, 50, 0, 50 }, // Extended Picture Parameters { ColorTemp: 0, NR: 0, ColorSystem: 0, BlackExtension: 1, WhiteExtension: 0, BlueStretch: 0, APL: 0, DCI: 0, ACR: 0, ColorMgmt: 0, MpegNR: 0, RCont: 0x100, GCont: 0x100, BCont: 0xE6, BlackExtVal: 3, WhiteExtVal: 3, BlackLevel: 0x44, SubContrast: 0x93 }, }; PIC_CONFIG_t g_DefaultPicConfigPIP = { // Picture Parameters { 50, 255, 22, 0, 25 }, // Extended Picture Parameters { ColorTemp: 0, NR: 0, ColorSystem: 0, BlackExtension: 0, WhiteExtension: 0, BlueStretch: 0, APL: 0, DCI: 0, ACR: 0, ColorMgmt: 0, MpegNR: 0, RCont: 0x100, GCont: 0x100, BCont: 0xE6, BlackExtVal: 3, WhiteExtVal: 3, BlackLevel: 0x44, SubContrast: 0x93 }, }; /****************************************************************************** * Imported variable declaration ******************************************************************************/ /****************************************************************************** * Imported function declaration ******************************************************************************/ /****************************************************************************** * Local definitions ******************************************************************************/ #define PIC_PARAM_ACTUAL_READ 0 // ½ÇÁ¦ °ªÀ» Àо °è»êÇÒ °ÍÀÎÁö ¿©ºÎ. /****************************************************************************** * Local typedefs ******************************************************************************/ /****************************************************************************** * Local variables declaration ******************************************************************************/ static int g_NextPicConfigFlag = 0; static int g_NextPicConfigFlagPIP = 0; /****************************************************************************** * Local function prototypes ******************************************************************************/ #if 0 ___Pictue_Parameter_Functions___() #endif /**************************************************************************** * * Picture Tuning Range * * - Sharpness 0 ~ 100 (Default: 50) * - Contrast 0 ~ 100 (Default: 50) * - Brightness 0 ~ 100 (Default: 50) * - Saturation (Color) 0 ~ 100 (Default: 50) * - Tint (Hue) -50 ~ +50 (Default: 0) * ***************************************************************************/ DHL_RESULT DHL_PIC_PresetParams(P_PIC_CONFIG_t pParamConfig) { DHL_RESULT dhlResult = DHL_OK; P_PIC_PARAM_t pPicConfig; pPicConfig = &(pParamConfig->Param); memcpy( &g_NextPicConfig, pParamConfig, sizeof(PIC_CONFIG_t) ); g_NextPicConfigFlag = 1; return dhlResult; } DHL_RESULT DHL_PIC_PresetDefaultParams(void) { DHL_RESULT dhlResult = DHL_OK; if ( g_NextPicConfigFlag == 0 ) memcpy( &g_NextPicConfig, &g_DefaultPicConfig, sizeof(PIC_CONFIG_t) ); g_NextPicConfigFlag = 1; return dhlResult; } DHL_RESULT DHL_PIC_PresetParamsPIP(P_PIC_CONFIG_t pPicConfig) { DHL_RESULT dhlResult = DHL_OK; memcpy( &g_NextPicConfigPIP, pPicConfig, sizeof(PIC_CONFIG_t) ); g_NextPicConfigFlagPIP = 1; return dhlResult; } DHL_RESULT DHL_PIC_PresetDefaultParamsPIP(void) { DHL_RESULT dhlResult = DHL_OK; if ( g_NextPicConfigFlagPIP == 0 ) memcpy( &g_NextPicConfig, &g_DefaultPicConfig, sizeof(PIC_CONFIG_t) ); g_NextPicConfigFlagPIP = 1; return dhlResult; } DHL_RESULT DHL_PIC_EnableSharpness(DS_BOOL ON) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_PIC_EnableSharpness(ON); g_CurPicConfig.SharpnessOn = ON; return dhlResult; } DHL_RESULT DHL_PIC_EnableHueSaturation(DS_BOOL ON) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_PIC_EnableHueSaturation(ON); g_CurPicConfig.HueSaturationOn = ON; return dhlResult; } DHL_RESULT DHL_PIC_EnableBrightness(DS_BOOL ON) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_PIC_EnableBrightness(ON); g_CurPicConfig.BrightnessOn = ON; return dhlResult; } DHL_RESULT DHL_PIC_SetSharpness(DS_U32 uHorzSharpness, DS_U32 uVertSharpness) { DHL_RESULT dhlResult = DHL_OK; if ( uHorzSharpness > 100 ) { printf("[WARNING] Sharpness is larger than 100, truncated it to 100.\n"); uHorzSharpness = 100; } g_CurPicConfig.Param.hSharpness = uHorzSharpness; g_CurPicConfig.Param.vSharpness = uVertSharpness; dhlResult = DD_PIC_SetSharpness(uHorzSharpness, uVertSharpness); return dhlResult; } DHL_RESULT DHL_PIC_GetSharpness(DS_U32 *puHorzSharpness, DS_U32 *puVertSharpness) { DHL_RESULT dhlResult = DHL_OK; if (!puHorzSharpness) { printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); return DHL_FAIL; } #if PIC_PARAM_ACTUAL_READ dhlResult = DD_PIC_GetSharpness( puHorzSharpness, puVertSharpness ); if ( dhlResult == DHL_OK ) { if (*puHorzSharpness>100) *puHorzSharpness = 100; } #else *puHorzSharpness = g_CurPicConfig.Param.hSharpness; *puVertSharpness = g_CurPicConfig.Param.vSharpness; #endif return dhlResult; } DHL_RESULT DHL_PIC_SetContrast(DS_U32 uContrast) { DHL_RESULT dhlResult = DHL_OK; #if 0 //(hwatk/070620) if ( uContrast > 100 ) { printf("[WARNING] uContrast is larger than 100, truncated it to 100.\n"); uContrast = 100; } #endif g_CurPicConfig.Param.Contrast = uContrast; dhlResult = DD_PIC_SetContrast(uContrast); return dhlResult; } DHL_RESULT DHL_PIC_GetContrast(DS_U32 *puContrast) { DHL_RESULT dhlResult = DHL_OK; if (!puContrast) { printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); return DHL_FAIL; } #if PIC_PARAM_ACTUAL_READ dhlResult = DD_PIC_GetContrast(puContrast); #else *puContrast = g_CurPicConfig.Param.Contrast; #endif return dhlResult; } DHL_RESULT DHL_PIC_SetBrightness(DS_U32 uBrightness) { DHL_RESULT dhlResult = DHL_OK; #if 0 //(hwatk/070620) if ( uBrightness > 100 ) { printf("[WARNING] uBrightness is larger than 100, truncated it to 100.\n"); uBrightness = 100; } #endif g_CurPicConfig.Param.Brightness = uBrightness; dhlResult = DD_PIC_SetBrightness(uBrightness); return dhlResult; } DHL_RESULT DHL_PIC_GetBrightness(DS_U32 *puBrightness) { DHL_RESULT dhlResult = DHL_OK; if (!puBrightness) { printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); return DHL_FAIL; } #if PIC_PARAM_ACTUAL_READ dhlResult = DD_PIC_GetBrightness(puBrightness); #else *puBrightness = g_CurPicConfig.Param.Brightness; #endif return dhlResult; } DHL_RESULT DHL_PIC_SetSaturation(DS_U32 uSaturation) { DHL_RESULT dhlResult = DHL_OK; if ( uSaturation > 120 ) { // ÇØ»óµµ¸¶´Ù ´Ù¸£±â ¶§¹®¿¡ 100ÀÌ»óÀÎ °ªÀÌ °¡´ÉÇÏ´Ù. megakiss 20070820 printf("[WARNING] uSaturation is larger than 100, truncated it to 100.\n"); uSaturation = 120; } g_CurPicConfig.Param.Saturation = uSaturation; dhlResult = DD_PIC_SetSaturation(uSaturation); return dhlResult; } DHL_RESULT DHL_PIC_GetSaturation(DS_U32 *puSaturation) { DHL_RESULT dhlResult = DHL_OK; if (!puSaturation) { printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); return DHL_FAIL; } #if PIC_PARAM_ACTUAL_READ dhlResult = DD_PIC_GetSaturation(puSaturation); #else *puSaturation = g_CurPicConfig.Param.Saturation; #endif return dhlResult; } DHL_RESULT DHL_PIC_SetHue(int iHue) { DHL_RESULT dhlResult = DHL_OK; if ( iHue > 50 ) { printf("[WARNING] uSaturation is larger than 50, truncated it to 50.\n"); iHue = 50; } if ( iHue < -50 ) { printf("[WARNING] uSaturation is smaller than -50, truncated it to -50.\n"); iHue = -50; } g_CurPicConfig.Param.Hue = iHue; dhlResult = DD_PIC_SetHue(iHue); return dhlResult; } DHL_RESULT DHL_PIC_GetHue(int *piHue) { DHL_RESULT dhlResult = DHL_OK; if (!piHue) { printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); return DHL_FAIL; } #if PIC_PARAM_ACTUAL_READ dhlResult = DD_PIC_GetHue(piHue); #else *piHue = g_CurPicConfig.Param.Hue; #endif return dhlResult; } DHL_RESULT DHL_PIC_SetParams(int bFull) { DHL_RESULT dhlResult = DHL_OK; P_PIC_PARAM_t pPicConfig; pPicConfig = &(g_CurPicConfig.Param); #if 0 printf("Next Picture Paramters\n"); printf("Sharpness ( 0 ~ 100): %ld\n", g_CurPicConfig.Param.Sharpness); printf("Contrast ( 0 ~ 100): %ld\n", g_CurPicConfig.Param.Contrast); printf("Brightness ( 0 ~ 100): %ld\n", g_CurPicConfig.Param.Brightness); printf("Saturation ( 0 ~ 100): %ld\n", g_CurPicConfig.Param.Saturation); printf("Hue(Color) (-50 ~ +50): %d\n", g_CurPicConfig.Param.Hue); printf("ColorTemp: %d\n", g_CurPicConfig.ExtParam.ColorTemp); printf("NR: %d\n", g_CurPicConfig.ExtParam.NR); printf("ColorSystem: %d\n", g_CurPicConfig.ExtParam.ColorSystem); printf("BlackExtension: %d\n", g_CurPicConfig.ExtParam.BlackExtension); printf("WhiteExtension: %d\n", g_CurPicConfig.ExtParam.WhiteExtension); printf("BlueStretch: %d\n", g_CurPicConfig.ExtParam.BlueStretch); printf("APL: %d\n", g_CurPicConfig.ExtParam.APL); printf("DCI: %d\n", g_CurPicConfig.ExtParam.DCI); printf("ACR: %d\n", g_CurPicConfig.ExtParam.ACR); printf("ColorMgmt: %d\n", g_CurPicConfig.ExtParam.ColorMgmt); printf("MpegNR: %d\n", g_CurPicConfig.ExtParam.MpegNR); printf("FleshTone: %d\n", g_CurPicConfig.ExtParam.FleshTone); printf("Red: %d\n", g_CurPicConfig.ExtParam.Red); printf("Green: %d\n", g_CurPicConfig.ExtParam.Green); printf("Blue: %d\n", g_CurPicConfig.ExtParam.Blue); printf("RedCont: %d\n", g_CurPicConfig.ExtParam.RCont); printf("GreenCont: %d\n", g_CurPicConfig.ExtParam.GCont); printf("BlueCont: %d\n", g_CurPicConfig.ExtParam.BCont); printf("BlackExt: %d\n", g_CurPicConfig.ExtParam.BlackExtVal); printf("WhiteExt: %d\n", g_CurPicConfig.ExtParam.WhiteExtVal); printf("BlackLvl: %d\n", g_CurPicConfig.ExtParam.BlackLevel); printf("SubContrast: %d\n", g_CurPicConfig.ExtParam.SubContrast); printf("MEMC: %d\n", g_CurPicConfig.ExtParam.MEMC); #endif dhlResult = DD_PIC_SetSharpness(pPicConfig->hSharpness, pPicConfig->vSharpness); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); // if ( DHL_CAP_GetVideoSrc(0) != DHL_CAP_VGA0_VIDEO ) { dhlResult = DD_PIC_SetContrast(pPicConfig->Contrast); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); //} if (bFull) { dhlResult = DD_PIC_SetColorTemperature(g_CurPicConfig.ExtParam.ColorTemp); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); } dhlResult = DD_PIC_SetBrightness(pPicConfig->Brightness); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DD_PIC_SetSaturation(pPicConfig->Saturation); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DD_PIC_SetHue(pPicConfig->Hue); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); // // Advanced Picture Parameters // dhlResult = DHL_PIC_SetAPL(g_CurPicConfig.ExtParam.APL); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_SetNR(g_CurPicConfig.ExtParam.NR); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_SetMpegNR(g_CurPicConfig.ExtParam.MpegNR); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); if ( DHL_CAP_GetVideoSrc(0) == DHL_CAP_ATV0_VIDEO ) dhlResult = DHL_PIC_SetColorMgmt(/*ATV*/3); else dhlResult = DHL_PIC_SetColorMgmt(/*NORMAL*/2); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); // // Blue Strecth; This shall be called prior to DHL_PIC_SetBlueColor, since Blue stretch depends on Blue color. // dhlResult = DHL_PIC_SetBlueStretch(g_CurPicConfig.ExtParam.BlueStretch); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); // // Flesh Tone (Skin Color) // dhlResult = DHL_PIC_SetFleshTone(g_CurPicConfig.ExtParam.FleshTone); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); // // Red, Green, Blue // dhlResult = DHL_PIC_SetRGBOffset(g_CurPicConfig.ExtParam.Red, g_CurPicConfig.ExtParam.Green, g_CurPicConfig.ExtParam.Blue); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_SetRGBContrast(g_CurPicConfig.ExtParam.RCont, g_CurPicConfig.ExtParam.GCont, g_CurPicConfig.ExtParam.BCont); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_SetBlackWhiteStretch(g_CurPicConfig.ExtParam.BlackExtVal, g_CurPicConfig.ExtParam.WhiteExtVal); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_SetBlackLevel(g_CurPicConfig.ExtParam.BlackLevel); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_SetSubContrast(g_CurPicConfig.ExtParam.SubContrast); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_SetColorSystem(g_CurPicConfig.ExtParam.ColorSystem); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_SetMEMCMode(g_CurPicConfig.ExtParam.MEMC); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_SetColorMgmt(/*ATV*/0); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); if ( DHL_DISP_GetDispAspect() == DHL_DISP_ASPECT_1_1 ) DD_PIC_SetAutoMovieMode(0); else DD_PIC_SetAutoMovieMode(g_CurPicConfig.ExtParam.Movie); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_EnableSharpness(0); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_EnableHueSaturation(1); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_PIC_EnableBrightness(0); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); return dhlResult; } DHL_RESULT DHL_PIC_SetParamsPIP(void) { DHL_RESULT dhlResult = DHL_OK; P_PIC_PARAM_t pPicConfig; pPicConfig = &(g_CurPicConfig.Param); return dhlResult; } DHL_RESULT DHL_PIC_SetRGBContrast( DS_U16 R, DS_U16 G, DS_U16 B ) { DHL_RESULT dhlResult = DHL_OK; if ( R>511 || G>511 || B>511 ) { printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); dhlResult = DHL_FAIL; } g_CurPicConfig.ExtParam.RCont = R; g_CurPicConfig.ExtParam.GCont = G; g_CurPicConfig.ExtParam.BCont = B; dhlResult = DD_PIC_SetRGBContrast( R, G, B ); return dhlResult; } DHL_RESULT DHL_PIC_SetBlackWhiteStretch( DS_U8 B, DS_U8 W ) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.BlackExtVal = B; g_CurPicConfig.ExtParam.WhiteExtVal = W; dhlResult = DD_PIC_SetBlackWhiteStretch( B, W ); return dhlResult; } DHL_RESULT DHL_PIC_SetBlackLevel( DS_U8 BlackLevel ) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.BlackLevel = BlackLevel; dhlResult = DD_PIC_SetBlackLevel(BlackLevel); return dhlResult; } DHL_RESULT DHL_PIC_SetSubContrast( DS_U8 SubContrast ) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.SubContrast = SubContrast; dhlResult = DD_PIC_SetSubContrast(SubContrast); return dhlResult; } #if 0 ___Picture_Ext_Patameter_Functions___() #endif /**************************************************************************** * * Picture Extended Parameters * * - DCISpeed Normal(0), Faster than normal(2), Fastest(4) * - ColorTemperature Normal(0), Warm(1), Cool(2) * - NR 0 ~ 100 * - ColorSystem Normal(0), EU(1), ASIA(2) * - BlackExtension On(1)/Off(0) * - WhiteExtension On(1)/Off(0) * - APL On(1)/Off(0) * - ColorMgmt TBD * - MpegNR 0 ~ 100 * ***************************************************************************/ DHL_RESULT DHL_PIC_SetDCISpeed(int Speed) { DD_PIC_SetDCISpeed(Speed); return DHL_OK; } DHL_RESULT DHL_PIC_SetColorTemperature(int ColorTemp) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.ColorTemp = ColorTemp; dhlResult = DD_PIC_SetColorTemperature(ColorTemp); return dhlResult; } DHL_RESULT DHL_PIC_SetNR(int NR) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.NR = NR; dhlResult = DD_PIC_SetNR(NR); return dhlResult; } DHL_RESULT DHL_PIC_SetColorSystem(int ColorSystem) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.ColorSystem = ColorSystem; dhlResult = DD_PIC_SetColorSystem(ColorSystem); return dhlResult; } DHL_RESULT DHL_PIC_SetBlackExtension(int BlackExtension) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.BlackExtension = BlackExtension; dhlResult = DD_PIC_SetBlackExtension(BlackExtension); return dhlResult; } DHL_RESULT DHL_PIC_SetWhiteExtension(int WhiteExtension) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.WhiteExtension = WhiteExtension; dhlResult = DD_PIC_SetWhiteExtension(WhiteExtension); return dhlResult; } DHL_RESULT DHL_PIC_SetBlueStretch(int BlueStretch) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.BlueStretch = BlueStretch; dhlResult = DD_PIC_SetBlueStretch(BlueStretch); dhlResult = DD_PIC_SetContrast(g_CurPicConfig.Param.Contrast); return dhlResult; } DHL_RESULT DHL_PIC_SetAPL(int APL) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.APL = APL; // dhlResult = DD_PIC_SetAPL( APL ? 0 : 1 ); dhlResult = DD_PIC_SetAPL( APL ? 1 : 0 ); return dhlResult; } DHL_RESULT DHL_PIC_SetDCI(int DCI) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.DCI = DCI; dhlResult = DD_PIC_SetDCI(DCI); return dhlResult; } DHL_RESULT DHL_PIC_SetACR(int ACR) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.ACR = ACR; dhlResult = DD_PIC_SetACR(ACR); return dhlResult; } DHL_RESULT DHL_PIC_SetColorMgmt(int ColorMgmt) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.ColorMgmt = ColorMgmt; dhlResult = DD_PIC_SetColorMgmt(ColorMgmt); return dhlResult; } DHL_RESULT DHL_PIC_SetFleshTone(int FleshTone) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.FleshTone = FleshTone; dhlResult = DD_PIC_SetFleshTone(FleshTone); return dhlResult; } DHL_RESULT DHL_PIC_SetRedColor(int Red) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.Red = Red; //dhlResult = DD_DISP_SetRedColor(Red); return dhlResult; } DHL_RESULT DHL_PIC_SetGreenColor(int Green) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.Green = Green; //dhlResult = DD_DISP_SetGreenColor(Green); return dhlResult; } DHL_RESULT DHL_PIC_SetBlueColor(int Blue) { DHL_RESULT dhlResult = DHL_OK; if ( g_CurPicConfig.ExtParam.BlueStretch == 0 ) { //dhlResult = DHL_PIC_SetBlueStretch(1); if ( dhlResult != DHL_OK ) printf("|%s| ERROR, LINE=%d\n", __FUNCTION__, __LINE__); } g_CurPicConfig.ExtParam.Blue = Blue; //dhlResult = DD_DISP_SetBlueColor(Blue); return dhlResult; } DHL_RESULT DHL_PIC_SetRGBOffset(int Red, int Green, int Blue) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.Red = Red; g_CurPicConfig.ExtParam.Green = Green; g_CurPicConfig.ExtParam.Blue = Blue; dhlResult = DD_PIC_SetRedOffset(Red); SysASSERT( dhlResult == DHL_OK ); dhlResult = DD_PIC_SetGreenOffset(Red); SysASSERT( dhlResult == DHL_OK ); dhlResult = DD_PIC_SetBlueOffset(Red); SysASSERT( dhlResult == DHL_OK ); return dhlResult; } DHL_RESULT DHL_PIC_SetMpegNR(int MpegNR) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.MpegNR = MpegNR; dhlResult = DD_PIC_SetMpegNR(MpegNR); return dhlResult; } DHL_RESULT DHL_PIC_GetHistogram(DS_U8 *pHistogram) { return DD_PIC_GetHistogram(pHistogram); } DHL_RESULT DHL_PIC_SetMEMCMode(DHL_PIC_MEMC_MODE mode) { DHL_RESULT dhlResult = DHL_OK; g_CurPicConfig.ExtParam.MEMC = mode; dhlResult = DD_PIC_SetMEMCMode(mode); if ( dhlResult != DHL_OK ) printf("|%s| failure. (ERR=%d)\n", __FUNCTION__, dhlResult); return dhlResult; } DHL_RESULT DHL_PIC_SetAutoMovieMode( DS_BOOL enable ) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_PIC_SetAutoMovieMode(enable); g_CurPicConfig.ExtParam.Movie = enable; if ( dhlResult != DHL_OK ) printf("|%s| failure. (ERR=%d)\n", __FUNCTION__, dhlResult); return dhlResult; } int DHL_PIC_GetColorTemperature(void) { return g_CurPicConfig.ExtParam.ColorTemp; } int DHL_PIC_GetNR(void) { return g_CurPicConfig.ExtParam.NR; } int DHL_PIC_GetColorSystem(void) { return g_CurPicConfig.ExtParam.ColorSystem; } int DHL_PIC_GetBlackExtension(void) { return g_CurPicConfig.ExtParam.BlackExtension; } int DHL_PIC_GetWhiteExtension(void) { return g_CurPicConfig.ExtParam.WhiteExtension; } int DHL_PIC_GetBlueStretch(void) { return g_CurPicConfig.ExtParam.BlueStretch; } int DHL_PIC_GetAPL(void) { return g_CurPicConfig.ExtParam.APL; } int DHL_PIC_GetDCI(void) { return g_CurPicConfig.ExtParam.DCI; } int DHL_PIC_GetACR(void) { return g_CurPicConfig.ExtParam.ACR; } int DHL_PIC_GetColorMgmt(void) { return g_CurPicConfig.ExtParam.ColorMgmt; } int DHL_PIC_GetFleshTone(void) { return g_CurPicConfig.ExtParam.FleshTone; } void DHL_PIC_GetRedOffset(int *pRed, int *pGreen, int *pBlue) { if (pRed) *pRed = g_CurPicConfig.ExtParam.Red; if (pGreen) *pGreen = g_CurPicConfig.ExtParam.Green; if (pBlue) *pBlue = g_CurPicConfig.ExtParam.Blue; } int DHL_PIC_GetMpegNR(void) { return g_CurPicConfig.ExtParam.MpegNR; } DHL_PIC_MEMC_MODE DHL_PIC_GetMEMCMode(void) { return g_CurPicConfig.ExtParam.MEMC; } DS_BOOL DHL_PIC_GetAutoMovieMode(void) { return g_CurPicConfig.ExtParam.Movie; } #if 0 ___Internal_Functions___() #endif void DHL_PIC_UpdateNextParam(void) { memcpy( &g_CurPicConfig, &g_NextPicConfig, sizeof(PIC_CONFIG_t) ); } void DHL_PIC_UpdateNextParamPIP(void) { memcpy( &g_CurPicConfigPIP, &g_NextPicConfigPIP, sizeof(PIC_CONFIG_t) ); } #if 0 ___Debug_Functions___() #endif void PrintParam(int arg) { DHL_RESULT dhlResult; DS_U32 hSharpness, vSharpness, Contrast, Brightness, Saturation; int Hue; hSharpness = vSharpness = Contrast = Brightness = Saturation = Hue = -1; dhlResult = DHL_PIC_GetSharpness( &hSharpness, &vSharpness ); dhlResult = DHL_PIC_GetContrast( &Contrast ); dhlResult = DHL_PIC_GetBrightness( &Brightness ); dhlResult = DHL_PIC_GetSaturation( &Saturation ); dhlResult = DHL_PIC_GetHue( &Hue ); printf("Sharpness ( 0 ~ 100): %ld\n", hSharpness); printf("Contrast ( 0 ~ 100): %ld\n", Contrast); printf("Brightness ( 0 ~ 100): %ld\n", Brightness); printf("Saturation ( 0 ~ 100): %ld\n", Saturation); printf("Hue(Color) (-50 ~ +50): %d\n", Hue); } void set_dp(int arg) { DHL_PIC_SetSharpness( 25, 25 ); DHL_PIC_SetContrast( 52 ); DHL_PIC_SetBrightness( 50 ); DHL_PIC_SetSaturation( 22 ); DHL_PIC_SetHue( 0 ); } void h_dp(void) { DS_U32 hSharpness, vSharpness, Contrast, Brightness, Saturation; int Hue; hSharpness = vSharpness = Contrast = Brightness = Saturation = Hue = -1; DD_PIC_GetSharpness( &hSharpness, &vSharpness ); DD_PIC_GetContrast( &Contrast ); DD_PIC_GetBrightness( &Brightness ); DD_PIC_GetSaturation( &Saturation ); DD_PIC_GetHue( &Hue ); printf("Sharpness ( 0 ~ 100): %ld\n", hSharpness); printf("Contrast ( 0 ~ 100): %ld\n", Contrast); printf("Brightness ( 0 ~ 100): %ld\n", Brightness); printf("Saturation ( 0 ~ 100): %ld\n", Saturation); printf("Hue(Color) (-50 ~ +50): %d\n", Hue); } void PrintExtParam(int arg) { printf("ColorTemp: %d\n", g_CurPicConfig.ExtParam.ColorTemp); printf("NR: %d\n", g_CurPicConfig.ExtParam.NR); printf("ColorSystem: %d\n", g_CurPicConfig.ExtParam.ColorSystem); printf("BlackExtension: %d\n", g_CurPicConfig.ExtParam.BlackExtension); printf("WhiteExtension: %d\n", g_CurPicConfig.ExtParam.WhiteExtension); printf("BlueStretch: %d\n", g_CurPicConfig.ExtParam.BlueStretch); printf("APL: %d\n", g_CurPicConfig.ExtParam.APL); printf("DCI: %d\n", g_CurPicConfig.ExtParam.DCI); printf("ACR: %d\n", g_CurPicConfig.ExtParam.ACR); printf("ColorMgmt: %d\n", g_CurPicConfig.ExtParam.ColorMgmt); printf("MpegNR: %d\n", g_CurPicConfig.ExtParam.MpegNR); } void PresetSetParam(int sh, int c, int b, int sa, int hue) { PIC_CONFIG_t picConfig; memcpy( &picConfig, &g_CurPicConfig, sizeof(PIC_CONFIG_t) ); picConfig.Param.Brightness = b; picConfig.Param.Contrast = c; picConfig.Param.Saturation = sa; picConfig.Param.Hue = hue; picConfig.Param.hSharpness = sh; DHL_PIC_PresetParams( &picConfig ); } void PresetSetExtParam(int nr, int mnr, int apl, int bs, int f, int r, int b, int g,int memc) { PIC_CONFIG_t picConfig; memcpy( &picConfig, &g_CurPicConfig, sizeof(PIC_CONFIG_t) ); picConfig.ExtParam.NR = nr; picConfig.ExtParam.MpegNR = mnr; picConfig.ExtParam.APL = apl; picConfig.ExtParam.BlueStretch = bs; picConfig.ExtParam.FleshTone = f; picConfig.ExtParam.Red = r; picConfig.ExtParam.Blue = b; picConfig.ExtParam.Green = g; picConfig.ExtParam.MEMC = memc; DHL_PIC_PresetParams( &picConfig ); } void TestParam(int arg) { DS_U32 dwValue, tmp; int iValue; int i; switch(arg) { case 6: case 1: printf("Sharpness Test\n"); for (i=0; i<=100; i++) { DHL_PIC_SetSharpness( i, i ); DHL_PIC_GetSharpness( &dwValue, &tmp ); if ( i != dwValue ) { printf("|%s| Value is different; expected=%d, read=%ld\n", __FUNCTION__, i, dwValue); break; } } if ( i==101 ) printf("Passed.\n"); if (arg!=6) break; case 2: printf("Contrast Test\n"); for (i=0; i<=100; i++) { DHL_PIC_SetContrast( i ); DHL_PIC_GetContrast( &dwValue ); if ( i != dwValue ) { printf("|%s| Value is different; expected=%d, read=%ld\n", __FUNCTION__, i, dwValue); break; } } if ( i==101 ) printf("Passed.\n"); if (arg!=6) break; case 3: printf("Brightness Test\n"); for (i=0; i<=100; i++) { DHL_PIC_SetBrightness( i ); DHL_PIC_GetBrightness( &dwValue ); if ( i != dwValue ) { printf("|%s| Value is different; expected=%d, read=%ld\n", __FUNCTION__, i, dwValue); break; } } if ( i==101 ) printf("Passed.\n"); if (arg!=6) break; case 4: printf("Saturation Test\n"); for (i=0; i<=100; i++) { DHL_PIC_SetSaturation( i ); DHL_PIC_GetSaturation( &dwValue ); if ( i != dwValue ) { printf("|%s| Value is different; expected=%d, read=%ld\n", __FUNCTION__, i, dwValue); break; } } if ( i==101 ) printf("Passed.\n"); if (arg!=6) break; case 5: printf("Hue Test\n"); for (i=-50; i<=50; i++) { DHL_PIC_SetHue( i ); DHL_PIC_GetHue( &iValue ); if ( i != iValue ) { printf("|%s| Value is different; expected=%d, read=%d\n", __FUNCTION__, i, iValue); break; } } if ( i==51 ) printf("Passed.\n"); break; case 0: default: printf("Usage: %s [arg]\n", __FUNCTION__); printf(" 1: Sharpness\n"); printf(" 2: Contrast\n"); printf(" 3: Brightness\n"); printf(" 4: Saturation\n"); printf(" 5: Hue(Color)\n"); } } void get_hist(void) { DS_U8 hist[16]; int i, sum; DHL_PIC_GetHistogram( hist ); for (i=0; i<16; i++) { printf("HIST[%2d]: 0x%-4x\n", i, hist[i]); } for (i=0, sum=0; i<16; i++) { sum += hist[i] * 0x10 * (i+1); } sum /= 0x93; printf("SUM: %d\n", sum); }