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

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

?? tv_2in1.c

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

#include "board.h"

#define _TV_C_

#include <math.h>
#include "types.h"
#include "Global.h"
#if TV_ENABLE
#include "Reg52.h"
#include "TV.h"
#include "devtuner.h"
#include "misc.h"
#include "nvram.h"
#include "DevVD.h"
#include "msosd.h"
#include "DEBUG.h"
#include "ms_reg.h"
#include "ms_rwreg.h"
#include "panel.h"
#include "mstar.h"
//#include "menudef.h"
#include "menu.h"
#include "UserPref.h"
#include "Tda7052.h"
#include "nvram.h"
#include "M2_vd_agc_lib.h"

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


BYTE XDATA  g_ucTryTimes;
extern BYTE code strProgramText[LANG_Nums][12];

extern void devSetSWF(BYTE ColorSoundSystem);
extern void NVRam_WriteWord(WORD addr, WORD value);
extern void Osd_SetTextColor(BYTE foreColor, BYTE backColor);
extern BOOL ExecuteKeyEvent(MenuItemActionType menuAction);

#if TV_SYSTEM==TV_NTSC
code WORD tFreqCode_AirTV[] =
{
//      x0            x1            x2            x3           x4            <Channel>
    TN_N( 48.25), TN_N( 61.25), TN_N( 55.25), TN_N( 61.25), TN_N( 67.25), // 000 - 004
    TN_N( 77.25), TN_N( 83.25), TN_N(175.25), TN_N(181.25), TN_N(187.25), // 005 - 009
    TN_N(193.25), TN_N(199.25), TN_N(205.25), TN_N(211.25), TN_N(471.25), // 010 - 014
    TN_N(477.25), TN_N(483.25), TN_N(489.25), TN_N(495.25), TN_N(501.25), // 015 - 019
    TN_N(507.25), TN_N(513.25), TN_N(519.25), TN_N(525.25), TN_N(531.25), // 020 - 024
    TN_N(537.25), TN_N(543.25), TN_N(549.25), TN_N(555.25), TN_N(561.25), // 025 - 029
    TN_N(567.25), TN_N(573.25), TN_N(579.25), TN_N(585.25), TN_N(591.25), // 030 - 034
    TN_N(597.25), TN_N(603.25), TN_N(609.25), TN_N(615.25), TN_N(621.25), // 035 - 039
    TN_N(627.25), TN_N(633.25), TN_N(639.25), TN_N(645.25), TN_N(651.25), // 040 - 044
    TN_N(657.25), TN_N(663.25), TN_N(669.25), TN_N(675.25), TN_N(681.25), // 045 - 049
    TN_N(687.25), TN_N(693.25), TN_N(699.25), TN_N(705.25), TN_N(711.25), // 050 - 054
    TN_N(717.25), TN_N(723.25), TN_N(729.25), TN_N(735.25), TN_N(741.25), // 055 - 059
    TN_N(747.25), TN_N(753.25), TN_N(759.25), TN_N(765.25), TN_N(771.25), // 060 - 064
    TN_N(777.25), TN_N(783.25), TN_N(789.25), TN_N(795.25), TN_N(801.25), // 065 - 069
};

// CATV-STD
code WORD tFreqCode_CATV[] =
{
//      x0            x1            x2            x3           x4            <Channel>
    TN_N( 48.25), TN_N( 73.25), TN_N( 55.25), TN_N( 61.25), TN_N( 67.25), // 000 - 004
    TN_N( 77.25), TN_N( 83.25), TN_N(175.25), TN_N(181.25), TN_N(187.25), // 005 - 009
    TN_N(193.25), TN_N(199.25), TN_N(205.25), TN_N(211.25), TN_N(121.25), // 010 - 014
    TN_N(127.25), TN_N(133.25), TN_N(139.25), TN_N(145.25), TN_N(151.25), // 015 - 019
    TN_N(157.25), TN_N(163.25), TN_N(169.25), TN_N(217.25), TN_N(223.25), // 020 - 024
    TN_N(229.25), TN_N(235.25), TN_N(241.25), TN_N(247.25), TN_N(253.25), // 025 - 029
    TN_N(259.25), TN_N(265.25), TN_N(271.25), TN_N(277.25), TN_N(283.25), // 030 - 034
    TN_N(289.25), TN_N(295.25), TN_N(301.25), TN_N(307.25), TN_N(313.25), // 035 - 039
    TN_N(319.25), TN_N(325.25), TN_N(331.25), TN_N(337.25), TN_N(343.25), // 040 - 044
    TN_N(349.25), TN_N(355.25), TN_N(361.25), TN_N(367.25), TN_N(373.25), // 045 - 049
    TN_N(379.25), TN_N(385.25), TN_N(391.25), TN_N(397.25), TN_N(403.25), // 050 - 054
    TN_N(409.25), TN_N(415.25), TN_N(421.25), TN_N(427.25), TN_N(433.25), // 055 - 059
    TN_N(439.25), TN_N(445.25), TN_N(451.25), TN_N(457.25), TN_N(463.25), // 060 - 064
    TN_N(469.25), TN_N(475.25), TN_N(481.25), TN_N(487.25), TN_N(493.25), // 065 - 069
    TN_N(499.25), TN_N(505.25), TN_N(511.25), TN_N(517.25), TN_N(523.25), // 070 - 074
    TN_N(529.25), TN_N(535.25), TN_N(541.25), TN_N(547.25), TN_N(553.25), // 075 - 079
    TN_N(559.25), TN_N(565.25), TN_N(571.25), TN_N(577.25), TN_N(583.25), // 080 - 084
    TN_N(589.25), TN_N(595.25), TN_N(601.25), TN_N(607.25), TN_N(613.25), // 085 - 089
    TN_N(619.25), TN_N(625.25), TN_N(631.25), TN_N(637.25), TN_N(643.25), // 090 - 094
    TN_N( 91.25), TN_N( 97.25), TN_N(103.25), TN_N(109.25), TN_N(115.25), // 095 - 099
    TN_N(649.25), TN_N(655.25), TN_N(661.25), TN_N(667.25), TN_N(673.25), // 100 - 104
    TN_N(679.25), TN_N(685.25), TN_N(691.25), TN_N(697.25), TN_N(703.25), // 105 - 109
    TN_N(709.25), TN_N(715.25), TN_N(721.25), TN_N(727.25), TN_N(733.25), // 110 - 114
    TN_N(739.25), TN_N(745.25), TN_N(751.25), TN_N(757.25), TN_N(763.25), // 115 - 119
    TN_N(769.25), TN_N(775.25), TN_N(781.25), TN_N(787.25), TN_N(793.25), // 120 - 124
    TN_N(799.25)                                                          // 125
};

WORD NTSCChannelVsIsValid(BYTE ucSourceIndex,BYTE chIndex,WORD uwCompareFreq)
{
WORD uwtemp;

if(ucSourceIndex==NTSC_ATV)
	uwtemp=tFreqCode_AirTV[chIndex];
else
	uwtemp=tFreqCode_CATV[chIndex];

if(abs(uwtemp-uwCompareFreq)<STEPS_1M)
	{
	uwtemp=uwCompareFreq;
	}
return uwtemp;
}

WORD CurrentChannelFreq(BYTE ucChannel)
{
    if (g_TVChSetting.ucTVSource== NTSC_ATV) // air TV
        return tFreqCode_AirTV[ucChannel];
    else 
        return tFreqCode_CATV[ucChannel];
}

#endif

BYTE code AUTOAFCMappingValue[16]=
{
  	 0x08,// 0
  	 0x09,// 1
  	 0x0A,// 2
  	 0x0B,// 3
  	 0x0C,// 4
  	 0x0D,// 5
  	 0x0E,// 6
  	 0x0F,// 7
  	 0x00,// 8
  	 0x01,// 9
  	 0x02,// A
  	 0x03,// B
  	 0x04,// C
  	 0x05,// D
  	 0x06,// E
  	 0x07,// F
};

BYTE GetAFCValue(BYTE ucLoopCount)
{
    BYTE value;

 	value= devTunerGetStatus(ucLoopCount);
  	value &= 0x1e;
  	value >>= 1;
  	value &= 0x0f;//16 counts

  	return  AUTOAFCMappingValue[value];//abs(value-7);//alue;//
}

void TurnerAFCHandler(void)
{
	BYTE AFCValue,uctempAFCTunerCount;
	WORD wtempFre;
	
    if(!PowerOnFlag||!IsTVInUse())
	    return;
	else if(AFCDisableFlag)
		return;
	else if(!(chData.ucChannelMisc&DoAFCFlag))
		return;
	else if(!(g_VdInfo.wVideoStatus&VD_HSYNC_LOCKED))
		return;

    AFCValue = GetAFCValue(5);
	uctempAFCTunerCount=g_ucAFCTuneCounter;
	wtempFre=chData.wFreq;
	
	if(AFCValue>9)
	{//printMsg("AFCValue>>>>9");
		wtempFre++;
		uctempAFCTunerCount++;
	}
	else if(AFCValue<6)
	{//printMsg("AFCValue>>>>6");
		wtempFre--;
		uctempAFCTunerCount--;
	}
	else
		return;
	
	if(uctempAFCTunerCount<AFCTUNEMINCOUNT||uctempAFCTunerCount>AFCTUNEMAXCOUNT)
		{//printMsg("uctempAFCTunerCount OUT OF RANGE ");
		return;
		}
	g_ucAFCTuneCounter=uctempAFCTunerCount;
	chData.wFreq=wtempFre;
    DevTunerWrite(chData.wFreq);
}


BOOL CheckTunerVsIsValid(WORD Vs)
{
	if((Vs>=TN_FREQMIN)&&(Vs<=TN_FREQMAX))
		return TRUE;
	else
		return FALSE;
}

void ReadTVChannelInfo(BYTE ch, BOOL ReallyAddr)
{
	ReallyAddr=ReallyAddr;
	NVRam_ReadTbl(nvrChanneAddr(ch), (BYTE*)&chData,SIZE_TV_CHANNEL_INFO);
	if(!CheckTunerVsIsValid(chData.wFreq))
		chData.wFreq=TN_FREQ_INVILIDDEF;
	
#if TV_SYSTEM==TV_NTSC
	chData.wFreq=NTSCChannelVsIsValid(g_TVChSetting.ucTVSource,ch,chData.wFreq);
#endif

}

void SaveTVChannelInfo(BYTE ch, BOOL ReallyAddr)
{
	ReallyAddr=ReallyAddr;

	if(!CheckTunerVsIsValid(chData.wFreq))
		chData.wFreq=TN_FREQ_INVILIDDEF;
	NVRam_WriteTbl(nvrChanneAddr(ch), (BYTE*)&chData,SIZE_TV_CHANNEL_INFO);
}

void TV_SelectChannel( BYTE ucChannel )
{
#if TV_SYSTEM==TV_NTSC

    if(ucChannel>=TV_MAX_CHANNEL_NUM&&g_TVChSetting.ucTVSource==NTSC_ATV)
        return;
    else if(ucChannel>=CATV_MAX_CHANNEL_NUM&&g_TVChSetting.ucTVSource==NTSC_CTV)
        return;
	
#else
    if(ucChannel>=TV_MAX_CHANNEL_NUM)
        return;
#endif	
		
    g_TVChSetting.ucPreChannelNO = g_TVChSetting.ucCurChannelNO;
    g_TVChSetting.ucCurChannelNO = ucChannel;
#if TV_SYSTEM==TV_NTSC
    if(g_TVChSetting.ucTVSource==NTSC_ATV)
	g_TVChSetting.ucATVChannelNO=ucChannel;
    else
	g_TVChSetting.ucCTVChannelNO=ucChannel;
#endif
    TV_SetCh();
}

void TV_SelectPreChannel(void)
{
	BYTE temp;
	temp=g_TVChSetting.ucCurChannelNO;
	g_TVChSetting.ucCurChannelNO=g_TVChSetting.ucPreChannelNO;
	g_TVChSetting.ucPreChannelNO=temp;
#if TV_SYSTEM==TV_NTSC
    if(g_TVChSetting.ucTVSource==NTSC_ATV)
	g_TVChSetting.ucATVChannelNO=g_TVChSetting.ucCurChannelNO;
    else
	g_TVChSetting.ucCTVChannelNO=g_TVChSetting.ucCurChannelNO;
#endif
	TV_SetCh();
}

void TV_SetCh(void)
{
    VD_AGC_ResetGain( g_uwVideoAGC );

    ReadTVChannelInfo(g_TVChSetting.ucCurChannelNO,FALSE);
    g_TVChSetting.TvCurChannelMisc=chData.ucChannelMisc;

    DevTunerWrite(chData.wFreq);
    devSetSWF(chData.ucChannelMisc);
    devTunerSetAGCValue(g_VideoSetting.TunerAGC);
    msVDReset();

    //if( g_ucmsVDCtl&MSVD_CTL_FLAG_NOISE_HANDLER )
    msVDNoiseHandlerReset();

    SaveChannelNumberSetting();
    Set_InputTimingChangeFlag();

    Set_AFCDisableFlag();
    Set_ChannelAFCFlag();

    msVDColorBurstHandler( VD_COLOR_BURST_HANDLER_RESET );
}

BYTE TV_GetIncValidChannel( BYTE ucCurChannel )
{
BYTE ucTemp;

#if TV_SYSTEM==TV_NTSC
if(g_TVChSetting.ucTVSource==NTSC_ATV)
	ucTemp=TV_MAX_CHANNEL_NUM;
else
	ucTemp=CATV_MAX_CHANNEL_NUM;
#else
	ucTemp=TV_MAX_CHANNEL_NUM;
#endif
	ucCurChannel++;
	ucCurChannel%=ucTemp;

    return ucCurChannel;
}

BYTE TV_GetDecValidChannel( BYTE ucCurChannel )
{
BYTE ucTemp;

#if TV_SYSTEM==TV_NTSC
if(g_TVChSetting.ucTVSource==NTSC_ATV)
	ucTemp=TV_MAX_CHANNEL_NUM;
else
	ucTemp=CATV_MAX_CHANNEL_NUM;
#else
	ucTemp=TV_MAX_CHANNEL_NUM;
#endif
	ucCurChannel+=(ucTemp-1);
	ucCurChannel%=ucTemp;

    return ucCurChannel;
}

BYTE SearchTVNoSkipChannel(BYTE channel,BOOL Inc)
{
	BYTE BkChannel=channel;
	BYTE temp;
	//WORD wTempAdd;
	do
    {
    WatchDogClear();
    	if(Inc)
    		channel=TV_GetIncValidChannel(channel);
    	else
    		channel=TV_GetDecValidChannel(channel);
#if TV_SYSTEM==TV_NTSC
		if(g_TVChSetting.ucTVSource==NTSC_ATV)
			{
			temp=g_ucTVChannelSkipInfoBuff[channel/8];
			}
		else
			{
			temp=g_ucCATVChannelSkipInfoBuff[channel/8];
			}
#else
			temp=g_ucTVChannelSkipInfoBuff[channel/8];
#endif

		
	temp&=1<<(channel%8);

    	if((temp)||channel==g_TVChSetting.ucCurChannelNO)
    		break;
    }while(BkChannel!=channel);

	return channel;
}

void SaveChannelSkipInfo( BYTE chIdx ,BIT bSkipIndex)
{
BYTE ucTemp,ucTempInfoBit,ucTempValue;

#if TV_SYSTEM==TV_NTSC
if(g_TVChSetting.ucTVSource == NTSC_ATV)
{
	NVRam_ReadByte(nvrTVChanneSkipInfoAddr(chIdx), &ucTemp);
}
else
{
	NVRam_ReadByte(nvrCATVChanneSkipInfoAddr(chIdx), &ucTemp);
}
#else
	NVRam_ReadByte(nvrTVChanneSkipInfoAddr(chIdx), &ucTemp);
#endif

ucTempInfoBit=chIdx%8;
ucTempValue=((BYTE)bSkipIndex<<ucTempInfoBit);
ucTempInfoBit=1<<ucTempInfoBit;
ucTemp&=~ucTempInfoBit;
ucTemp|=ucTempValue;
#if TV_SYSTEM==TV_NTSC
if(g_TVChSetting.ucTVSource == NTSC_ATV)
{
	g_ucTVChannelSkipInfoBuff[chIdx/8]=ucTemp;
	NVRam_WriteByte(nvrTVChanneSkipInfoAddr(chIdx), ucTemp);
}
else	
{
	g_ucCATVChannelSkipInfoBuff[chIdx/8]=ucTemp;
	NVRam_WriteByte(nvrCATVChanneSkipInfoAddr(chIdx), ucTemp);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩卡一| 9191久久久久久久久久久| 日韩一区二区在线看片| 日韩成人免费在线| 欧美色区777第一页| 亚洲影院久久精品| 欧美日韩一区二区不卡| 日韩国产欧美三级| 日韩欧美中文字幕制服| 国产二区国产一区在线观看| 久久精品男人的天堂| 国产精品69久久久久水密桃| 欧美r级电影在线观看| 国产美女精品人人做人人爽| 国产三级精品在线| 色综合夜色一区| 亚洲国产精品精华液网站 | 91国产免费观看| 一区二区三区蜜桃网| 在线免费不卡视频| 美国毛片一区二区三区| 久久老女人爱爱| 一本到三区不卡视频| 亚洲一区在线视频| 欧美精品日日鲁夜夜添| 裸体一区二区三区| 欧美成人性福生活免费看| 国产精品18久久久久久久久久久久| 2020国产成人综合网| 99视频在线观看一区三区| 夜夜嗨av一区二区三区四季av| 欧美日韩精品系列| 激情六月婷婷久久| 国产亚洲婷婷免费| 欧美三级电影网站| 国产成人av电影在线播放| 中文字幕亚洲区| 欧美精品一区二区三区高清aⅴ | 国产精品系列在线| 欧美日韩免费视频| jizzjizzjizz欧美| 国产在线精品视频| 日本三级亚洲精品| 中文字幕一区二区日韩精品绯色| 欧美色视频在线观看| 日韩有码一区二区三区| 国产精品九色蝌蚪自拍| 欧美变态tickling挠脚心| 色综合天天综合色综合av | 成人在线综合网| 亚洲伊人色欲综合网| 国产精品久久久久久久第一福利| 欧美日韩在线播放三区| 成人性生交大片免费看视频在线 | 欧美性猛交xxxxxx富婆| 韩国精品免费视频| 亚洲国产人成综合网站| 91精品国产入口在线| 国产自产高清不卡| 亚洲在线观看免费视频| 精品成人一区二区| 欧美午夜电影网| 国产sm精品调教视频网站| 一区二区三区四区视频精品免费| 精品少妇一区二区三区在线播放| 波多野结衣视频一区| 韩国欧美国产一区| 樱桃国产成人精品视频| 中文字幕av在线一区二区三区| 欧美三级乱人伦电影| 91在线视频观看| 国产成人免费视频一区| 午夜精品一区二区三区电影天堂 | 亚洲444eee在线观看| 中文幕一区二区三区久久蜜桃| 久久久久久久久久久久久夜| 欧美mv日韩mv| 精品久久久久久久人人人人传媒| 欧美日韩免费一区二区三区视频| 91丨九色丨尤物| 91亚洲永久精品| 99精品欧美一区二区三区小说| 国产91对白在线观看九色| 美国欧美日韩国产在线播放| 久久精品999| 国产在线精品不卡| 国产在线播放一区三区四| 奇米亚洲午夜久久精品| 免费高清在线视频一区·| 亚洲图片欧美一区| 亚洲欧美日韩久久| 亚洲综合免费观看高清完整版在线| 亚洲欧美中日韩| 国产精品久久三区| 亚洲免费观看视频| 亚洲丝袜制服诱惑| 一区二区在线免费观看| 亚洲乱码国产乱码精品精小说| 国产精品毛片无遮挡高清| 欧美国产亚洲另类动漫| 国产精品天美传媒| 亚洲欧洲美洲综合色网| 亚洲电影一级片| 久久精品噜噜噜成人88aⅴ| 奇米影视在线99精品| 图片区小说区区亚洲影院| 亚洲电影你懂得| 天天综合网天天综合色| 麻豆精品视频在线观看免费 | 日韩免费福利电影在线观看| 欧美一区二区在线不卡| 久久久久九九视频| 国产精品电影一区二区| 亚洲欧洲日产国产综合网| 精品一区二区三区在线播放 | 国产精品欧美极品| 亚洲另类在线一区| 久久精品国产一区二区三区免费看| 美女一区二区三区| 韩国v欧美v日本v亚洲v| 99re成人在线| 欧美在线播放高清精品| 欧美情侣在线播放| 欧美情侣在线播放| 久久精品视频网| 亚洲一二三四在线观看| 国产精品99久久久久久久女警| 懂色一区二区三区免费观看| 欧美性猛片aaaaaaa做受| 日韩一区二区三区电影在线观看| 国产日韩精品视频一区| 亚洲精品国产视频| 国产资源在线一区| 欧美自拍丝袜亚洲| 久久久一区二区三区捆绑**| 亚洲综合自拍偷拍| 久草热8精品视频在线观看| 91免费观看视频在线| 国产欧美日韩久久| 日本最新不卡在线| 欧美中文一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在 | 蓝色福利精品导航| 欧美日韩高清影院| 综合婷婷亚洲小说| aaa亚洲精品一二三区| 欧美大片一区二区三区| 午夜精品久久久久久久99樱桃 | 国产精品99久久久| 日韩女优av电影| 日韩国产精品久久久久久亚洲| 91婷婷韩国欧美一区二区| 久久久国际精品| 国产专区欧美精品| 欧美mv日韩mv亚洲| 久久99久久精品| 久久久精品综合| av亚洲精华国产精华| 亚洲精品视频免费观看| 欧美日韩国产天堂| 天天综合日日夜夜精品| 欧美日韩高清不卡| 久久精品国产亚洲高清剧情介绍| 欧美三区免费完整视频在线观看| 亚洲主播在线观看| 欧美情侣在线播放| 亚洲精品你懂的| 91视频观看视频| 一区二区三区精品视频在线| 成人av影视在线观看| 亚洲私人黄色宅男| 91精选在线观看| 丁香桃色午夜亚洲一区二区三区| 久久精品视频一区| 色一情一伦一子一伦一区| 亚洲免费看黄网站| 欧美亚洲自拍偷拍| 一区二区三区国产| 国产91在线观看丝袜| 欧美国产视频在线| 91精品福利视频| 日本欧美肥老太交大片| 制服丝袜日韩国产| 日韩精品电影在线观看| 欧美一级久久久久久久大片| 国产在线一区二区综合免费视频| 亚洲精品在线观| 99国产精品视频免费观看| 同产精品九九九| 久久久久久久久久久电影| 99久久99久久综合| 日韩中文字幕亚洲一区二区va在线 | 欧美最猛黑人xxxxx猛交| 五月天一区二区| 欧美精品一区二区蜜臀亚洲| 99久久99久久免费精品蜜臀| 精品一区二区三区日韩| 亚洲综合另类小说| 国产欧美日韩一区二区三区在线观看| 一个色妞综合视频在线观看|