📄 tmbslhdmitx_app.c
字号:
* User: Djw Date: 22/08/06 Time: 9:59
* Updated in $/Source/tmbslHdmiTx/Src
* NO_HDCP modifications. Change Request 13.
*
* ***************** Version 13 *****************
* User: Mayhew Date: 10/07/06 Time: 13:15
* Updated in $/Source/tmbslHdmiTx/Src
* Fix file header comment. Aspect ratio codes now 1 not 0 for 4:3.
* Fix VGA format lookup.
* New refpix/refline values. Add Verified value for each combination.
* Sync Once values now based on scaler mode not output format.
* Reduce delay before HandleBKSV for reliability. Fix GCC warnings.
*
* ***************** Version 11 *****************
* User: Mayhew Date: 30/06/06 Time: 12:44
* Updated in $/Source/tmbslHdmiTx/Src
* Add audioFmt parameter to appHdmiTx_setInputOutput.
* New kRefpixRefline values, based on pixRate not voutMode.
*
* ***************** Version 10 *****************
* User: Mayhew Date: 29/06/06 Time: 16:35
* Updated in $/Source/tmbslHdmiTx/Src
* New refpix/refline values. Add audioFmt audio format argument. Collect
* all input sync settings under syncIn argument. Add RGB swapTable
* values.
*
* ***************** Version 8 *****************
* User: Mayhew Date: 5/06/06 Time: 15:02
* Updated in $/Source/tmbslHdmiTx/Src
* Rename syncSrc to syncIn. Remove 2nd param from handleBCAPS.
* Add pVidFmtNew param to appHdmiTx_nextEdidVidFmt.
* Input port mapping depends on vinMode.
* Several settings differ for CCIR656 rather than set as constants.
* Use table of refpix/refline values for combinations of input/output.
* Use table fo aspect ratios per vouFmt
*
* ***************** Version 6 *****************
* User: Mayhew Date: 22/05/06 Time: 15:56
* Updated in $/Source/tmbslHdmiTx/Src
* Add pixRate to appHdmiTx_setInputOutput. Add appHdmiTx_nextEdidVidFmt.
*
* ***************** Version 4 *****************
* User: Mayhew Date: 19/05/06 Time: 11:33
* Updated in $/Source/tmbslHdmiTx/Src
* Add options parameter to appHdmiTx_Hdcp_On
*
* ***************** Version 3 *****************
* User: Mayhew Date: 10/05/06 Time: 17:09
* Updated in $/Source/tmbslHdmiTx/Src
* New APIs for HDCP and parameterised format setting
*
* ***************** Version 2 *****************
* User: Mayhew Date: 11/04/06 Time: 14:18
* Updated in $/Source/tmbslHdmiTx/Src
* Fixed bad colours in phase 2 demo: MATMODE_AUTO not _OFF, UPSAMPLE_AUTO
* not _COPY.
* ScalerSetFine values changed from script for 1080i.
* SD output format uses 59Hz not 60Hz.
* For cleaner image changes, disabled scaler input instead of output
* frame.
\endverbatim
*
*/
/*============================================================================*/
/* STANDARD INCLUDE FILES */
/*============================================================================*/
/*============================================================================*/
/* PROJECT INCLUDE FILES */
/* Note that tmbslHdmiTx_local.h is NOT included, because local driver data */
/* should NOT be accessed from application code. */
/*============================================================================*/
#include "tmbslHdmiTx.h"
#include "tmbslHdmiTx_app.h"
#ifdef TMFL_TDA9981_SUPPORT
#include "tmbslHdmiTx_cfg.h"
#endif /* TMFL_TDA9981_SUPPORT */
/*============================================================================*/
/* MACRO DEFINITIONS */
/*============================================================================*/
/**
* A macro to check a condition and if true return a result
*/
#define RETIF(cond, rslt) if ((cond)){return (rslt);}
/* Arbitrary short TV format values */
#define TV_INVALID 0
#define TV_VGA_60Hz 1
#define TV_240p_60Hz 2
#define TV_480p_60Hz 3
#define TV_480i_60Hz 4
#define TV_720p_60Hz 5
#define TV_1080p_60Hz 6
#define TV_1080i_60Hz 7
#define TV_288p_50Hz 8
#define TV_576p_50Hz 9
#define TV_576i_50Hz 10
#define TV_720p_50Hz 11
#define TV_1080p_50Hz 12
#define TV_1080i_50Hz 13
/* Shorthands for vinMode values in tmbslHdmiTx.h */
#define iINVALID HDMITX_VINMODE_INVALID
#define iCCIR656 HDMITX_VINMODE_CCIR656
#define iRGB444 HDMITX_VINMODE_RGB444
#define iYUV444 HDMITX_VINMODE_YUV444
#define iYUV422 HDMITX_VINMODE_YUV422
/* Shorthands for input sync */
#define EMB 1
#define EXT 0
/* Shorthands for single/double pixel rate in tmbslHdmiTx.h */
#define SINGLE HDMITX_PIXRATE_SINGLE
#define DOUBLE HDMITX_PIXRATE_DOUBLE
/* Shorthands for sampling frequency in appHdmiTx_setAudio API */#define AIF_SF_REFER_TO_STREAM_HEADER 0#define AIF_SF_32K 1#define AIF_SF_44K 2#define AIF_SF_48K 3#define AIF_SF_88K 4#define AIF_SF_96K 5#define AIF_SF_176K 6#define AIF_SF_192K 7
/* HDCP check interval in milliseconds */
#define HDCP_CHECK_INTERVAL_MS 2500
/* Number of HDCP checks to carry out after HDCP is started */
#define HDCP_NUM_CHECKS 5
/*============================================================================*/
/* TYPE DEFINITIONS */
/*============================================================================*/
/*============================================================================*/
/* PUBLIC VARIABLE DEFINITIONS */
/*============================================================================*/
/*============================================================================*/
/* STATIC CONSTANT DECLARATIONS */
/*============================================================================*/
#define APP_HDMITX_CHANNELALLOC_LUT_SIZE 32static CONST_DAT UInt8 kChanAllocChanNum[APP_HDMITX_CHANNELALLOC_LUT_SIZE] = \{2,3,3,4,3,4,4,5,4,5,5,6,5,6,6,7,6,7,7,8,4,5,5,6,5,6,6,7,6,7,7,8 };
/**
* Lookup table to convert from EIA/CEA TV video format to
* aspect ratio used in video infoframe:
* Aspect ratio 1=4:3, 2=16:9
*/
#ifndef FORMAT_PC
static CONST_DAT UInt8 kVfmtToAspect_TV[HDMITX_VFMT_TV_NUM] =
#else /* FORMAT_PC */
static CONST_DAT UInt8 kVfmtToAspect_TV[HDMITX_VFMT_TV_NUM + HDMITX_VFMT_PC_NUM] =
#endif /* FORMAT_PC */
{
0, /* HDMITX_VFMT_NULL */
1, /* HDMITX_VFMT_01_640x480p_60Hz */
1, /* HDMITX_VFMT_02_720x480p_60Hz */
2, /* HDMITX_VFMT_03_720x480p_60Hz */
2, /* HDMITX_VFMT_04_1280x720p_60Hz */
2, /* HDMITX_VFMT_05_1920x1080i_60Hz */
1, /* HDMITX_VFMT_06_720x480i_60Hz */
2, /* HDMITX_VFMT_07_720x480i_60Hz */
1, /* HDMITX_VFMT_08_720x240p_60Hz */
2, /* HDMITX_VFMT_09_720x240p_60Hz */
1, /* HDMITX_VFMT_10_720x480i_60Hz */
2, /* HDMITX_VFMT_11_720x480i_60Hz */
1, /* HDMITX_VFMT_12_720x240p_60Hz */
2, /* HDMITX_VFMT_13_720x240p_60Hz */
1, /* HDMITX_VFMT_14_1440x480p_60Hz */
2, /* HDMITX_VFMT_15_1440x480p_60Hz */
2, /* HDMITX_VFMT_16_1920x1080p_60Hz */
1, /* HDMITX_VFMT_17_720x576p_50Hz */
2, /* HDMITX_VFMT_18_720x576p_50Hz */
2, /* HDMITX_VFMT_19_1280x720p_50Hz */
2, /* HDMITX_VFMT_20_1920x1080i_50Hz */
1, /* HDMITX_VFMT_21_720x576i_50Hz */
2, /* HDMITX_VFMT_22_720x576i_50Hz */
1, /* HDMITX_VFMT_23_720x288p_50Hz */
2, /* HDMITX_VFMT_24_720x288p_50Hz */
1, /* HDMITX_VFMT_25_720x576i_50Hz */
2, /* HDMITX_VFMT_26_720x576i_50Hz */
1, /* HDMITX_VFMT_27_720x288p_50Hz */
2, /* HDMITX_VFMT_28_720x288p_50Hz */
1, /* HDMITX_VFMT_29_1440x576p_50Hz */
2, /* HDMITX_VFMT_30_1440x576p_50Hz */
2, /* HDMITX_VFMT_31_1920x1080p_50Hz */
2, /* HDMITX_VFMT_32_1920x1080p_24Hz */
2, /* HDMITX_VFMT_33_1920x1080p_25Hz */
2 /* HDMITX_VFMT_34_1920x1080p_30Hz */
#ifdef FORMAT_PC
,1, /* HDMITX_VFMT_PC_640x480p_60Hz */
1, /* HDMITX_VFMT_PC_800x600p_60Hz */
1, /* HDMITX_VFMT_PC_1152x960p_60Hz */
1, /* HDMITX_VFMT_PC_1024x768p_60Hz */
1, /* HDMITX_VFMT_PC_1280x768p_60Hz */
1, /* HDMITX_VFMT_PC_1280x1024p_60Hz */
1, /* HDMITX_VFMT_PC_1360x768p_60Hz */
1, /* HDMITX_VFMT_PC_1400x1050p_60Hz */
1, /* HDMITX_VFMT_PC_1600x1200p_60Hz */
1, /* HDMITX_VFMT_PC_1024x768p_70Hz */
1, /* HDMITX_VFMT_PC_640x480p_72Hz */
1, /* HDMITX_VFMT_PC_800x600p_72Hz */
1, /* HDMITX_VFMT_PC_640x480p_75Hz */
1, /* HDMITX_VFMT_PC_1024x768p_75Hz */
1, /* HDMITX_VFMT_PC_800x600p_75Hz */
1, /* HDMITX_VFMT_PC_1024x864p_75Hz */
1, /* HDMITX_VFMT_PC_1280x1024p_75Hz */
1, /* HDMITX_VFMT_PC_640x350p_85Hz */
1, /* HDMITX_VFMT_PC_640x400p_85Hz */
1, /* HDMITX_VFMT_PC_720x400p_85Hz */
1, /* HDMITX_VFMT_PC_640x480p_85Hz */
1, /* HDMITX_VFMT_PC_800x600p_85Hz */
1, /* HDMITX_VFMT_PC_1024x768p_85Hz */
1, /* HDMITX_VFMT_PC_1152x864p_85Hz */
1, /* HDMITX_VFMT_PC_1280x960p_85Hz */
1, /* HDMITX_VFMT_PC_1280x1024p_85Hz */
1 /* HDMITX_VFMT_PC_1024x768i_87Hz */
#endif /* FORMAT_PC */
};
/**
* Lookup table to convert from EIA/CEA TV video format to
* the short format of resolution/interlace/frequency
*/
static CONST_DAT UInt8 kVfmtToShortFmt_TV[HDMITX_VFMT_TV_NUM] =
{
TV_INVALID, /* HDMITX_VFMT_NULL */
TV_VGA_60Hz, /* HDMITX_VFMT_01_640x480p_60Hz */
TV_480p_60Hz, /* HDMITX_VFMT_02_720x480p_60Hz */
TV_480p_60Hz, /* HDMITX_VFMT_03_720x480p_60Hz */
TV_720p_60Hz, /* HDMITX_VFMT_04_1280x720p_60Hz */
TV_1080i_60Hz, /* HDMITX_VFMT_05_1920x1080i_60Hz */
TV_480i_60Hz, /* HDMITX_VFMT_06_720x480i_60Hz */
TV_480i_60Hz, /* HDMITX_VFMT_07_720x480i_60Hz */
TV_240p_60Hz, /* HDMITX_VFMT_08_720x240p_60Hz */
TV_240p_60Hz, /* HDMITX_VFMT_09_720x240p_60Hz */
TV_480i_60Hz, /* HDMITX_VFMT_10_720x480i_60Hz */
TV_480i_60Hz, /* HDMITX_VFMT_11_720x480i_60Hz */
TV_240p_60Hz, /* HDMITX_VFMT_12_720x240p_60Hz */
TV_240p_60Hz, /* HDMITX_VFMT_13_720x240p_60Hz */
TV_480p_60Hz, /* HDMITX_VFMT_14_1440x480p_60Hz */
TV_480p_60Hz, /* HDMITX_VFMT_15_1440x480p_60Hz */
TV_1080p_60Hz, /* HDMITX_VFMT_16_1920x1080p_60Hz */
TV_576p_50Hz, /* HDMITX_VFMT_17_720x576p_50Hz */
TV_576p_50Hz, /* HDMITX_VFMT_18_720x576p_50Hz */
TV_720p_50Hz, /* HDMITX_VFMT_19_1280x720p_50Hz */
TV_1080i_50Hz, /* HDMITX_VFMT_20_1920x1080i_50Hz */
TV_576i_50Hz, /* HDMITX_VFMT_21_720x576i_50Hz */
TV_576i_50Hz, /* HDMITX_VFMT_22_720x576i_50Hz */
TV_288p_50Hz, /* HDMITX_VFMT_23_720x288p_50Hz */
TV_288p_50Hz, /* HDMITX_VFMT_24_720x288p_50Hz */
TV_576i_50Hz, /* HDMITX_VFMT_25_720x576i_50Hz */
TV_576i_50Hz, /* HDMITX_VFMT_26_720x576i_50Hz */
TV_288p_50Hz, /* HDMITX_VFMT_27_720x288p_50Hz */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -