///***************************************** // Copyright (C) 2009-2019 // ITE Tech. Inc. All Rights Reserved // Proprietary and Confidential ///***************************************** // @file // @author Jau-Chih.Tseng@ite.com.tw // @date 2019/01/03 // @fileversion: ITE_HDMITX_SAMPLE_3.27 //******************************************/ #ifndef _HDMITX_SYS_H_ #define _HDMITX_SYS_H_ #define I2S 0 #define SPDIF 1 #define TDM 2 #ifndef I2S_FORMAT #define I2S_FORMAT 0x01 // 32bit audio #endif #ifndef INPUT_SAMPLE_FREQ #define INPUT_SAMPLE_FREQ AUDFS_48KHz #endif //INPUT_SAMPLE_FREQ #ifndef INPUT_SAMPLE_FREQ_HZ #define INPUT_SAMPLE_FREQ_HZ 48000L #endif //INPUT_SAMPLE_FREQ_HZ #ifndef OUTPUT_CHANNEL #define OUTPUT_CHANNEL 2 #endif //OUTPUT_CHANNEL #ifndef CNOFIG_INPUT_AUDIO_TYPE #define CNOFIG_INPUT_AUDIO_TYPE T_AUDIO_LPCM // #define CNOFIG_INPUT_AUDIO_TYPE T_AUDIO_NLPCM // #define CNOFIG_INPUT_AUDIO_TYPE T_AUDIO_HBR #endif //CNOFIG_INPUT_AUDIO_TYPE #ifndef CONFIG_INPUT_AUDIO_INTERFACE #define CONFIG_INPUT_AUDIO_INTERFACE I2S // #define CONFIG_INPUT_AUDIO_INTERFACE SPDIF #endif //CONFIG_INPUT_AUDIO_INTERFACE #ifndef INPUT_SIGNAL_TYPE #define INPUT_SIGNAL_TYPE 0 // 24 bit sync seperate #endif //////////////////////////////////////////////////////////////////////////////// // Internal Data Type //////////////////////////////////////////////////////////////////////////////// typedef enum tagHDMI_Video_Type { HDMI_Unkown = 0 , HDMI_640x480p60 = 1 , HDMI_480p60, HDMI_480p60_16x9, HDMI_720p60, HDMI_1080i60, HDMI_480i60, HDMI_480i60_16x9, HDMI_1080p60 = 16, HDMI_576p50, HDMI_576p50_16x9, HDMI_720p50, HDMI_1080i50, HDMI_576i50, HDMI_576i50_16x9, HDMI_1080p50 = 31, HDMI_1080p24, HDMI_1080p25, HDMI_1080p30, HDMI_720p30 = 61, } HDMI_Video_Type ; typedef enum tagHDMI_Aspec { HDMI_4x3 , HDMI_16x9 } HDMI_Aspec; typedef enum tagHDMI_OutputColorMode { HDMI_RGB444, HDMI_YUV444, HDMI_YUV422 } HDMI_OutputColorMode ; typedef enum tagHDMI_Colorimetry { HDMI_ITU601, HDMI_ITU709 } HDMI_Colorimetry ; struct VideoTiming { ULONG VideoPixelClock ; BYTE VIC ; BYTE pixelrep ; BYTE outputVideoMode ; } ; typedef enum _TXVideo_State_Type { TXVSTATE_Unplug = 0, TXVSTATE_HPD, TXVSTATE_WaitForMode, TXVSTATE_WaitForVStable, TXVSTATE_VideoInit, TXVSTATE_VideoSetup, TXVSTATE_VideoOn, TXVSTATE_Reserved } TXVideo_State_Type ; typedef enum _TXAudio_State_Type { TXASTATE_AudioOff = 0, TXASTATE_AudioPrepare, TXASTATE_AudioOn, TXASTATE_AudioFIFOFail, TXASTATE_Reserved } TXAudio_State_Type ; ///////////////////////////////////////// // RX Capability. ///////////////////////////////////////// typedef struct { BYTE b16bit:1 ; BYTE b20bit:1 ; BYTE b24bit:1 ; BYTE Rsrv:5 ; } LPCM_BitWidth ; typedef enum { AUD_RESERVED_0 = 0 , AUD_LPCM, AUD_AC3, AUD_MPEG1, AUD_MP3, AUD_MPEG2, AUD_AAC, AUD_DTS, AUD_ATRAC, AUD_ONE_BIT_AUDIO, AUD_DOLBY_DIGITAL_PLUS, AUD_DTS_HD, AUD_MAT_MLP, AUD_DST, AUD_WMA_PRO, AUD_RESERVED_15 } AUDIO_FORMAT_CODE ; typedef union { struct { BYTE channel:3 ; BYTE AudioFormatCode:4 ; BYTE Rsrv1:1 ; BYTE b32KHz:1 ; BYTE b44_1KHz:1 ; BYTE b48KHz:1 ; BYTE b88_2KHz:1 ; BYTE b96KHz:1 ; BYTE b176_4KHz:1 ; BYTE b192KHz:1 ; BYTE Rsrv2:1 ; BYTE ucCode ; } s ; BYTE uc[3] ; } AUDDESCRIPTOR ; typedef union { struct { BYTE FL_FR:1 ; BYTE LFE:1 ; BYTE FC:1 ; BYTE RL_RR:1 ; BYTE RC:1 ; BYTE FLC_FRC:1 ; BYTE RLC_RRC:1 ; BYTE Reserve:1 ; BYTE Unuse[2] ; } s ; BYTE uc[3] ; } SPK_ALLOC ; #define CEA_SUPPORT_UNDERSCAN (1<<7) #define CEA_SUPPORT_AUDIO (1<<6) #define CEA_SUPPORT_YUV444 (1<<5) #define CEA_SUPPORT_YUV422 (1<<4) #define CEA_NATIVE_MASK 0xF #define HDMI_DC_SUPPORT_AI (1<<7) #define HDMI_DC_SUPPORT_48 (1<<6) #define HDMI_DC_SUPPORT_36 (1<<5) #define HDMI_DC_SUPPORT_30 (1<<4) #define HDMI_DC_SUPPORT_Y444 (1<<3) #define HDMI_DC_SUPPORT_DVI_DUAL 1 typedef union _tag_DCSUPPORT { struct { BYTE DVI_Dual:1 ; BYTE Rsvd:2 ; BYTE DC_Y444:1 ; BYTE DC_30Bit:1 ; BYTE DC_36Bit:1 ; BYTE DC_48Bit:1 ; BYTE SUPPORT_AI:1 ; } info ; BYTE uc ; } DCSUPPORT ; typedef union _LATENCY_SUPPORT{ struct { BYTE Rsvd:6 ; BYTE I_Latency_Present:1 ; BYTE Latency_Present:1 ; } info ; BYTE uc ; } LATENCY_SUPPORT ; #define HDMI_IEEEOUI 0x0c03 #define MAX_VODMODE_COUNT 32 #define MAX_AUDDES_COUNT 4 typedef struct _RX_CAP{ BYTE VideoMode ; BYTE NativeVDOMode ; BYTE VDOMode[8] ; BYTE AUDDesCount ; AUDDESCRIPTOR AUDDes[MAX_AUDDES_COUNT] ; BYTE PA[2] ; ULONG IEEEOUI ; DCSUPPORT dc ; BYTE MaxTMDSClock ; LATENCY_SUPPORT lsupport ; SPK_ALLOC SpeakerAllocBlk ; BYTE ValidCEA:1 ; BYTE ValidHDMI:1 ; BYTE Valid3D:1 ; } RX_CAP ; /////////////////////////////////////////////////////////////////////// // Output Mode Type /////////////////////////////////////////////////////////////////////// #define RES_ASPEC_4x3 0 #define RES_ASPEC_16x9 1 #define F_MODE_REPT_NO 0 #define F_MODE_REPT_TWICE 1 #define F_MODE_REPT_QUATRO 3 #define F_MODE_CSC_ITU601 0 #define F_MODE_CSC_ITU709 1 void InitHDMITX_Variable(); void HDMITX_ChangeDisplayOption(HDMI_Video_Type VideoMode, HDMI_OutputColorMode OutputColorMode); void HDMITX_SetOutput(); void HDMITX_DevLoopProc(); void ConfigfHdmiVendorSpecificInfoFrame(BYTE _3D_Stru); void HDMITX_ChangeAudioOption(BYTE Option, BYTE channelNum, BYTE AudioFs); void HDMITX_SetAudioOutput(); void HDMITX_ChangeColorDepth(BYTE colorDepth); #endif // _HDMITX_SYS_H_