Sync processing rewritten and some issues fixed

* add 480i/576i line3x/4x
* clean up RTL and SDC
* update AVI infoframe properly
* add HDMI IT content option
This commit is contained in:
marqs committed 2017-05-18 23:36:37 +03:00
1 parent 01b5fe20ee
commit 4f36278cb7
25 files changed
+2814 -1993

No files matched your search

+11 -11
View File
@@ -78,19 +78,18 @@ bool HDMITX_HPD(void){
}
void HDMITX_SetAVIInfoFrame(alt_u8 VIC, alt_u8 OutputColorMode, bool b16x9, bool ITU709)
void HDMITX_SetAVIInfoFrame(alt_u8 VIC, bool b16x9, bool ITU709, bool ITC, alt_u8 pixelrep)
{
AVI_InfoFrame AviInfo;
alt_u8 pixelrep = 0;
OS_PRINTF("HDMITX_SetAVIInfoFrame, VIC=%d, ColorMode=%d, Aspect-Ratio=%s, ITU709=%s\n",
VIC, OutputColorMode, b16x9?"16:9":"4:3", ITU709?"Yes":"No");
AVI_InfoFrame AviInfo;
OS_PRINTF("HDMITX_SetAVIInfoFrame, VIC=%d, Aspect-Ratio=%s, ITU709=%s, ITC=%s, pixelrep=%u\n",
VIC, b16x9?"16:9":"4:3", ITU709?"Yes":"No", ITC?"Yes":"No", pixelrep);
AviInfo.pktbyte.AVI_HB[0] = AVI_INFOFRAME_TYPE|0x80 ;
AviInfo.pktbyte.AVI_HB[1] = AVI_INFOFRAME_VER ;
AviInfo.pktbyte.AVI_HB[2] = AVI_INFOFRAME_LEN ;
switch(OutputColorMode)
/*switch(OutputColorMode)
{
case F_MODE_YUV444:
// AviInfo.info.ColorMode = 2 ;
@@ -105,14 +104,15 @@ void HDMITX_SetAVIInfoFrame(alt_u8 VIC, alt_u8 OutputColorMode, bool b16x9, bool
// AviInfo.info.ColorMode = 0 ;
AviInfo.pktbyte.AVI_DB[0] = (0<<5)|(1<<4) ;
break ;
}
}*/
AviInfo.pktbyte.AVI_DB[0] = (0<<5)|(1<<4) ;
AviInfo.pktbyte.AVI_DB[0] |= 2; // indicate "no overscan"
AviInfo.pktbyte.AVI_DB[1] = 8 ;
AviInfo.pktbyte.AVI_DB[1] |= (!b16x9)?(1<<4):(2<<4) ; // 4:3 or 16:9
//AviInfo.pktbyte.AVI_DB[1] |= (!b16x9)?(1<<4):(2<<4) ; // 4:3 or 16:9
AviInfo.pktbyte.AVI_DB[1] |= (!ITU709)?(1<<6):(2<<6) ; // ITU709 or ITU601
AviInfo.pktbyte.AVI_DB[2] = (1<<3) ; // indicate "full-range RGB"
AviInfo.pktbyte.AVI_DB[2] = ((1<<3) | (ITC<<7)) ; // indicate "full-range RGB", setup ITC bit
AviInfo.pktbyte.AVI_DB[3] = VIC ;
AviInfo.pktbyte.AVI_DB[4] = pixelrep & 3 ;
AviInfo.pktbyte.AVI_DB[4] = pixelrep & 3 ;
AviInfo.pktbyte.AVI_DB[5] = 0 ;
AviInfo.pktbyte.AVI_DB[6] = 0 ;
AviInfo.pktbyte.AVI_DB[7] = 0 ;
+1 -1
View File
@@ -12,7 +12,7 @@ bool HDMITX_ChipVerify(void);
bool HDMITX_HPD(void);
void HDMITX_ChangeVideoTiming(int VIC);
void HDMITX_ChangeVideoTimingAndColor(int VIC, COLOR_TYPE Color);
void HDMITX_SetAVIInfoFrame(alt_u8 VIC, alt_u8 OutputColorMode, bool b16x9, bool ITU709);
void HDMITX_SetAVIInfoFrame(alt_u8 VIC, bool b16x9, bool ITU709, bool ITC, alt_u8 pixelrep);
void HDMITX_DisableVideoOutput(void);
void HDMITX_EnableVideoOutput(void);
+7 -16
View File
@@ -3274,25 +3274,16 @@ DISABLE_MPG_INFOFRM_PKT()
HDMITX_WriteI2C_Byte(REG_TX_MPG_INFOFRM_CTRL,0);
}
void HDMITX_SetPixelRepetition(int pixelrep, int set_infoframe) {
void HDMITX_SetPixelRepetition(BYTE pixelrep, BYTE set_infoframe) {
BYTE pllpr;
//Switch_HDMITX_Bank(0);
pllpr = HDMITX_ReadI2C_Byte(REG_TX_CLK_CTRL1) & 0x2F;
pixelrep &= 0x3;
if (set_infoframe) {
HDMITX_WriteI2C_Byte(REG_TX_CLK_CTRL1, pllpr);
Switch_HDMITX_Bank(1);
HDMITX_WriteI2C_Byte(REG_TX_AVIINFO_DB5, pixelrep);
} else {
pllpr |= (1<<4)|(pixelrep<<6);
HDMITX_WriteI2C_Byte(REG_TX_CLK_CTRL1, pllpr);
Switch_HDMITX_Bank(1);
HDMITX_WriteI2C_Byte(REG_TX_AVIINFO_DB5, 0);
}
Switch_HDMITX_Bank(0);
pllpr = HDMITX_ReadI2C_Byte(REG_TX_CLK_CTRL1) & 0x2F;
if (!set_infoframe)
pllpr |= (1<<4)|((pixelrep&0x3)<<6);
HDMITX_WriteI2C_Byte(REG_TX_CLK_CTRL1, pllpr);
}
//////////////////////////////////////////////////////////////////////
+1 -1
View File
@@ -834,7 +834,7 @@ BOOL EnableAudioInfoFrame(BYTE bEnable,BYTE *pAudioInfoFrame);
void SetAVMute(BYTE bEnable) ;
void SetOutputColorDepthPhase(BYTE ColorDepth,BYTE bPhase) ;
void Get6613Reg(BYTE *pReg) ;
void HDMITX_SetPixelRepetition(int pixelrep, int set_infoframe);
void HDMITX_SetPixelRepetition(BYTE pixelrep, BYTE set_infoframe);
////////////////////////////////////////////////////////////////////
// Required Interfance