mirror of
https://github.com/marqs85/ossc.git
synced 2024-06-01 17:41:37 +00:00
it6613: add support for HDR Infoframe
This commit is contained in:
parent
0ce2809183
commit
4bc98224e4
|
@ -339,3 +339,26 @@ void HDMITX_SetAudioInfoFrame(BYTE bAudioDwSampling)
|
|||
|
||||
EnableAudioInfoFrame(TRUE, (BYTE *) &AudioInfo);
|
||||
}
|
||||
|
||||
void HDMITX_SetHDRInfoFrame(BYTE HDR_TF)
|
||||
{
|
||||
int i;
|
||||
HDR_InfoFrame HDRInfo;
|
||||
|
||||
HDRInfo.info.Type = HDR_INFOFRAME_TYPE;
|
||||
HDRInfo.info.Ver = HDR_INFOFRAME_VER;
|
||||
HDRInfo.info.Len = HDR_INFOFRAME_LEN;
|
||||
|
||||
HDRInfo.info.TF = HDR_TF;
|
||||
|
||||
for (i=1; i<HDR_INFOFRAME_LEN; i++) {
|
||||
HDRInfo.pktbyte.HDR_DB[i] = 0;
|
||||
}
|
||||
|
||||
/*HDRInfo.pktbyte.HDR_DB[22] = 0xe8;
|
||||
HDRInfo.pktbyte.HDR_DB[23] = 0x03;
|
||||
HDRInfo.pktbyte.HDR_DB[24] = 0xfa;
|
||||
HDRInfo.pktbyte.HDR_DB[25] = 0x00;*/
|
||||
|
||||
EnableHDRInfoFrame(TRUE, (BYTE *) &HDRInfo);
|
||||
}
|
||||
|
|
|
@ -27,5 +27,6 @@ bool HDMITX_IsSinkSupportColorDepth30(void);
|
|||
void HDMITX_SetOutputColorDepth(int ColorDepth);
|
||||
|
||||
void HDMITX_SetAudioInfoFrame(BYTE bAudioDwSampling);
|
||||
void HDMITX_SetHDRInfoFrame(BYTE enableHDR);
|
||||
|
||||
#endif /*HDMI_TX_H_*/
|
||||
|
|
|
@ -80,6 +80,7 @@ static SYS_STATUS SetAVIInfoFrame(AVI_InfoFrame *pAVIInfoFrame) ;
|
|||
static SYS_STATUS SetAudioInfoFrame(Audio_InfoFrame *pAudioInfoFrame) ;
|
||||
static SYS_STATUS SetSPDInfoFrame(SPD_InfoFrame *pSPDInfoFrame) ;
|
||||
static SYS_STATUS SetMPEGInfoFrame(MPEG_InfoFrame *pMPGInfoFrame) ;
|
||||
static SYS_STATUS SetHDRInfoFrame(HDR_InfoFrame *pHDRInfoFrame) ;
|
||||
static SYS_STATUS ReadEDID(BYTE *pData,BYTE bSegment,BYTE offset,SHORT Count) ;
|
||||
static void AbortDDC() ;
|
||||
static void ClearDDCFIFO() ;
|
||||
|
@ -823,6 +824,22 @@ EnableAudioInfoFrame(BYTE bEnable,BYTE *pAudioInfoFrame)
|
|||
return FALSE ;
|
||||
}
|
||||
|
||||
BOOL
|
||||
EnableHDRInfoFrame(BYTE bEnable, BYTE *pHDRInfoFrame)
|
||||
{
|
||||
if (!bEnable) {
|
||||
DISABLE_NULL_PKT();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if(SetHDRInfoFrame((HDR_InfoFrame *)pHDRInfoFrame) == ER_SUCCESS)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE ;
|
||||
}
|
||||
|
||||
void
|
||||
SetAVMute(BYTE bEnable)
|
||||
{
|
||||
|
@ -3388,6 +3405,38 @@ SetAudioInfoFrame(Audio_InfoFrame *pAudioInfoFrame)
|
|||
return ER_SUCCESS ;
|
||||
}
|
||||
|
||||
static SYS_STATUS
|
||||
SetHDRInfoFrame(HDR_InfoFrame *pHDRInfoFrame)
|
||||
{
|
||||
int i ;
|
||||
BYTE ucData ;
|
||||
|
||||
if(!pHDRInfoFrame)
|
||||
{
|
||||
return ER_FAIL ;
|
||||
}
|
||||
|
||||
Switch_HDMITX_Bank(1) ;
|
||||
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_HB00, (0x80+pHDRInfoFrame->info.Type));
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_HB01, pHDRInfoFrame->info.Ver);
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_HB02, pHDRInfoFrame->info.Len);
|
||||
|
||||
for(i = 0; i < HDR_INFOFRAME_LEN ; i++)
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_PB01+i, pHDRInfoFrame->pktbyte.HDR_DB[i]);
|
||||
|
||||
for(i = 0,ucData = 0 ; i< HDR_INFOFRAME_LEN ; i++)
|
||||
{
|
||||
ucData -= pHDRInfoFrame->pktbyte.HDR_DB[i] ;
|
||||
}
|
||||
ucData -= 0x80+HDR_INFOFRAME_VER+HDR_INFOFRAME_TYPE+HDR_INFOFRAME_LEN ;
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_PB00, ucData);
|
||||
|
||||
Switch_HDMITX_Bank(0) ;
|
||||
ENABLE_NULL_PKT();
|
||||
return ER_SUCCESS ;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Function: SetSPDInfoFrame()
|
||||
// Parameter: pSPDInfoFrame - the pointer to HDMI SPD Infoframe ucData
|
||||
|
|
|
@ -828,6 +828,7 @@ BOOL CheckHDMITX(BYTE *pHPD,BYTE *pHPDChange) ;
|
|||
BOOL EnableHDCP(BYTE bEnable) ;
|
||||
BOOL EnableAVIInfoFrame(BYTE bEnable,BYTE *pAVIInfoFrame);
|
||||
BOOL EnableAudioInfoFrame(BYTE bEnable,BYTE *pAudioInfoFrame);
|
||||
BOOL EnableHDRInfoFrame(BYTE bEnable, BYTE *pHDRInfoFrame);
|
||||
// BOOL EnableVideoOutputIndirect(BYTE xCnt,BYTE inputColorMode,BYTE outputColorMode,BYTE bHDMI) ;
|
||||
void SetAVMute(BYTE bEnable) ;
|
||||
void SetOutputColorDepthPhase(BYTE ColorDepth,BYTE bPhase) ;
|
||||
|
|
|
@ -195,18 +195,21 @@ typedef union _VideoFormatCode
|
|||
#define SPD_INFOFRAME_TYPE 0x03
|
||||
#define AUDIO_INFOFRAME_TYPE 0x04
|
||||
#define MPEG_INFOFRAME_TYPE 0x05
|
||||
#define HDR_INFOFRAME_TYPE 0x07
|
||||
|
||||
#define VENDORSPEC_INFOFRAME_VER 0x01
|
||||
#define AVI_INFOFRAME_VER 0x02
|
||||
#define SPD_INFOFRAME_VER 0x01
|
||||
#define AUDIO_INFOFRAME_VER 0x01
|
||||
#define MPEG_INFOFRAME_VER 0x01
|
||||
#define HDR_INFOFRAME_VER 0x01
|
||||
|
||||
#define VENDORSPEC_INFOFRAME_LEN 8
|
||||
#define AVI_INFOFRAME_LEN 13
|
||||
#define SPD_INFOFRAME_LEN 25
|
||||
#define AUDIO_INFOFRAME_LEN 10
|
||||
#define MPEG_INFOFRAME_LEN 10
|
||||
#define HDR_INFOFRAME_LEN 26
|
||||
|
||||
#define ACP_PKT_LEN 9
|
||||
#define ISRC1_PKT_LEN 16
|
||||
|
@ -316,6 +319,23 @@ typedef union _SPD_InfoFrame {
|
|||
} pktbyte ;
|
||||
} SPD_InfoFrame ;
|
||||
|
||||
// HDR
|
||||
typedef union _HDR_InfoFrame {
|
||||
struct {
|
||||
BYTE Type ;
|
||||
BYTE Ver ;
|
||||
BYTE Len ;
|
||||
|
||||
BYTE TF ; // vendor name character in 7bit ascii characters
|
||||
BYTE DESC_ID ; // product description character in 7bit ascii characters
|
||||
BYTE DESC[24] ;
|
||||
} info ;
|
||||
struct {
|
||||
BYTE HDR_HB[3] ;
|
||||
BYTE HDR_DB[HDR_INFOFRAME_LEN] ;
|
||||
} pktbyte ;
|
||||
} HDR_InfoFrame ;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Using for interface.
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
|
Loading…
Reference in New Issue
Block a user