/** @brief Header file of video output module.\n This file contains the functions which is related to video output in the chip. @file hd_videoout.h @ingroup mhdal @note Nothing. Copyright Novatek Microelectronics Corp. 2018. All rights reserved. */ #ifndef _HD_VIDEOOUT_H_ #define _HD_VIDEOOUT_H_ /******************************************************************** INCLUDE FILES ********************************************************************/ #include "hd_type.h" #include "hd_util.h" /******************************************************************** MACRO CONSTANT DEFINITIONS ********************************************************************/ #define HD_VIDEOOUT_MAX_IN 32 ///< max count of input of this device (interface) #define HD_VIDEOOUT_MAX_OUT 1 ///< max count of output of this device (interface) #define HD_FB_MAX 4 ///< max count of FB (interface) /******************************************************************** MACRO FUNCTION DEFINITIONS ********************************************************************/ /******************************************************************** DRIVER RELATED TYPE DEFINITION ********************************************************************/ typedef enum _HD_VIDEOOUT_INPUT_DIM { HD_VIDEOOUT_IN_AUTO = 0, ///< IN VIDEO FORMAT IS SAME AS output HD_VIDEOOUT_IN_640x480, ///< IN VIDEO FORMAT IS 640x480 HD_VIDEOOUT_IN_720x480, ///< IN VIDEO FORMAT IS 720X480 HD_VIDEOOUT_IN_720x576, ///< IN VIDEO FORMAT IS 720x576 HD_VIDEOOUT_IN_1024x768, ///< IN VIDEO FORMAT IS 1024x768 HD_VIDEOOUT_IN_800x600, ///< IN VIDEO FORMAT IS 800x600 HD_VIDEOOUT_IN_1280x720, ///< IN VIDEO FORMAT IS 1280x720 HD_VIDEOOUT_IN_1280x1024, ///< IN VIDEO FORMAT IS 1280x1024 HD_VIDEOOUT_IN_1600x1200, ///< IN VIDEO FORMAT IS 1600x1200 HD_VIDEOOUT_IN_2560x720, ///< IN VIDEO FORMAT IS 2560x720 HD_VIDEOOUT_IN_2560x1440, ///< IN VIDEO FORMAT IS 2560x1440 HD_VIDEOOUT_IN_1920x1080, ///< IN VIDEO FORMAT IS 1920x1080 HD_VIDEOOUT_IN_3840x1080, ///< IN VIDEO FORMAT IS 3840x1080 HD_VIDEOOUT_IN_3840x2160, ///< IN VIDEO FORMAT IS 3840x2160 HD_VIDEOOUT_IN_1440x900, ///< IN VIDEO FORMAT IS 1440x900 HD_VIDEOOUT_IN_1680x1050, ///< IN VIDEO FORMAT IS 1680x1050 HD_VIDEOOUT_IN_1920x1200, ///< IN VIDEO FORMAT IS 1920x1200 HD_VIDEOOUT_INPUT_DIM_MAX, ENUM_DUMMY4WORD(HD_VIDEOOUT_INPUT_DIM) } HD_VIDEOOUT_INPUT_DIM; typedef enum _HD_VIDEOOUT_LCD_ID { HD_VIDEOOUT_LCD_0, ///< LCD ID 0 HD_VIDEOOUT_LCD_1, ///< LCD ID 1 HD_VIDEOOUT_LCD_2, ///< LCD ID 2 HD_VIDEOOUT_LCD_3, ///< LCD ID 3 HD_VIDEOOUT_LCD_4, ///< LCD ID 4 ENUM_DUMMY4WORD(HD_VIDEOOUT_LCD_ID) } HD_VIDEOOUT_LCD_ID; typedef enum _HD_VIDEOOUT_HDMI_ID { HD_VIDEOOUT_HDMI_640X480P60 = 1, ///< HDMI VIDEO FORMAT IS 640X480 & PROGRESSIVE 60FPS HD_VIDEOOUT_HDMI_720X480P60 = 2, ///< HDMI VIDEO FORMAT IS 720X480 & PROGRESSIVE 60FPS & 4:3 HD_VIDEOOUT_HDMI_720X480P60_16X9 = 3, ///< HDMI VIDEO FORMAT IS 720X480 & PROGRESSIVE 60FPS & 16:9 HD_VIDEOOUT_HDMI_1280X720P60 = 4, ///< HDMI VIDEO FORMAT IS 1280X720 & PROGRESSIVE 60FPS HD_VIDEOOUT_HDMI_1920X1080I60 = 5, ///< HDMI VIDEO FORMAT IS 1920X1080 & INTERLACED 60FPS HD_VIDEOOUT_HDMI_720X480I60 = 6, ///< HDMI VIDEO FORMAT IS 720X480 & INTERLACED 60FPS HD_VIDEOOUT_HDMI_720X480I60_16X9 = 7, ///< HDMI VIDEO FORMAT IS 720X480 & INTERLACED 60FPS & 16:9 HD_VIDEOOUT_HDMI_720X240P60 = 8, ///< HDMI VIDEO FORMAT IS 720X240 & PROGRESSIVE 60FPS HD_VIDEOOUT_HDMI_720X240P60_16X9 = 9, ///< HDMI VIDEO FORMAT IS 720X240 & PROGRESSIVE 60FPS & 16:9 HD_VIDEOOUT_HDMI_1440X480I60 = 10, ///< HDMI VIDEO FORMAT IS 1440X480 & INTERLACED 60FPS HD_VIDEOOUT_HDMI_1440X480I60_16X9 = 11, ///< HDMI VIDEO FORMAT IS 1440X480 & INTERLACED 60FPS & 16:9 HD_VIDEOOUT_HDMI_1440X240P60 = 12, ///< HDMI VIDEO FORMAT IS 1440X240 & PROGRESSIVE 60FPS HD_VIDEOOUT_HDMI_1440X240P60_16X9 = 13, ///< HDMI VIDEO FORMAT IS 1440X240 & PROGRESSIVE 60FPS & 16:9 HD_VIDEOOUT_HDMI_1440X480P60 = 14, ///< HDMI VIDEO FORMAT IS 1440X480 & PROGRESSIVE 60FPS HD_VIDEOOUT_HDMI_1440X480P60_16X9 = 15, ///< HDMI VIDEO FORMAT IS 1440X480 & PROGRESSIVE 60FPS & 16:9 HD_VIDEOOUT_HDMI_1920X1080P60 = 16, ///< HDMI VIDEO FORMAT IS 1920X1080 & PROGRESSIVE 60FPS HD_VIDEOOUT_HDMI_720X576P50 = 17, ///< HDMI VIDEO FORMAT IS 720X576 & PROGRESSIVE 50FPS HD_VIDEOOUT_HDMI_720X576P50_16X9 = 18, ///< HDMI VIDEO FORMAT IS 720X576 & PROGRESSIVE 50FPS & 16:9 HD_VIDEOOUT_HDMI_1280X720P50 = 19, ///< HDMI VIDEO FORMAT IS 1280X720 & PROGRESSIVE 50FPS HD_VIDEOOUT_HDMI_1920X1080I50 = 20, ///< HDMI VIDEO FORMAT IS 1920X1080 & INTERLACED 50FPS HD_VIDEOOUT_HDMI_720X576I50 = 21, ///< HDMI VIDEO FORMAT IS 720X576 & INTERLACED 50FPS HD_VIDEOOUT_HDMI_720X576I50_16X9 = 22, ///< HDMI VIDEO FORMAT IS 720X576 & INTERLACED 50FPS & 16:9 HD_VIDEOOUT_HDMI_720X288P50 = 23, ///< HDMI VIDEO FORMAT IS 720X288 & PROGRESSIVE 50FPS HD_VIDEOOUT_HDMI_720X288P50_16X9 = 24, ///< HDMI VIDEO FORMAT IS 720X288 & PROGRESSIVE 50FPS & 16:9 HD_VIDEOOUT_HDMI_1440X576I50 = 25, ///< HDMI VIDEO FORMAT IS 1440X576 & INTERLACED 50FPS HD_VIDEOOUT_HDMI_1440X576I50_16X9 = 26, ///< HDMI VIDEO FORMAT IS 1440X576 & INTERLACED 50FPS & 16:9 HD_VIDEOOUT_HDMI_1440X288P50 = 27, ///< HDMI VIDEO FORMAT IS 1440X288 & PROGRESSIVE 50FPS HD_VIDEOOUT_HDMI_1440X288P50_16X9 = 28, ///< HDMI VIDEO FORMAT IS 1440X288 & PROGRESSIVE 50FPS & 16:9 HD_VIDEOOUT_HDMI_1440X576P50 = 29, ///< HDMI VIDEO FORMAT IS 1440X576 & PROGRESSIVE 50FPS HD_VIDEOOUT_HDMI_1440X576P50_16X9 = 30, ///< HDMI VIDEO FORMAT IS 1440X576 & PROGRESSIVE 50FPS & 16:9 HD_VIDEOOUT_HDMI_1920X1080P50 = 31, ///< HDMI VIDEO FORMAT IS 1920X1080 & PROGRESSIVE 50FPS HD_VIDEOOUT_HDMI_1920X1080P24 = 32, ///< HDMI VIDEO FORMAT IS 1920X1080 & PROGRESSIVE 24FPS HD_VIDEOOUT_HDMI_1920X1080P25 = 33, ///< HDMI VIDEO FORMAT IS 1920X1080 & PROGRESSIVE 25FPS HD_VIDEOOUT_HDMI_1920X1080P30 = 34, ///< HDMI VIDEO FORMAT IS 1920X1080 & PROGRESSIVE 30FPS HD_VIDEOOUT_HDMI_1920X1080I50_VT1250 = 39, ///< HDMI VIDEO FORMAT IS 1920X1080 & INTERLACED 50FPS & V-TOTAL IS 1250 LINES HD_VIDEOOUT_HDMI_1920X1080I100 = 40, ///< HDMI VIDEO FORMAT IS 1920X1080 & INTERLACED 100FPS HD_VIDEOOUT_HDMI_1280X720P100 = 41, ///< HDMI VIDEO FORMAT IS 1280X720 & PROGRESSIVE 100FPS HD_VIDEOOUT_HDMI_720X576P100 = 42, ///< HDMI VIDEO FORMAT IS 720X576 & PROGRESSIVE 100FPS HD_VIDEOOUT_HDMI_720X576P100_16X9 = 43, ///< HDMI VIDEO FORMAT IS 720X576 & PROGRESSIVE 100FPS & 16:9 HD_VIDEOOUT_HDMI_720X576I100 = 44, ///< HDMI VIDEO FORMAT IS 720X576 & INTERLACED 100FPS HD_VIDEOOUT_HDMI_720X576I100_16X9 = 45, ///< HDMI VIDEO FORMAT IS 720X576 & INTERLACED 100FPS & 16:9 HD_VIDEOOUT_HDMI_1920X1080I120 = 46, ///< HDMI VIDEO FORMAT IS 1920X1080 & INTERLACED 120FPS HD_VIDEOOUT_HDMI_1280X720P120 = 47, ///< HDMI VIDEO FORMAT IS 1280X720 & PROGRESSIVE 120FPS HD_VIDEOOUT_HDMI_720X480P120 = 48, ///< HDMI VIDEO FORMAT IS 720X480 & PROGRESSIVE 120FPS HD_VIDEOOUT_HDMI_720X480P120_16X9 = 49, ///< HDMI VIDEO FORMAT IS 720X480 & PROGRESSIVE 120FPS & 16:9 HD_VIDEOOUT_HDMI_720X480I120 = 50, ///< HDMI VIDEO FORMAT IS 720X480 & INTERLACED 120FPS HD_VIDEOOUT_HDMI_720X480I120_16X9 = 51, ///< HDMI VIDEO FORMAT IS 720X480 & INTERLACED 120FPS & 16:9 HD_VIDEOOUT_HDMI_720X576P200 = 52, ///< HDMI VIDEO FORMAT IS 720X576 & PROGRESSIVE 200FPS HD_VIDEOOUT_HDMI_720X576P200_16X9 = 53, ///< HDMI VIDEO FORMAT IS 720X576 & PROGRESSIVE 200FPS & 16:9 HD_VIDEOOUT_HDMI_720X576I200 = 54, ///< HDMI VIDEO FORMAT IS 720X576 & INTERLACED 200FPS HD_VIDEOOUT_HDMI_720X576I200_16X9 = 55, ///< HDMI VIDEO FORMAT IS 720X576 & INTERLACED 200FPS & 16:9 HD_VIDEOOUT_HDMI_720X480P240 = 56, ///< HDMI VIDEO FORMAT IS 720X480 & PROGRESSIVE 240FPS HD_VIDEOOUT_HDMI_720X480P240_16X9 = 57, ///< HDMI VIDEO FORMAT IS 720X480 & PROGRESSIVE 240FPS & 16:9 HD_VIDEOOUT_HDMI_720X480I240 = 58, ///< HDMI VIDEO FORMAT IS 720X480 & INTERLACED 240FPS HD_VIDEOOUT_HDMI_720X480I240_16X9 = 59, ///< HDMI VIDEO FORMAT IS 720X480 & INTERLACED 240FPS & 16:9 HD_VIDEOOUT_HDMI_1440X900P60 = 60, ///< HDMI VIDEO FORMAT IS 1440X900 & PROGRESSIVE 60FPS HD_VIDEOOUT_HDMI_1680X1050P60 = 61, ///< HDMI VIDEO FORMAT IS 1680X1050 & PROGRESSIVE 60FPS HD_VIDEOOUT_HDMI_1920X1200P60 = 62, ///< HDMI VIDEO FORMAT IS 1920X1200 & PROGRESSIVE 60FPS HD_VIDEOOUT_HDMI_1920X1200P75 = 63, ///< HDMI VIDEO FORMAT IS 1920X1200 & PROGRESSIVE 75FPS HD_VIDEOOUT_HDMI_3840X2160P24 = 93, ///< HDMI VIDEO FORMAT IS 3840X2160 & PROGRESSIVE 24FPS HD_VIDEOOUT_HDMI_3840X2160P25 = 94, ///< HDMI VIDEO FORMAT IS 3840X2160 & PROGRESSIVE 25FPS HD_VIDEOOUT_HDMI_3840X2160P30 = 95, ///< HDMI VIDEO FORMAT IS 3840X2160 & PROGRESSIVE 30FPS HD_VIDEOOUT_HDMI_4096X2160P24 = 98, ///< HDMI VIDEO FORMAT IS 4096X2160 & PROGRESSIVE 24FPS HD_VIDEOOUT_HDMI_4096X2160P25 = 99, ///< HDMI VIDEO FORMAT IS 4096X2160 & PROGRESSIVE 25FPS HD_VIDEOOUT_HDMI_4096X2160P30 = 100, ///< HDMI VIDEO FORMAT IS 4096X2160 & PROGRESSIVE 30FPS // Non-std HDMI formats HD_VIDEOOUT_HDMI_1024X768P60 = 35 + 256, ///< HDMI VIDEO FORMAT IS 1024X768 & Progressive 60fps HD_VIDEOOUT_HDMI_1280X1024P30 = 36 + 256, ///< HDMI VIDEO FORMAT IS 1280X1024 & PROGRESSIVE 30FPS HD_VIDEOOUT_HDMI_1280X1024P60 = 37 + 256, ///< HDMI VIDEO FORMAT IS 1280X1024 & Progressive 60fps HD_VIDEOOUT_HDMI_1600X1200P30 = 38 + 256, ///< HDMI VIDEO FORMAT IS 1600X1200 & PROGRESSIVE 30FPS HD_VIDEOOUT_HDMI_1600X1200P60 = 39 + 256, ///< HDMI VIDEO FORMAT IS 1600X1200 & Progressive 60fps HD_VIDEOOUT_HDMI_2560X1440P30 = 40 + 256, ///< HDMI VIDEO FORMAT IS 2560X1440 & PROGRESSIVE 30FPS HD_VIDEOOUT_HDMI_2560X1440P60 = 41 + 256, ///< HDMI VIDEO FORMAT IS 2560X1440 & Progressive 60fps HD_VIDEOOUT_HDMI_NO_CHANGE = 0xFFFE, ///< HDMI VIDEO FORMAT USE CURRENT SETTING HD_VIDEOOUT_HDMI_MAX, ENUM_DUMMY4WORD(HD_VIDEOOUT_HDMI_ID) } HD_VIDEOOUT_HDMI_ID; typedef enum _HD_VIDEOOUT_VGA_ID { HD_VIDEOOUT_VGA_720X480 = 0, ///< VGA VIDEO FORMAT IS 720X480 HD_VIDEOOUT_VGA_1024X768, ///< VGA VIDEO FORMAT IS 1024X768 HD_VIDEOOUT_VGA_1280X720, ///< VGA VIDEO FORMAT IS 1280X720 HD_VIDEOOUT_VGA_1280X1024, ///< VGA VIDEO FORMAT IS 1280X1024 HD_VIDEOOUT_VGA_1600X1200, ///< VGA VIDEO FORMAT IS 1600X1200 HD_VIDEOOUT_VGA_1920X1080, ///< VGA VIDEO FORMAT IS 1920X1080 HD_VIDEOOUT_VGA_1440X900, ///< VGA VIDEO FORMAT IS 1440X900 HD_VIDEOOUT_VGA_1680X1050, ///< VGA VIDEO FORMAT IS 1680X1050 HD_VIDEOOUT_VGA_1920X1200, ///< VGA VIDEO FORMAT IS 1920X1200 HD_VIDEOOUT_VGA_MAX, ENUM_DUMMY4WORD(HD_VIDEOOUT_VGA_ID) } HD_VIDEOOUT_VGA_ID; typedef enum _HD_VIDEOOUT_CVBS_ID { HD_VIDEOOUT_CVBS_NTSC = 0, ///< CVBS MODE IS NTSC HD_VIDEOOUT_CVBS_PAL = 1, ///< CVBS MODE IS NTSC HD_VIDEOOUT_CVBS_NTSC_SD = 2, ///< CVBS MODE IS SD NTSC HD_VIDEOOUT_CVBS_PAL_SD = 3, ///< CVBS MODE IS SD PAL HD_VIDEOOUT_CVBS_MAX, ENUM_DUMMY4WORD(HD_VIDEOOUT_CVBS_ID) } HD_VIDEOOUT_CVBS_ID; typedef struct _HD_VIDEOOUT_MODE { HD_COMMON_VIDEO_OUT_TYPE output_type; ///< select lcd output device HD_VIDEOOUT_INPUT_DIM input_dim; ///< set input dim union { HD_VIDEOOUT_LCD_ID lcd; ///< set lcd output resolution HD_VIDEOOUT_HDMI_ID hdmi; ///< set hdmi output resolution HD_VIDEOOUT_VGA_ID vga; ///< set vga output resolution HD_VIDEOOUT_CVBS_ID cvbs; ///< set cvbs output resolution } output_mode; } HD_VIDEOOUT_MODE; typedef struct _HD_VIDEOOUT_DEVNVR_CONFIG { HD_VIDEOOUT_MODE mode; ///< set lcd mode int homology; ///< only suitable to lcd210. When it is set, it will not register to videograph int chip_state; ///< only suitable to lcd210. to enable/disable lcd200_0 hw struct { int max_w; ///< fb max width int max_h; ///< fb max height int max_bpp; ///< fb max bit per pixel int gui_rld_enable; ///< rld enabled int ddr_id; ///< fb buf ddr id unsigned int buf_paddr; ///< fb buffer physical address unsigned int buf_len; ///< fb buffer length unsigned int rle_buf_paddr; ///< rle buffer physical address, only valid for gui compress unsigned int rle_buf_len; ///< rle buffer length, only valid for gui compress } plane[3]; } HD_VIDEOOUT_DEVNVR_CONFIG; typedef enum _HD_VIDEOOUT_INFUNC { HD_VIDEOOUT_INFUNC_ONEBUF = 0x00000002, ///< enable one-buffer from vdoprc ENUM_DUMMY4WORD(HD_VIDEOOUT_INFUNC) } HD_VIDEOOUT_INFUNC; typedef struct _HD_VIDEOOUT_DEVIPC_CONFIG { } HD_VIDEOOUT_DEVIPC_CONFIG; typedef struct _HD_VIDEOOUT_CONFIG { union { HD_VIDEOOUT_DEVNVR_CONFIG devnvr_cfg; ///< device config HD_VIDEOOUT_DEVIPC_CONFIG devipc_cfg; ///< device config }; } HD_VIDEOOUT_DEV_CONFIG; /** @name func config */ typedef struct _HD_VIDEOOUT_FUNC_CONFIG { UINT32 ddr_id; ///< DDR ID HD_VIDEOOUT_INFUNC in_func; ///< additional function of in (bit-wise mask) } HD_VIDEOOUT_FUNC_CONFIG; /******************************************************************** TYPE DEFINITION ********************************************************************/ /** @name HD_VIDEOOUT capability */ typedef enum HD_VIDEOOUT_INCAPS { HD_VIDEOOUT_INCAPS_ONEBUF = 0x02000000, ///< caps of HD_VIDEOOUT_INFUNC_ONEBUF ENUM_DUMMY4WORD(HD_VIDEOOUT_INCAPS) } HD_VIDEOOUT_INCAPS; typedef enum _HD_VIDEOOUT_CAPS { HD_VIDEOOUT_CAPS_CVBS = 0x00000100, ///< support cvbs display HD_VIDEOOUT_CAPS_VGA = 0x00000200, ///< support vga display HD_VIDEOOUT_CAPS_HDMI = 0x00000400, ///< support hdmi display HD_VIDEOOUT_CAPS_LCD = 0x00000800, ///< support lcd display ENUM_DUMMY4WORD(HD_VIDEOOUT_CAPS) } HD_VIDEOOUT_CAPS; typedef enum _HD_FB_CAPS { HD_FB_CAPS_YUV422 = 0x00000001, ///< support YUV422 format HD_FB_CAPS_YUV420 = 0x00000002, ///< support YUV420 format HD_FB_CAPS_INDEX_1 = 0x00000010, ///< support INDEX 1bit format HD_FB_CAPS_INDEX_2 = 0x00000020, ///< support INDEX 2bit format HD_FB_CAPS_INDEX_4 = 0x00000040, ///< support INDEX 4bit format HD_FB_CAPS_INDEX_8 = 0x00000080, ///< support INDEX 8bit format HD_FB_CAPS_ARGB_1555 = 0x00000100, ///< support ARGB 1555 format HD_FB_CAPS_ARGB_4444 = 0x00000200, ///< support ARGB 4444 format HD_FB_CAPS_ARGB_8888 = 0x00000400, ///< support ARGB 8888 format HD_FB_CAPS_ARGB_8565 = 0x00000800, ///< support ARGB 8565 format HD_FB_CAPS_RGBA_5551 = 0x00001000, ///< support RGBA 5551 format HD_FB_CAPS_RGB_565 = 0x00002000, ///< support RGB 565 format ENUM_DUMMY4WORD(HD_FB_CAPS) } HD_FB_CAPS; typedef struct _HD_VIDEOOUT_SYSCAPS { HD_DAL dev_id; ///< device id UINT32 chip_id; ///< chip id of this device UINT32 max_in_count; ///< max count of input of this device UINT32 max_out_count; ///< max count of output of this device UINT32 max_fb_count; ///< max count of fb of this device HD_DEVICE_CAPS dev_caps; ///< support value:HD_VIDEOOUT_CAPS|HD_DEVICE_CAPS HD_VIDEO_CAPS in_caps[HD_VIDEOOUT_MAX_IN]; ///< capability of input of HD_VIDEO_CAPS and HD_VIDEOOUT_INCAPS HD_VIDEO_CAPS out_caps[HD_VIDEOOUT_MAX_OUT]; ///< capability of output UINT32 fb_caps[HD_FB_MAX]; ///< capability of fb, support value:HD_FB_CAPS HD_DIM output_dim; ///< output dimension width/height HD_DIM input_dim; ///< input dimension width/height UINT32 fps; ///< display framw rate UINT32 max_scale_up_w; ///< max width scling up factor UINT32 max_scale_up_h; ///< max height scling up factor UINT32 max_scale_down_w; ///< max width scaling down factor UINT32 max_scale_down_h; ///< max height scaling down factor UINT32 max_out_stamp; ///< max output stamp UINT32 max_out_stamp_ex; ///< max output stamp_ex UINT32 max_out_mask; ///< max output mask UINT32 max_out_mask_ex; ///< max output mask_ex } HD_VIDEOOUT_SYSCAPS; typedef enum _HD_FB_ID { HD_FB0 = 0, ///< frame buf id 0 HD_FB1, ///< frame buf id 1 HD_FB2, ///< frame buf id 2 HD_FB3, ///< frame buf id 3 ENUM_DUMMY4WORD(HD_FB_ID) } HD_FB_ID; typedef enum _CLEAR_WINDOW_MODE{ HD_ACTIVE_BY_APPLY = 0, ///< clear videoout win input data after set HD_VIDEOOUT_PARAM_MODE HD_ACTIVE_IMMEDIATELY, ///< clear videoout win input data immediately } CLEAR_WINDOW_MODE; typedef struct _HD_VIDEOOUT_CLEAR_WIN { HD_DIM input_dim; ///< pattern buf dim, minimun input dim: 64x32 HD_VIDEO_PXLFMT in_fmt; ///< pattern fmt UINT8 *buf; ///< pattern buf HD_URECT output_rect; ///< clear win region CLEAR_WINDOW_MODE mode; ///< clear win mode } HD_VIDEOOUT_CLEAR_WIN; typedef struct _HD_FB_FMT { HD_FB_ID fb_id; ///< select fb layer HD_VIDEO_PXLFMT fmt; ///< set fb input fmt } HD_FB_FMT; typedef struct _HD_FB_ATTR { HD_FB_ID fb_id; ///< select fb layer UINT8 alpha_blend; ///< 0~255,except ARBG format,ARBG format would refer pixel alpha,lcd0:support fb0~2,lcd_1/lcd_2:fb0~1 UINT8 alpha_1555; ///< 0~255,only for ARBG1555 format,the pixel alpha 1 would refer the value BOOL colorkey_en; ///< 0:disable/1:enable UINT16 r_ckey; ///< r would be format r,ex:ARGB444 format Red:0xF00 UINT16 g_ckey; ///< g would be format g,ex:ARGB444 format Green:0x0F0 UINT16 b_ckey; ///< b would be format b,ex:ARGB444 format Blue:0x00F } HD_FB_ATTR; typedef struct _HD_FB_ENABLE { HD_FB_ID fb_id; ///< select fb layer BOOL enable; ///< 0:disable, 1:enable } HD_FB_ENABLE; typedef struct _HD_FB_LAYER_ORDER { HD_FB_ID fb_id; ///< select fb layer UINT8 fb_to_plane_num; ///< 0~2 } HD_FB_LAYER_ORDER; typedef struct _HD_FB_DIM { HD_FB_ID fb_id; ///< select fb layer HD_DIM input_dim; ///< set fb in dim HD_URECT output_rect; ///< set fb out dim and x/y } HD_FB_DIM; typedef struct _HD_FB_PALETTE_TBL { HD_FB_ID fb_id; ///< select fb layer UINT16 table_size; ///< palette size UINT32 *p_table; ///< palette table value } HD_FB_PALETTE_TBL; #define HD_VIDEOOUT_PALETTE_TABLE HD_FB_PALETTE_TBL typedef enum _HD_WIN_LAYER { HD_LAYER1 = 0, ///< 1st layer (background, first draw, lowest) HD_LAYER2 = 1, ///< 2nd layer HD_LAYER3 = 2, ///< 3rd layer HD_LAYER4 = 3, ///< 4th layer HD_LAYER5 = 4, ///< 5th layer HD_LAYER6 = 5, ///< 6th layer HD_LAYER7 = 6, ///< 7th layer HD_LAYER8 = 7, ///< 8th layer (last draw, on the top) HD_WIN_LAYER_MAX, ENUM_DUMMY4WORD(HD_WIN_LAYER) } HD_WIN_LAYER; typedef struct _HD_VIDEOOUT_WIN_ATTR { BOOL visible; ///< decide this win to show HD_URECT rect; ///< set lcd input port dim HD_WIN_LAYER layer; } HD_VIDEOOUT_WIN_ATTR; typedef struct _HD_VIDEOOUT_WIN_PSR_ATTR { BOOL visible; ///< decide the Picture-Second-Region's win to show HD_URECT rect; ///< set lcd input port dim } HD_VIDEOOUT_WIN_PSR_ATTR; typedef struct _HD_VIDEOOUT_IN { HD_DIM dim; ///< dimension HD_VIDEO_PXLFMT pxlfmt; ///< format HD_VIDEO_DIR dir; ///< direction like mirror/flip } HD_VIDEOOUT_IN; typedef struct { HD_VIDEOOUT_HDMI_ID video_id[32]; ///< supported HDMI EDID. UINT32 len; ///< Number of video formats supported by the HDMI. } HD_VIDEOOUT_HDMI_ABILITY; typedef enum _HD_VIDEOOUT_PARAM_ID { ///Common Start:all members of struct // HD_VIDEOOUT_PARAM_DEVCOUNT = 0, ///< support get with ctrl path, using HD_DEVCOUNT struct HD_VIDEOOUT_PARAM_SYSCAPS, ///< support get with ctrl path, using HD_VIDEOOUT_SYSCAPS struct HD_VIDEOOUT_PARAM_DEV_CONFIG, ///< support set with ctrl path, using HD_VIDEOOUT_DEV_CONFIG struct HD_VIDEOOUT_PARAM_MODE, ///< support get/set with ctrl path, using HD_VIDEOOUT_MODE struct HD_VIDEOOUT_PARAM_FB_PALETTE_TABLE, ///< support get/set with ctrl path, using HD_FB_PALETTE_TBL struct HD_VIDEOOUT_PARAM_CLEAR_WIN, ///< support set with ctrl path, using HD_VIDEOOUT_CLEAR_WIN struct, set active HD_VIDEOOUT_PARAM_IN, ///< support get/set with i path, using HD_VIDEOOUT_IN struct HD_VIDEOOUT_PARAM_IN_WIN_ATTR, ///< support get/set with i path, using HD_VIDEOOUT_WIN_ATTR struct HD_VIDEOOUT_PARAM_IN_WIN_PSR_ATTR, ///< support get/set with i path, using HD_VIDEOOUT_WIN_PSR_ATTR struct HD_VIDEOOUT_PARAM_WRITEBACK_BUF, ///< support get/set with ctrl path, using HD_VIDEO_FRAME struct HD_VIDEOOUT_PARAM_FB_FMT, ///< support get/set with ctrl path, using HD_FB_FMT struct HD_VIDEOOUT_PARAM_FB_ATTR, ///< support get/set with ctrl path, using HD_FB_ATTR struct HD_VIDEOOUT_PARAM_FB_ENABLE, ///< support get/set with ctrl path, using HD_FB_ENABLE struct HD_VIDEOOUT_PARAM_FB_LAYER_ORDER, ///< support get/set with ctrl path, using HD_FB_LAYER_ORDER struct HD_VIDEOOUT_PARAM_HDMI_ABILITY, ///< support get with ctrl path, using HD_VIDEOOUT_HDMI_ABILITY struct HD_VIDEOOUT_PARAM_OUT_STAMP_BUF, ///< support get/set with o/stamp path, using HD_OSG_STAMP_BUF struct (stamp buffer parameter) HD_VIDEOOUT_PARAM_OUT_STAMP_IMG, ///< support get/set with o/stamp path, using HD_OSG_STAMP_IMG struct (stamp image parameter) HD_VIDEOOUT_PARAM_OUT_STAMP_ATTR, ///< support get/set with o/stamp path, using HD_OSG_STAMP_ATTR struct (stamp display attribute) HD_VIDEOOUT_PARAM_OUT_MASK_ATTR, ///< support get/set with o/mask path, using HD_OSG_MASK_ATTR struct (mask display attribute) HD_VIDEOOUT_PARAM_OUT_MOSAIC_ATTR, ///< support get/set with o/mask path, using HD_OSG_MOSAIC_ATTR struct (mosaic display attribute) HD_VIDEOOUT_PARAM_FB_DIM, ///< support get/set with ctrl path, using HD_FB_DIM struct HD_VIDEOOUT_PARAM_OUT_PALETTE_TABLE, ///< support get/set with o path, using HD_PALETTE_TBL struct HD_VIDEOOUT_PARAM_FUNC_CONFIG, ///< support get/set with i/o path, using HD_VIDEOOUT_FUNC_CONFIG struct (path func config) ///Common End// HD_VIDEOOUT_PARAM_MAX, ENUM_DUMMY4WORD(HD_VIDEOOUT_PARAM_ID) } HD_VIDEOOUT_PARAM_ID; #define HD_VIDEOOUT_PARAM_PALETTE_TABLE HD_VIDEOOUT_PARAM_FB_PALETTE_TABLE /******************************************************************** EXTERN VARIABLES & FUNCTION PROTOTYPES DECLARATIONS ********************************************************************/ HD_RESULT hd_videoout_init(VOID); HD_RESULT hd_videoout_bind(HD_OUT_ID out_id, HD_IN_ID dest_in_id); HD_RESULT hd_videoout_unbind(HD_OUT_ID out_id); HD_RESULT hd_videoout_open(HD_IN_ID in_id, HD_OUT_ID out_id, HD_PATH_ID *p_path_id); HD_RESULT hd_videoout_start(HD_PATH_ID path_id); HD_RESULT hd_videoout_stop(HD_PATH_ID path_id); HD_RESULT hd_videoout_start_list(HD_PATH_ID *path_id, UINT num); HD_RESULT hd_videoout_stop_list(HD_PATH_ID *path_id, UINT num); HD_RESULT hd_videoout_get(HD_PATH_ID path_id, HD_VIDEOOUT_PARAM_ID id, VOID *param); HD_RESULT hd_videoout_set(HD_PATH_ID path_id, HD_VIDEOOUT_PARAM_ID id, VOID *param); HD_RESULT hd_videoout_push_in_buf(HD_PATH_ID path_id, HD_VIDEO_FRAME *p_in_video_frame, HD_VIDEO_FRAME *p_user_out_video_frame, INT32 wait_ms); HD_RESULT hd_videoout_pull_out_buf(HD_PATH_ID path_id, HD_VIDEO_FRAME *p_video_frame, INT32 wait_ms); HD_RESULT hd_videoout_release_out_buf(HD_PATH_ID path_id, HD_VIDEO_FRAME *p_video_frame); HD_RESULT hd_videoout_close(HD_PATH_ID path_id); HD_RESULT hd_videoout_uninit(VOID); #define ARGB8565_A_ADDR(rgb_addr, w, h) ALIGN_CEIL_16(rgb_addr + w*2*h) //RGB565 buf size = (line offset * height) #endif