亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? devvd.c

?? mstar716驅動源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:

#define _DEVVD_C_

#include <math.h>
#include "types.h"
#include "ms_reg.h"
#include "board.h"
#include "global.h"
#include "DEBUG.h"
#include "ms_rwreg.h"
#include "misc.h"
#include "userpref.h"
#include "power.h"
#include "panel.h"
#include "mstar.h"
#include "tv.h"
#include "DevVD.h"
#include "msVD.h"
#include "DEVTuner.h"
#include "adjust.h"
#include "DevVD_User.h"
#include "menu.h"
#include "menuFunc.h"
#include "Maria2_FSC_Lib.h"
#include "Maria2_ACC_Lib.h"
#include "M2_VD_Std_Lib.h"
#include "M2_VD_AGC_Lib.h"

#if(ENABLE_VD_DSP)
#include "Maria2_dsp_lib.h"
#endif

void vdInitVariable(void)
{
    g_ucmsVDCtl = MSVD_CTL_FLAG_DSP_STD
                //|MSVD_CTL_FLAG_FSC_DETECT
                //|MSVD_CTL_FLAG_ACC
                |MSVD_CTL_FLAG_COLOR_BURST_HANDLER
                |MSVD_CTL_FLAG_NOISE_HANDLER
                |MSVD_CTL_FLAG_COMB_LINE_BUF
                |MSVD_CTL_FLAG_VSYNC
                |MSVD_CTL_FLAG_COMB_HANDLER
                ;


	g_ucmsVDCtl2 = 0
	            |MSVD_CTL2_FLAG_AGC_MONITOR
	            |MSVD_CTL2_FLAG_AGC_PROCESSOR
            #if(ENABLE_VCR_HANDLER)
                |MSVD_CTL2_FLAG_VCR
            #endif
                |MSVD_CTL2_FLAG_SECAM
                |MSVD_CTL2_FLAG_HSYNC
                |MSVD_CTL2_FLAG_PATCH5
                |MSVD_CTL2_FLAG_PAL_SWITCH
                |MSVD_CTL2_FLAG_AFEC
                ;


    g_ucMSVDDebug = 0;
    g_ucMSVDDebug2 = 0;

  	g_VdInfo.wVideoStatus = VD_RESET_ON;
  	g_VdInfo.ucVideoSystem = SIG_NONE;
  	g_VdInfo.ucVideoStableCounter = 0;
  	g_VdInfo.ucVideoPollingCounter = 0;
  	g_VdInfo.bVideoDoModeSetting = FALSE;
	#ifdef VD_PATCH_002
    g_msVD_Patch002_LastVideoSystem = 0xFF;
	#endif

	#ifdef VD_PATCH_003
	if( VD_Type < MARIA2_E )
		msVD_Patch_003(0);
	#endif

    #ifdef msVD_Patch_005
    msVD_Patch_005(100);
    #endif
	VD_Vsync_Set656VPosition( DSP_656_F_TGL_1_VAL, 0x09, DSP_656_V_CLR_1_VAL );

	msDSP_Std_Init();
	msVD_FSC_Init();

	msVD_FSC_SetNoiseModeLevel( 12, 13);
	msVD_FSC_SetColorKillNoise( 0xC0, 0xD0 );
	msVD_FSC_SetColorKillLevel( 0x23, 0x18, 0x50, 0x60 );

	msVDAcc_Ctl( 1 );
 	msVDAcc_Init();


#if RM_EEPROM_TYPE<RM_TYPE_SST512
    g_uwVideoAGC=(WORD)(g_VideoSetting.videoAGC<<8);
    g_ucLastVideoAGC=g_VideoSetting.videoAGC;
    g_ucVideoAGCCount=0;
#else
    g_uwVideoAGC=0x0800;
#endif
	VD_AGC_Init();
    VD_AGC_SetStartGain(g_uwVideoAGC);
    VD_AGC_SetNoSyncGain(g_uwVideoAGC);
    VD_AGC_SetMaxGain(0x2f00);

    // for dsp 20060311 only, not mature yet
    SetVthreshold(0x20);

    msVDForceSystem( VD_FORCE_AUTO );

#if( ENABLE_SECAM )
    g_dwVDSecamHandler_PreMagThl = 0;
    g_wVDSecamHandler_PreNoiseMag = 0;
#endif

	msVDNoiseHandlerInit();
    g_ucOverScanH = VD_OVER_SCAN_H;
    g_ucOverScanV = VD_OVER_SCAN_V;
    g_ucAFECHnadler_LaseDplSel = 0xff;

#if( ENABLE_SW_DETECT_COLOR_STD )
    if( VD_Type >= MARIA2_E )
    	msVDDetectColorStdInit();
#endif
}


#if TV_ENABLE
void ResetupMode(void)
{

    g_VdInfo.wVideoStatus = msVDGetSyncStatus();

    if( g_VdInfo.wVideoStatus&VD_VSYNC_50HZ ) // 50Hz
        {
        g_VdInfo.ucVideoSystem = SIG_PAL;
        g_ucSrcModeIndex = MD_720x576_50I;
        }
    else // 60Hz
        {
        g_VdInfo.ucVideoSystem = SIG_NTSC;
        g_ucSrcModeIndex = MD_720x480_60I;
        }

    g_InOutCtl.bInterlace = 1;

// Check signal type
    if( IsVideoPortInUse())
        {
        g_VdInfo.ucVideoSystem = msVDGetVideoSystem( g_VdInfo.wVideoStatus );
        msVDSetupMode( g_VdInfo.wVideoStatus, g_VdInfo.ucVideoSystem );
        }

    SetOutputTimingAndWindow( OUTPUT_SIG ); // TV auto scan: has signal
}
#endif


void vdMonitorInput(void)
{
    WORD wCurSyncStatus; // video status
    BYTE ucStableCounter;
    BYTE ucNoiseMag;
 	if (!PowerOnFlag)
    return;
	
#if Enable_Logo_Display
    if(DrawLogoFlag)
	return;
#endif

    if( g_VdInfo.ucVideoPollingCounter )
        return;
    g_VdInfo.ucVideoPollingCounter = 20; // reset counter

     if (g_bInputTimingChangeFlag)
     {
	 	g_VdInfo.wVideoStatus = VD_RESET_ON;
	 	Clr_InputTimingChangeFlag();
     }

     wCurSyncStatus = msVDGetSyncStatus();
     if( (wCurSyncStatus&VD_MODE_DETECT_MASK) != (g_VdInfo.wVideoStatus&VD_MODE_DETECT_MASK) )// Sync change
     {
        //ucNoiseMag = msVDGetCurNoiseMag();
        ucNoiseMag = msDSP_Std_GetNoiseMag();
        if( IsAVInUse()||IsSVideoInUse() )
        {
                //if( (wCurSyncStatus&(VD_FSC_TYPE|VD_PAL_SWITCH|VD_VSYNC_50HZ)) != (g_VdInfo.wVideoStatus&(VD_FSC_TYPE|VD_PAL_SWITCH|VD_VSYNC_50HZ)) )
                if( ( ((wCurSyncStatus&(VD_FSC_TYPE|VD_PAL_SWITCH)) != (g_VdInfo.wVideoStatus&(VD_FSC_TYPE|VD_PAL_SWITCH)))&&(ucNoiseMag<0x50) )
                  ||( (wCurSyncStatus&(VD_VSYNC_50HZ)) != (g_VdInfo.wVideoStatus&(VD_VSYNC_50HZ)) )
                  ||( (wCurSyncStatus&(VD_HSYNC_LOCKED)) != (g_VdInfo.wVideoStatus&(VD_HSYNC_LOCKED)) )
                  )
                {
                    msSetBlueScreen( _ENABLE, FR_BLACK);
                    g_VdInfo.wVideoStatus |= VD_RESET_ON;

                    if(!(wCurSyncStatus&VD_HSYNC_LOCKED))
			            msVDReset();
                }
        }

        if( (wCurSyncStatus&VD_MODE_DETECT_MASK) == (g_wLastSyncStatus&VD_MODE_DETECT_MASK) )
        {
            if( g_VdInfo.ucVideoStableCounter < 0xff )
                g_VdInfo.ucVideoStableCounter ++;

            if( !(wCurSyncStatus&VD_HSYNC_LOCKED) )
                ucStableCounter = VD_NO_INPUT_STABLE_COUNT;
            else
                ucStableCounter = VD_INPUT_STABLE_COUNT;

            if( g_VdInfo.ucVideoStableCounter >= ucStableCounter )
            {
                //printf( "Video Status: %x\r\n", wCurSyncStatus );
                g_VdInfo.wVideoStatus = wCurSyncStatus; // set flag
                g_VdInfo.bVideoDoModeSetting = TRUE; // set mode flag

                #ifdef VD_PATCH_002
                if(msVD_Patch_002( wCurSyncStatus ))
		{
                        g_VdInfo.wVideoStatus = VD_RESET_ON;
                        g_VdInfo.bVideoDoModeSetting = FALSE;
              }
                #endif
            }
        }
        else // Current status != last status
        {
            g_VdInfo.ucVideoStableCounter = 0;
        }
    }
    else // Current status == current global flag
    {
        g_VdInfo.ucVideoStableCounter = 0;
    }

	if(g_ucSyncMaxStableCounter)
	{
	    if((--g_ucSyncMaxStableCounter)==0)
		{
    		//printMsg("force turn on panel");
    		g_VdInfo.bVideoDoModeSetting = TRUE;
    		//g_VdInfo.wVideoStatus|=~VD_HSYNC_LOCKED;
    		g_VdInfo.ucVideoStableCounter = 0;
		}
	}

    // Current status == system status
    if( (wCurSyncStatus&VD_MODE_DETECT_MASK) == (g_VdInfo.wVideoStatus&VD_MODE_DETECT_MASK) )
    {
        // Polling input and doing something
        if(wCurSyncStatus&VD_HSYNC_LOCKED)//&& IsSrcHasSignal())
        {
            msDetectInterlace(0); // Normal polling interlace
        #if( ENABLE_MONITOR_SIGNAL )
            msMonitorSignal(0); // Normal monitor input signal
        #endif
        }
        // Patch ...
        // if( IsSrcUseInternalVD() ) // Status stable
        {
            #ifdef VD_PATCH_003
            if( VD_Type < MARIA2_E )	
            	{
	            if( g_VdInfo.ucVideoSystem == SIG_NTSC )
	                msVD_Patch_003(1);
	            else
	                msVD_Patch_003(0);
            	}
            #endif

            #ifdef VD_PATCH_004
            if(wCurSyncStatus&VD_HSYNC_LOCKED)// && IsSrcHasSignal())
                msVD_Patch_004(_ENABLE);
            else
                msVD_Patch_004(_DISABLE);
            #endif
        }
    }

    // Save current status for next mode detect
    g_wLastSyncStatus = wCurSyncStatus;
}

void vdModeHandler(void)
{

    if( g_VdInfo.bVideoDoModeSetting )
    {
        WORD wStatus = g_VdInfo.wVideoStatus;
        printMsg("VD setup mode");
		
        g_bForceColorEnable=FALSE;
        g_VdInfo.bVideoDoModeSetting = FALSE;
        if( wStatus& VD_HSYNC_LOCKED ) // Has signal
        {
            // Check signal type
            if( wStatus&VD_VSYNC_50HZ )
            {
                g_VdInfo.ucVideoSystem = SIG_PAL;
                g_ucSrcModeIndex = MD_720x576_50I;
            }
            else
            {
                g_VdInfo.ucVideoSystem = SIG_NTSC;
                g_ucSrcModeIndex = MD_720x480_60I;
            }

            g_InOutCtl.bInterlace = 1;

            if( IsVideoPortInUse())
            {
                g_VdInfo.ucVideoSystem = msVDGetVideoSystem( wStatus );

                if(g_VdInfo.ucVideoSystem!=SIG_SECAM)
                     msVD_FSM_Reset();

                msVDSetupMode( wStatus, g_VdInfo.ucVideoSystem );
            }

            msCommSetupMode();

            SetOutputTimingAndWindow(OUTPUT_SIG); // VD mode change: Has signal

            #if( ENABLE_MONITOR_SIGNAL )
            msMonitorSignal(MONITOR_SIGNAL_INIT);
            #endif

            msSetBlueScreen( _DISABLE, FR_BLACK);

            if(IsTVInUse()&&ChannelAFCFlag)
            {
                Clr_AFCDisableFlag();
                Clr_ChannelAFCFlag();
			    g_ucAFCTuneCounter=AFCTUNEINITCOUNT;
            }
			
		msForceChromaDetect(g_VdInfo.ucVideoSystem);
		
		ResetOsdTimer();//for reset source menu	
        }

        else // No signal
	    {
	            g_VdInfo.ucVideoSystem = SIG_NONE;
	            g_InOutCtl.bInterlace = 1;
	            g_bForceColorEnable=0;
			
                msVDReset();

	            if( IsVideoPortInUse())
	            {
	                // For TV snow
	            #if( TV_SYSTEM == TV_NTSC )
	                msVDSetupMode( VD_FSC_3579, SIG_NTSC );
	            #else
	                msVDSetupMode( VD_FSC_4433|VD_VSYNC_50HZ, SIG_PAL );
	            #endif
	            }

                #if TV_ENABLE
	            if( IsTVInUse()) // For TV snow screen
	            {
	                SetOutputTimingAndWindow( OUTPUT_SNOW );
	                msSetBlueScreen( _DISABLE, FR_BLACK);
                    g_ucSrcModeIndex = MD_TVsnow;
	            }
	            else // av/sv
	            #endif
	            {
	                msProgWindow( OUTPUT_FREERUN ); // For display window
	                msSetBlueScreen( _ENABLE, FR_BLUE);
                    g_ucSrcModeIndex = MD_FreeRun;
	            }

	            #ifdef VD_PATCH_001
	            msVD_Patch_001();
	            #endif
	    }

    	msSetScaler();
	msCheckBK0_57_Value(1);
	
    	if(g_ucMenuPageIndex==RootMenu)
    		Set_ShowSourceFlag();

    	g_ucSyncMaxStableCounter=0;

    	if (PowerOnFlag)
    	{
    	    Power_TurnOnPanel();
    	    Power_TurnOnGreenLed();
    	}
    }
}

BOOL msForceChromaDetect(BYTE ucSignalType)
{
BYTE uctempcolorsys;
BOOL btempcolorforce=TRUE;
#if TV_ENABLE
	if(IsTVInUse())
	{
	uctempcolorsys=((g_TVChSetting.TvCurChannelMisc&ColorSysMask)>>4)%CHROMA_NUMS;
	}
	else
#endif		
	{
	uctempcolorsys=g_VideoSetting.VideoColorSys;
	}
		
	switch(ucSignalType)	
	{
	    case SIG_NTSC:
			if(uctempcolorsys==CHROMA_NTSC||uctempcolorsys==CHROMA_AUTO)
				btempcolorforce=FALSE;
			break;
	    case SIG_PAL:
			if(uctempcolorsys==CHROMA_PAL||uctempcolorsys==CHROMA_AUTO)
				btempcolorforce=FALSE;
			break;
	    case SIG_SECAM:
			if(uctempcolorsys==CHROMA_SECAM||uctempcolorsys==CHROMA_AUTO)
				btempcolorforce=FALSE;
			break;
	    case SIG_NTSC_443:
			if(uctempcolorsys==CHROMA_NTSC||uctempcolorsys==CHROMA_AUTO)
				btempcolorforce=FALSE;
			break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲高清久久久| 亚洲一二三区在线观看| 日韩欧美在线1卡| 欧美精品一区二区久久久| 久久免费精品国产久精品久久久久| 国产精品国产三级国产aⅴ入口| 亚洲欧洲精品一区二区三区 | 麻豆91在线观看| 亚洲国产一区在线观看| 99精品偷自拍| 国产农村妇女精品| 国产精品羞羞答答xxdd| 欧美吞精做爰啪啪高潮| 亚洲成a人片综合在线| 国产精品久久久久久久久搜平片 | 亚洲视频在线观看一区| 性做久久久久久免费观看欧美| 国产成人夜色高潮福利影视| 免费观看久久久4p| 麻豆精品在线播放| 精品国产污污免费网站入口| 狠狠色狠狠色合久久伊人| 精品国产乱码久久久久久浪潮 | 亚洲视频 欧洲视频| 国产一区二区毛片| 中文字幕一区二区5566日韩| 99精品视频一区二区三区| 一级精品视频在线观看宜春院 | 欧美日韩一卡二卡| 久久机这里只有精品| 欧美亚洲免费在线一区| 奇米影视一区二区三区| 国产精品国产a| 欧美日韩激情一区| 国产一区二区三区香蕉 | 成人av在线观| 日韩av在线播放中文字幕| 国产成人在线免费观看| 午夜影院久久久| 日本一区二区免费在线观看视频| 亚洲精品国产精品乱码不99| 日本精品裸体写真集在线观看| 免费在线观看一区| 中文字幕亚洲视频| 不卡视频在线看| 日韩欧美在线网站| 国产精品性做久久久久久| aa级大片欧美| 在线免费观看一区| 日韩欧美视频在线| 亚洲国产精品二十页| 天天综合日日夜夜精品| 丁香另类激情小说| ...xxx性欧美| 丝袜美腿亚洲色图| 青青草国产成人av片免费| 精品一区二区久久久| 91丨九色丨尤物| 337p粉嫩大胆色噜噜噜噜亚洲 | 国产日韩欧美高清在线| 玉米视频成人免费看| 精品一区二区三区在线观看 | 男人的天堂久久精品| 高清久久久久久| 91精品中文字幕一区二区三区 | 国产精品久久久久影院色老大| 亚洲成人精品一区二区| 99久久伊人网影院| 2021中文字幕一区亚洲| 国产精品一区二区三区四区| 欧美日韩一级黄| 亚洲一区在线视频| 欧洲av一区二区嗯嗯嗯啊| 亚洲女同ⅹxx女同tv| 国产成人激情av| 欧美经典一区二区三区| 国产一区二区精品久久| 久久人人爽爽爽人久久久| 奇米色一区二区三区四区| 欧美日韩视频第一区| 91麻豆免费看片| 午夜精品一区二区三区免费视频| 欧美日韩高清在线| 色偷偷88欧美精品久久久| 亚洲欧洲美洲综合色网| 欧美高清视频一二三区| 国产一区二区三区四区五区美女| 国产欧美一区二区三区鸳鸯浴| 成人av在线电影| 久久国产欧美日韩精品| 亚洲成a人v欧美综合天堂下载| 精品国产不卡一区二区三区| 91视频免费看| 韩国毛片一区二区三区| 亚洲人妖av一区二区| 宅男在线国产精品| 99久久久国产精品| 久色婷婷小香蕉久久| 亚洲激情一二三区| 久久尤物电影视频在线观看| 欧美色视频在线观看| 99国产精品久久久久久久久久久| 麻豆精品国产91久久久久久| 18成人在线视频| 久久久久久亚洲综合| 6080日韩午夜伦伦午夜伦| 男人的j进女人的j一区| 久久蜜臀中文字幕| 久久黄色级2电影| 国产精品乱码妇女bbbb| 久久久久久亚洲综合| 欧美网站一区二区| 成人在线视频首页| 奇米亚洲午夜久久精品| 亚洲美女视频在线观看| 日韩精品一区二区三区三区免费| 欧美日韩一区二区三区高清| 成人精品一区二区三区四区| 日本午夜一本久久久综合| 天堂蜜桃91精品| 亚洲色图第一区| 欧美大尺度电影在线| 麻豆91在线观看| 国产99一区视频免费| 视频一区中文字幕| 亚洲一区国产视频| 日韩中文字幕区一区有砖一区| 国产精品免费视频一区| 久久一区二区三区四区| 日本精品视频一区二区| 成人综合日日夜夜| 国产传媒欧美日韩成人| 男女男精品视频网| 国产成人综合精品三级| 日韩成人午夜电影| 亚洲美女视频一区| 国产成人av资源| 91麻豆精品国产91久久久资源速度 | 欧美成人精品3d动漫h| 日韩三级视频在线看| 国产精品第一页第二页第三页| 精品久久久影院| 久久蜜臀中文字幕| 中文字幕的久久| 久久99精品国产| 精品国产乱码久久| 久久夜色精品一区| 亚洲观看高清完整版在线观看| 亚洲午夜久久久久久久久电影院| 国产精品成人一区二区艾草| 欧美成人猛片aaaaaaa| 亚洲综合色噜噜狠狠| 一卡二卡三卡日韩欧美| 五月综合激情网| 成人亚洲一区二区一| 一本久道久久综合中文字幕| 欧美日韩一卡二卡| 亚洲高清在线视频| 成人性生交大片免费看视频在线| 欧美亚洲动漫制服丝袜| 国产一区二区三区久久悠悠色av| 国产精品一区在线观看乱码| 99在线热播精品免费| 日韩一区二区三区在线视频| 26uuu色噜噜精品一区| 久久99热99| 欧美人与禽zozo性伦| 亚洲欧美日韩久久精品| 538在线一区二区精品国产| 东方欧美亚洲色图在线| 欧美精品丝袜中出| 亚洲午夜免费福利视频| 欧美疯狂性受xxxxx喷水图片| 国产喂奶挤奶一区二区三区| 精品一区二区久久| 中文无字幕一区二区三区| 久久精品国产精品青草| 日韩区在线观看| 成人在线视频一区| 精品一区二区三区香蕉蜜桃| 欧美日韩高清一区二区三区| 激情综合一区二区三区| 91精品婷婷国产综合久久性色| 日本中文字幕一区| **网站欧美大片在线观看| 972aa.com艺术欧美| 一区二区在线观看视频| 国产欧美精品一区| 风间由美一区二区av101| www.性欧美| 国产一区欧美二区| 综合激情成人伊人| 欧美日韩亚洲高清一区二区| 福利电影一区二区| 中文字幕中文字幕一区| 欧美精品久久一区二区三区| 91黄色激情网站| 麻豆国产精品一区二区三区| xf在线a精品一区二区视频网站| 在线观看视频一区二区|