home > RTD2660 Source Code > video.c

  1. //----------------------------------------------------------------------------------------------------  
  2. // ID Code      : Video.c No.0002  
  3. // Update Note  :  
  4. //  
  5. //----------------------------------------------------------------------------------------------------  
  6.   
  7. #define __VIDEO__  
  8.   
  9. #include "Core\Header\Include.h"  
  10. //#include "Core\Header\Tv.h"  
  11.   
  12. #if(_VIDEO_SUPPORT == _ON)  
  13. WORD code tVIDEO_TABLE_INPUT_INFO[][5] =  
  14. {  
  15.     //{ 864,        185-32,     656,        32-4,   278-8-2,    },  // VIDEO-50(PAL& SECAM)  
  16.     //{ 858,  159-6, 676, 20, 230},  
  17.     //{ 864,        185-32,     680,        32-2,   272,    },  // VIDEO-50(PAL& SECAM)  
  18.     //{ 858,        179-32,     688,        24-8,   238,    }  
  19.     //{  864,     179,  640,     31,     268 }, // 50HZ  
  20.     //{  858,     171,    640, 19, 232 },  // 60HZ  
  21.     //{ 864,        185-32,     656,        32-4,   278-8-2,    },  
  22.     //{ 858,  159-6, 676, 20, 230},  
  23. #if _PANEL_TYPE == _LQ104V1DG52  
  24.     {    864,     175,     640,     22+1,     272+8 },  // 50HZ  
  25.     {    858,     171,     640,     22,     234 },  // 60HZ  
  26. #else  
  27.     //{ 864,        185-32,     656,        32+2,   278-8-2,    },  
  28.     {   864,        185-20,     656,        32+2,   278-8-2,    },  
  29.     { 858,  159-6, 676, 22, 234},  
  30. #endif  
  31. };  
  32.   
  33.   
  34. //"videochangecounter"                       x.h  
  35. //usage:    0xff---not for video change counter information  
  36. //      n: viddeo change times counter, n>1  
  37. #define _VIDEO_CHANGE_INIT      0xff  
  38. #define _VIDEO_CHANGE_OK        0xfe  
  39. //#define _VIDEO_CHANGE_TIME        10//50  50 for TV???  
  40. #define _VIDEO_CHANGE_TIME_AV       1//50   50 for TV???  
  41. #define _VIDEO_CHANGE_TIME_TV       10//50  50 for TV???  
  42. static BYTE xdata videochangecounter = _VIDEO_CHANGE_INIT;  
  43.   
  44. #define SET_SYNCCHANGE_INIT()   do {videochangecounter=_VIDEO_CHANGE_INIT;}while(0)  
  45. #define SET_SYNCCHANGE_INC()    do {\  
  46.                                     if (videochangecounter==_VIDEO_CHANGE_INIT)\  
  47.                                     {\  
  48.                                         videochangecounter=1;\  
  49.                                     }\  
  50.                                     else\  
  51.                                     {\  
  52.                                         videochangecounter++;\  
  53.                                         if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)\  
  54.                                         {\  
  55.                                             if (videochangecounter>=_VIDEO_CHANGE_TIME_TV)\  
  56.                                             {\  
  57.                                                 videochangecounter = _VIDEO_CHANGE_OK;\  
  58.                                             }\  
  59.                                         }\  
  60.                                         else\  
  61.                                         {\  
  62.                                             if (videochangecounter>=_VIDEO_CHANGE_TIME_AV)\  
  63.                                             {\  
  64.                                                 videochangecounter = _VIDEO_CHANGE_OK;\  
  65.                                             }\  
  66.                                         }\  
  67.                                     }\  
  68.                                 }while(0)  
  69. #define SET_SYNCCHANGE_DEC()    do {\  
  70.                                     if (videochangecounter != _VIDEO_CHANGE_INIT)\  
  71.                                     {\  
  72.                                         videochangecounter-=1;\  
  73.                                     }\  
  74.                                 }while(0)  
  75. #define GET_SYNCCHANGE_STATUS() ((videochangecounter==_VIDEO_CHANGE_OK) ? (_TRUE) : (_FALSE))  
  76.   
  77.   
  78. //"colorchangecounter"  
  79. //usage:    0xff---not for color change counter information  
  80. //      n: color change times counter, n>1  
  81. #define _COLOR_CHANGE_INIT      0xff  
  82. #define _COLOR_CHANGE_OK        0xfe  
  83. #define _COLOR_CHANGE_TIME      5  
  84. static BYTE xdata colorchangecounter = _COLOR_CHANGE_INIT;  
  85.   
  86. #define SET_COLORCHANGE_INIT()  do {colorchangecounter=_COLOR_CHANGE_INIT;}while(0)  
  87. #define SET_COLORCHANGE_INC()   do {\  
  88.                                     if (colorchangecounter==_COLOR_CHANGE_INIT)\  
  89.                                     {\  
  90.                                         colorchangecounter=1;\  
  91.                                     }\  
  92.                                     else\  
  93.                                     {\  
  94.                                         colorchangecounter++;\  
  95.                                         if (colorchangecounter>=_COLOR_CHANGE_TIME)\  
  96.                                         {\  
  97.                                             colorchangecounter = _COLOR_CHANGE_OK;\  
  98.                                         }\  
  99.                                     }\  
  100.                                 }while(0)  
  101. #define SET_COLORCHANGE_DEC()   do {\  
  102.                                     if (colorchangecounter != _COLOR_CHANGE_INIT)\  
  103.                                     {\  
  104.                                         colorchangecounter-=1;\  
  105.                                     }\  
  106.                                 }while(0)  
  107. #define GET_COLORCHANGE_STATUS()    ((colorchangecounter==_COLOR_CHANGE_OK) ? (_TRUE) : (_FALSE))  
  108.   
  109.   
  110.   
  111.   
  112.   
  113.   
  114.   
  115.   
  116.   
  117.   
  118.   
  119.   
  120.   
  121.   
  122.   
  123.   
  124.   
  125.   
  126.   
  127.   
  128.   
  129.   
  130. /** 
  131.  * CVideoInitial 
  132.  * initial video source 
  133.  * set saturation,hue,backlight,sharpness, only called by CVideoIsExist 
  134.  * @param <none> 
  135.  * @return {none} 
  136.  * 
  137. */  
  138.   
  139. #if (_C_SECAM_DETECT==_ENABLE)  
  140. UINT8   xdata   rule=0;  
  141. UINT8   xdata   secam_count;  
  142. INT8    xdata   kg,count_7d;  
  143. UINT8   xdata   secam_trial;  
  144. #endif  
  145.   
  146. //================================================================================================  
  147. /////////////////////////////////////////////////  
  148. void CVideoInitial(void)  
  149. {  
  150.     //CVideoSetSaturation(GET_SATURATION());//eric 20070703 for sat too early  
  151.     CVideoSetHuee(GET_HUE());  
  152.     CScalerCodeW(VideoInit);  
  153.     CScalerCodeW(VideoAdcInit);  
  154.     CScalerCodeW(tVIDEO_TABLE_SET_SCALER);  
  155.     stSystemData.Sharpness &= 0xF0;  
  156.     CAdjustSharpnessForScaleUp();  
  157. }  
  158.   
  159. /** 
  160.  * CVideoIsExist 
  161.  * video initial and set input mode 
  162.  * @param <none> 
  163.  * @return {TRUE} 
  164.  * 
  165. */  
  166.   
  167. #if 0  
  168. //--------------------------------------------------  
  169. // Description  : Check Video Channel if Signal Exist  
  170. // Input Value  : ucInputChannel --> choose input channel, like AV or SV channels  
  171. // Output Value : Return _TRUE if video signal exist, otherwise _FALSE  
  172. //--------------------------------------------------  
  173. bit CVideoIsExist(void)  
  174. {  
  175.     BYTE firstIN = 1,repeat_num = 0;  
  176.   
  177.     #if 0//eric 20070703 add initial state  
  178.     CVideoOutputEnable();  
  179.       
  180.     CVideoInitial();  
  181.     CVideoSelectInput(GET_INPUTPORT_TYPE(stSystemData.InputSource));  
  182.     CTimerDelayXms(10);  
  183.     #endif  
  184.       
  185. #if(_SCALER_TYPE==_RTD2662)  
  186.     CScalerPageSelect(_PAGE8);   
  187.     CScalerSetByte(_P8_MANUAL_MODE_D2, 0x80 );          //SET AUTO DETECT  
  188.     CScalerSetBit(_P8_VIDEO_CTRL1_A1, ~_BIT0, 0x00);    
  189.     CScalerSetBit(_P8_INOUT_CTRL_A4, ~(_BIT1|_BIT4|_BIT5), _BIT4|_BIT5);//eric 20070608         // Force Only 4:2:2 Format Output for 2662 !!    
  190. #endif  
  191.   
  192. // TV weak signal protection,070806  
  193. #if 0//(_TV_Weak_Signal_Protection == _ENABLE)  
  194.     if((GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_TV_PORT)&&(ucOsdState != _AUTOSCANCHANNEL_STATE))  
  195.     {  
  196.         for(pData[8]=0;pData[8]<30;pData[8]++){  
  197. #if(_SCALER_TYPE==_RTD2662)  
  198.             CScalerPageSelect(_PAGE8);        
  199.             CScalerRead(_P8_NOISE_STATUS_CE, 1, pData, _NON_AUTOINC);  
  200. #else  
  201.             I2CRead(0x40, 0x7F,1);  
  202. #endif  
  203.             if(pData[0] < 0x30)      //40 dB check point  
  204.                 break;  
  205.             if(pData[0] < 0x50){ //30 dB threshold  
  206. #if(_SCALER_TYPE==_RTD2662)  
  207.                 CScalerPageSelect(_PAGE8);        
  208.                 CScalerSetByte(_P8_NOISE_STATUS_CE, 0x00);            
  209. #else  
  210.                 I2CByteWrite(0x40, 0x7F,0x00);  
  211. #endif  
  212.                 CTimerDelayXms(3);  
  213.                 continue;  
  214.             }  
  215.             else{  
  216.                 stModeInfo.ModeCurr = _VIDEO_NOT_EXIST;  
  217.                 TV_nosignal_flag = _TRUE;  
  218.                 return _FALSE;  
  219.             }  
  220.         }  
  221.     }  
  222. #endif  //_TV_Weak_Signal_Protection endif  
  223.   
  224. #if(_SCALER_TYPE==_RTD2662)  
  225.     CScalerPageSelect(_PAGE8);   
  226.     CScalerRead(_P8_VD_STATUS1_BC, 1, pData, _NON_AUTOINC);  
  227. #else     
  228.     I2CRead(_VIDEO_DEVICE,0x3A,1);  //Detect HSync or VSync lock  
  229. #endif  
  230.     //frank signal locked and have signal  
  231.     while((pData[0] & _HSLCK) && (pData[0] & _VLINF))  
  232.     {  
  233.         IdentifyColorStandard(0); //forster modified 060414  
  234. #if(_SCALER_TYPE==_RTD2662)  
  235.         CScalerPageSelect(_PAGE8);   
  236.         CScalerRead(_P8_VD_STATUS1_BC, 1, pData, _NON_AUTOINC);  
  237. #else  
  238.         I2CRead(_VIDEO_DEVICE,0x3A,1);  
  239. #endif  
  240.         if (firstIN) {  
  241.             ucMode_Pre_2610 = ucMode_Curr_2610;  
  242.             firstIN = 0;  
  243.             continue;  
  244.         }  
  245.         if (ucMode_Pre_2610 == ucMode_Curr_2610) {  
  246.             if(repeat_num++ > 1){  
  247.                 stModeInfo.ModeCurr = _VIDEO_EXIST;  
  248.                 return _TRUE;  
  249.             }  
  250.         }  
  251.         else {  
  252.             stModeInfo.ModeCurr = _VIDEO_NOT_EXIST;  
  253.             return _FALSE;  
  254.         }  
  255.     }  
  256.     stModeInfo.ModeCurr = _VIDEO_NOT_EXIST;  
  257.     return _FALSE;  
  258. }  
  259. #endif  
  260. /** 
  261.  * CVideoIsExist 
  262.  * video initial and set input mode 
  263.  * @param <none> 
  264.  * @return {TRUE} 
  265.  * 
  266. */  
  267. //--------------------------------------------------  
  268. // Description  : Check Video Channel if Signal Exist  
  269. // Input Value  : ucInputChannel --> choose input channel, like AV or SV channels  
  270. // Output Value : Return _TRUE if video signal exist, otherwise _FALSE  
  271. //--------------------------------------------------  
  272. bit CVideoIsExist(void)  
  273. {  
  274.     BYTE firstIN = 1,repeat_num = 0;  
  275.   
  276. #if(_SCALER_TYPE==_RTD2662)  
  277.     CScalerPageSelect(_PAGE8);   
  278.     CScalerSetByte(_P8_MANUAL_MODE_D2, 0x80 );          //SET AUTO DETECT  
  279.     CScalerSetBit(_P8_VIDEO_CTRL1_A1, ~_BIT0, 0x00);    
  280.     CScalerSetBit(_P8_INOUT_CTRL_A4, ~(_BIT1|_BIT4|_BIT5), _BIT4|_BIT5);//eric 20070608         // Force Only 4:2:2 Format Output for 2662 !!    
  281. #endif  
  282.   
  283.     //20070329  
  284.     if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  285.     {  
  286.         if (GET_TV_FIRST_ON())  
  287.         {  
  288.             CLR_TV_FIRST_ON();  
  289. #if 0//(_DEBUG_VDC)  
  290.             DebugPrintf("\ntuner init\n", 0);  
  291. #endif  
  292. #if (_TV_AFC_SUPPORT)  
  293.             if (GET_TV_AFC_ENABLE())  
  294.                 CTunerSetFreq(stTvPdb.pdb, stTvPdb.Afc);  
  295.             else  
  296.                 CTunerSetFreq(stTvPdb.pdb + ucTvFinetuneData-50 , 0);  
  297.   
  298. #if (_TUNER_TYPE==_JS6H1_111 ||\  
  299.     _TUNER_TYPE==_GDC8F1D_QF106L ||\  
  300.     _TUNER_TYPE==_GDC8F2E_106L ||\  
  301.     _TUNER_TYPE==_ET5C511_TDA9886ST||\  
  302.     _TUNER_TYPE==_ET6T1E_TDA9886ST||_TUNER_TYPE == _GDC8F2D_106L)  
  303.             CTunerSetColor(GET_TV_VIDEO_SYS());  
  304.             if (GET_CURR_AUDIO_SYS() == _TV_AUDIO_SYS_AUTO)  
  305.             {  
  306.                 UINT8 tempAudioType;  
  307.                 tempAudioType = CTunerSoundAutoDetect();  
  308.                 CTunerSetSound(tempAudioType);  
  309.                 //DebugPrintf("\nGET_CURR_AUDIO_SYS()=%d\n", tempAudioType);  
  310.             }  
  311.             else  
  312.                 CTunerSetSound(GET_CURR_AUDIO_SYS());  
  313.   
  314. #endif  //#if (_TUNER_TYPE==_JS6H1_111 ||_TUNER_TYPE==_GDC8F1D_QF106L ||_TUNER_TYPE==_GDC8F2E_106L ||_TUNER_TYPE==_TSN3311_S25)  
  315.   
  316.   
  317. #endif  //#if (_TV_AFC_SUPPORT)  
  318. //20081016 ccy add snow   
  319.             //CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0x4f, 0xB0);        //Enable snow noise.   
  320.   
  321.             //CTimerDelayXms(_TV_AUTOSCAN_RESPONSE_TIME);  
  322.         }  
  323.     }     
  324.       
  325.     if (GET_VDC_FIRST_ON())  
  326.     {  
  327.         //CLR_VDC_FIRST_ON();  
  328.         //DebugPrintf("\nvdc init\n", 0);  
  329.         CVideoOutputEnable();  
  330.         CVideoInitial();  
  331.         CVideoSelectInput(GET_INPUTPORT_TYPE(stSystemData.InputSource));  
  332.         CTimerDelayXms(20*(15));  
  333.     //  SET_SYNCLOCK_INIT();  
  334.     //  SET_SYNCCHANGE_INIT();  
  335.     }  
  336.   
  337.   
  338. /* 
  339.     I2CRead(_VIDEO_DEVICE,0x3a,1); 
  340.  
  341.     CTimerDelayXms(20);//review??? 
  342.  
  343.     if ((pData[0] & _HSLCK) && (pData[0] & _VLINF)) 
  344.     { 
  345.         // we get H/V's sync locked. 
  346.         SET_SYNCLOCK_INC(); 
  347.         // sync locked times is matched the settings? 
  348.         if (GET_SYNCLOCK_STATUS()) 
  349.         { 
  350.             // match: reset sync locked counter 
  351.             SET_SYNCLOCK_INIT(); 
  352.         } 
  353.         else 
  354.         { 
  355.             // not match: return directly 
  356.             return _FALSE; 
  357.         } 
  358.  
  359.     } 
  360.     else 
  361.     { 
  362.         SET_SYNCLOCK_DEC(); 
  363.         return _FALSE; 
  364.     } 
  365.     IdentifyColorStandard(0); //forster modified 060414 
  366.     ucMode_Pre_2610 = ucMode_Curr_2610; 
  367.      
  368.     return _TRUE; 
  369. */  
  370. #if 0  
  371. if (ucVideoProcessState==_NOSIGNAL_STATE)  
  372. {  
  373.     if (bTimerAfcms)  
  374.     {  
  375.         bTimerAfcms = 0;  
  376.   
  377.         //////////////////////////////////////////////////////////  
  378.         //20070407, tv finetune channel don't scan at no signal, review???  
  379.         //if (ucVideoProcessState==_NOSIGNAL_STATE && GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  380.         if (GET_TV_AFC_ENABLE()&&ucVideoProcessState==_NOSIGNAL_STATE && GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  381.         {  
  382.   
  383.             //DebugPrintf("\n...tuner scan while no signal...\n", 0);  
  384.   
  385.   
  386.             if (GET_TV_AFC_VALUE()==0)  
  387.             {  
  388.                 // afc = 0:  
  389.                 SET_TV_AFC_SIGN(0); // +  
  390.                 SET_TV_AFC_VALUE_INC();  
  391.             }  
  392.             else if (GET_TV_AFC_SIGN()==0)  
  393.             {  
  394.                 if (GET_TV_AFC_VALUE()<_AFC_RANGE)  
  395.                     SET_TV_AFC_VALUE_INC();  
  396.                 // is max  
  397.                 else  
  398.                 {  
  399.                     SET_TV_AFC_SIGN(1); // -  
  400.                 }  
  401.             }  
  402.             else if (GET_TV_AFC_SIGN()==1)  
  403.             {  
  404.                 if (GET_TV_AFC_VALUE()>0)  
  405.                 {  
  406.                     SET_TV_AFC_VALUE_DEC();  
  407.                 }  
  408.             }  
  409.             //CEepromSaveTvPdbData(stTvInfo.CurChn, &stTvPdb.chinfo);  
  410.             CTunerSetFreq(stTvPdb.pdb, stTvPdb.Afc);  
  411.             //CTimerDelayXms(_TV_AUTOSCAN_RESPONSE_TIME);  
  412.   
  413.         }  
  414.   
  415.         if (GET_VDC_FIRST_ON())  
  416.         {  
  417.             //////////////////////////////////////////////////////////  
  418.             //I2CRead(_VIDEO_DEVICE,0x3A,1);  
  419.             //if (!((pData[0] & _HSLCK) && (pData[0] & _VLINF)))  
  420.             {  
  421.                 CVideoSoftReset();  
  422.                 CTimerDelayXms(10);  
  423.             }  
  424.         }  
  425.         //DebugPrintf("reset vd...", 0);  
  426.     }  
  427. }  
  428. #endif  
  429.   
  430.     CLR_VDC_FIRST_ON();  
  431.   
  432.     if (!CVdcIsLockedTvScan())  
  433.     {  
  434.         stModeInfo.ModeCurr = _VIDEO_NOT_EXIST;  
  435.         return _FALSE;  
  436.     }  
  437.   
  438. #if 1   //20080306, speed tv start  
  439.     else  
  440.     {  
  441.         stModeInfo.ModeCurr = _VIDEO_EXIST;  
  442.         SET_VDC_FIRST_ON();  
  443.         //DebugPrintf("init reqest...", 0);  
  444.         if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  445.         {  
  446.             CEepromSaveTvPdbData(stTvInfo.CurChn, &stTvPdb.chinfo);  
  447.         }  
  448.         return _TRUE;  
  449.     }  
  450. #else  
  451.   
  452.     while (1)  
  453.     {  
  454.         //20080306, mask by x.hu @ JPE  
  455.         //IdentifyColorStandard(0); //forster modified 060414  
  456.   
  457.         if (!CVdcIsLockedTvScan())  
  458.         {  
  459.             stModeInfo.ModeCurr = _VIDEO_NOT_EXIST;  
  460.             return _FALSE;  
  461.         }  
  462.   
  463. ////////////////////////////////////////////////////////////////////  
  464. #if 0//_TV_PN_MIX  
  465.         //20071023, enable specified tv system only  
  466.         if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  467.         {  
  468.             CScalerPageSelect(_PAGE8);  
  469.             CScalerRead(_P8_VD_STATUS3_BE, 1, pData, _NON_AUTOINC);  
  470.             if ((pData[0] & _BIT2) == 0)  
  471.             {  
  472. #if _TYPEOF_TVSYSTEM == _TVSYSTEM_PAL_ONLY  
  473.                 stModeInfo.ModeCurr = _VIDEO_NOT_EXIST;  
  474.                 return _FALSE;  
  475. #endif  
  476.             }  
  477.             else  
  478.             {  
  479. #if _TYPEOF_TVSYSTEM == _TVSYSTEM_NTSC_ONLY  
  480.                 stModeInfo.ModeCurr = _VIDEO_NOT_EXIST;  
  481.                 return _FALSE;  
  482. #endif  
  483.             }  
  484.         }  
  485. #endif  
  486. ////////////////////////////////////////////////////////////////////  
  487.   
  488.   
  489.         if (firstIN) {  
  490.             ucMode_Pre_2610 = ucMode_Curr_2610;  
  491.             firstIN = 0;  
  492.             continue;  
  493.         }  
  494.         if (ucMode_Pre_2610 == ucMode_Curr_2610) {  
  495.             if(repeat_num++ > 1)  
  496.             {  
  497.                 stModeInfo.ModeCurr = _VIDEO_EXIST;  
  498.                 SET_VDC_FIRST_ON();  
  499.                 //DebugPrintf("init reqest...", 0);  
  500.                 if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  501.                 {  
  502.                     CEepromSaveTvPdbData(stTvInfo.CurChn, &stTvPdb.chinfo);  
  503.                 }  
  504.                 return _TRUE;  
  505.             }  
  506.         }  
  507.         else {  
  508.             stModeInfo.ModeCurr = _VIDEO_NOT_EXIST;  
  509.             return _FALSE;  
  510.         }  
  511.     }  
  512.     stModeInfo.ModeCurr = _VIDEO_NOT_EXIST;  
  513.     return _FALSE;  
  514. #endif  
  515. }  
  516.   
  517. //--------------------------------------------------  
  518. // Description  : Check if video signal is changed  
  519. // Input Value  : None  
  520. // Output Value : Return _TRUE if video signal is changed  
  521. //--------------------------------------------------  
  522. /* 
  523. bit CVideoIsChange(void) 
  524. { 
  525.     BYTE preMode; 
  526.  
  527.     preMode = ucMode_Curr_2610; 
  528.     //re-detect 
  529.     CVideoCheckMode(); 
  530.  
  531.     if( preMode != ucMode_Curr_2610) 
  532.     { 
  533.         //DebugPrintf("\n Cur-ucMode_Curr_2610 = %x",ucMode_Curr_2610); 
  534.         return _TRUE; 
  535.     } 
  536.     else 
  537.         return _FALSE; 
  538. } 
  539. */  
  540. //--------------------------------------------------  
  541. // Description  : Check if video signal is locked  
  542. // Input Value  : None  
  543. // Output Value : Return _TRUE if video signal is locked  
  544. //--------------------------------------------------  
  545. bit CVdcIsLocked(void)  
  546. {  
  547. #if(_SCALER_TYPE==_RTD2662)  
  548.     CScalerPageSelect(_PAGE8);   
  549.     CScalerRead(_P8_VD_STATUS1_BC, 1, pData, _NON_AUTOINC);  
  550. #else  
  551.     I2CRead(_VIDEO_DEVICE,0x3A ,1);  
  552. #endif  
  553.     if((pData[0] & 0x06) == 0x06) //H,V is locked           //  if((pData[0] & 0x0E) == 0x0E) //H,V,Choma is locked  
  554.         return _TRUE;  
  555.     else  
  556.         return _FALSE;  
  557. }  
  558.   
  559. //--------------------------------------------------  
  560. // Description  : Disable 2610 output  
  561. // Input Value  : None  
  562. // Output Value : None  
  563. //--------------------------------------------------  
  564. void CVideoOutputDisable(void)  
  565. {  
  566. }  
  567.   
  568. //--------------------------------------------------  
  569. // Description  : Eisable 2610 output  
  570. // Input Value  : None  
  571. // Output Value : None  
  572. //--------------------------------------------------  
  573. void CVideoOutputEnable(void)  
  574. {  
  575. }  
  576.   
  577. //--------------------------------------------------  
  578. // Description  : Soft Reset 2610  
  579. // Input Value  : None  
  580. // Output Value : None  
  581. //--------------------------------------------------  
  582. void CVideoSoftReset(void)  
  583. {  
  584.     CScalerPageSelect(_PAGE8);  
  585.     CScalerSetByte(_P8_SOFT_RESET_CF, 0x01);   
  586.     CTimerDelayXms(10);      
  587.     CScalerSetByte(_P8_SOFT_RESET_CF, 0x00);  
  588. }  
  589.   
  590. //--------------------------------------------------  
  591. // Description  : Set  2610 Hue  
  592. // Input Value  : ucValue  
  593. // Output Value : None  
  594. //--------------------------------------------------  
  595. void CVideoSetVDCHue(BYTE ucValue)  
  596. {  
  597.     CScalerPageSelect(_PAGE8);  
  598.     CScalerSetByte(_P8_HUE_AB,ucValue);     
  599. }  
  600. #if 0  
  601. //--------------------------------------------------  
  602. // Description  : Set  2610 Saturation  
  603. // Input Value  : saturationNone  
  604. // Output Value : None  
  605. //--------------------------------------------------  
  606. void CVideoSetVDCSaturation(BYTE ucValue)  
  607. {     
  608. //20081126 x.hu  
  609. #if _PQ_FINETUNE  
  610.     unsigned int temp;  
  611.       
  612.     //for PAL sat/1.414  
  613.     temp =((WORD)(ucValue*100));      
  614.   
  615.     if((ucMode_Curr_2610 >=ZPAL_I)&&(ucMode_Curr_2610 <=ZPAL_60))  
  616.     {         
  617.         temp /= 141;  
  618.         //DebugPrintf("\n ucValue_00 %d",ucValue);  
  619.     }     
  620.       
  621.     //DebugPrintf("\n ucValue_01 %d",ucValue);  
  622.     //DebugPrintf("\n Mode %d",ucMode_Curr_2610);  
  623.     CScalerPageSelect(_PAGE8);  
  624.     CScalerSetByte(_P8_SATURATION1_AA,(unsigned char)ucValue);    
  625.       
  626. #else  
  627.     BYTE moderesult;  
  628.     WORD temp;  
  629.       
  630.     CScalerRead(_P8_MODE_DET_STATUS_D3, 1, &moderesult, _NON_AUTOINC);  
  631.         CTimerDelayXms(20);  
  632.     moderesult &=0x07;    
  633.     //for PAL sat/1.414  
  634.     temp =((WORD)(ucValue*100));      
  635.     //if((moderesult==0x01)||(moderesult==0x03)||(moderesult==0x05)||(moderesult==0x06))  
  636.     if((ucMode_Curr_2610 >=ZPAL_I)&&(ucMode_Curr_2610 <=ZPAL_60))  
  637.     {         
  638.         ucValue=(temp/141);  
  639.         //DebugPrintf("\n ucValue_00 %d",ucValue);  
  640.     }     
  641.     //DebugPrintf("\n ucValue_01 %d",ucValue);  
  642.     //DebugPrintf("\n Mode %d",ucMode_Curr_2610);  
  643.     CScalerPageSelect(_PAGE8);  
  644.     CScalerSetByte(_P8_SATURATION1_AA,ucValue);   
  645. #endif  
  646. }  
  647. #endif  
  648. //--------------------------------------------------  
  649. // Description  : Set  2610 Contrast  
  650. // Input Value  : ucValue  
  651. // Output Value : None  
  652. //--------------------------------------------------  
  653. void CVideoSetVDCContrast(BYTE ucValue)  
  654. {  
  655.     CScalerPageSelect(_PAGE8);  
  656.     CScalerSetByte(_P8_CONTRAST1_A8,ucValue);       
  657. }  
  658.   
  659. //--------------------------------------------------  
  660. // Description  : Set  2610 Brightness  
  661. // Input Value  : ucValue  
  662. // Output Value : None  
  663. //--------------------------------------------------  
  664. void CVideoSetVDCBrightness(BYTE ucValue)  
  665. {  
  666.     CScalerPageSelect(_PAGE8);  
  667.     CScalerSetByte(_P8_BRIGHTNESS1_A9,ucValue);     
  668. }  
  669.   
  670. //#define MODE_4_3                      0x01  
  671. //#define MODE_16_9                     0x02  
  672. //#define MODE_LETTER_BOX       0x03  
  673.   
  674. #if(_DISPLAY_RATIO_ENABLE)  
  675. //--------------------------------------------------  
  676. // Description  : Display Ratio video set process  
  677. // Input Value  : None  
  678. // Output Value : None  
  679. //--------------------------------------------------  
  680. void CVideoDisplayRatioSet(void)  
  681. {  
  682. #if (_DISP_RATIO_M2_SUPPORT == 1 && _PANEL_DISPLAY_RATIO == _PANEL_16_9)  
  683.     //DebugPrintf("display ratio = %d", GET_DISPLAYRATIO());  
  684.   
  685. if (GET_DISPLAYRATIO()==_RATIO_4X3)  
  686. {  
  687.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_BKGD_STA_H_03);  
  688.         CScalerRead(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  689.     ((unsigned int*)pData)[0] += tDispDHSExtRatio[GET_DISPLAYRATIO()]; //Calculate the new start position  
  690.     stDisplayInfo.DHWidth =  tDispDHWidRatio[GET_DISPLAYRATIO()];  
  691.     pData[0] &= 0x0f;//_DISP_DH_ACT_STA_H_05  
  692.   
  693.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_ACT_STA_H_05);  
  694.     CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  695.     ((unsigned int*)pData)[0] += tDispDHWidRatio[GET_DISPLAYRATIO()];  
  696.     pData[0] &= 0x0f;//_DISP_DH_ACT_END_H_07  
  697.   
  698.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_ACT_END_H_07);  
  699.         CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  700. }  
  701. else if (GET_DISPLAYRATIO()==_RATIO_16X9)  
  702. {  
  703.     CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_BKGD_STA_H_03);  
  704.     CScalerRead(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  705.     ((unsigned int*)pData)[0] += tDispDHSExtRatio[GET_DISPLAYRATIO()]; //Calculate the new start position  
  706.     pData[0] &= 0x0f;  
  707.     CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_ACT_STA_H_05);  
  708.     CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  709.     stDisplayInfo.DHWidth = tDispDHWidRatio[GET_DISPLAYRATIO()];  
  710.     ((unsigned int*)pData)[0] += stDisplayInfo.DHWidth;  
  711.     pData[0] &= 0x0f;  
  712.     CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_ACT_END_H_07);  
  713.     CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  714. }  
  715. #elif (_DISP_RATIO_M2_SUPPORT == 1 && _PANEL_DISPLAY_RATIO == _PANEL_4_3)  
  716.     return;  
  717. #elif 0  
  718.   
  719.     pData[0] = GET_DISPLAYRATIO();  
  720.   #if(_PANEL_DISPLAY_RATIO == _PANEL_4_3)  
  721.     if((pData[0] == MODE_LETTER_BOX) || (pData[0] == MODE_16_9))                    //Letter box || 16:9  
  722.   #else  
  723.     if((pData[0] == MODE_LETTER_BOX) && (GET_INPUTSOURCE_TYPE() == _SOURCE_VIDEO8)) //Letter box  
  724.   #endif  
  725.     {  
  726.         stModeInfo.IVStartPos = stModeInfo.IVStartPos + ((stModeInfo.IVHeight + 10) >> 3);  
  727.         stModeInfo.IVHeight = ((stModeInfo.IVHeight + 10) >> 2) * 3;  
  728.         //DebugPrintf("\n stModeInfo.IVStartPos=%x",(BYTE)(stModeInfo.IVStartPos>>8));  
  729.         //DebugPrintf(",%x",(BYTE)(stModeInfo.IVStartPos));  
  730.         //DebugPrintf("\n stModeInfo.IVHeight=%x",(BYTE)(stModeInfo.IVHeight>>8));  
  731.         //DebugPrintf(",%x",(BYTE)(stModeInfo.IVHeight));  
  732.     }  
  733. #if(_PANEL_DISPLAY_RATIO == _PANEL_16_9)  
  734.     if(pData[0] == MODE_4_3){  
  735.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_BKGD_STA_H_03);  
  736.         CScalerRead(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  737.         ((unsigned int*)pData)[0] += (stDisplayInfo.DHWidth >> 3); //Calculate the new start position  
  738.         stDisplayInfo.DHWidth = (stDisplayInfo.DHWidth >> 2) * 3;  
  739.         pData[0] &= 0x0f;//_DISP_DH_ACT_STA_H_05  
  740.   
  741.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_ACT_STA_H_05);  
  742.         CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  743.         ((unsigned int*)pData)[0] += stDisplayInfo.DHWidth;  
  744.         pData[0] &= 0x0f;//_DISP_DH_ACT_END_H_07  
  745.   
  746.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_ACT_END_H_07);  
  747.         CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  748.     }  
  749.     else if((pData[0] == MODE_LETTER_BOX) && (GET_INPUTSOURCE_TYPE() == _SOURCE_VIDEO8)){  
  750.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DV_BKGD_STA_H_0E);  
  751.         CScalerRead(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  752.         ((unsigned int*)pData)[0] += (stDisplayInfo.DVHeight>> 3);  
  753.         stDisplayInfo.DVHeight= (stDisplayInfo.DVHeight>> 2) * 3;  
  754.         pData[0] &= 0x0f;   //_DISP_DV_ACT_STA_H_10  
  755.         stDisplayInfo.DVStartPos = ((unsigned int*)pData)[0];//  
  756.   
  757.         //DebugPrintf("\n _DISP_DV_ACT_STA_H_10=%x",pData[0]);  
  758.         //DebugPrintf(",%x",pData[1]);  
  759.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DV_ACT_STA_H_10);  
  760.         CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  761.         ((unsigned int*)pData)[0] += stDisplayInfo.DVHeight;  
  762.         pData[0] &= 0x0f;   //_DISP_DV_ACT_END_H_12  
  763.   
  764.         //DebugPrintf("\n _DISP_DV_ACT_END_H_12=%x",pData[0]);  
  765.         //DebugPrintf(",%x",pData[1]);  
  766.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DV_ACT_END_H_12);  
  767.         CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  768.     }  
  769. #else //_PANEL_4_3  
  770.     if(pData[0] == MODE_16_9){  
  771.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DV_BKGD_STA_H_0E);  
  772.         CScalerRead(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  773.         ((unsigned int*)pData)[0] += (stDisplayInfo.DVHeight >> 3); //Calculate the new start position  
  774.         stDisplayInfo.DVHeight = (stDisplayInfo.DVHeight >> 2) * 3;  
  775.         pData[0] &= 0x0f;  
  776.         stDisplayInfo.DVStartPos = ((unsigned int*)pData)[0];//  
  777.   
  778.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DV_ACT_STA_H_10);  
  779.         CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  780.         ((unsigned int*)pData)[0] += stDisplayInfo.DVHeight;  
  781.         pData[0] &= 0x0f;  
  782.   
  783.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DV_ACT_END_H_12);  
  784.         CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  785.     }  
  786. #endif  
  787.     else{  
  788.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_BKGD_STA_H_03);  
  789.         CScalerRead(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  790.   
  791.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_ACT_STA_H_05);  
  792.         CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  793.         ((unsigned int*)pData)[0] += stDisplayInfo.DHWidth; //Calculate the new start position  
  794.   
  795.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DH_ACT_END_H_07);  
  796.         CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  797.   
  798.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DV_BKGD_STA_H_0E);  
  799.         CScalerRead(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  800.   
  801.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DV_ACT_STA_H_10);  
  802.         CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  803.         ((unsigned int*)pData)[0] += stDisplayInfo.DVHeight; //Calculate the new start position  
  804.   
  805.         CScalerSetByte(_DISP_ACCESS_PORT_2A, _DISP_DV_ACT_END_H_12);  
  806.         CScalerWrite(_DISP_DATA_PORT_2B, 2, pData, _NON_AUTOINC);  
  807.     }  
  808.   
  809. #endif  //#if (_DISP_RATIO_M2_SUPPORT == 1 && _PANEL_DISPLAY_RATIO == _PANEL_16_9)  
  810.   
  811. }  
  812. #endif  
  813.   
  814. /** 
  815.  * CVideoDisplaySet 
  816.  * Setup VGA display 
  817.  * set video display 
  818.  * @param <none> 
  819.  * @return {none} 
  820.  * 
  821. */  
  822. //--------------------------------------------------  
  823. // Description  : Display video set process  
  824. // Input Value  : None  
  825. // Output Value : None  
  826. //--------------------------------------------------  
  827.   
  828. void CVideoDisplaySet(void)  
  829. {  
  830.     //WORD  ustemp;  
  831.     BYTE    field, scale;  
  832.   
  833.   
  834.     if (GET_OSD_NOT_EXIST())  
  835.         COsdFxDisableOsd();  
  836.   
  837.     CVideoDetectMode();  
  838.   
  839.     if (ucMode_Curr_2610 == _MODE_NOSIGNAL)  
  840.     {  
  841.         CModeResetMode();  
  842.         return;  
  843.     }  
  844.   
  845.     //CVideoSoftReset();  
  846.   
  847.     //CTimerDelayXms(10);  
  848.   
  849.     CAdjustSyncProcessorMeasureStart();    //Ken  
  850.     if(CTimerPollingEventProc(60, CMiscModeMeasurePollingEvent))  
  851.     {  
  852.         if (!CModeMeasureData())  
  853.         {     
  854.             CModeResetMode();  
  855.             return;  
  856.         }  
  857.     }  
  858.     else  
  859.     {  
  860.         CModeResetMode();  
  861.         return;  
  862.     }     
  863.       
  864.     if(GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_TV_PORT)  
  865.     {  
  866.         CTvVideoColorStandardsetting(GET_TV_VIDEO_SYS());       //added by czl 100118  
  867.         if(ucAV_Mode_Curr==60)  
  868.             field = _VIDEO_60HZ;  
  869.         else  
  870.             field = _VIDEO_50HZ;  
  871.     }  
  872.     else  
  873.     {  
  874.         if(ucAV_Mode_Curr==60)  
  875.             field = _VIDEO_60HZ;  
  876.         else  
  877.             field = _VIDEO_50HZ;  
  878.     }  
  879.     if(Panel[ucPanelSelect].DHWidth>tVIDEO_TABLE_INPUT_INFO[field][2])  
  880.         //20081008 ccy modify 05 to 01;  
  881.         scale = 0x05;  
  882.     else  
  883.         scale = 0x09;  
  884. //czl   
  885.     if((GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_AV_PORT)&&(ucMode_Curr_2610==ZSECAM))  
  886.     {  
  887.         stModeInfo.IHTotal        = tVIDEO_TABLE_INPUT_INFO[field][0];  
  888.         //20080104, modify  
  889.         //stModeInfo.IHStartPos   = tVIDEO_TABLE_INPUT_INFO[field][1]+3;  
  890.         stModeInfo.IHStartPos   = tVIDEO_TABLE_INPUT_INFO[field][1]+4;  
  891.         stModeInfo.IHWidth       = tVIDEO_TABLE_INPUT_INFO[field][2];  
  892.         stModeInfo.IVStartPos   = tVIDEO_TABLE_INPUT_INFO[field][3]-1;  
  893.         stModeInfo.IVHeight      = tVIDEO_TABLE_INPUT_INFO[field][4];  
  894.     }  
  895.     #ifdef DERUN_1012_SHARPLQ104  
  896.     else if(GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_AV_PORT)  
  897.     {  
  898.         stModeInfo.IHTotal        = tVIDEO_TABLE_INPUT_INFO[field][0];  
  899.     if(field==_VIDEO_50HZ) // pal   
  900.         stModeInfo.IHStartPos   = tVIDEO_TABLE_INPUT_INFO[field][1]-28;  
  901.     else  
  902.         stModeInfo.IHStartPos   = tVIDEO_TABLE_INPUT_INFO[field][1]-16;       
  903.     if(field==_VIDEO_50HZ) // pal     
  904.         stModeInfo.IHWidth       = tVIDEO_TABLE_INPUT_INFO[field][2]+36;  
  905.       else  
  906.         stModeInfo.IHWidth       = tVIDEO_TABLE_INPUT_INFO[field][2]+36;      
  907.         stModeInfo.IVStartPos   = tVIDEO_TABLE_INPUT_INFO[field][3];  
  908.         stModeInfo.IVHeight      = tVIDEO_TABLE_INPUT_INFO[field][4];  
  909.     }  
  910.     #endif  
  911.     else  
  912.     {  
  913.         stModeInfo.IHTotal        = tVIDEO_TABLE_INPUT_INFO[field][0];  
  914.         stModeInfo.IHStartPos   = tVIDEO_TABLE_INPUT_INFO[field][1];  
  915.         stModeInfo.IHWidth       = tVIDEO_TABLE_INPUT_INFO[field][2];  
  916.             //czl 071123 modify  
  917.         if(GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_SV_PORT)  
  918.         {  
  919.             if(field==_VIDEO_60HZ)  
  920.             {  
  921.   
  922.                 stModeInfo.IVStartPos   = tVIDEO_TABLE_INPUT_INFO[field][3]-1;  
  923.             }  
  924.             else  
  925.             {  
  926.                 stModeInfo.IVStartPos   = tVIDEO_TABLE_INPUT_INFO[field][3]-2;  
  927.             }  
  928.         }  
  929.         else  
  930.             stModeInfo.IVStartPos   = tVIDEO_TABLE_INPUT_INFO[field][3];  
  931.         stModeInfo.IVHeight      = tVIDEO_TABLE_INPUT_INFO[field][4];  
  932.     }  
  933.     stModeInfo.IHFreq = 157;    // For PAL and NTSC. We can use sync processor to measure the actual value.  
  934.     if(field == _VIDEO_60HZ)  // hill added to avoid framesync error  
  935.         stModeInfo.IVTotal = 264;   // set 60HZ 525 lines  
  936.     else if(field == _VIDEO_50HZ)  
  937.         stModeInfo.IVTotal = 312;  // set 50Hz 625 lines  
  938.       
  939.     stDisplayInfo.DHWidth   = Panel[ucPanelSelect].DHWidth;         //Panel[ucPanelSelect].DHEndPos - Panel[ucPanelSelect].DHStartPos;  
  940.     stDisplayInfo.DVHeight  = Panel[ucPanelSelect].DVHeight;            //Panel[ucPanelSelect].DVEndPos - Panel[ucPanelSelect].DVStartPos;  
  941.     stDisplayInfo.DVStartPos = Panel[ucPanelSelect].DVStartPos;  
  942.     stDisplayInfo.DHTotal   = Panel[ucPanelSelect].DHTotal;  
  943.   
  944.   
  945.   
  946. #if _DISPLAY_RATIO_ENABLE  
  947.     CVideoDisplayRatioSet();  
  948. #endif  //#if _DISPLAY_RATIO_ENABLE  
  949.   
  950.     // Capture window setup  
  951.     //if (Panel[ucPanelSelect].DHWidth<=800)  
  952. //  {  
  953.     //  CModeSetCaptureWindow(0x0a);        ///!set captur size //750701  
  954. //CModeSetScaling(0x0a);  
  955.     //}  
  956.     //else  
  957.     {  
  958.         CModeSetCaptureWindow(scale);       ///!set captur size //750701  
  959.         CModeSetScaling(scale);          // 0x05: ALL SCALE UP  
  960.     }  
  961.     #if(_SCALER_TYPE==_RTD2662)  
  962.     CScalerSetBit(_IPH_ACT_WID_H_16, ~_BIT7, 0x00);//Video8 C-port MSB & LSB Swap(Normal)  
  963.     #endif  
  964.   
  965.     CModeSetDisplay(scale);  
  966.   
  967.     //Display Data Port Red/Blue Data Swap  
  968.     //CScalerSetBit(_VDISP_SIGINV_29, ~(_BIT5), _BIT5);  
  969.   
  970.     // Disable SRGB  
  971.     CScalerSetBit(_COLOR_CTRL_62, ~(_BIT2), 0x00);  
  972.   
  973.     // Setup color conversion  
  974.     CModeSetupColorConversion();//jerry20070605  
  975.   
  976. #if _PICT_EFFECT_SUPPORT  
  977.     //20080104, reload picture mode data  
  978.     CEepromLoadPictModeData();  
  979. #endif  
  980. #if _SHARPNESS_REWRITE  
  981.     //20080213  
  982.     CEepromLoadPeakingCoringData();  
  983. #endif  //#if _SHARPNESS_REWRITE  
  984.   
  985.     CEepromLoadBriConData();  
  986.       
  987.     CEepromLoadColorTempData();  
  988.     CEepromLoadHueSatData();  
  989.   
  990.     //adjust customer color mode  
  991.     #if(_AdjustCustomerColorMode == _ENABLE)  
  992.     CAdjustCustomerColorMode();  
  993.     #endif  
  994.   
  995.     CAdjustContrast();  
  996.     CAdjustBrightness();  
  997.   
  998. #if _BACKLIGHT_SUPPORT  
  999.     CEepromLoadBacklightData();  
  1000.     CAdjustBacklight();  
  1001. #endif  
  1002.   
  1003.     CAdjustPeakingCoding();  
  1004.   
  1005.     CVideoSetSaturation(COsdCtrlGetSaturation());  
  1006.     CVideoSetHuee(COsdCtrlGetHue());  
  1007.   
  1008.     if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  1009.     {  
  1010.         CVideoSetVDCContrast(_VDC_CON_DEFAULT_TV);  
  1011.         CVideoSetVDCBrightness(_VDC_BRI_DEFAULT_TV);    //0x84: dark noise for TV src can't be see  
  1012.     }  
  1013.     else  
  1014.     {  
  1015.         CVideoSetVDCContrast(_VDC_CON_DEFAULT_AV);  
  1016.         CVideoSetVDCBrightness(_VDC_BRI_DEFAULT_AV);    //0x84: dark noise for TV src can't be see  
  1017.     }  
  1018.   
  1019. //20081126, PQ finetune to reset gamma port  
  1020. #if _PQ_FINETUNE  
  1021.     if (GET_GAMMA())  
  1022.         CScalerSetBit(_GAMMA_CTRL_67, ~_BIT6, _BIT6);  
  1023.     else  
  1024.         CScalerSetBit(_GAMMA_CTRL_67, ~_BIT6, 0);  
  1025. #endif  
  1026.     CPowerADCAPLLOff();  
  1027. #if(_DE_INTERLACE_SUPPORT == _ON)  
  1028.     CModeDeInterlaceSetting();  
  1029. #endif  
  1030.     CAdjustInterlaceIVS2DVSDelay();  
  1031.       
  1032.     pData[0] = CFrameSyncDo();  
  1033.     //DebugPrintf("\n CFrameSyncDo %x",pData[0]);  
  1034.   
  1035.      if(pData[0] == 2)  
  1036.     {  
  1037.             ;//return;// _FALSE;  
  1038.         }  
  1039.     SET_MODESTABLE();  
  1040.   
  1041.     CTimerDelayXms(100);  
  1042.     CModeSetupEtcs(_FUNCTION_DISABLE);  
  1043.   
  1044.     //CAccAdjust(GET_DCC_MODE());  // set DCC mode  
  1045.     CAccAdjust(_DISABLE);  // set DCC mode  
  1046.   
  1047.     CLR_OSD_CHANGE_SOURCE();  
  1048.   
  1049. #if (_DCC_FUNC==_ENABLE)  
  1050.     //OSD_SRCChg = 1;  
  1051.     CVideoDCCProcess();  
  1052. #endif  
  1053.   
  1054.     CAudioSetSource(GET_INPUTPORT_TYPE(stSystemData.InputSource));  
  1055.   
  1056. #if _DEBUG_USE_ICM  
  1057.     //enable icm      
  1058.     if (GET_ICM_on_off())  
  1059.     {  
  1060.         CLR_ICM_on_off();  
  1061.         COsdCtrlSetICMswitch();  
  1062.     }  
  1063. #endif  //#if _DEBUG_USE_ICM  
  1064.   
  1065.     CAdjustEnableHLWindow();  
  1066.   
  1067.     pData[0] = 0;  
  1068.   
  1069. }  
  1070.   
  1071. void CSetVideoParameter(void)  
  1072. {  
  1073.     switch (ucMode_Curr_2610)  
  1074.     {  
  1075.         case ZNTSC:  
  1076.             CScalerCodeW(RTD2610_NTSC_M_ini);  
  1077.             break;  
  1078.   
  1079.         case ZPAL_I:  
  1080.             CScalerCodeW(RTD2610_PAL_I_ini);  
  1081.             break;  
  1082.   
  1083.         case ZPAL_M:  
  1084.             CScalerCodeW(RTD2610_PAL_M_ini);  
  1085.             break;  
  1086.   
  1087.         case ZPAL_N:  
  1088.             CScalerCodeW(RTD2610_PAL_CN_ini);  
  1089.             break;  
  1090.   
  1091.         case ZNTSC_443:  
  1092.             CScalerCodeW(RTD2610_NTSC_443_ini);  
  1093.             break;  
  1094.   
  1095.         case ZSECAM:  
  1096.             CScalerCodeW(RTD2610_SECAM_ini);  
  1097.             break;  
  1098.   
  1099.         case ZPAL_60:  
  1100.             CScalerCodeW(RTD2610_PAL_60_ini);  
  1101.             break;  
  1102.   
  1103.         case ZNTSC_50:  
  1104.             CScalerCodeW(RTD2610_NTSC_50_ini);  
  1105.             break;  
  1106.     }  
  1107.       
  1108.     if(GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_SV_PORT)  
  1109.     {  
  1110.         CScalerPageSelect(_PAGE8);        
  1111.         CScalerSetByte(_P8_YCSEP_CTRL_E0, 0x03);    // YC Seperate Control:1D             
  1112.     }  
  1113.   
  1114.      //20080418  
  1115.     CScalerPageSelect(_PAGE8);        
  1116.     CScalerSetByte(_P8_BPF_BW_SEL_Y_E1, 0x41);  
  1117.   
  1118. }  
  1119.   
  1120. void CSetVideoParameterTVSetVideo(BYTE uctype)  
  1121. {  
  1122.   
  1123. //20080924 ccy modify for  color auto mode .  
  1124.     switch (uctype)  
  1125.     {  
  1126.         case _TV_VIDEO_SYS_NTSC:  
  1127.             CScalerCodeW(RTD2610_NTSC_M_ini);  
  1128.             break;  
  1129.   
  1130.         case _TV_VIDEO_SYS_PAL:  
  1131.             CScalerCodeW(RTD2610_PAL_I_ini);  
  1132.             break;  
  1133.         case _TV_VIDEO_SYS_SECAM:  
  1134.             CScalerCodeW(RTD2610_SECAM_ini);  
  1135.             break;  
  1136.         case _TV_VIDEO_SYS_AUTO:  
  1137.             CSetVideoParameter();  
  1138.             break;  
  1139.               
  1140.           
  1141.     }  
  1142.     if(GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_SV_PORT)  
  1143.     {  
  1144.         CScalerPageSelect(_PAGE8);        
  1145.         CScalerSetByte(_P8_YCSEP_CTRL_E0, 0x03);    // YC Seperate Control:1D             
  1146.     }  
  1147.   
  1148.     CScalerPageSelect(_PAGE8);        
  1149.     CScalerSetByte(_P8_BPF_BW_SEL_Y_E1, 0x41);  
  1150.   
  1151. }  
  1152.   
  1153.   
  1154. /** 
  1155.  * IdentifyColorStandard 
  1156.  * video mode type check 
  1157.  * check the video decoder's mode type register and identify video mode by vote 
  1158.  * called in CVideoDetectMode and CVideoIsChange 
  1159.  * @param <none> 
  1160.  * @return {none} 
  1161.  * 
  1162. */  
  1163. UINT8 IdentifyColorStandard(UINT8 status)//status=0(AV/SV); status=1(TV only);   
  1164. {  
  1165.   
  1166.     BYTE moderesult;  
  1167.     BYTE ii = 0,N,Delay;  
  1168.   
  1169.     if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_TV_PORT){  
  1170.         N = 6;  
  1171.         Delay = 20;  
  1172.     }         
  1173.     else{  
  1174.         N = 1;  
  1175.         Delay = 1;  
  1176.     }         
  1177.     CScalerPageSelect(_PAGE8);  
  1178.     for(ii=0;ii<n;ii++){ plug="" pull="" tv="" cable="" color="" sys.="" may="" be="" identified="" miss="" 2007-6-5="" 14:28="" cscalerread(_p8_mode_det_status_d3,="" 1,="" &moderesult,="" _non_autoinc);="" ctimerdelayxms(delay);="" }="" rtd2662="" check="" burst:="" if="" no="" burst="" is="" detect,="" we="" set="" mode="" according="" to="" scan="" line="" cscalerpageselect(_page8);="" cscalerread(_p8_vd_status2_bd,="" pdata,="" ((pdata[0]="" &="" _bit3)="=" 0)="" detect="" {="" cscalerread(_p8_vd_status3_be,="" _bit2)="=" 0="" *_bit2*="" )="" 625="" lines="" ucmode_curr_2610="ZNTSC;" ucav_mode_curr="60;//60Hz" else="" debugprintf("\nidentifycolorstandard():="" ucmode_curr_2610);="" debugprintf("\nucav_mode_curr:="" %d\n",="" ucav_mode_curr);="" if(status)="" return="" ucmode_curr_2610;="" ucmode_pre_2610="ucMode_Curr_2610;" moderesult="moderesult" 0x07;="" switch(moderesult)="" case="" 0x08:="" no_signal="" 0x00:="" ntsc="" break;="" 0x01:="" pal_m="" 0x02:="" 50="" 0x03:="" pal_n="" 0x04:="" ntsc_443="" 0x05:="" pal="" 60="" 0x06:="" pal_i:="" 0x07:="" secam="" --------------------------------------------------="" description="" :="" video="" signal="" changed="" input="" value="" none="" output="" _true="" bit="" cvideocheckmode(void)="" modifed="" by="" xyw="" bmodechange="_FALSE;" debugprintf("###videochangecounter%x##\n="" ",videochangecounter);="" debugprintf("###colorchangecounter%x##\n="" ",colorchangecounter);="" #if="" _tv_weake_signal_="" 20080305="" start...="" 1="" dword="" cdto;="" (get_inputport_type(stsystemdata.inputsource)="=" _video_tv_port)="" i2cread(_video_device,0x70,4);="" cscalerpageselect(_page9);="" cscalerread(_p9_hdto_inc4_f4,="" 4,="" pdata,_autoinc);="" cdto="pData[0]&0x3f;" cdto<<="8;" cdto|="pData[1];" debugprintf("\ncheck:="" pdata[0]&0x3f);="" debugprintf("%x",="" pdata[1]);="" pdata[2]);="" debugprintf("%x\n",="" pdata[3]);="" #endif="" (cdto="">cdtopre+0x01800000 || cdto < cdtopre-0x01800000)  //  
  1179.                    bModeChange = _TRUE;  
  1180.                else  
  1181.                    bModeChange = _FALSE;  
  1182.          
  1183. #if 0  
  1184.                I2CRead(0x40, 0x7b, 1);  
  1185.                DebugPrintf("\ncolor burst level=0x%x\n", pData[0]);  
  1186. #endif  
  1187.          
  1188.                //I2CRead(0x40, 0x00, 1);  
  1189.                CScalerPageSelect(_PAGE8);   
  1190.                CScalerRead(_P8_VIDEO_CTRL0_A0, 1, pData,_NON_AUTOINC);  
  1191. #if 0  
  1192.                DebugPrintf("\ncolor mode=0x%x\n", pData[0]);  
  1193. #endif  
  1194.          
  1195.                //I2CRead(_VIDEO_DEVICE,0xe3,4);  
  1196.                CScalerPageSelect(_PAGEA);   
  1197.                CScalerRead(_PA_MEAS_1ST_V_HI_D3, 4, pData,_AUTOINC);  
  1198. #if 0  
  1199.                DebugPrintf("\nfirst V=0x%x", pData[0]);  
  1200.                DebugPrintf("%x,  ", pData[1]);  
  1201.                DebugPrintf("second V=0x%x", pData[2]);  
  1202.                DebugPrintf("%x\n\n", pData[3]);  
  1203. #endif  
  1204.          
  1205.                //I2CRead(_VIDEO_DEVICE,0x7f,1);  
  1206.                CScalerPageSelect(_PAGE8);   
  1207.                CScalerRead(_P8_NOISE_STATUS_CE, 1, pData,_NON_AUTOINC);  
  1208. #if 0  
  1209.                DebugPrintf("\nnoise =0x%x\n", pData[0]);  
  1210. #endif  
  1211.                if (pData[0]>0x58)  //very weak signal  
  1212.                    bModeChange = 1;  
  1213.                          
  1214.                return bModeChange;  
  1215.            }  
  1216.          
  1217. #endif  
  1218.        //20080305 end...  
  1219.   
  1220. #endif  
  1221.   
  1222.   
  1223.          
  1224.       
  1225.     CScalerPageSelect(_PAGE8);  
  1226.     CScalerRead(_P8_VD_STATUS1_BC, 1, pData, _NON_AUTOINC);  
  1227.   
  1228.     if((pData[0] & 0x06) != 0x06) //check if HVlock unlocked  
  1229.     {  
  1230.         //DebugPrintf("\nunlocked:0x%x\n", pData[0]);  
  1231.         SET_SYNCCHANGE_INC();  
  1232.         if (GET_SYNCCHANGE_STATUS())  
  1233.         {  
  1234.             SET_SYNCCHANGE_INIT();  
  1235.             SET_COLORCHANGE_INIT();  
  1236.             bModeChange=_TRUE;  
  1237.         }  
  1238.         else  
  1239.         {  
  1240.             bModeChange=_FALSE;  
  1241.         }  
  1242.     }  
  1243.     else  
  1244.     {  
  1245.         SET_SYNCCHANGE_DEC();  
  1246.   
  1247.               CScalerPageSelect(_PAGE8);  
  1248.         CScalerRead(_P8_VD_STATUS2_BD, 1, pData, _NON_AUTOINC);  
  1249.   
  1250.            pData[1] = pData[0] & 0x02;  
  1251.           
  1252.         CScalerRead(_P8_VD_STATUS3_BE, 1, pData, _NON_AUTOINC);  
  1253.           
  1254.         if(((pData[0] & 0x04) && (ucAV_Mode_Curr == 60)) || (((pData[0] & 0x04) == 0x00) && (ucAV_Mode_Curr == 50)))  
  1255.         {  
  1256.             SET_SYNCCHANGE_INIT();  
  1257.             SET_COLORCHANGE_INIT();  
  1258.             bModeChange=_TRUE;  
  1259.         }  
  1260.         else  
  1261.         {  
  1262.             bModeChange=_FALSE;  
  1263.         }  
  1264.     }  
  1265.     return bModeChange;  
  1266.       
  1267.   
  1268.   
  1269. }  
  1270.   
  1271. /** 
  1272.  * CVideoDetectMode 
  1273.  * setting according to the input signal 
  1274.  * only called by CVideoDisplaySet 
  1275.  * @param <none> 
  1276.  * @return {none} 
  1277.  * 
  1278. */  
  1279. void CVideoDetectMode(void)  
  1280. {  
  1281.     CScalerCodeW(tVIDEO_TABLE_SET_SCALER);  
  1282.   
  1283.     CScalerSetByte(_IPH_ACT_WID_H_16, 0x8A);//double clk input & Swap V8/V6-C-port MSB to LSB sequence into LSB to MSB  
  1284.   
  1285.     //DebugPrintf("\n V8_CVideoDetectMode%c",0x20);  
  1286.     if(CModeMeasureReady())  
  1287.     {  
  1288.         //DebugPrintf("\n V8_CModeMeasureReady%c",0x20);  
  1289.         if(CModeMeasureData())  
  1290.         {  
  1291.             //DebugPrintf("\n V8_CModeMeasureData%c",0x20);  
  1292.             IdentifyColorStandard(0);  
  1293.             stModeInfo.ModeCurr = _VIDEO_EXIST;  
  1294.             //200801007 ccy modify  
  1295.             #if(_PCB_TYPE == _PCB_TEST)  
  1296.             if (GET_INPUTPORT_TYPE(stSystemData.InputSource)== _VIDEO_TV_PORT && GET_TV_VIDEO_SYS() == _TV_VIDEO_SYS_AUTO)  
  1297.                 CTunerSetColor(GET_TV_VIDEO_SYS());  
  1298.             #endif  
  1299.             CSetVideoParameter();  
  1300.             }  
  1301.         else  
  1302.         {  
  1303.             ucMode_Curr_2610 = _MODE_NOSIGNAL;  
  1304.             return;  
  1305.         }  
  1306.     }  
  1307.     stModeInfo.ModeCurr = _VIDEO_EXIST;  
  1308.       
  1309.     if((ucMode_Curr_2610==ZSECAM )&&(_VIDEO_SV_PORT==GET_INPUTPORT_TYPE(stSystemData.InputSource)))  
  1310.     {  
  1311.         CScalerPageSelect(_PAGE8);  
  1312.         CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0xf0, 0x08);  //set bit0-3 as 0x8  
  1313.     }  
  1314.     else  
  1315.     {  
  1316.         CScalerPageSelect(_PAGE8);  
  1317.         CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0xf0, 0x00);  //set bit0-3 as 0x0     //20080917 ccy modify   
  1318.     }  
  1319.   
  1320.     if(ucMode_Curr_2610==ZNTSC_50)  
  1321.     {  
  1322.         CScalerPageSelect(_PAGE8);  
  1323.         CScalerSetBit(_P8_YCSEP_CTRL_E0, 0xF8, 0x03);         
  1324.     }  
  1325.       
  1326.     //20081223, improve NTSC video color bar side effect  
  1327.     if (ucMode_Curr_2610==ZNTSC)  
  1328.     {  
  1329.         if(GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT || GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_AV_PORT )  
  1330.         {  
  1331.             CScalerPageSelect(_PAGE8);  
  1332.             CScalerSetByte(_P8_BPF_BW_SEL_Y_E1, 0x65);  
  1333.         }  
  1334.     }  
  1335.     //20081223, improve NTSC video color bar side effect  
  1336.   
  1337.     ucMode_Pre_2610 = ucMode_Curr_2610;  
  1338. }  
  1339.   
  1340. /** 
  1341.  * CVideoSelectInput 
  1342.  * set video port 
  1343.  * only called by CVideoIsExist 
  1344.  * @param <input_select> {video input source:AV/SV/TV/YCBCR} 
  1345.  * @return {none} 
  1346.  * 
  1347. */  
  1348. //============================================  
  1349. //CVideoSelectInput , added by sky  
  1350. void CVideoSelectInput(BYTE input_select)  
  1351. {  
  1352.   
  1353.     CScalerPageSelect(_PAGE9);  
  1354.     CScalerSetByte(_P9_C_LOCK_CONF_B6, 0x6B);          //chromakill setting   
  1355.   
  1356.     switch(input_select)  
  1357.     {  
  1358.         case _VIDEO_AV_PORT:  
  1359.             if(_VIDEO_AV_PORT==_INPUTPORT_V0)  
  1360.             {  
  1361.                 pData[0] = 0x0F; //video input select : video0  
  1362.                 pData[1] = 0x01; //clamp power select : clamp0  
  1363.                 pData[2] = 0x07; //adc power select :   adc0 /adc1  
  1364.                 pData[3] = 0xc1; //clamp up/dn control adc0  
  1365.             }  
  1366.             else if(_VIDEO_AV_PORT==_INPUTPORT_V1)  
  1367.             {  
  1368.                 /* 
  1369.                 pData[0] = 0x1F; //video input select : video2 
  1370.                 pData[1] = 0x04; //clamp power select : clamp2 
  1371.                 pData[2] = 0x03; //adc power select :   adc0  
  1372.                 pData[3] = 0xc1; //clamp up/dn control adc0  
  1373.                 */  
  1374.                 pData[0] = 0x0F; //video input select : video1  
  1375.                 pData[1] = 0x02; //clamp power select : clamp1  
  1376.                 pData[2] = 0x07;//0x05; //adc power select :   adc1  
  1377.                 pData[3] = 0x32; //clamp up/dn control adc1  
  1378.             }  
  1379.             else if(_VIDEO_AV_PORT==_INPUTPORT_V2)  
  1380.             {  
  1381.                 pData[0] = 0x1F; //video input select : video2  
  1382.                 pData[1] = 0x04; //clamp power select : clamp2  
  1383.                 pData[2] = 0x03; //adc power select :   adc0   
  1384.                 pData[3] = 0xc1; //clamp up/dn control adc0   
  1385.             }  
  1386.             else if(_VIDEO_AV_PORT==_INPUTPORT_V3)  
  1387.             {  
  1388.                 pData[0] = 0x2F;  //video input select : video3  
  1389.                 pData[1] = 0x08;  //clamp power select : clamp3  
  1390.                 pData[2] = 0x07;  //adc power select :   adc1  
  1391.                 pData[3] = 0x32;  //clamp up/dn control adc1  
  1392.             }  
  1393.             break;  
  1394.         case _VIDEO_SV_PORT:          
  1395.             if(_VIDEO_SV_PORT==_INPUTPORT_V0)//C Vin0  
  1396.             {  
  1397.                 pData[0] = 0x0F; //video input select : video1 / video0  
  1398.                 pData[1] = 0x03; //clamp power select : clamp1 /clamp0   
  1399.                 pData[2] = 0x07; //adc power select :   adc0 /adc1  
  1400.                 pData[3] = 0xF1; //clamp up/dn control adc0(Y)/adc1(C)  
  1401.             }  
  1402.             else if(_VIDEO_SV_PORT==_INPUTPORT_V1) //C Vin1  
  1403.             {  
  1404.                 if((_VIDEO_AV_PORT!=_INPUTPORT_V0)&&(_VIDEO_TV_PORT!=_INPUTPORT_V0))  
  1405.                 {   //Y Vin1  
  1406.                     pData[0] = 0x0F; //video input select : video0 / video1  
  1407.                     pData[1] = 0x03; //clamp power select : clamp0 /clamp1   
  1408.                     pData[2] = 0x07; //adc power select :   adc0 /adc1   
  1409.                     pData[3] = 0xF2; //clamp up/dn control adc0(C)/adc1(Y)   
  1410.                 }  
  1411.                 else  
  1412.                 {   //Y Vin2  
  1413.                     pData[0] = 0x1F; //video input select : video2 / video1  
  1414.                     pData[1] = 0x06; //clamp power select : clamp2 /clamp1  
  1415.                     pData[2] = 0x07; //adc power select :   adc0 /adc1  
  1416.                     pData[3] = 0xF1; //clamp up/dn control adc0(Y)/adc1(C)  
  1417.                 }  
  1418.             }  
  1419.             else if(_VIDEO_SV_PORT==_INPUTPORT_V2)//C Vin2  
  1420.             {   //Y Vin1  
  1421.                 if((_VIDEO_AV_PORT!=_INPUTPORT_V1)&&(_VIDEO_TV_PORT!=_INPUTPORT_V1))  
  1422.                 {  
  1423.                     pData[0] = 0x1F; //video input select : video1 / video2  
  1424.                     pData[1] = 0x06; //clamp power select : clamp1 /clamp2   
  1425.                     pData[2] = 0x07; //adc power select :   adc0 /adc1   
  1426.                     pData[3] = 0xF2; //clamp up/dn control adc0(C)/adc1(Y)   
  1427.                 }  
  1428.                 else  
  1429.                 {   //Y Vin3  
  1430.                     pData[0] = 0x3F; //v input select :     video3 / video2  
  1431.                     pData[1] = 0x0C; //clamp power select : clamp3 /clamp2  
  1432.                     pData[2] = 0x07; //adc power select :   adc0 /adc1  
  1433.                     pData[3] = 0xf2;//0xF1; //clamp up/dn control adc0(Y)/adc1(C)   
  1434.                 }  
  1435.             }  
  1436.             else if(_VIDEO_SV_PORT==_INPUTPORT_V3) //C Vin3  
  1437.             {  
  1438.                 pData[0] = 0x3F; //v input select :     video2 / video3  
  1439.                 pData[1] = 0x0C; //clamp power select : clamp2 /clamp3  
  1440.                 pData[2] = 0x07; //adc power select :   adc0 /adc1  
  1441.                 pData[3] = 0xF2; //clamp up/dn control adc0(C)/adc1(Y)   
  1442.             }  
  1443.             break;  
  1444.   
  1445.         case _VIDEO_TV_PORT:      
  1446.             if(_VIDEO_TV_PORT==_INPUTPORT_V0)  
  1447.             {  
  1448.                 pData[0] = 0x0F; //video input select : video0  
  1449.                 pData[1] = 0x01; //clamp power select : clamp0  
  1450.                 pData[2] = 0x07; //adc power select :   adc0 /adc1  
  1451.                 pData[3] = 0xc1; //clamp up/dn control adc0  
  1452.             }  
  1453.             else if(_VIDEO_TV_PORT==_INPUTPORT_V1)  
  1454.             {  
  1455.                 pData[0] = 0x0F; //video input select : video1  
  1456.                 pData[1] = 0x02; //clamp power select : clamp1  
  1457.                 pData[2] = 0x07;//0x05; //adc power select :   adc1  
  1458.                 pData[3] = 0x32; //clamp up/dn control adc1  
  1459.             }  
  1460.             else if(_VIDEO_TV_PORT==_INPUTPORT_V2)  
  1461.             {  
  1462.                 pData[0] = 0x1F; //video input select : video2  
  1463.                 pData[1] = 0x04; //clamp power select : clamp2  
  1464.                 pData[2] = 0x03; //adc power select :   adc0   
  1465.                 pData[3] = 0xc1; //clamp up/dn control adc0   
  1466.             }  
  1467.             else if(_VIDEO_TV_PORT==_INPUTPORT_V3)  
  1468.             {  
  1469.                 pData[0] = 0x2F;  //video input select : video3  
  1470.                 pData[1] = 0x08;  //clamp power select : clamp3  
  1471.                 pData[2] = 0x07;  //adc power select :   adc1  
  1472.                 pData[3] = 0x32;  //clamp up/dn control adc1  
  1473.             }  
  1474.             break;  
  1475.               
  1476.         default:  
  1477.             break;  
  1478.     }  
  1479.   
  1480.   
  1481.     CScalerPageSelect(_PAGE0);  
  1482.     CScalerSetByte(_P0_VADC_CTRL_A1, pData[0]);        //adc input select   
  1483.     CScalerSetByte(_P0_VADC_CLAMP_POWER_AE, pData[1]); //clamp power select   
  1484.     CScalerSetByte(_P0_VADC_SWITCH_AF, pData[2]);      //adc power select  
  1485.           
  1486.     CScalerPageSelect(_PAGE8);  
  1487.     CScalerSetByte(_P8_CLAMP_UPDN_EN_A2, pData[3]);    //clamp up/dn control   
  1488.   
  1489.   
  1490.     if(GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_TV_PORT)  
  1491.     {  
  1492.         CScalerPageSelect(_PAGE0);   
  1493.         CScalerSetBit(_P0_VADC_CTRL_A1, 0xF0, 0x0F);        //Differetial  
  1494.     }         
  1495.     else  
  1496.     {  
  1497.         CScalerPageSelect(_PAGE0);   
  1498.         CScalerSetBit(_P0_VADC_CTRL_A1, 0xF0, 0x0F);    
  1499.     }         
  1500.   
  1501.     switch (input_select)  
  1502.      {  
  1503.         case _VIDEO_AV_PORT:  
  1504.             CScalerPageSelect(_PAGE8);  
  1505.             CScalerSetBit(_P8_VIDEO_CTRL1_A1, 0x9F, 0x00);      //set input video format as composite  
  1506.             CScalerCodeW(AV_Init);                                          //set auto_mode detect  
  1507.   
  1508. #if (_DCC_FUNC==_ENABLE)  
  1509.         CScalerSetByte(_DCC_ACCESS_PORT_E6, 0x07);  
  1510.         CScalerSetByte(_DCC_DATA_PORT_E7, 0xFF);  
  1511. #endif  
  1512.             break;  
  1513.   
  1514.         case _VIDEO_SV_PORT:  
  1515.             CScalerPageSelect(_PAGE8);  
  1516.             CScalerSetBit(_P8_VIDEO_CTRL1_A1, 0x9F, 0x20);      //set input video format as s-video  
  1517.             CScalerCodeW(SV_Init);                                          //set auto_mode detect  
  1518. #if (_DCC_FUNC==_ENABLE)  
  1519.         CScalerSetByte(_DCC_ACCESS_PORT_E6, 0x07);  
  1520.         CScalerSetByte(_DCC_DATA_PORT_E7, 0xFF);  
  1521.     #endif  
  1522.             break;  
  1523.   
  1524.         case _VIDEO_YCBCR_PORT:  
  1525.             break;  
  1526.               
  1527.         case _VIDEO_TV_PORT:  
  1528.             CScalerPageSelect(_PAGE9);  
  1529.             CScalerSetByte(_P9_C_LOCK_CONF_B6, 0xD1|(0x03<<1));       //chromakill setting level is 3 (0-7)  
  1530.             CScalerPageSelect(_PAGE8);  
  1531.             CScalerSetBit(_P8_VIDEO_CTRL1_A1, 0x9F, 0X00);  //set input video format as composite  
  1532.             CScalerCodeW(TV_Init);                                          //set auto_mode detect  
  1533. #if (_DCC_FUNC==_ENABLE)  
  1534.         CScalerSetByte(_DCC_ACCESS_PORT_E6, 0x07);  
  1535.         CScalerSetByte(_DCC_DATA_PORT_E7, 0xF0);  
  1536.     #endif            
  1537.             break;  
  1538.   
  1539.         case _VIDEO_SCART_PORT:  
  1540.             break;  
  1541.   
  1542.         default:  
  1543.             break;  
  1544.     }  
  1545. }  
  1546.   
  1547. /** 
  1548.  * CVideoProcess 
  1549.  * The VDC input's state machine. 
  1550.  * If the input source is throught VDC, it will call this function to 
  1551.  * process display state. There are 4 states here. 
  1552.  * @param <none> 
  1553.  * @return {none} 
  1554.  * 
  1555. */  
  1556. //--------------------------------------------------  
  1557. // Description  : The VDC input's state machine.  
  1558. // If the input source is throught VDC, it will call this function to  
  1559. // process display state. There are 4 states here.  
  1560. // Input Value  : None  
  1561. // Output Value : None  
  1562. //--------------------------------------------------  
  1563. void CVideoProcess(void)  
  1564. {  
  1565.     switch (ucVideoProcessState)   
  1566.     {  
  1567.         case _SOURCE_CHANGE_STATE:  
  1568.             CModeResetMode();  
  1569.               
  1570.         case _INITIAL_STATE://eric 20070703 add initial state  
  1571.             /* 
  1572.             CVideoOutputEnable();    
  1573.             CVideoInitial(); 
  1574.             CVideoSelectInput(GET_INPUTPORT_TYPE(stSystemData.InputSource)); 
  1575.             CTimerDelayXms(10); 
  1576.             */  
  1577.         case _SEARCH_STATE:  
  1578.             //DebugPrintf("###_SEARCH_STATE%x##\n ",'#');  
  1579.   
  1580.             CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT0);      // Measure HS/VS source select Video8/Video16  
  1581.               
  1582.             if(CVideoIsExist()) {  
  1583.                 CTimerCancelNosignal_Icon_Powersaving();  
  1584.   
  1585.                 SET_READYFORDISPLAY();  
  1586.                   
  1587.                 //!!!this return pData[15]  
  1588.                 CVideoDisplaySet(); //!!!this return pData[15]  
  1589.   
  1590.                 if (pData[0])  
  1591.                 {  
  1592.                     CModeResetMode();  
  1593.                     //DebugPrintf("\n !CModeDisplayActiveMode\n",'i');  
  1594.                     break;  
  1595.                 }  
  1596.   
  1597. #if _TV_WEAKE_SIGNAL_  
  1598.                 //20080305, set cdtopre while signal is identified. start...  
  1599.                 if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  1600.                 {  
  1601.                         //I2CRead(_VIDEO_DEVICE,0x70,4);  
  1602.                         CScalerPageSelect(_PAGE9);   
  1603.                         CScalerRead(_P9_HDTO_INC4_F4, 4, pData,_AUTOINC);  
  1604.                   
  1605. #if 0  
  1606.                         DebugPrintf("\n\n************search: set cdtopre....", 0);  
  1607.                         DebugPrintf("  0x%x", pData[0]&0x3f);  
  1608.                         DebugPrintf("%x", pData[1]);  
  1609.                         DebugPrintf("%x", pData[2]);  
  1610.                         DebugPrintf("%x************\n\n", pData[3]);  
  1611. #endif  
  1612.                         cdtopre = pData[0]&0x3f;  
  1613.                         cdtopre<<=8;  
  1614.                         cdtopre|=pData[1];  
  1615.                         cdtopre<<=8;  
  1616.                         cdtopre|=pData[2];  
  1617.                         cdtopre<<=8;  
  1618.                         cdtopre|=pData[3];  
  1619.                         //force decoder as tv pal mode  
  1620.                         //I2CByteWrite(0x00, 0x40, 0x32);  
  1621.                         pData[0]=0x32;  
  1622.                         CScalerPageSelect(_PAGE8);   
  1623.                         CScalerWrite(_P8_VIDEO_CTRL0_A0, 1, pData, _NON_AUTOINC);  
  1624.                 }  
  1625.                 //20080305, set cdtopre while signal is identified. end...  
  1626.   
  1627. #endif  
  1628.   
  1629.   
  1630.                   
  1631.   
  1632. #if 0//_TV_PN_MIX  
  1633.                 if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  1634.                 {  
  1635.                     if (GET_CURR_AUDIO_SYS()== _TV_AUDIO_SYS_AUTO)  
  1636.                     {  
  1637.                         UINT8 tempAudioType;  
  1638.                         tempAudioType=CTunerSoundAutoDetect();  
  1639.                         //DebugPrintf("\n_TV_AUDIO_SYS_AUTO=%d\n", tvScanCurChn);  
  1640.                         CTunerSetSound(tempAudioType);  
  1641.                         //DebugPrintf("\ntvScanCurChn=%d\n", tvScanCurChn);  
  1642.                         //DebugPrintf("\nGET_CURR_AUDIO_SYS()=%d\n", GET_CURR_AUDIO_SYS());  
  1643.                     }  
  1644.                 }  
  1645. #endif  //#if _TV_PN_MIX  
  1646.   
  1647.                 //mode reset for TV change channel on osd menu  
  1648.                 //20070406, mark  
  1649.                 //if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  1650.                 //  CTvChangeChannelRecallOSD();  
  1651.   
  1652.                 //premier, add  
  1653.                 CLR_EARPHONE_LAST_STATUS();  
  1654.                 CLR_TV_SHOWCHANNEL();  
  1655.                 CLR_SHOWINFO();  
  1656.                 ucVideoProcessState = _ACTIVE_STATE;  
  1657.   
  1658.                         ucEvent0 = _INACTIVE_COUNTDOWN_EVENT;  
  1659.   
  1660.             }  
  1661.             else  
  1662.             {     
  1663.                 CTimerCountDownEventProc(&ucEvent0, 5, CVideoSyncTimeoutCountDownEvent);  
  1664.             }  
  1665.             break;  
  1666.   
  1667.         case _ACTIVE_STATE:  
  1668.                                         //czl 071207  
  1669.             if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  1670.             {  
  1671.                 if(!GET_AUDIO_MUTE())  
  1672.                 {  
  1673. #if _VOLUME_PT2314_SUPPORT  
  1674.                     CPt2314WrMute(_DISABLE);  
  1675. #endif  
  1676.                 }  
  1677.   
  1678.             }  
  1679.   
  1680.         //  if (GET_READYFORDISPLAY() == _TRUE) {  
  1681.         //      if (GET_LIGHTPOWERSTATUS() == _OFF) {  
  1682.         //          CPowerPanelOn();  
  1683.         //      }  
  1684.         //  }  
  1685.               
  1686. #if (_TV_AFC_SUPPORT)  
  1687.             if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  1688.             {  
  1689.                 //CVideoCheckMode() pass N times to reset,   
  1690.                 //so CTvFreqenceTrace() will be true and then eeprom is wrote.  
  1691.                 //20080402  
  1692.                 #if 0  
  1693.                 if (CVdcIsLocked())   
  1694.                     CTvFreqenceTrace();  
  1695.                 #else  
  1696.                 if (bTimerAfcms)  
  1697.                 {  
  1698.                     bTimerAfcms = 0;  
  1699.                     if (CVdcIsLocked())   
  1700.                         CTvFreqenceTrace();  
  1701.                 }  
  1702.                 #endif  
  1703.             }  
  1704. #endif  
  1705.   
  1706. #if 0//(_DISP_RATIO_SHORTMENU_SUPPORT)  
  1707.             if (GET_DISP_RATIO_STATUS())  
  1708.             {  
  1709.                 CLR_DISP_RATIO_STATUS();  
  1710.                 SET_SHOWINFO();  
  1711.                 SET_FIRST_ENTRY_SHOWSOURCE();  
  1712.                 SET_SHOW_NO_SIGNAL();  
  1713.                 //20070329  
  1714.                 if (GET_OSD_NOT_EXIST())  
  1715.                     COsdMessagePush(_SHOW_CHANGE_DISP_RATIO_MESSAGE);  
  1716.                 else  
  1717.                     CTimerReactiveTimerEvent(SEC(GET_OSDTIMEOUT()), COsdFxExitEvent);  
  1718.             }  
  1719. #endif  
  1720.             if (!GET_SHOWINFO())  
  1721.             {  
  1722.                 SET_SHOWINFO();  
  1723.                 SET_SHOW_NO_SIGNAL();  
  1724.                 if (GET_OSD_NOT_EXIST())  
  1725.                     COsdMessagePush(_SHOWINFO_MESSAGE);  
  1726.                 else  
  1727.                     CTimerReactiveTimerEvent(SEC(GET_OSDTIMEOUT()), COsdFxExitEvent);  
  1728.             }  
  1729.               
  1730.             //if (GET_INPUTPORT_TYPE(stSystemData.InputSource)!=_VIDEO_TV_PORT)  
  1731.             //modified at jpe 080317              
  1732.             if (1)//(GET_INPUTPORT_TYPE(stSystemData.InputSource)!=_VIDEO_TV_PORT)  
  1733.             {  
  1734.                 BYTE ucVideoColorMode;  
  1735.                   
  1736.                   
  1737.                //080320  
  1738.                /* 
  1739.              if(0)//(GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT) 
  1740.                 { 
  1741.                     CScalerPageSelect(_PAGE8);       
  1742.                     CScalerRead(_P8_NOISE_STATUS_CE, 1, pData, _NON_AUTOINC); 
  1743.                     if(pData[0] < 0x18)      //50 dB check point 
  1744.                     { 
  1745.                                          
  1746.                         ucVideoColorMode = ucMode_Curr_2610; 
  1747.  
  1748.                         if (ucVideoColorMode!=IdentifyColorStandard(1)) 
  1749.                         { 
  1750.                             //CModeResetMode(); 
  1751.  
  1752.                             //DebugPrintf("active video color change\n", 0); 
  1753.                                 CScalerPageSelect(_PAGE8);       
  1754.                                 CScalerRead(_P8_NOISE_STATUS_CE, 1, pData, _NON_AUTOINC); 
  1755.                                 if(pData[0] < 0x18)  //50 dB check point 
  1756.                                 { 
  1757.                                                      
  1758.                                     //ucVideoColorMode = ucMode_Curr_2610; 
  1759.                                  
  1760.                                     if (ucVideoColorMode!=IdentifyColorStandard(1)) 
  1761.                                     { 
  1762.                                         CModeResetMode(); 
  1763.                                  
  1764.                                         //DebugPrintf("active video color change\n", 0); 
  1765.                                  
  1766.                                         break; 
  1767.                                     } 
  1768.                                 } 
  1769.  
  1770.                             //break; 
  1771.                         } 
  1772.                     } 
  1773.  
  1774.  
  1775.                      
  1776.                 } 
  1777.              else 
  1778.                 */  
  1779.                 if(GET_INPUTPORT_TYPE(stSystemData.InputSource)!=_VIDEO_TV_PORT)  
  1780.                 {  
  1781.                     //BYTE ucVideoColorMode;  
  1782.   
  1783.                     ucVideoColorMode = ucMode_Curr_2610;  
  1784.   
  1785.                     if (ucVideoColorMode!=IdentifyColorStandard(1))  
  1786.                     {  
  1787.                         CModeResetMode();  
  1788.   
  1789.                         //DebugPrintf("active video color change\n", 0);  
  1790.   
  1791.                         break;    
  1792.                     }  
  1793.                     }  
  1794.             }  
  1795.                   
  1796.               
  1797.             if (CVideoCheckMode())   
  1798.             {  
  1799.                 if(GET_INPUTPORT_TYPE(stSystemData.InputSource)!=_VIDEO_TV_PORT)        //add 20091027  
  1800.                 CScalerSetBit(_VDISP_CTRL_28, (~_BIT3), 0);  
  1801.                 //DebugPrintf("active video mode change\n", 0);           
  1802.                 CModeResetMode();  
  1803.                 break;  
  1804.             }  
  1805.             //according to RT, 2007/03/05  
  1806.             else if ((GET_INPUTPORT_TYPE(stSystemData.InputSource) != _VIDEO_TV_PORT)&&CFrameSyncDetect())   
  1807.             {  
  1808.                 if (!CScalerGetBit(_VDISP_CTRL_28, _BIT3))  
  1809.                 {  
  1810.                     if (CVdcIsLocked())  
  1811.                         CScalerSetBit(_VDISP_CTRL_28, 0xff, _BIT3);  
  1812.                 }  
  1813.   
  1814.                 CModeResetMode();  
  1815.                     //DebugPrintf("active frame sync change\n", 0);  
  1816.                 break;  
  1817.             }  
  1818.   
  1819.   
  1820.             if (GET_READYFORDISPLAY() == _TRUE) {  
  1821.                 LED_Message(_LED_MSG_GREEN);  
  1822.                 SET_SHOW_NO_SIGNAL();  
  1823.                 CLR_READYFORDISPLAY();  
  1824.                 if (GET_LIGHTPOWERSTATUS() == _OFF) {  
  1825.                     if(!bForcePanelOff)  
  1826.                         {  
  1827.                     //CPowerPanelOn();  
  1828.                     CTimerReactiveTimerEvent(SEC(0.2), CPowerPanelOn);  
  1829.                         }  
  1830.                 }  
  1831.   
  1832.                 CAdjustBackgroundColor(0x00, 0x00, 0x00);  
  1833.   
  1834. #if 0//_TV_PN_MIX  
  1835.                 if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT)  
  1836.                 {  
  1837.                     if (GET_CURR_AUDIO_SYS()== _TV_AUDIO_SYS_AUTO)  
  1838.                     {  
  1839.                         UINT8 tempAudioType;  
  1840.                         tempAudioType=CTunerSoundAutoDetect();  
  1841.                         //DebugPrintf("\n_TV_AUDIO_SYS_AUTO=%d\n", tvScanCurChn);  
  1842.                         CTunerSetSound(tempAudioType);  
  1843.                         //DebugPrintf("\ntvScanCurChn=%d\n", tvScanCurChn);  
  1844.                         //DebugPrintf("\nGET_CURR_AUDIO_SYS()=%d\n", GET_CURR_AUDIO_SYS());  
  1845.                     }  
  1846.                 }  
  1847. #endif  //#if _TV_PN_MIX  
  1848.   
  1849.   
  1850.                 //earphone connect with PT2314 directly,   
  1851.                 //the operation that writing balance cause MUTE of PT2314 fail when power up,  
  1852.                 //we do not write the balance, until now:  
  1853. #if _VOLUME_PT2314_SUPPORT  
  1854.                 CPt2314WrBalance();  
  1855. #endif  //#if _VOLUME_PT2314_SUPPORT  
  1856.   
  1857.                 SET_MUTE_PROCESS(_DISABLE);  
  1858.                 SET_SHOW_IS_NOSIGNAL_STATE();  
  1859.   
  1860.             }  
  1861.             else  
  1862.             {  
  1863.   
  1864.                 if (GET_EARPHONE_STATUS_CHANGE())  
  1865.                 {  
  1866.                     SET_MUTE_PROCESS(_ENABLE);  
  1867.                     SET_MUTE_PROCESS(_DISABLE);  
  1868.                 }  
  1869.   
  1870.                 //illegal test: plug out/in the earphone quickly, sometimes cause detect error  
  1871.                 if (GET_EARPHONE_INSERT())  
  1872.                 {  
  1873.                     SET_AUDIO_CHIP_MUTE();  
  1874.                 }  
  1875.             }  
  1876.             break;  
  1877.   
  1878.         case _NOSIGNAL_STATE:  
  1879.   
  1880.             if (!GET_POWERSTATUS())  
  1881.                 break;  
  1882.   
  1883. #if _CUSTOMER_SANSE  
  1884.             if (bLedFlash)  
  1885.             {  
  1886.                 bLedFlash = 0;  
  1887.                 LED_Message(_LED_MSG_FLASH_GREEN);  
  1888.             }  
  1889. #endif  
  1890.               
  1891.             if (GET_READYFORDISPLAY() == _TRUE)   
  1892.             {  
  1893.                 LED_Message(_LED_MSG_GREEN);  
  1894.                 /*if (GET_LIGHTPOWERSTATUS() == _OFF) { 
  1895.                     if(!bForcePanelOff) 
  1896.                         { 
  1897.                     CPowerPanelOn(); 
  1898.                         } 
  1899.                 }*/  
  1900.               
  1901.                 CLR_READYFORDISPLAY();  
  1902.   
  1903.                 if (!GET_SHOWINFO())  
  1904.                 {  
  1905.                     SET_SHOWINFO();  
  1906.                     if (GET_OSD_NOT_EXIST())  
  1907.                         {  
  1908.                         COsdMessagePush(_SHOWINFO_MESSAGE);  
  1909.                           
  1910.                         if (GET_LIGHTPOWERSTATUS() == _OFF) {  
  1911.                     if(!bForcePanelOff)  
  1912.                         {  
  1913.                         //CTimerDelayXms(300);  
  1914.                     //CPowerPanelOn();  
  1915.                     CTimerReactiveTimerEvent(SEC(0.2), CPowerPanelOn);  
  1916.                         }  
  1917.                 }  
  1918.                         }  
  1919.                     else  
  1920.                         CTimerReactiveTimerEvent(SEC(GET_OSDTIMEOUT()), COsdFxExitEvent);  
  1921.                     //20070329  
  1922.                     if (GET_OSD_NOT_EXIST()){  
  1923.                         SET_FIRST_ENTRY_SHOWSOURCE();  
  1924.                         SET_SHOW_NO_SIGNAL();  
  1925.                         COsdShowNoSignalOrSrc(0);  
  1926.                     }  
  1927.                     else{  
  1928.                         CTimerCancelTimerEvent(COsdFxExitEvent);  
  1929.                         CTimerActiveTimerEvent(SEC(GET_OSDTIMEOUT()), COsdFxExitEvent);  
  1930.                         CLR_SHOW_IS_NOSIGNAL_STATE();  
  1931.                         /* 
  1932.                         if (GET_INPUTPORT_TYPE(stSystemData.InputSource)==_VIDEO_TV_PORT) 
  1933.                         { 
  1934.                             if (GET_TV_BACKGROUND()) 
  1935.                             { 
  1936.                                     CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT5 | _BIT1 | _BIT0)); 
  1937.                                 CAdjustBackgroundColor(0,0,0x80); 
  1938.                             } 
  1939.                             else 
  1940.                             { 
  1941.                                     CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT7 | _BIT1 | _BIT0)); 
  1942.                                 //20070401 
  1943.                                 CAdjustBackgroundColor(0,0,0x00); 
  1944.                             } 
  1945.  
  1946.                         } 
  1947.                         */  
  1948.                         if((GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_TV_PORT))  
  1949.                         {  
  1950.                             //20080901 ccy modify  
  1951.                             if (GET_TV_BACKGROUND()==0)//20081013 ccy modify  
  1952.                             {  
  1953.                                 CScalerPageSelect(_PAGE8);  
  1954.                                 CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0x4f, 0xB0);      //Enable snow noise. zhang_dc 2008.01.28  
  1955.                                 CVideoDisplaySet();  
  1956.                                 //CScalerSetBit(_VDISP_CTRL_28, ~(_BIT5 | _BIT3 | _BIT1 | _BIT0),(_BIT1 | _BIT0));  
  1957.                                 CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT7 |_BIT3 |_BIT1 | _BIT0));  
  1958.                             //  if(Panel[0].PanelConfig&_BIT3 == 0)  
  1959.                             //  CScalerSetBit(_VDISP_CTRL_28, ~( _BIT3), (0));  
  1960.                             //else  
  1961.                             //  CScalerSetBit(_VDISP_CTRL_28, ~( _BIT3), (_BIT3));  
  1962.   
  1963.   
  1964.                                 //20070401  
  1965.                                 CAdjustBackgroundColor(0,0,0x00);  
  1966.                             }  
  1967.                             else  
  1968.                             {  
  1969.                                 CScalerPageSelect(_PAGE8);  
  1970.                                 CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0x4f, 0x20);      //Disable snow noise. zhang_dc 2008.01.28  
  1971.                                 CModeSetFreeRun();  
  1972.                                 //CAdjustBackgroundColor(0x00, 0x00, 0x80);  
  1973.                                     CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT5 | _BIT1 | _BIT0));  
  1974.                                 CAdjustBackgroundColor(0,0,0xff);//20080901 ccy modify  
  1975.                       
  1976.                             }  
  1977.                         }  
  1978.                         else   
  1979.                         {  
  1980.                             CModeSetFreeRun();  
  1981.                             if(GET_TV_BACKGROUND())  
  1982.                                 CAdjustBackgroundColor(0x00, 0x00, 0xff);     
  1983.                             else  
  1984.                                 CAdjustBackgroundColor(0x00, 0x00, 0x00);  
  1985.                             CScalerSetBit(_VDISP_CTRL_28, ~_BIT5, _BIT5);  
  1986.                         }  
  1987.                     }  
  1988.                 }  
  1989.             }  
  1990.   
  1991.             if (CVideoIsExist())  
  1992.             {  
  1993.                 CModeResetMode();  
  1994.             }  
  1995.         //20080919 ccy cancel   
  1996.         //SET_RAND_MOVE();  
  1997.             break;  
  1998.   
  1999.         default:  
  2000.             break;  
  2001.     }  
  2002. }  
  2003.   
  2004. #if(_DCC_FUNC==_ENABLE)  
  2005. #define AV_Point1   0x4E    //0x4E  
  2006. #define AV_Point2   0x60    //0x60  //Pos_Gap = Point2 - Point1;  
  2007. #define AV_Point3   0x92    //0x92  
  2008. #define AV_Gain1    0xAA    //0xAA  
  2009. #define AV_Gain2    0x9D    //0x8D  //Gain_Gap = Gain1 - Gain2;  
  2010. #define AV_Gain3    0x8A    //0x7A  
  2011.   
  2012. #define RF_Point1   0x4E    //0x4E  
  2013. #define RF_Point2   0x60    //0x60  //Pos_Gap = Point2 - Point1;  
  2014. #define RF_Point3   0x92    //0x92  
  2015. #define RF_Gain1    0xAA  
  2016. #define RF_Gain2    0x85    //0x8D  //Gain_Gap = Gain1 - Gain2;  
  2017. #define RF_Gain3    0x72    //0x7A  
  2018.   
  2019. void CVideoDCCProcess(void)  
  2020. {  
  2021.     UINT8   Max_Ave[4],timeoutcnt=255,temp,AppStep;  
  2022.     UINT8   ScenceChg=0,SmoothChg=0,WB_RGain,WB_GGain,WB_BGain;  
  2023.     UINT16  APP_AGCGain_R,APP_AGCGain_G,APP_AGCGain_B,MaxAVE,k;  
  2024.     static UINT8    i=0,j=0,m=0;  
  2025.     static UINT8    AGC_Ratio1=0x6A,Pre_AGCRatio1=0x6A,APP_AGCRatio1=0x6A,AGC_Ratio_Temp;  
  2026.     static UINT16   Pre_MaxAVE=0xB0,Pre_MaxAVE1=0xB0,HistogramSUM,Pre_HistogramSUM;  
  2027.       
  2028.     HistogramSUM = 0;  
  2029.     CScalerSetByte(_DCC_ACCESS_PORT_E6, 0x10);  
  2030.     CScalerRead(_DCC_DATA_PORT_E7, 7, pData, _NON_AUTOINC);  
  2031.       
  2032.     for (m=1;m<7;m++)  
  2033.     {  
  2034.         HistogramSUM += (pData[m] - pData[m-1])*m;  
  2035.     }  
  2036.       
  2037.     HistogramSUM += (255 - pData[6])*7;  
  2038.     HistogramSUM >>= 3;  
  2039.     Max_Ave[0] = (BYTE)HistogramSUM;  
  2040.           
  2041.     i++;  
  2042.     if (i>=1)  
  2043.     {  
  2044.         i = 0;  
  2045.         MaxAVE = (UINT8)Max_Ave[0]; //MaxAVE = ((UINT16)Max_Ave[0] + Max_Ave[1])/2;  
  2046.         //pre_ave <--> curr_ave  
  2047. //        if ((Pre_MaxAVE1 > MaxAVE && (Pre_MaxAVE1-MaxAVE)>0)||(MaxAVE > Pre_MaxAVE1 && (MaxAVE-Pre_MaxAVE1)>0) || OSD_WBAdj || OSD_SRCChg)  
  2048.         if ((Pre_MaxAVE1 > MaxAVE && (Pre_MaxAVE1-MaxAVE)>0)||(MaxAVE > Pre_MaxAVE1 && (MaxAVE-Pre_MaxAVE1)>0))  
  2049.      {//smooth-chg  
  2050.             if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_TV_PORT)  
  2051.             {  
  2052.                 if (MaxAVE < RF_Point1)//0x4E  
  2053.                     AGC_Ratio_Temp = RF_Gain1;  
  2054.                 else if (MaxAVE >= RF_Point1 && MaxAVE < RF_Point2)//0x4E ~ 0x60  
  2055.                     AGC_Ratio_Temp = RF_Gain1 - ((UINT16)(MaxAVE - RF_Point1)*(RF_Gain1-RF_Gain2))/(RF_Point2-RF_Point1);  
  2056.                 else if (MaxAVE >= RF_Point2 && MaxAVE < RF_Point3)//0x60 ~ 0x92  
  2057.                     AGC_Ratio_Temp = RF_Gain2 - ((UINT16)(MaxAVE - RF_Point2)*(RF_Gain2-RF_Gain3))/(RF_Point3-RF_Point2);  
  2058.                 else if (MaxAVE >= RF_Point3)//0x92  
  2059.                     AGC_Ratio_Temp = RF_Gain3;  
  2060.             }  
  2061.             else  
  2062.             {  
  2063.                 if (MaxAVE < AV_Point1)//0x4E  
  2064.                     AGC_Ratio_Temp = AV_Gain1;  
  2065.                 else if (MaxAVE >= AV_Point1 && MaxAVE < AV_Point2)//0x4E ~ 0x60  
  2066.                     AGC_Ratio_Temp = AV_Gain1 - ((UINT16)(MaxAVE - AV_Point1)*(AV_Gain1-AV_Gain2))/(AV_Point2-AV_Point1);  
  2067.                 else if (MaxAVE >= AV_Point2 && MaxAVE < AV_Point3)//0x60 ~ 0x92  
  2068.                     AGC_Ratio_Temp = AV_Gain2 - ((UINT16)(MaxAVE - AV_Point2)*(AV_Gain2-AV_Gain3))/(AV_Point3-AV_Point2);  
  2069.                 else if (MaxAVE >= AV_Point3)//0x92  
  2070.                     AGC_Ratio_Temp = AV_Gain3;  
  2071.     }     
  2072.   
  2073.               
  2074.             if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_TV_PORT)  
  2075.             {  
  2076.                 WB_RGain = 0x80;//stWBRfData.RF_RGain;  
  2077.                 WB_GGain = 0x80;//stWBRfData.RF_GGain;  
  2078.                 WB_BGain = 0x80;//stWBRfData.RF_BGain;  
  2079.             }  
  2080.             else  
  2081.             {  
  2082.                 WB_RGain = 0x82;//stWBAvData.AV_RGain;  
  2083.                 WB_GGain = 0x80;//stWBAvData.AV_GGain;  
  2084.                 WB_BGain = 0x7A;//stWBAvData.AV_BGain;  
  2085.             }  
  2086.         #if 0  
  2087.             //pre_ave <--> curr_ave  
  2088.             if ((Pre_MaxAVE1 > MaxAVE && (Pre_MaxAVE1-MaxAVE)>16)||(MaxAVE > Pre_MaxAVE1 && (MaxAVE-Pre_MaxAVE1)>16) || OSD_SRCChg)  
  2089.             {//scence-chg  
  2090.         #else  
  2091. //            if ((Pre_MaxAVE > MaxAVE && (Pre_MaxAVE-MaxAVE)>8)||(MaxAVE > Pre_MaxAVE && (MaxAVE-Pre_MaxAVE)>8) || OSD_SRCChg)  
  2092.             if ((Pre_MaxAVE > MaxAVE && (Pre_MaxAVE-MaxAVE)>8)||(MaxAVE > Pre_MaxAVE && (MaxAVE-Pre_MaxAVE)>8))  
  2093.             {//scence-chg  
  2094.         #endif  
  2095.                 if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_TV_PORT)  
  2096.                 {  
  2097.                     if (MaxAVE < RF_Point1)  
  2098.                         AGC_Ratio1 = RF_Gain1;  
  2099.                     else if (MaxAVE >= RF_Point1 && MaxAVE < RF_Point2)  
  2100.                         AGC_Ratio1 = RF_Gain1 - ((UINT16)(MaxAVE - RF_Point1)*(RF_Gain1-RF_Gain2))/(RF_Point2-RF_Point1);  
  2101.                     else if (MaxAVE >= RF_Point2 && MaxAVE < RF_Point3)  
  2102.                         AGC_Ratio1 = RF_Gain2 - ((UINT16)(MaxAVE - RF_Point2)*(RF_Gain2-RF_Gain3))/(RF_Point3-RF_Point2);  
  2103.                     else if (MaxAVE >= RF_Point3)  
  2104.                         AGC_Ratio1 = RF_Gain3;  
  2105.                 }  
  2106.                 else  
  2107.                 {  
  2108.                     if (MaxAVE < AV_Point1)  
  2109.                         AGC_Ratio1 = AV_Gain1;  
  2110.                     else if (MaxAVE >= AV_Point1 && MaxAVE < AV_Point2)  
  2111.                         AGC_Ratio1 = AV_Gain1 - ((UINT16)(MaxAVE - AV_Point1)*(AV_Gain1-AV_Gain2))/(AV_Point2-AV_Point1);  
  2112.                     else if (MaxAVE >= AV_Point2 && MaxAVE < AV_Point3)  
  2113.                         AGC_Ratio1 = AV_Gain2 - ((UINT16)(MaxAVE - AV_Point2)*(AV_Gain2-AV_Gain3))/(AV_Point3-AV_Point2);  
  2114.                     else if (MaxAVE >= AV_Point3)  
  2115.                         AGC_Ratio1 = AV_Gain3;  
  2116.                 }  
  2117.                  
  2118.    //             if (OSD_SRCChg)  
  2119.    //                 AppStep = 4;  
  2120.    //             else  
  2121.                     AppStep = 1;  
  2122.                   
  2123.                 for (j=AppStep;j<=4;j++)  
  2124.                 {  
  2125.                     APP_AGCRatio1 = (((UINT16)Pre_AGCRatio1*(4-j) + (UINT16)AGC_Ratio1*j))/4;  
  2126.                     CScalerSetByte(_STATUS1_03, 0x00);  
  2127.                     k = 1;  
  2128.                     do  
  2129.                     {  
  2130.                         CScalerRead(_STATUS1_03, 1, &temp, _NON_AUTOINC);  
  2131.                         if (temp&_BIT3)  
  2132.                             k = 0;  
  2133.                         timeoutcnt--;  
  2134.                     }while (k && timeoutcnt);  
  2135.                       
  2136.                     APP_AGCGain_R = ((UINT16)APP_AGCRatio1*WB_RGain)/0x80;  
  2137.                     pData[0] = APP_AGCGain_R >= 0x100 ? 0xFF : (BYTE)APP_AGCGain_R;  
  2138.                     APP_AGCGain_G = ((UINT16)APP_AGCRatio1*WB_GGain)/0x80;  
  2139.                     pData[1] = APP_AGCGain_G >= 0x100 ? 0xFF : (BYTE)APP_AGCGain_G;  
  2140.                     APP_AGCGain_B = ((UINT16)APP_AGCRatio1*WB_BGain)/0x80;  
  2141.                     pData[2] = APP_AGCGain_B >= 0x100 ? 0xFF : (BYTE)APP_AGCGain_B;  
  2142.                     CAdjustSetContrast();  
  2143.                       
  2144.                 }  
  2145.                 ScenceChg = 1;  
  2146.                 Pre_AGCRatio1 = AGC_Ratio1;  
  2147.                 Pre_HistogramSUM = HistogramSUM;  
  2148.                 Pre_MaxAVE = MaxAVE;  
  2149. //                OSD_WBAdj = 0;  
  2150. //                OSD_SRCChg = 0;  
  2151. }  
  2152.     
  2153.             if (!ScenceChg)  
  2154.             {  
  2155. //                if ((AGC_Ratio_Temp!=Pre_AGCRatio1) || OSD_WBAdj)  
  2156.          if(AGC_Ratio_Temp!=Pre_AGCRatio1)   
  2157.                 {  
  2158.                     if (AGC_Ratio_Temp > Pre_AGCRatio1)  
  2159.                         APP_AGCRatio1 = Pre_AGCRatio1 + 1;  
  2160.                     else if (AGC_Ratio_Temp < Pre_AGCRatio1)  
  2161.                         APP_AGCRatio1 = Pre_AGCRatio1 - 1;  
  2162.                       
  2163.                     APP_AGCGain_R = ((UINT16)APP_AGCRatio1*WB_RGain)/0x80;  
  2164.                     pData[0] = APP_AGCGain_R >= 0x100 ? 0xFF : (BYTE)APP_AGCGain_R;  
  2165.                     APP_AGCGain_G = ((UINT16)APP_AGCRatio1*WB_GGain)/0x80;  
  2166.                     pData[1] = APP_AGCGain_G >= 0x100 ? 0xFF : (BYTE)APP_AGCGain_G;  
  2167.                     APP_AGCGain_B = ((UINT16)APP_AGCRatio1*WB_BGain)/0x80;  
  2168.                     pData[2] = APP_AGCGain_B >= 0x100 ? 0xFF : (BYTE)APP_AGCGain_B;  
  2169.                     CAdjustSetContrast();  
  2170.                     Pre_AGCRatio1 = APP_AGCRatio1;  
  2171.                     Pre_MaxAVE = MaxAVE;  
  2172.                     SmoothChg = 1;  
  2173.                       
  2174.                 }  
  2175. //                OSD_WBAdj = 0;  
  2176.             }  
  2177.         }  
  2178.         Pre_MaxAVE1 = MaxAVE;  
  2179.     }  
  2180. }  
  2181.   
  2182. #endif  
  2183.   
  2184. //--------------------------------------------------  
  2185. // Description  : Check if video signal is locked  
  2186. // Input Value  : None  
  2187. // Output Value : Return _TRUE if video signal is locked  
  2188. //--------------------------------------------------  
  2189. bit CVdcIsLockedTvScan(void)  
  2190. {  
  2191.     //UINT8 ntimes=10;  
  2192.     UINT8 ntimes=6; // 4;  JINSUO MODIFY  20100512  
  2193.     UINT8 counter=0;  
  2194.       
  2195.     CScalerPageSelect(_PAGE8);   
  2196.     CScalerRead(_P8_VD_STATUS1_BC, 1, pData, _NON_AUTOINC);  
  2197.     //review???  
  2198.     if (pData[0] &_BIT0)    // no signal is found  
  2199.         return _FALSE;  
  2200.   
  2201.     do {  
  2202.         //if((pData[0] & 0x06) == 0x06) //H,V is locked  
  2203.         if(GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_TV_PORT)  
  2204.             {  
  2205.               if((pData[0] & 0x06) == 0x06) //burst, H,V is locked modified by xyw 080221 at jpe  
  2206.                counter++;  
  2207.             }  
  2208.         else  
  2209.             {  
  2210.             if((pData[0] & 0x06) == 0x06) //H,V is locked  
  2211.             counter++;  
  2212.             }  
  2213.   
  2214.         //DebugPrintf("\nH/V:0x%x\n", pData[0]);  
  2215.   
  2216.         CTimerDelayXms(10);  
  2217.     //  CTimerDelayXms(2);  
  2218.   
  2219.         CScalerPageSelect(_PAGE8);   
  2220.         CScalerRead(_P8_VD_STATUS1_BC, 1, pData, _NON_AUTOINC);  
  2221.   
  2222.     }while (/*(counter<5) && */(ntimes--));  
  2223.   
  2224.     //if (counter<8)  
  2225.     if (counter<3)  
  2226.         return _FALSE;  
  2227.     else  
  2228.         return _TRUE;  
  2229.       
  2230.     if (ntimes==0)  
  2231.         return _FALSE;  
  2232.     else  
  2233.         return _TRUE;  
  2234. }  
  2235.   
  2236. #endif  // End of #if(_VIDEO_SUPPORT == _ON)  
  2237.   
  2238.   
  2239. </none></input_select></none></n;ii++){></none></none></none></none></none>