📄 aprv_htv.c
字号:
HMin = 160;
HMax = 1112;
VMin = 0;
VMax = 1085;
break;
default:
return;
}
/* if(Demo_Switch == 0)
{
iRegister_CE_Demo_left = RIGHT;
iRegister_CE_Demo_up =DOWN;
i11Register_CE_Demo_V_Location = 0;
i12Register_CE_Demo_H_Location = 0;
}*/
// else if(Demo_Switch == 1)
switch(Demo_Switch)
{
case 0: /* all on */
break;
case 1: /*left right half*/
iRegister_CE_Demo_left = LEFT;
iRegister_CE_Demo_up = DOWN;
i11Register_CE_Demo_V_Location = VMin ;
i12Register_CE_Demo_H_Location = HMin + (HMax-HMin) /2 ;
break;
case 2: /* first leftup to rightdown ,then up to down*/
#if(Demo_Switch_2)
if(Demo_Switch_2_On) //dh modify demo2 071008
{
iRegister_CE_Demo_left = LEFT;
iRegister_CE_Demo_up = UP;
i11Register_CE_Demo_V_Location = VMin + ( (long)( (long)(DemoCounter % 100) * (VMax-VMin)) / 100);
i12Register_CE_Demo_H_Location =HMin + ( (long)( (long)(DemoCounter % 100)* (HMax-HMin)) / 100 );
if(DemoCounter % 100==99)
Demo_Switch_2_On=0;
}
// #endif
// #if (Demo_Switch_3)
else
{
iRegister_CE_Demo_left = RIGHT;
iRegister_CE_Demo_up = UP;
i11Register_CE_Demo_V_Location = VMin + ( (long)( (long)(DemoCounter % 100)* (VMax-VMin)) / 100 );
i12Register_CE_Demo_H_Location = 0;
if(DemoCounter % 100==99)
Demo_Switch_2_On=1;
}
#endif //Demo_Switch_2
#if (Demo_Switch_4)
i11Register_CE_Demo_V_Location = VMin + (VMax-VMin)>>1 ;
i12Register_CE_Demo_H_Location = HMin + (HMax-HMin)>>1 ;
switch(Demo_State_Machine)
{
case 0:
iRegister_CE_Demo_left = LEFT;
iRegister_CE_Demo_up = UP;
break;
case 1:
iRegister_CE_Demo_left = RIGHT;
iRegister_CE_Demo_up = UP;
break;
case 2:
iRegister_CE_Demo_left = RIGHT;
iRegister_CE_Demo_up = DOWN;
break;
case 3:
iRegister_CE_Demo_left = LEFT;
iRegister_CE_Demo_up = DOWN;
break;
default:
Demo_State_Machine = 0;
break;
}
#endif //Demo_Switch_4
#if (Demo_Switch_5)
iRegister_CE_Demo_left = LEFT;
iRegister_CE_Demo_up =DOWN;
i11Register_CE_Demo_V_Location = 0;
i12Register_CE_Demo_H_Location =HMin + ( (long)( (long)(DemoCounter % 100)* (HMax-HMin)) / 100 );
#endif //Demo_Switch_5
break;
default:
return;
}
#if 0
if(Demo_Switch == 0)
{
iRegister_CE_Demo_left = LEFT;
iRegister_CE_Demo_up = DOWN;
i11Register_CE_Demo_V_Location = VMin ;
i12Register_CE_Demo_H_Location = HMin + (HMax-HMin)>>1 ;
}
//#if (Demo_Switch_2)
//else if(Demo_Switch == 2)
else if(Demo_Switch == 1)
{
iRegister_CE_Demo_left = LEFT;
iRegister_CE_Demo_up = UP;
i11Register_CE_Demo_V_Location = VMin + ( (long)( (long)(DemoCounter % 100) * (VMax-VMin)) / 100);
i12Register_CE_Demo_H_Location =HMin + ( (long)( (long)(DemoCounter % 100)* (HMax-HMin)) / 100 );
}
//#endif //#if (Demo_Switch_2)
#if (Demo_Switch_3)
else if(Demo_Switch == 2)
{
iRegister_CE_Demo_left = RIGHT;
iRegister_CE_Demo_up = UP;
i11Register_CE_Demo_V_Location = VMin + ( (long)( (long)(DemoCounter % 100)* (VMax-VMin)) / 100 );
i12Register_CE_Demo_H_Location = 0;
}
#endif //Demo_Switch_3
#if (Demo_Switch_4)
else if(Demo_Switch == 2)
{
i11Register_CE_Demo_V_Location = VMin + (VMax-VMin)>>1 ;
i12Register_CE_Demo_H_Location = HMin + (HMax-HMin)>>1 ;
switch(Demo_State_Machine)
{
case 0:
iRegister_CE_Demo_left = LEFT;
iRegister_CE_Demo_up = UP;
break;
case 1:
iRegister_CE_Demo_left = RIGHT;
iRegister_CE_Demo_up = UP;
break;
case 2:
iRegister_CE_Demo_left = RIGHT;
iRegister_CE_Demo_up = DOWN;
break;
case 3:
iRegister_CE_Demo_left = LEFT;
iRegister_CE_Demo_up = DOWN;
break;
default:
Demo_State_Machine = 0;
break;
}
}
#endif //Demo_Switch_4
#if (Demo_Switch_5)
else if(Demo_Switch == 2)
{
iRegister_CE_Demo_left = LEFT;
iRegister_CE_Demo_up = DOWN;
i11Register_CE_Demo_V_Location = 0;
i12Register_CE_Demo_H_Location =HMin + ( (long)( (long)(DemoCounter % 100)* (HMax-HMin)) / 100 );
}
#endif //Demo_Switch_5
#endif //#if 0
#if (Demo_Switch_4)
if( ((DemoCounter%(100>>2))==0) && (Demo_Switch == 2) )
{
Demo_State_Machine++;
if(Demo_State_Machine>3)
Demo_State_Machine = 0;
Config_Register_CE(i11Register_CE_Demo_V_Location,i12Register_CE_Demo_H_Location,iRegister_CE_Demo_left,iRegister_CE_Demo_up);
}
else
#endif //Demo_Switch_4
Config_Register_CE(i11Register_CE_Demo_V_Location,i12Register_CE_Demo_H_Location,iRegister_CE_Demo_left,iRegister_CE_Demo_up);
Write_Enable(FALSE);
}
static void AGC_Adjustment(Byte format)
{
Byte RI2C_EXP_RAM temp[3];
Byte sogslcrthres;
Word Clamp_Level_Y,SyncAmplitude_Y,RegisterAGC_Gain_Y,SyncAmplitude_Y_NoGain;
Clamp_Level_Y = (format==0x06 ? 350 : 300);//06-480p
ri2c_ReadSub(PLM1000_ADDR,2,temp,120);
temp[0]= ( temp[0] & 0xf0) | (( Clamp_Level_Y & 0x3c0 )>> 6) ;
temp[1]= ( temp[1] & 0xc0) | ( Clamp_Level_Y & 0x3f ) ;
Write_HTV_Register(PLM1000_ADDR,2,temp,120);
ri2c_ReadSub(PLM1000_ADDR,2,temp,228);
ri2c_ReadSub(PLM1000_ADDR,1,&temp[2],235);
SyncAmplitude_Y = ((Word)(temp[0] & 0x1) << 9) + ((Word)temp[1] << 1) +(Word)((temp[2] & 0x80) >> 7);
ri2c_ReadSub(PLM1000_ADDR,1,&temp[0],174);
ri2c_ReadSub(PLM1000_ADDR,1,&temp[1],176);
RegisterAGC_Gain_Y = ((Word)(temp[0] & 0x3) << 8) +(Word)temp[1] ;
if(RegisterAGC_Gain_Y == 0)
RegisterAGC_Gain_Y = 512;
if(AGCth)
{
SyncAmplitude_Y_NoGain = (long)SyncAmplitude_Y*512/RegisterAGC_Gain_Y;
if(SyncAmplitude_Y_NoGain>155 &&SyncAmplitude_Y_NoGain<=224)
sogslcrthres = (Word)(SyncAmplitude_Y_NoGain*2/69-0.5);
else if(SyncAmplitude_Y_NoGain>224 &&SyncAmplitude_Y_NoGain<=296)
sogslcrthres = (Word)(SyncAmplitude_Y_NoGain*5/71)-10;
else if(SyncAmplitude_Y_NoGain>296 && SyncAmplitude_Y_NoGain<320)
sogslcrthres = (Word)(SyncAmplitude_Y_NoGain/6)-38;
else
sogslcrthres =0;
if((pre_sog-sogslcrthres)>1 ||(pre_sog-sogslcrthres)<-1)
{
ri2c_ReadSub(PLM1000_ADDR,1,&temp[0],16);
temp[0] = ( ( sogslcrthres & 0x1f )<< 3 ) | ( temp[0] & 0x07 ) ;
Write_HTV_Register(PLM1000_ADDR,1,&temp[0],16);
}
pre_sog=sogslcrthres;
}
/*
if(AGCGain)
{
if(SyncAmplitude_Y<100)
return;
else if(SyncAmplitude_Y<(format==0x06 ? 230 : 270))
RegisterAGC_Gain_Y++;
else
RegisterAGC_Gain_Y--;
if(RegisterAGC_Gain_Y>1023)
RegisterAGC_Gain_Y=1023;
ri2c_ReadSub(PLM1000_ADDR,1,&temp[0],174);
temp[0] = ( temp[0] & 0xfc ) | (( RegisterAGC_Gain_Y & 0x300 ) >> 8 );
temp[1] = RegisterAGC_Gain_Y & 0xff;
Write_HTV_Register(PLM1000_ADDR,1,&temp[0],174);
Write_HTV_Register(PLM1000_ADDR,1,&temp[1],176);
}
*/
}
static void i2c_config(void)
{
Byte RI2C_EXP_RAM value = 1;
Write_HTV_Register(PLM1000_ADDR,1,&value,0x66);
ri2c_ReadSub(PLM1000_ADDR,1,&value,0x9d);
value = value & 0xef ;
Write_HTV_Register(PLM1000_ADDR,1,&value,0x9d);
value = value | 0x10 ;
Write_HTV_Register(PLM1000_ADDR,1,&value,0x9d);
value = value & 0xef ;
Write_HTV_Register(PLM1000_ADDR,1,&value,0x9d);
}
static void Switch_to_VGA(void)
{
Byte RI2C_EXP_RAM value[3];
if(VGA_Input ==1)
return;
else
VGA_Input=1;
ri2c_ReadSub(PLM1000_ADDR,2,value,14);
value[0] = (value[0] & 0xf6) ;
value[1] = (value[1] & 0xdf) ;
value[2] = 80;
Write_HTV_Register(PLM1000_ADDR,3,value,14);
// ri2c_ReadSub(PLM1000_ADDR,1,&value,14);
// value = (value & 0xf6) ;
// Write_HTV_Register(PLM1000_ADDR,1,&value,14);
// ri2c_ReadSub(PLM1000_ADDR,1,&value,15);
// value = (value & 0xdf) ;
// Write_HTV_Register(PLM1000_ADDR,1,&value,15);
// value = 80;
// Write_HTV_Register(PLM1000_ADDR,1,&value,16);
value[0] = 142;
value[1] = 190;
value[2] = 142;
Write_HTV_Register(PLM1000_ADDR,3,value,22);
// value = 142;
// Write_HTV_Register(PLM1000_ADDR,1,&value,22);
// value = 190;
// Write_HTV_Register(PLM1000_ADDR,1,&value,23);
// value = 142;
// Write_HTV_Register(PLM1000_ADDR,1,&value,24);
}
static void Switch_to_HD(void)
{
Byte RI2C_EXP_RAM value[3];
if(VGA_Input ==0)
return;
else
VGA_Input=0;
ri2c_ReadSub(PLM1000_ADDR,2,value,14);
value[0] = (value[0] & 0xf6) | (1<<3) | 1 ;
value[1] = ((value[1] & 0xdf) | (1<<5)) ;
value[2] = 85;
Write_HTV_Register(PLM1000_ADDR,3,value,14);
// ri2c_ReadSub(PLM1000_ADDR,1,&value,14);
// value = (value & 0xf6) | (1<<3) | 1 ;
// Write_HTV_Register(PLM1000_ADDR,1,&value,14);
// ri2c_ReadSub(PLM1000_ADDR,1,&value,15);
// value = ((value & 0xdf) | (1<<5)) ;
// Write_HTV_Register(PLM1000_ADDR,1,&value,15);
// value = 85;
// Write_HTV_Register(PLM1000_ADDR,1,&value,16);
value[0] = 156;
value[1] = 220;
value[2] = 156;
Write_HTV_Register(PLM1000_ADDR,3,value,22);
// value = 156;
// Write_HTV_Register(PLM1000_ADDR,1,&value,22);
// value = 220;
// Write_HTV_Register(PLM1000_ADDR,1,&value,23);
// value = 156;
// Write_HTV_Register(PLM1000_ADDR,1,&value,24);
}
static void jbl_Delay(void)
{
jbl_DelayActive=TRUE;
jbl_DelayNum=0;
}
static void Write_HTV_Register(Byte slv_addr,
Byte cnt,
Byte RI2C_EXP_RAM *src_ptr,
Byte sub_addr)
{
ri2c_WriteSub( slv_addr,
cnt,
src_ptr,
sub_addr);
}
#if 0
Bool jbl_get_det_src(void) // only do in TV and AV1
{
Detect_Num ++;
if(Detect_Num < 18)
{
if(Detect_Num < 3) // 1,2 initial data
{
filter_number[0] = 0;
Write_Enable(TRUE);
PLM1000_init(FSRT_SRC_DVD);
Switch_to_HD();
Write_Enable(FALSE);
}
}
else if(Detect_Num<36) // VGA input
{
if(Detect_Num < 20) // 18,19 initial data
{
filter_number[1] = 0;
Write_Enable(TRUE);
PLM1000_init(FSRT_SRC_VGA);
Switch_to_VGA();
Write_Enable(FALSE);
}
}
if(Detect_Num < 13 ||(Detect_Num < 30 && Detect_Num >= 18)) // 14 * 50ms delay after switch
return FALSE;
if(Detect_Num >= 36)
Detect_Num = 0;
Jbl_plm1000_format_monitor();
rbsc_Wait100uSteps(50);
if(Jbl_plm1000_format_monitor())
{
if(((cur_ip_format&0x1f)>= 0)&&((cur_ip_format&0x1f) < 15)&&(jbl_bPreHD == 0)) //HD
{
jbl_bPreHD =TRUE;
jbl_InputPortDetect=FSRT_SRC_DVD;
return TRUE;
}
else if(((cur_ip_format&0x1f)>15)&&((cur_ip_format&0x1f)<19)&&(jbl_bPreVGA == 0)) // VGA
{
jbl_bPreVGA =TRUE;
jbl_InputPortDetect=FSRT_SRC_VGA;
return TRUE;
}
}
return (FALSE);
}
#endif
#endif /*#if(GTVA_HTV_PLM_PRESENT == TRUE)*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -