diff --git a/XilinxProcessorIPLib/drivers/video_common/src/xvid.h b/XilinxProcessorIPLib/drivers/video_common/src/xvid.h index 1161f4c8..0b3fdc63 100644 --- a/XilinxProcessorIPLib/drivers/video_common/src/xvid.h +++ b/XilinxProcessorIPLib/drivers/video_common/src/xvid.h @@ -56,7 +56,7 @@ #include "xedid.h" -/****************************** Type Definitions ******************************/ +/************************** Constant Definitions ******************************/ /** * This typedef enumerates the list of available standard display monitor @@ -67,7 +67,7 @@ * Where RB stands for reduced blanking. */ typedef enum { - XVID_VM_640x480_60_P, + XVID_VM_640x480_60_P = 0, XVID_VM_800x600_60_P, XVID_VM_848x480_60_P, XVID_VM_1024x768_60_P, @@ -153,51 +153,80 @@ typedef enum { XVID_VM_480_60_P, XVID_VM_UHD2_60_P, XVID_VM_UHD_60, + XVID_VM_NUM_SUPPORT_0, XVID_VM_USE_EDID_PREFERRED, - XVID_VM_LAST = XVID_VM_USE_EDID_PREFERRED -} XVid_VideoMode; +} XVid_VideoMode0; typedef enum { - XV_RATE_24HZ = 0, - XV_RATE_25HZ, - XV_RATE_30HZ, - XV_RATE_50HZ, - XV_RATE_60HZ, - XV_NUM_SUPPORTED_RATE -}FrameRate_t; + XVID_VM_576I25 = 0, + XVID_VM_480I30, + XVID_VM_1080I25, + XVID_VM_1080I30, + XVID_VM_480P60, + XVID_VM_720P50, + XVID_VM_720P60, + XVID_VM_1080P24, + XVID_VM_1080P25, + XVID_VM_1080P30, + XVID_VM_1080P50, + XVID_VM_1080P60, + XVID_VM_4K2KP24, + XVID_VM_4K2KP25, + XVID_VM_4K2KP30, + XVID_VM_4K2KP60, + XVID_VM_WXGAP60, + XVID_VM_UXGAP60, + XVID_VM_WUXGAP60, + XVID_VM_WSXGAP60, + XVID_VM_NUM_SUPPORT_1, + XVID_VM_NO_INPUT +} XVid_VideoMode1; typedef enum { - //Video - XV_576I25 = 0, - XV_480I30, - XV_1080I25, - XV_1080I30, - XV_480P60, - XV_720P50, - XV_720P60, - XV_1080P24, - XV_1080P25, - XV_1080P30, - XV_1080P50, - XV_1080P60, - XV_4K2KP24, - XV_4K2KP25, - XV_4K2KP30, - XV_4K2KP60, - //PC Resolutions - XV_WXGAP60, - XV_UXGAP60, - XV_WUXGAP60, - XV_WSXGAP60, - XV_NUM_SUPPORTED_MODES, //Add new modes before this index - XV_NO_INPUT -}Resolution_t; + XVID_FR_24HZ = 0, + XVID_FR_25HZ, + XVID_FR_30HZ, + XVID_FR_50HZ, + XVID_FR_60HZ, + XV_NUM_SUPPORTED_RATE +} XVid_FrameRate; + +/****************************** Type Definitions ******************************/ + +/** + * Video timing structure. + */ +typedef struct { + u32 HActive; + u32 HFrontPorch; + u32 HSyncWidth; + u32 HBackPorch; + u32 HTotal; + u32 HSyncPolarity; + u32 VActive; + u32 F0PVFrontPorch; + u32 F0PVSyncWidth; + u32 F0PVBackPorch; + u32 F0PVTotal; + u32 F1VFrontPorch; + u32 F1VSyncWidth; + u32 F1VBackPorch; + u32 F1VTotal; + u32 VSyncPolarity; +} XVid_VideoTiming; + +typedef struct { + XVid_VideoMode1 VmId; + char *Name; + XVid_FrameRate FrameRate; + XVid_VideoTiming Timing; +} XVid_VideoTimingMode; /** * This typedef contains the display monitor timing attributes for a video mode. */ typedef struct { - XVid_VideoMode VideoMode; /**< Enumerated key. */ + XVid_VideoMode0 VmId; /**< Enumerated key. */ u8 DmtId; /**< Standard Display Monitor Timing (DMT) ID number. */ u16 HResolution; /**< Horizontal resolution (in @@ -225,39 +254,10 @@ typedef struct { u32 VBackPorch; /**< Vertical back porch (in lines). */ } XVid_DmtMode; -/** - * Video Timing Structure - */ -typedef struct { - u32 HActive; - u32 HFrontPorch; - u32 HSyncWidth; - u32 HBackPorch; - u32 HTotal; - u32 HSyncPolarity; - u32 VActive; - u32 F0PVFrontPorch; - u32 F0PVSyncWidth; - u32 F0PVBackPorch; - u32 F0PVTotal; - u32 F1VFrontPorch; - u32 F1VSyncWidth; - u32 F1VBackPorch; - u32 F1VTotal; - u32 VSyncPolarity; -}VideoTiming_t; - -typedef struct { - Resolution_t ResId; - char *Name; - FrameRate_t FrameRate; - VideoTiming_t Timing; -}ModeTable_t; - /*************************** Variable Declarations ****************************/ -extern const XVid_DmtMode XVid_DmtModes[]; -extern const ModeTable_t ModeTable[XV_NUM_SUPPORTED_MODES]; +extern const XVid_DmtMode XVid_DmtModes[XVID_VM_NUM_SUPPORT_0]; +extern const XVid_VideoTimingMode XVid_VideoTimingModes[XVID_VM_NUM_SUPPORT_1]; /**************************** Function Prototypes *****************************/ diff --git a/XilinxProcessorIPLib/drivers/video_common/src/xvid_timings_table.c b/XilinxProcessorIPLib/drivers/video_common/src/xvid_timings_table.c index 1f5f76f5..3a4176ce 100644 --- a/XilinxProcessorIPLib/drivers/video_common/src/xvid_timings_table.c +++ b/XilinxProcessorIPLib/drivers/video_common/src/xvid_timings_table.c @@ -71,7 +71,7 @@ * 13) Vertical sync time (lines) * 14) Vertical back porch (lines) */ -const XVid_DmtMode XVid_DmtModes[] = +const XVid_DmtMode XVid_DmtModes[XVID_VM_NUM_SUPPORT_0] = { {XVID_VM_640x480_60_P, 0x04, 640, 480, 25175, 0, 1, 1, 8, 96, 40, 2, 2, 25}, {XVID_VM_800x600_60_P, 0x09, 800, 600, 40000, 0, 0, 0, 40, 128, 88, 1, 4, 23}, @@ -161,30 +161,30 @@ const XVid_DmtMode XVid_DmtModes[] = {XVID_VM_UHD_60, 0x00, 3840, 2160, 594000, 0, 0, 1, 176, 88, 296, 20, 10, 60} }; -const ModeTable_t ModeTable[XV_NUM_SUPPORTED_MODES] = +const XVid_VideoTimingMode XVid_VideoTimingModes[XVID_VM_NUM_SUPPORT_1] = { - // Res_ID Name Frame Rate HAct HFP HSW HBP HTOT HSP VAct V0FP V0SW V0BP V0TOT V1FP V1SW V1BP V1TOT VSP - //Video - Interlaced Modes - {XV_576I25, "720x576", XV_RATE_25HZ, { 720, 12, 63, 69, 864, 0, 288, 2, 3, 19, 312, 2, 3, 20, 313, 0}}, - {XV_480I30, "720x480", XV_RATE_30HZ, { 720, 19, 62, 57, 858, 0, 240, 4, 3, 15, 262, 4, 3, 16, 263, 0}}, - {XV_1080I25, "1920x1080", XV_RATE_25HZ, {1920, 88, 44, 148, 2200, 1, 540, 2, 5, 15, 562, 2, 5, 16, 563, 1}}, - {XV_1080I30, "1920x1080", XV_RATE_30HZ, {1920, 88, 44, 148, 2200, 1, 540, 2, 5, 15, 562, 2, 5, 16, 563, 1}}, - //Video - Progressive Modes - {XV_480P60, "720x480", XV_RATE_60HZ, { 720, 16, 62, 60, 858, 1, 480, 9, 6, 30, 525, 0, 0, 0, 0, 1}}, - {XV_720P50, "1280x720", XV_RATE_50HZ, {1280, 440, 40, 220, 1980, 1, 720, 5, 5, 20, 750, 0, 0, 0, 0, 1}}, - {XV_720P60, "1280x720", XV_RATE_60HZ, {1280, 110, 40, 220, 1650, 1, 720, 5, 5, 20, 750, 0, 0, 0, 0, 1}}, - {XV_1080P24, "1920x1080", XV_RATE_24HZ, {1920, 638, 44, 148, 2750, 1, 1080, 4, 5, 36, 1125, 0, 0, 0, 0, 1}}, - {XV_1080P25, "1920x1080", XV_RATE_25HZ, {1920, 528, 44, 148, 2640, 1, 1080, 4, 5, 36, 1125, 0, 0, 0, 0, 1}}, - {XV_1080P30, "1920x1080", XV_RATE_30HZ, {1920, 88, 44, 148, 2200, 1, 1080, 4, 5, 36, 1125, 0, 0, 0, 0, 1}}, - {XV_1080P50, "1920x1080", XV_RATE_50HZ, {1920, 528, 44, 148, 2640, 1, 1080, 4, 5, 36, 1125, 0, 0, 0, 0, 1}}, - {XV_1080P60, "1920x1080", XV_RATE_60HZ, {1920, 88, 44, 148, 2200, 1, 1080, 4, 5, 36, 1125, 0, 0, 0, 0, 1}}, - {XV_4K2KP24, "3840x2160", XV_RATE_24HZ, {3840, 1276, 88, 296, 5500, 1, 2160, 8, 10, 72, 2250, 0, 0, 0, 0, 1}}, - {XV_4K2KP25, "3840x2160", XV_RATE_25HZ, {3840, 1056, 88, 296, 5280, 1, 2160, 8, 10, 72, 2250, 0, 0, 0, 0, 1}}, - {XV_4K2KP30, "3840x2160", XV_RATE_30HZ, {3840, 176, 88, 296, 4400, 1, 2160, 8, 10, 72, 2250, 0, 0, 0, 0, 1}}, - {XV_4K2KP60, "3840x2160", XV_RATE_60HZ, {3840, 176, 80, 304, 4400, 1, 2160, 60, 8, 22, 2250, 0, 0, 0, 0, 1}}, - //PC Resolutions - {XV_WXGAP60, "1366x768", XV_RATE_60HZ, {1366, 70, 143, 213, 1792, 1, 768, 3, 3, 24, 798, 0, 0, 0, 0, 1}}, - {XV_UXGAP60, "1600x1200", XV_RATE_60HZ, {1600, 64, 192, 304, 2160, 1, 1200, 1, 3, 46, 1250, 0, 0, 0, 0, 1}}, - {XV_WUXGAP60, "1920x1200", XV_RATE_60HZ, {1920, 136, 200, 336, 2592, 1, 1200, 3, 6, 36, 1245, 0, 0, 0, 0, 1}}, - {XV_WSXGAP60, "1680x1050", XV_RATE_60HZ, {1680, 104, 176, 280, 2240, 1, 1050, 3, 6, 30, 1089, 0, 0, 0, 0, 1}} + // Res_ID Name Frame Rate HAct HFP HSW HBP HTOT HSP VAct V0FP V0SW V0BP V0TOT V1FP V1SW V1BP V1TOT VSP + /* Video - interlaced modes. */ + {XVID_VM_576I25, "720x576", XVID_FR_25HZ, { 720, 12, 63, 69, 864, 0, 288, 2, 3, 19, 312, 2, 3, 20, 313, 0}}, + {XVID_VM_480I30, "720x480", XVID_FR_30HZ, { 720, 19, 62, 57, 858, 0, 240, 4, 3, 15, 262, 4, 3, 16, 263, 0}}, + {XVID_VM_1080I25, "1920x1080", XVID_FR_25HZ, {1920, 88, 44, 148, 2200, 1, 540, 2, 5, 15, 562, 2, 5, 16, 563, 1}}, + {XVID_VM_1080I30, "1920x1080", XVID_FR_30HZ, {1920, 88, 44, 148, 2200, 1, 540, 2, 5, 15, 562, 2, 5, 16, 563, 1}}, + /* Video - progressive modes. */ + {XVID_VM_480P60, "720x480", XVID_FR_60HZ, { 720, 16, 62, 60, 858, 1, 480, 9, 6, 30, 525, 0, 0, 0, 0, 1}}, + {XVID_VM_720P50, "1280x720", XVID_FR_50HZ, {1280, 440, 40, 220, 1980, 1, 720, 5, 5, 20, 750, 0, 0, 0, 0, 1}}, + {XVID_VM_720P60, "1280x720", XVID_FR_60HZ, {1280, 110, 40, 220, 1650, 1, 720, 5, 5, 20, 750, 0, 0, 0, 0, 1}}, + {XVID_VM_1080P24, "1920x1080", XVID_FR_24HZ, {1920, 638, 44, 148, 2750, 1, 1080, 4, 5, 36, 1125, 0, 0, 0, 0, 1}}, + {XVID_VM_1080P25, "1920x1080", XVID_FR_25HZ, {1920, 528, 44, 148, 2640, 1, 1080, 4, 5, 36, 1125, 0, 0, 0, 0, 1}}, + {XVID_VM_1080P30, "1920x1080", XVID_FR_30HZ, {1920, 88, 44, 148, 2200, 1, 1080, 4, 5, 36, 1125, 0, 0, 0, 0, 1}}, + {XVID_VM_1080P50, "1920x1080", XVID_FR_50HZ, {1920, 528, 44, 148, 2640, 1, 1080, 4, 5, 36, 1125, 0, 0, 0, 0, 1}}, + {XVID_VM_1080P60, "1920x1080", XVID_FR_60HZ, {1920, 88, 44, 148, 2200, 1, 1080, 4, 5, 36, 1125, 0, 0, 0, 0, 1}}, + {XVID_VM_4K2KP24, "3840x2160", XVID_FR_24HZ, {3840, 1276, 88, 296, 5500, 1, 2160, 8, 10, 72, 2250, 0, 0, 0, 0, 1}}, + {XVID_VM_4K2KP25, "3840x2160", XVID_FR_25HZ, {3840, 1056, 88, 296, 5280, 1, 2160, 8, 10, 72, 2250, 0, 0, 0, 0, 1}}, + {XVID_VM_4K2KP30, "3840x2160", XVID_FR_30HZ, {3840, 176, 88, 296, 4400, 1, 2160, 8, 10, 72, 2250, 0, 0, 0, 0, 1}}, + {XVID_VM_4K2KP60, "3840x2160", XVID_FR_60HZ, {3840, 176, 80, 304, 4400, 1, 2160, 60, 8, 22, 2250, 0, 0, 0, 0, 1}}, + /* PC resolutions. */ + {XVID_VM_WXGAP60, "1366x768", XVID_FR_60HZ, {1366, 70, 143, 213, 1792, 1, 768, 3, 3, 24, 798, 0, 0, 0, 0, 1}}, + {XVID_VM_UXGAP60, "1600x1200", XVID_FR_60HZ, {1600, 64, 192, 304, 2160, 1, 1200, 1, 3, 46, 1250, 0, 0, 0, 0, 1}}, + {XVID_VM_WUXGAP60, "1920x1200", XVID_FR_60HZ, {1920, 136, 200, 336, 2592, 1, 1200, 3, 6, 36, 1245, 0, 0, 0, 0, 1}}, + {XVID_VM_WSXGAP60, "1680x1050", XVID_FR_60HZ, {1680, 104, 176, 280, 2240, 1, 1050, 3, 6, 30, 1089, 0, 0, 0, 0, 1}} };