1052 lines
		
	
	
		
			50 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			1052 lines
		
	
	
		
			50 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /**
 | |
|     @file       disp_lyr.h
 | |
|     @ingroup    mISYSDisp
 | |
| 
 | |
|     @brief      Header file for Display layer control
 | |
| 				This file is the header file that define the API and data type
 | |
| 				for Display control object
 | |
|     @note       Nothing.
 | |
| 
 | |
|     Copyright   Novatek Microelectronics Corp. 2011.  All rights reserved.
 | |
| */
 | |
| 
 | |
| /** \addtogroup  mISYSDisp*/
 | |
| //@{
 | |
| 
 | |
| #ifndef _DISPLYR_H
 | |
| #define _DISPLYR_H
 | |
| 
 | |
| #include "dispcomn.h"
 | |
| #include "ide.h"
 | |
| 
 | |
| 
 | |
| /**
 | |
|     @name Display Layer Control Group
 | |
| 
 | |
|     These definitions are used for display layer control API (DISP_OBJ.disp_lyr_ctrl) as the layer control portal.
 | |
|     The layer characteristics such as buffer format/ width / height/ Window-width / window-height / (...etc) are controlled by this API.
 | |
|     The user must know that the API would not set load to activate the settings.
 | |
|     The User would programs all the settings needed and then use DISP_OBJ.load() to activate all the settings.
 | |
| */
 | |
| //@{
 | |
| 
 | |
| /**
 | |
|     Display Layer Buffer Format
 | |
| 
 | |
|     This definition is used for the OP Code: "DISPLAYER_OP_SET_MODE" in the disp_lyr_ctrl API to specify the buffer format.
 | |
|     This feature can be assigned for each display layer with different setting.
 | |
| */
 | |
| typedef enum {
 | |
| 	DISPBUFFORMAT_PAL1,                 ///< Buffer uses format 1bit palette.
 | |
| 	DISPBUFFORMAT_PAL2,                 ///< Buffer uses format 2bit palette.
 | |
| 	DISPBUFFORMAT_PAL4,                 ///< Buffer uses format 4bit palette.
 | |
| 	DISPBUFFORMAT_PAL8,                 ///< Buffer uses format 8bit palette.
 | |
| 
 | |
| 	DISPBUFFORMAT_YUV444,               ///< Buffer uses format YUV444.
 | |
| 	DISPBUFFORMAT_YUV422,               ///< Buffer uses format YUV422.
 | |
| 	DISPBUFFORMAT_YUV420,               ///< Buffer uses format YUV420.
 | |
| 
 | |
| 	DISPBUFFORMAT_ARGB4565,             ///< Buffer uses format ARGB 4565.
 | |
| 	DISPBUFFORMAT_ARGB8565,             ///< Buffer uses format ARGB 8565.
 | |
| 
 | |
| 	DISPBUFFORMAT_YUV422PACK,           ///< Buffer uses format YUV422.
 | |
| 	DISPBUFFORMAT_YUV420PACK,           ///< Buffer uses format YUV420.
 | |
| 
 | |
| 	DISPBUFFORMAT_ARGB8888,             ///< Buffer uses format ARGB 8888.
 | |
| 
 | |
| 	DISPBUFFORMAT_ARGB4444,             ///< Buffer uses format ARGB 4444.
 | |
| 	DISPBUFFORMAT_ARGB1555,             ///< Buffer uses format ARGB 1555.
 | |
| 
 | |
| 
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DISPBUFFORMAT)
 | |
| } DISPBUFFORMAT;
 | |
| 
 | |
| /**
 | |
|     Display Video Layer mode selection
 | |
| 
 | |
|     This definition is used for the OP Code: "DISPLAYER_OP_SET_MODE" in the disp_lyr_ctrl API to specify the buffer display mode.
 | |
|     In the NT96220, the OSD layer's display mode is fixed as DISPBUFMODE_BUFFER_REPEAT.
 | |
| */
 | |
| typedef enum {
 | |
| 	DISPBUFMODE_AUTO_HANDSHAKE,             ///< Automatically change buffer according to IPE/IME signal
 | |
| 	DISPBUFMODE_RW_INDEPENDENT,             ///< Automatically change buffer according to ide's VSync signal
 | |
| 	DISPBUFMODE_BUFFER_REPEAT,              ///< Repeat the same buffer until user change buffer
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DISPBUFMODE)
 | |
| } DISPBUFMODE;
 | |
| 
 | |
| /**
 | |
|     Display Layer Buffer number
 | |
| 
 | |
|     This definition is used for the OP Code: "DISPLAYER_OP_SET_MODE" in the disp_lyr_ctrl API to specify
 | |
|     the layer buffer number in the buffer mode DISPBUFMODE_AUTO_HANDSHAKE/DISPBUFMODE_RW_INDEPENDENT/DISPBUFMODE_BUFFER_REPEAT.
 | |
| */
 | |
| typedef enum {
 | |
| 	DISPBUFNUM_1,                           ///< Only 1 buffer (Buffer 0)
 | |
| 	DISPBUFNUM_2,                           ///< Total 2 buffers (Buffer 0, 1)
 | |
| 	DISPBUFNUM_3,                           ///< Total 3 buffers (Buffer 0, 1, 2)
 | |
| 	DISPBUFNUM_4,                           ///< Total 4 buffers (Buffer 0, 1, 2, 3)
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DISPBUFNUM)
 | |
| } DISPBUFNUM;
 | |
| 
 | |
| /**
 | |
|     Display Layer Buffer output direction
 | |
| 
 | |
|     This definition is used for the OP Code: "DISPLAYER_OP_SET_OUTDIR" in the disp_lyr_ctrl API to specify the buffer output direction.
 | |
|     This feature can make the effects of Horizontal/Vertical Flip or the rotation 180 degrees on the display.
 | |
|     This feature can be assigned for each display layer with different setting.
 | |
| */
 | |
| typedef enum {
 | |
| 	DISPOUTDIR_NORMAL       = 0x0,          ///< Normal output direction
 | |
| 	DISPOUTDIR_HRZ_FLIP     = 0x1,          ///< Horizontal flip
 | |
| 	DISPOUTDIR_VTC_FLIP     = 0x2,          ///< Vertical flip
 | |
| 	DISPOUTDIR_ROT_180      = 0x3,          ///< Rotate 180 degree
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DISPOUTDIR)
 | |
| } DISPOUTDIR;
 | |
| 
 | |
| /**
 | |
|     Display Layer Active Buffer
 | |
| 
 | |
|     This definition is used for the OP Code: "DISPLAYER_OP_SET_ACTBUF"/"DISPLAYER_OP_SET_VDOBUFADDR"/"DISPLAYER_OP_SET_OSDBUFADDR" in the disp_lyr_ctrl API
 | |
|     to specify which of the active buffer is assigned to be displayed.
 | |
|     This feature can be assigned for each display layer with different setting.
 | |
| */
 | |
| typedef enum {
 | |
| 	DISPACTBUF_0,                           ///< select Active Buffer 0
 | |
| 	DISPACTBUF_1,                           ///< select Active Buffer 1
 | |
| 	DISPACTBUF_2,                           ///< select Active Buffer 2
 | |
| 
 | |
| 	DISPACTBUF_NUM,                         ///< total number of active buffer
 | |
| 	ENUM_DUMMY4WORD(DISPACTBUF)
 | |
| } DISPACTBUF;
 | |
| 
 | |
| /**
 | |
|     select Display Layer Buffer addresses would be updated
 | |
| 
 | |
|     This definition is used for the OP Code: "/"DISPLAYER_OP_SET_VDOBUFADDR"/"DISPLAYER_OP_SET_OSDBUFADDR" in the disp_lyr_ctrl API
 | |
|     to specify which of the buffer addresses would be updated.
 | |
|     This feature can be assigned for each display layer with different setting.
 | |
| */
 | |
| typedef enum {
 | |
| 	DISPBUFADR_ALL  = 0x00,                 ///< Update Video/OSD layer Buffer 0/1/2 Address
 | |
| 	DISPBUFADR_0    = 0x01,                 ///< Update Video/OSD layer Buffer 0 Address
 | |
| 	DISPBUFADR_1    = 0x02,                 ///< Update Video/OSD layer Buffer 1 Address
 | |
| 	DISPBUFADR_2    = 0x04,                 ///< Update Video/OSD layer Buffer 2 Address
 | |
| 
 | |
| 	DISPBUFADR_MSK  = 0x0F,                 ///< no use item
 | |
| 	ENUM_DUMMY4WORD(DISPBUFADR)
 | |
| } DISPBUFADR;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     Display Engine blending select definition
 | |
| 
 | |
|     Dispaly Engine blending layer define: Video1: Layer0, Video2: Layer1, FD: Layer2, OSD1: Layer3, OSD2: Layer4
 | |
|     The blending Order: ((((Video1+Video2)+FD)+OSD1)+OSD2)
 | |
| 
 | |
|     If Display Engine has only Video1 and OSD1: Video1: Layer0, OSD1: Layer1
 | |
|     The blending Order: (Video1+OSD1)
 | |
| 
 | |
|     This definition is used for the OP Code: DISPLAYER_OP_SET_BLEND, DISPLAYER_OP_GET_BLEND
 | |
| */
 | |
| typedef enum {
 | |
| 	DISPCTRL_BLEND_TYPE_NOALPHA,
 | |
| 	DISPCTRL_BLEND_TYPE_GLOBAL,
 | |
| 	DISPCTRL_BLEND_TYPE_GLOBAL_BACK,
 | |
| 	DISPCTRL_BLEND_TYPE_SOURCE,    ///< only support in osd
 | |
| 	DISPCTRL_BLEND_TYPE_SOURCE_BACK, 
 | |
| 
 | |
| 	DISPCTRL_BLEND_SEL_DEFAULT = DISPCTRL_BLEND_TYPE_NOALPHA,
 | |
| 	ENUM_DUMMY4WORD(DISPBLENDTYPE)
 | |
| } DISPBLENDTYPE;
 | |
| 
 | |
| /**
 | |
|     Display Layer color key compare source selection
 | |
| 
 | |
|     This definition is used for the OP Code: DISPLAYER_OP_SET_VDOCOLORKEY_SRC, DISPLAYER_OP_GET_VDOCOLORKEY_SRC
 | |
| */
 | |
| typedef enum {
 | |
| 	DISPVDOCK_CMP_V2 = 0x0,
 | |
| 	DISPVDOCK_CMP_V1 = 0x1,
 | |
| 	ENUM_DUMMY4WORD(DISPVDOCKCMPSOURCE)
 | |
| } DISPVDOCKCMPSOURCE;
 | |
| 
 | |
| /**
 | |
|     Display Layer color key opeation selection
 | |
| 
 | |
|     This definition is used for the OP Code: DISPLAYER_OP_SET_COLORKEY, DISPLAYER_OP_GET_COLORKEY
 | |
| */
 | |
| typedef enum {
 | |
| 	DISPCK_OP_OFF = 0x0,                 ///< For VDO: vdo color key enable =0 (videock = video1 or video2; refer to setting of ck_src). For OSD: osd color key enable = 0
 | |
| 	DISPCK_OP_YSMALLKEY = 0x1,           ///< ck = (Y < YKEY) ?
 | |
| 	DISPCK_OP_YEQUKEY = 0x2,             ///< ck = (Y == YKEY && CB == CBKEY && CR == CRKEY) ?
 | |
| 	DISPCK_OP_YBIGKEY = 0x3,             ///< ck = (Y > YKEY) ?
 | |
| 	DISPCK_OP_YEQUKEY_A = 0x4,           ///< ck = (Y == YKEY && CB == CBKEY && CR == CRKEY && ALPHA == AKEY) ?
 | |
| 	ENUM_DUMMY4WORD(DISPCKOP)
 | |
| } DISPCKOP;
 | |
| 
 | |
| /**
 | |
|     Display Layer dma burst length selection
 | |
| 
 | |
|     This definition is used for the OP Code: DISPLAYER_OP_SET_DMALEN, DISPLAYER_OP_GET_DMALEN
 | |
| */
 | |
| /*
 | |
| typedef enum
 | |
| {
 | |
|     DISPDMALEN_16 = 0,                   ///< DMA Len = 16 word
 | |
|     DISPDMALEN_24 = 1,                   ///< DMA Len = 24 word
 | |
|     DISPDMALEN_32 = 2,                   ///< DMA Len = 32 word
 | |
|     DISPDMALEN_48 = 3,                   ///< DMA Len = 48 word
 | |
|     DISPDMALEN_64 = 4,                   ///< DMA Len = 64 word
 | |
|     DISPDMALEN_96 = 5,                   ///< DMA Len = 96 word
 | |
|     ENUM_DUMMY4WORD(DISPDMALEN)
 | |
| }DISPDMALEN;
 | |
| */
 | |
| 
 | |
| /**
 | |
|     Display Layer FD number selection
 | |
| 
 | |
|     This definition is used for the OP Code: DISPLAYER_OP_SET_FDEN, DISPLAYER_OP_GET_FDEN
 | |
| */
 | |
| typedef enum {
 | |
| 	DISPFD_NUM0  = 0x00000001,             ///< Number 0
 | |
| 	DISPFD_NUM1  = 0x00000002,             ///< Number 1
 | |
| 	DISPFD_NUM2  = 0x00000004,             ///< Number 2
 | |
| 	DISPFD_NUM3  = 0x00000008,             ///< Number 3
 | |
| 	DISPFD_NUM4  = 0x00000010,             ///< Number 4
 | |
| 	DISPFD_NUM5  = 0x00000020,             ///< Number 5
 | |
| 	DISPFD_NUM6  = 0x00000040,             ///< Number 6
 | |
| 	DISPFD_NUM7  = 0x00000080,             ///< Number 7
 | |
| 	DISPFD_NUM8  = 0x00000100,             ///< Number 8
 | |
| 	DISPFD_NUM9  = 0x00000200,             ///< Number 9
 | |
| 	DISPFD_NUM10 = 0x00000400,             ///< Number 10
 | |
| 	DISPFD_NUM11 = 0x00000800,             ///< Number 11
 | |
| 	DISPFD_NUM12 = 0x00001000,             ///< Number 12
 | |
| 	DISPFD_NUM13 = 0x00002000,             ///< Number 13
 | |
| 	DISPFD_NUM14 = 0x00004000,             ///< Number 14
 | |
| 	DISPFD_NUM15 = 0x00008000,             ///< Number 15
 | |
| 	ENUM_DUMMY4WORD(DISPFDNUM)
 | |
| } DISPFDNUM;
 | |
| 
 | |
| /**
 | |
|     Display Layer operation selection
 | |
| 
 | |
|     This definition is used as the second operand in the disp_lyr_ctrl API to specify which of the display layer control operation
 | |
|     would be performed.
 | |
| */
 | |
| typedef enum {
 | |
| 	/* SET control group */
 | |
| 	DISPLAYER_OP_SET_ENABLE = DISPCMDBASE_DISPLYR,  ///< Set specified display Layer Enable/Disable.
 | |
| 	DISPLAYER_OP_SET_MODE,                  ///< Configure selected layer buffer mode such as BUF Jump mode,Buffer Number, Buffer format.
 | |
| 	DISPLAYER_OP_SET_BUFSIZE,               ///< Set display Buffer Size for Video/OSD layer such as buffer Width/Height/LineOffset
 | |
| 	DISPLAYER_OP_SET_VDOBUFADDR,            ///< Set display Video Buffer Address
 | |
| 	DISPLAYER_OP_SET_OSDBUFADDR,            ///< Set display OSD Buffer Address
 | |
| 	DISPLAYER_OP_SET_ACTBUF,                ///< Set specified active buffer number when buffer is at buffer-repeat-mode.
 | |
| 	DISPLAYER_OP_SET_OUTDIR,                ///< Set Buffer Output Order such as Flip / rotation
 | |
| 	DISPLAYER_OP_SET_WINSIZE,               ///< Set Output Window Size and window offset. This is truely size seen on the display/panel.
 | |
| 	DISPLAYER_OP_SET_PALETTE,               ///< Set the OSD palette table. Valid for OSD layer only.
 | |
| 	DISPLAYER_OP_SET_PALETTEACRCBY,         ///< Set the OSD palette table. Valid for OSD layer only. format ACrCbY
 | |
| 	DISPLAYER_OP_SET_BLEND,                 ///< Set the layer's blending
 | |
| 	DISPLAYER_OP_SET_VDOCOLORKEY_SRC,       ///< Set the Video color key source
 | |
| 	DISPLAYER_OP_SET_COLORKEY,              ///< Set the layer's color key
 | |
| 	DISPLAYER_OP_SET_BLINK,                 ///< Set the layer's blinking
 | |
| 	DISPLAYER_OP_SET_BUFXY,                 ///< Set the x/y of buffer source window
 | |
| 	//DISPLAYER_OP_SET_DMALEN,              ///< set the dma burst length
 | |
| 	DISPLAYER_OP_SET_FDEN,                  ///< Set the FD rect. number enable/disable
 | |
| 	DISPLAYER_OP_SET_FDSIZE,                ///< Set the FD rect. size
 | |
| 	DISPLAYER_OP_SET_FDCOLOR,               ///< Set the FD rect. color
 | |
| 	DISPLAYER_OP_SET_FDLINESWAP,            ///< Set the FD & line layer swap(TRUE:Line is upper than FD / FALSE:FD is upper than Line)
 | |
| 
 | |
| 	/* GET control group */
 | |
| 	DISPLAYER_OP_GET_ENABLE,                ///< Get specified layer Enable/Disable.
 | |
| 	DISPLAYER_OP_GET_MODE,                  ///< Get selected layer buffer mode such as BUF Jump mode,Buffer Number, Buffer format.
 | |
| 	DISPLAYER_OP_GET_BUFSIZE,               ///< Get display Buffer Size for Video/OSD layer such as buffer Width/Height/LineOffset
 | |
| 	DISPLAYER_OP_GET_VDOBUFADDR,            ///< Get display Video Buffer Address
 | |
| 	DISPLAYER_OP_GET_OSDBUFADDR,            ///< Get display OSD Buffer Address
 | |
| 	DISPLAYER_OP_GET_ACTBUF,                ///< Get specified layer active buffer number.
 | |
| 	DISPLAYER_OP_GET_OUTDIR,                ///< Get Buffer Output Order such as Flip / rotation
 | |
| 	DISPLAYER_OP_GET_WINSIZE,               ///< Get Output Window Size and window offset. This is truely size seen on the display/panel.
 | |
| 	DISPLAYER_OP_GET_PALETTE,               ///< Get the OSD palette table. Valid for OSD layer only.
 | |
| 	DISPLAYER_OP_GET_SHADOW_PALETTE,        ///< Get the OSD shadow palette table. Valid for OSD layer only.
 | |
| 	DISPLAYER_OP_GET_PALETTEACRCBY,         ///< Get the OSD palette table. Valid for OSD layer only. format ACrCbY
 | |
| 	DISPLAYER_OP_GET_BLEND,                 ///< Get the layer's blending
 | |
| 	///< @note FD & Line swap = 0 => lower -> upper layer = VDO1--->VDO2--->Line--->FD--->OSD1
 | |
| 	///<                                                      alpha1  alpha2  alpha3  alpha4 [if ARGB1555:alpha5 option]
 | |
| 	///< @note FD & Line swap = 1 => lower -> upper layer = VDO1--->VDO2--->FD--->Line--->OSD1
 | |
| 	///<                                                      alpha1  alpha2  alpha3  alpha4 [if ARGB1555:alpha5 option]
 | |
| 	DISPLAYER_OP_GET_VDOCOLORKEY_SRC,       ///< Get the Video color key source
 | |
| 	DISPLAYER_OP_GET_COLORKEY,              ///< Get the layer's color key
 | |
| 	DISPLAYER_OP_GET_BLINK,                 ///< Get the layer's blinking
 | |
| 	DISPLAYER_OP_GET_BUFXY,                 ///< Get the x/y of buffer source window
 | |
| 	//DISPLAYER_OP_GET_DMALEN,              ///< Get the dma burst length
 | |
| 	DISPLAYER_OP_GET_FDEN,                  ///< Get the FD rect. number enable/disable
 | |
| 	DISPLAYER_OP_GET_FDSIZE,                ///< Get the FD rect. size
 | |
| 	DISPLAYER_OP_GET_FDCOLOR,               ///< Get the FD rect. color
 | |
| 	DISPLAYER_OP_GET_FDLINESWAP,            ///< Get the FD & line layer swap
 | |
| 	DISPLAYER_OP_GET_CST_FROM_RGB_TO_YUV,   ///< Get the OSD layer's YUV data of color key(RGB->YUV)(Only for OSD1)
 | |
| 
 | |
| 	/* Macro API */
 | |
| 	DISPLAYER_OP_SET_VDOBUFCONTENT,         ///< Set specified video layer buffer content to specified color. Valid for video layer only.
 | |
| 
 | |
| 	DISPLAYER_OP_SET_H_BILINEAR,            ///< Set the layer's horizontal scaling method
 | |
| 
 | |
| 	DISPLAYER_OP_SET_BUFWINSIZE,            ///< Set the layer's buffer size and window size
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(DISPLAYER_OP)
 | |
| } DISPLAYER_OP;
 | |
| 
 | |
| /**
 | |
|     Display Layer Control Parameter Definition
 | |
| 
 | |
|     This definition is used as the third operand in the disp_lyr_ctrl API to specify the display layer control parameters
 | |
|     for each of the layer control opeation.
 | |
| */
 | |
| typedef struct {
 | |
| 	union {
 | |
| 		/* SET control group */
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display Layer Enable/Disable
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_ENABLE" to set the specified "DISPLAYER" enable/disable.
 | |
| 		    This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_ENABLE.b_en = TRUE;  //Or FALSE
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_ENABLE, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_ENABLE
 | |
| 			BOOL            b_en;            ///< Set specified display layer ON/OFF. TRUE: Enable. FALSE:Disable.
 | |
| 		} SET_ENABLE;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display Layer Buffer mode/Format
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_MODE"
 | |
| 		    to set the specified "DISPLAYER" buffer Format/mode/Number. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_MODE.buf_format = DISPBUFFORMAT_YUV422;              // Or DISPBUFFORMAT_PAL8 ...etc
 | |
| 		\n  disp_lyr.SEL.SET_MODE.buf_mode   = DISPBUFMODE_BUFFER_REPEAT;         // Or DISPBUFMODE_AUTO_HANDSHAKE
 | |
| 		\n  disp_lyr.SEL.SET_MODE.buf_number = DISPBUFNUM_3;                      // Or DISPBUFNUM_2 / DISPBUFNUM_1
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_MODE, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_MODE
 | |
| 			DISPBUFFORMAT   buf_format;      ///< Video/OSD Buffer Format, such as YUV444/YUV422/YUV420/ARGB8565/ARGB4565
 | |
| 			DISPBUFMODE     buf_mode;        ///< Video/OSD Buffer operation mode. OSD layer support buffer repeat mode only
 | |
| 			DISPBUFNUM      buf_number;      ///< Configure used buffer number for Video/OSD
 | |
| 		} SET_MODE;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display Layer Buffer Size
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_BUFSIZE"
 | |
| 		    to set the specified "DISPLAYER" buffer Width/Height/LineOffset. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_BUFSIZE.ui_buf_width  = 320;
 | |
| 		\n  disp_lyr.SEL.SET_BUFSIZE.ui_buf_height = 240;
 | |
| 		\n  disp_lyr.SEL.SET_BUFSIZE.ui_buf_line_ofs= 320;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_BUFSIZE, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_BUFSIZE
 | |
| 			UINT32          ui_buf_width;     ///< Set display buffer width in PIXEL COUNT for Video/OSD layer.
 | |
| 			UINT32          ui_buf_height;    ///< Set display buffer height in PIXEL COUNT for Video/OSD layer.
 | |
| 
 | |
| 			UINT32          ui_buf_line_ofs;   ///< Set display buffer lineoffset in BYTES for Video/OSD layer.
 | |
| 		} SET_BUFSIZE;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display VIDEO Layer Buffer Address
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_VDOBUFADDR"
 | |
| 		    to set the specified "DISPLAYER" buffer address.
 | |
| 		    This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_VDOBUFADDR.buf_sel     = DISPBUFADR_ALL;
 | |
| 		\n  disp_lyr.SEL.SET_VDOBUFADDR.ui_addr_y0   = 0x400000;
 | |
| 		\n  disp_lyr.SEL.SET_VDOBUFADDR.ui_addr_cb0  = 0x480000;
 | |
| 		\n  disp_lyr.SEL.SET_VDOBUFADDR.ui_addr_cr0  = 0x500000;
 | |
| 		\n  disp_lyr.SEL.SET_VDOBUFADDR.ui_addr_y1   = 0x580000;
 | |
| 		\n  disp_lyr.SEL.SET_VDOBUFADDR.ui_addr_cb1  = 0x600000;
 | |
| 		\n  disp_lyr.SEL.SET_VDOBUFADDR.ui_addr_cr1  = 0x680000;
 | |
| 		\n  disp_lyr.SEL.SET_VDOBUFADDR.ui_addr_y2   = 0x700000;
 | |
| 		\n  disp_lyr.SEL.SET_VDOBUFADDR.ui_addr_cb2  = 0x780000;
 | |
| 		\n  disp_lyr.SEL.SET_VDOBUFADDR.ui_addr_cr2  = 0x800000;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_VDOBUFADDR, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_VDOBUFADDR
 | |
| 			DISPBUFADR      buf_sel;         ///< select which of the buffer addresses would be updated for Video layer.
 | |
| 
 | |
| 			UINT32          ui_addr_y0;       ///< Buffer 0 Starting Address for  Y/RGB565/RGB888 plane
 | |
| 			UINT32          ui_addr_cb0;      ///< Buffer 0 Starting Address for Cb/Alpha  plane
 | |
| 			UINT32          ui_addr_cr0;      ///< Buffer 0 Starting Address for Cr        plane
 | |
| 
 | |
| 			UINT32          ui_addr_y1;       ///< Buffer 1 Starting Address for  Y/RGB565/RGB888 plane
 | |
| 			UINT32          ui_addr_cb1;      ///< Buffer 1 Starting Address for Cb/Alpha  plane
 | |
| 			UINT32          ui_addr_cr1;      ///< Buffer 1 Starting Address for Cr        plane
 | |
| 
 | |
| 			UINT32          ui_addr_y2;       ///< Buffer 2 Starting Address for  Y/RGB565/RGB888 plane
 | |
| 			UINT32          ui_addr_cb2;      ///< Buffer 2 Starting Address for Cb/Alpha  plane
 | |
| 			UINT32          ui_addr_cr2;      ///< Buffer 2 Starting Address for Cr        plane
 | |
| 
 | |
| 			UINT32          ui_addr_y3;       ///< Buffer 3 Starting Address for  Y/RGB565/RGB888 plane
 | |
| 			UINT32          ui_addr_cb3;      ///< Buffer 3 Starting Address for Cb/Alpha  plane
 | |
| 			UINT32          ui_addr_cr3;      ///< Buffer 3 Starting Address for Cr        plane
 | |
| 
 | |
| 		} SET_VDOBUFADDR;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display OSD Layer Buffer Address
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_OSDBUFADDR"
 | |
| 		    to set the specified "DISPLAYER" buffer ADDRESS. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_OSDBUFADDR.buf_sel     = DISPBUFADR_ALL;
 | |
| 		\n  disp_lyr.SEL.SET_OSDBUFADDR.ui_addr_buf0 = 0x400000;
 | |
| 		\n  disp_lyr.SEL.SET_OSDBUFADDR.ui_addr_buf1 = 0x480000;
 | |
| 		\n  disp_lyr.SEL.SET_OSDBUFADDR.ui_addr_buf2 = 0x500000;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_OSDBUFADDR, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_OSDBUFADDR
 | |
| 			DISPBUFADR      buf_sel;         ///< select which of the buffer addresses would be updated for OSD layer.
 | |
| 
 | |
| 			UINT32          ui_addr_buf0;     ///< Buffer 0 Starting Address for OSD layer
 | |
| 			UINT32          ui_addr_buf1;     ///< Buffer 1 Starting Address for OSD layer
 | |
| 			UINT32          ui_addr_buf2;     ///< Buffer 2 Starting Address for OSD layer
 | |
| 
 | |
| #if 1// 96220 has no ARGB buffer format
 | |
| 			UINT32          ui_addr_alpha0;
 | |
| 			UINT32          ui_addr_alpha1;
 | |
| 			UINT32          ui_addr_alpha2;
 | |
| #endif
 | |
| 		} SET_OSDBUFADDR;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display Layer Active Buffer
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_ACTBUF"
 | |
| 		    to set the specified "DISPLAYER" active buffer. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_ACTBUF.active_buf  = DISPACTBUF_0/1/2;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_ACTBUF, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_ACTBUF
 | |
| 			DISPACTBUF      active_buf;      ///< select which Video/OSD buffer is activated. For video layer, this field is valid only at buffer repeat mode.
 | |
| 		} SET_ACTBUF;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display Layer Buffer output direction
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_OUTDIR"
 | |
| 		    to set the specified "DISPLAYER" buffer output direction. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_OUTDIR.buf_out_dir  = DISPOUTDIR_NORMAL;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_OUTDIR, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_OUTDIR
 | |
| 			DISPOUTDIR      buf_out_dir;      ///< select buffer output as Horizontal/Vertical-Flip, or rotation 90/180/270 degrees.
 | |
| 		} SET_OUTDIR;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display Layer output window size and window offset
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_WINSIZE"
 | |
| 		    to set the specified "DISPLAYER" window size and also the window offset. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_WINSIZE.ui_win_width  = 320;
 | |
| 		\n  disp_lyr.SEL.SET_WINSIZE.ui_win_height = 240;
 | |
| 		\n  disp_lyr.SEL.SET_WINSIZE.i_win_ofs_x    = 0;
 | |
| 		\n  disp_lyr.SEL.SET_WINSIZE.i_win_ofs_y    = 0;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_WINSIZE, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_WINSIZE
 | |
| 			UINT32          ui_win_width;     ///< The display Video/OSD layer output window width
 | |
| 			UINT32          ui_win_height;    ///< The display Video/OSD layer output window height
 | |
| 
 | |
| 			INT32          i_win_ofs_x;       ///< The display Video/OSD layer output window offset X
 | |
| 			INT32          i_win_ofs_y;       ///< The display Video/OSD layer output window offset Y
 | |
| 		} SET_WINSIZE;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display OSD Layer palette table
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_PALETTE"
 | |
| 		    to set the specified "DISPLAYER" palette table. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_PALETTE.ui_start     = 0;
 | |
| 		\n  disp_lyr.SEL.SET_PALETTE.ui_number    = 256;
 | |
| 		\n  disp_lyr.SEL.SET_PALETTE.p_pale_entry  = (Address of palette table);
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_PALETTE, &disp_lyr);
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_PALETTE
 | |
| 			UINT32          ui_start;        ///< Start entry id. Valid range from 0~255.
 | |
| 			UINT32          ui_number;       ///< Total number of palette entry to be set. Valid range from 1~256
 | |
| 			UINT32          *p_pale_entry;    ///< p_pale_entry[7~0]:      Cr value of the palette.
 | |
| 			///< p_pale_entry[15~8]:     Cb value of the palette.
 | |
| 			///< p_pale_entry[23~16]:    Y  value of the palette.
 | |
| 			///< p_pale_entry[31~24]:    Alpha value of the palette.
 | |
| 		} SET_PALETTE;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display OSD Layer palette table
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_PALETTE"
 | |
| 		    to set the specified "DISPLAYER" palette table. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_PALETTE.ui_start     = 0;
 | |
| 		\n  disp_lyr.SEL.SET_PALETTE.ui_number    = 256;
 | |
| 		\n  disp_lyr.SEL.SET_PALETTE.p_pale_entry  = (Address of palette table);
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_PALETTE, &disp_lyr);
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_PALETTEACRCBY
 | |
| 			UINT32          ui_start;        ///< Start entry id. Valid range from 0~255.
 | |
| 			UINT32          ui_number;       ///< Total number of palette entry to be set. Valid range from 1~256
 | |
| 			UINT32          *p_pale_entry;    ///<  p_pale_entry[7~0]:      Y value of the palette.
 | |
| 			///< p_pale_entry[15~8]:     Cb value of the palette.
 | |
| 			///< p_pale_entry[23~16]:    Cr  value of the palette.
 | |
| 			///< p_pale_entry[31~24]:    Alpha value of the palette.
 | |
| 		} SET_PALETTEACRCBY;
 | |
| 
 | |
| 
 | |
| 		struct { // DISPLAYER_OP_SET_BLEND
 | |
| 			DISPBLENDTYPE       type;
 | |
| 			UINT32              ui_global_alpha;
 | |
| 			BOOL                b_global_alpha5;
 | |
| 		} SET_BLEND;
 | |
| 
 | |
| 		struct { // DISPLAYER_OP_SET_VDOCOLORKEY_SRC
 | |
| 			DISPVDOCKCMPSOURCE  ck_src;          ///< color key source select
 | |
| 		} SET_VDOCOLORKEY_SRC;
 | |
| 
 | |
| 		struct { // DISPLAYER_OP_SET_COLORKEY
 | |
| 			DISPCKOP            ck_op;           ///< color key operation
 | |
| 			UINT32              ui_ck_y;          ///< color key color Y(R)
 | |
| 			UINT32              ui_ck_cb;         ///< color key color Cb(G)
 | |
| 			UINT32              ui_ck_cr;         ///< color key color Cr(B)
 | |
| 			UINT32              ui_ck_alpha;      ///< color key alpha(only used in osd)
 | |
| 		} SET_COLORKEY;
 | |
| 
 | |
| 		struct { // DISPLAYER_OP_SET_BLINK
 | |
| 			BOOL                b_over_exp_en;     ///< over exposure blinking enable
 | |
| 			BOOL                b_und_exp_en;      ///< under exposure blinking enable
 | |
| 			//DISPBLINKCH         uich;           ///< blinking channel selection
 | |
| 			UINT32              ui_cnt;          ///< blinking frame count
 | |
| 			UINT32              ui_over_exp_th_y;   ///< over exposure blinking threshold Y value
 | |
| 			UINT32              ui_over_exp_th_cb;  ///< over exposure blinking threshold Cb value
 | |
| 			UINT32              ui_over_exp_th_cr;  ///< over exposure blinking threshold Cr value
 | |
| 			UINT32              ui_und_exp_th_y;    ///< under xposure blinking threshold Y value
 | |
| 			UINT32              ui_und_exp_th_cb;   ///< under exposure blinking threshold Cb value
 | |
| 			UINT32              ui_und_exp_th_cr;   ///< under exposure blinking threshold Cr value
 | |
| 			UINT32              ui_over_exp_color_y; ///< over exposure blinking color Y value
 | |
| 			UINT32              ui_over_exp_color_cb;///< over exposure blinking color Cb value
 | |
| 			UINT32              ui_over_exp_color_cr;///< over exposure blinking color Cr value
 | |
| 			UINT32              ui_und_exp_color_y;  ///< under exposure blinking color Y value
 | |
| 			UINT32              ui_und_exp_color_cb; ///< under exposure blinking color Y value
 | |
| 			UINT32              ui_und_exp_color_cr; ///< under exposure blinking color Y value
 | |
| 		} SET_BLINK_TH;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display Layer buffer source position.
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_BUFXY"
 | |
| 		    to set the specified "DISPLAYER" buffer source position. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_BUFXY.ui_buf_ofs_x    = 0;
 | |
| 		\n  disp_lyr.SEL.SET_BUFXY.ui_buf_ofs_y    = 0;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_BUFXY, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_BUFXY
 | |
| 			UINT32          ui_buf_ofs_x;       ///< The display Video/OSD layer buffer source offset X
 | |
| 			UINT32          ui_buf_ofs_y;       ///< The display Video/OSD layer buffer source offset Y
 | |
| 		} SET_BUFXY;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display Layer DMA length
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_DMALEN"
 | |
| 		    to set the specified "DISPLAYER" dma length. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_DMALEN.DMAY_A = DISPDMALEN_32;
 | |
| 		\n  disp_lyr.SEL.SET_DMALEN.DMAC_RGB = DISPDMALEN_32;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_DMALEN, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		/*
 | |
| 		struct// DISPLAYER_OP_SET_DMALEN
 | |
| 		{
 | |
| 		    DISPDMALEN       DMAY_A;        ///< DMA Len for Y or alpha or palette channel
 | |
| 		    DISPDMALEN       DMAC_RGB;      ///< DMA Len for C or RGB channel
 | |
| 		} SET_DMALEN;
 | |
| 		*/
 | |
| 		/**
 | |
| 		    Set FD Layer enable/disable
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_FDEN"
 | |
| 		    to set the specified "FD" enable/disable. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_FDEN.fd_num = DISPFD_NUM0;
 | |
| 		\n  disp_lyr.SEL.SET_FDEN.b_en = TRUE;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_FDLEN, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_FDEN
 | |
| 			DISPFDNUM        fd_num;        ///< FD channel number
 | |
| 			BOOL             b_en;           ///< FD channel enable/disable
 | |
| 		} SET_FDEN;
 | |
| 
 | |
| 		/**
 | |
| 		    Set FD Layer size
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_FDSIZE"
 | |
| 		    to set the specified "FD" size. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_FDSIZE.fd_num = DISPFD_NUM0;
 | |
| 		\n  disp_lyr.SEL.SET_FDSIZE.ui_fdx = 0;
 | |
| 		\n  disp_lyr.SEL.SET_FDSIZE.ui_fdy = 0;
 | |
| 		\n  disp_lyr.SEL.SET_FDSIZE.ui_fdw = 40;
 | |
| 		\n  disp_lyr.SEL.SET_FDSIZE.ui_fdh = 40;
 | |
| 		\n  disp_lyr.SEL.SET_FDSIZE.ui_fd_bord_w = 4;
 | |
| 		\n  disp_lyr.SEL.SET_FDSIZE.ui_fd_bord_h = 4;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_FDSIZE, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_FDSIZE
 | |
| 			DISPFDNUM        fd_num;        ///< FD channel number
 | |
| 			UINT32           ui_fdx;         ///< FD channel position X
 | |
| 			UINT32           ui_fdy;         ///< FD channel position Y
 | |
| 			UINT32           ui_fdw;         ///< FD channel width
 | |
| 			UINT32           ui_fdh;         ///< FD channel height
 | |
| 			UINT32           ui_fd_bord_w;    ///< FD channel border width
 | |
| 			UINT32           ui_fd_bord_h;    ///< FD channel border heigh
 | |
| 		} SET_FDSIZE;
 | |
| 
 | |
| 		/**
 | |
| 		    Set FD Layer color
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_FDCOLOR"
 | |
| 		    to set the specified "FD" color. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_FDCOLOR.fd_num = DISPFD_NUM0;
 | |
| 		\n  disp_lyr.SEL.SET_FDCOLOR.ui_fd_cr_y = 0x00;
 | |
| 		\n  disp_lyr.SEL.SET_FDCOLOR.ui_fd_cr_cb = 0x80;
 | |
| 		\n  disp_lyr.SEL.SET_FDCOLOR.ui_fd_cr_cr = 0x80;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_FDCOLOR, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_FDCOLOR
 | |
| 			DISPFDNUM        fd_num;        ///< FD channel number
 | |
| 			UINT32           ui_fd_cr_y;       ///< FD channel y color
 | |
| 			UINT32           ui_fd_cr_cb;      ///< FD channel cb color
 | |
| 			UINT32           ui_fd_cr_cr;      ///< FD channel cr color
 | |
| 		} SET_FDCOLOR;
 | |
| 
 | |
| 		/**
 | |
| 		    Set layer's horizontal scaling method
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_H_BILINEAR"
 | |
| 		    to set the specified layer. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_H_BILINEAR.bBiliear = TRUE;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_H_BILINEAR, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_H_BILINEAR
 | |
| 			BOOL             b_bilinear;      ///< Horizontal bilinear method
 | |
| 		} SET_H_BILINEAR;
 | |
| 
 | |
| 		/**
 | |
| 		    Set Specified Display Layer Buffer and Window Size
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_BUFWINSIZE"
 | |
| 		    to set the specified "DISPLAYER" buffer Width/Height/LineOffset and window size. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_BUFWINSIZE.ui_buf_width  = 320;
 | |
| 		\n  disp_lyr.SEL.SET_BUFWINSIZE.ui_buf_height = 240;
 | |
| 		\n  disp_lyr.SEL.SET_BUFWINSIZE.ui_buf_line_ofs= 320;
 | |
| 		\n  disp_lyr.SEL.SET_BUFWINSIZE.ui_win_width  = 320;
 | |
| 		\n  disp_lyr.SEL.SET_BUFWINSIZE.ui_win_height = 240;
 | |
| 		\n  disp_lyr.SEL.SET_BUFWINSIZE.i_win_ofs_x    = 0;
 | |
| 		\n  disp_lyr.SEL.SET_BUFWINSIZE.i_win_ofs_y    = 0;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_BUFWINSIZE, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_BUFWINSIZE
 | |
| 			UINT32          ui_buf_width;     ///< Set display buffer width in PIXEL COUNT for Video/OSD layer.
 | |
| 			UINT32          ui_buf_height;    ///< Set display buffer height in PIXEL COUNT for Video/OSD layer.
 | |
| 
 | |
| 			UINT32          ui_buf_line_ofs;   ///< Set display buffer lineoffset in BYTES for Video/OSD layer.
 | |
| 
 | |
| 			UINT32          ui_win_width;     ///< The display Video/OSD layer output window width
 | |
| 			UINT32          ui_win_height;    ///< The display Video/OSD layer output window height
 | |
| 
 | |
| 			INT32          i_win_ofs_x;       ///< The display Video/OSD layer output window offset X
 | |
| 			INT32          i_win_ofs_y;       ///< The display Video/OSD layer output window offset Y
 | |
| 		} SET_BUFWINSIZE;
 | |
| 
 | |
| 		/**
 | |
| 		    Set OSD layer swap parameter
 | |
| 
 | |
| 		    This structure is used for swap osd layer and only valid @ IDE1
 | |
| 		\n  DispDev.SEL.SET_OSDSWAP.bEnOSDSwap  = TRUE or FALSE;
 | |
| 		\n  pDispObj->dev_ctrl(DISPDEV_SET_OSD_LAYER_SWAP, &DispDev);
 | |
| 		*/
 | |
| 		struct { //DISPDEV_SET_OSD_LAYER_SWAP
 | |
| 			BOOL        b_en_fd_line_swap;      ///< Enable / Disable FD line layer swap
 | |
| 			///< 0: FD ' Line (up to low)
 | |
| 			///< 1: Line ' FD (up to low)
 | |
| 		} SET_FDLINESWAP;
 | |
| 
 | |
| 
 | |
| 
 | |
| 		/* GET control group */
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display Layer enable/disable
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_ENABLE"
 | |
| 		    to get the specified "DISPLAYER" layer enable/disable. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_ENABLE, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_ENABLE.b_en"
 | |
| 		    is the specified layer enable/disable.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_ENABLE
 | |
| 			BOOL            b_en;          ///< Get specified display layer ON/OFF. TRUE: Enable. FALSE:Disable.
 | |
| 		} GET_ENABLE;
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display Layer buffer mode/format/number configurations
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_ENABLE"
 | |
| 		    to get the specified "DISPLAYER" layer buffer configurations. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_ENABLE, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_MODE.buf_format"/"disp_lyr.SEL.GET_MODE.buf_mode"/"disp_lyr.SEL.GET_MODE.buf_number"
 | |
| 		    are the specified layer buffer format/mode/number.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_MODE
 | |
| 			DISPBUFFORMAT   buf_format;    ///< Get Video/OSD Buffer Format, such as YUV444/YUV422/YUV420/ARGB8565/ARGB4565
 | |
| 			DISPBUFMODE     buf_mode;      ///< Get Video/OSD Buffer operation mode. OSD layer support buffer repeat mode only
 | |
| 			DISPBUFNUM      buf_number;    ///< Get active buffer number for Video/OSD
 | |
| 		} GET_MODE;
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display Layer buffer width/height/lineoffset
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_BUFSIZE"
 | |
| 		    to get the specified "DISPLAYER" layer buffer width/height/lineoffset. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_BUFSIZE, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_BUFSIZE.ui_buf_width"/"disp_lyr.SEL.GET_BUFSIZE.ui_buf_height"/"disp_lyr.SEL.GET_BUFSIZE.ui_buf_line_ofs"
 | |
| 		    are the specified layer buffer width/height/lineoffset.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_BUFSIZE
 | |
| 			UINT32          ui_buf_width;   ///< Get display buffer width for Video/OSD layer.
 | |
| 			UINT32          ui_buf_height;  ///< Get display buffer height for Video/OSD layer.
 | |
| 			UINT32          ui_buf_line_ofs; ///< Get display buffer lineoffset for Video/OSD layer.
 | |
| 		} GET_BUFSIZE;
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display VIDEO Layer buffer address
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_VDOBUFADDR"
 | |
| 		    to get the specified "DISPLAYER" layer buffer address. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_VDOBUFADDR, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_VDOBUFADDR.active_buf"/"disp_lyr.SEL.GET_VDOBUFADDR.ui_addr_y0"/"disp_lyr.SEL.GET_VDOBUFADDR.ui_addr_cb0"/...
 | |
| 		    are the specified VIDEO layer buffer address and active buffer number.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_VDOBUFADDR
 | |
| 			DISPACTBUF      active_buf;    ///< This field is valid only when video buffer at buffer repeat mode.
 | |
| 			///< Get which of the buffer address is activated for Video layer.
 | |
| 
 | |
| 			UINT32          ui_addr_y0;     ///< Buffer 0 Starting Address for  Y/RGB565 plane
 | |
| 			UINT32          ui_addr_cb0;    ///< Buffer 0 Starting Address for Cb/Alpha  plane
 | |
| 			UINT32          ui_addr_cr0;    ///< Buffer 0 Starting Address for Cr        plane
 | |
| 
 | |
| 			UINT32          ui_addr_y1;     ///< Buffer 1 Starting Address for  Y/RGB565 plane
 | |
| 			UINT32          ui_addr_cb1;    ///< Buffer 1 Starting Address for Cb/Alpha  plane
 | |
| 			UINT32          ui_addr_cr1;    ///< Buffer 1 Starting Address for Cr        plane
 | |
| 
 | |
| 			UINT32          ui_addr_y2;     ///< Buffer 2 Starting Address for  Y/RGB565 plane
 | |
| 			UINT32          ui_addr_cb2;    ///< Buffer 2 Starting Address for Cb/Alpha  plane
 | |
| 			UINT32          ui_addr_cr2;    ///< Buffer 2 Starting Address for Cr        plane
 | |
| 		} GET_VDOBUFADDR;
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display OSD Layer buffer address
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_OSDBUFADDR"
 | |
| 		    to get the specified "DISPLAYER" layer buffer address. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_OSDBUFADDR, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_OSDBUFADDR.active_buf"/"disp_lyr.SEL.GET_OSDBUFADDR.ui_addr_buf0"/"disp_lyr.SEL.GET_OSDBUFADDR.ui_addr_buf1"/...
 | |
| 		    are the specified OSD layer buffer address and active buffer number.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_OSDBUFADDR
 | |
| 			DISPACTBUF      active_buf;      ///< select which one of the buffer address is activated for OSD layer.
 | |
| 
 | |
| 			UINT32          ui_addr_buf0;     ///< Buffer 0 Starting Address for OSD layer
 | |
| 			UINT32          ui_addr_buf1;     ///< Buffer 1 Starting Address for OSD layer
 | |
| 			UINT32          ui_addr_buf2;     ///< Buffer 2 Starting Address for OSD layer
 | |
| 
 | |
| #if 1// 96220 has no ARGB buffer format
 | |
| 			UINT32          ui_addr_alpha0;
 | |
| 			UINT32          ui_addr_alpha1;
 | |
| 			UINT32          ui_addr_alpha2;
 | |
| #endif
 | |
| 		} GET_OSDBUFADDR;
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display Layer active buffer
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_ACTBUF"
 | |
| 		    to get the specified "DISPLAYER" layer active buffer if in the buffer repeat mode. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_ACTBUF, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_ACTBUF.active_buf"
 | |
| 		    is the specified layer active buffer ID.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_ACTBUF
 | |
| 			DISPACTBUF      active_buf;      ///< Get which Video/OSD buffer is activated. For video layer, this field is valid only at buffer repeat mode.
 | |
| 		} GET_ACTBUF;
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display Layer buffer output direction
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_OUTDIR"
 | |
| 		    to get the specified "DISPLAYER" layer buffer output direction. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_OUTDIR, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_OUTDIR.buf_out_dir"
 | |
| 		    is the specified layer buffer output direction.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_OUTDIR
 | |
| 			DISPOUTDIR      buf_out_dir;      ///< Get Horizontal/Vertical-Flip, or rotation 90/180/270 degrees.
 | |
| 		} GET_OUTDIR;
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display Layer output window size/offset
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_WINSIZE"
 | |
| 		    to get the specified "DISPLAYER" layer output window size/offset. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_WINSIZE, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_WINSIZE.ui_win_width"/"disp_lyr.SEL.GET_WINSIZE.ui_win_height"/"disp_lyr.SEL.GET_WINSIZE.i_win_ofs_x"/"disp_lyr.SEL.GET_WINSIZE.i_win_ofs_y"
 | |
| 		    are the specified layer buffer output window size/offset.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_WINSIZE
 | |
| 			UINT32          ui_win_width;     ///< The display Video/OSD layer output window width
 | |
| 			UINT32          ui_win_height;    ///< The display Video/OSD layer output window height
 | |
| 
 | |
| 			INT32          i_win_ofs_x;       ///< The display Video/OSD layer output window offset X
 | |
| 			INT32          i_win_ofs_y;       ///< The display Video/OSD layer output window offset Y
 | |
| 		} GET_WINSIZE;
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display OSD Layer palette table
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_PALETTE"
 | |
| 		    to get the specified "DISPLAYER" layer palette table. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_PALETTE, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_PALETTE.ui_start"/"disp_lyr.SEL.GET_PALETTE.ui_number"/"disp_lyr.SEL.GET_PALETTE.p_pale_entry"
 | |
| 		    are the specified OSD layer palette table.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_PALETTE
 | |
| 			UINT32          ui_start;        ///< Start entry id. Valid range from 0~255.
 | |
| 			UINT32          ui_number;       ///< Total number of palette entry to be set. Valid range from 1~256
 | |
| 			UINT32          *p_pale_entry;    ///< p_pale_entry[7~0]:      Cr value of the palette.
 | |
| 			///< p_pale_entry[15~8]:     Cb value of the palette.
 | |
| 			///< p_pale_entry[23~16]:    Y  value of the palette.
 | |
| 			///< p_pale_entry[31~24]:    Alpha value of the palette.
 | |
| 		} GET_PALETTE;
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display OSD Layer palette table
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_PALETTE"
 | |
| 		    to get the specified "DISPLAYER" layer palette table. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_PALETTE, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_PALETTE.ui_start"/"disp_lyr.SEL.GET_PALETTE.ui_number"/"disp_lyr.SEL.GET_PALETTE.p_pale_entry"
 | |
| 		    are the specified OSD layer palette table.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_PALETTEACRCBY
 | |
| 			UINT32          ui_start;        ///< Start entry id. Valid range from 0~255.
 | |
| 			UINT32          ui_number;       ///< Total number of palette entry to be set. Valid range from 1~256
 | |
| 			UINT32          *p_pale_entry;    ///< p_pale_entry[7~0]:      Y value of the palette.
 | |
| 			///< p_pale_entry[15~8]:     Cb value of the palette.
 | |
| 			///< p_pale_entry[23~16]:    Cr  value of the palette.
 | |
| 			///< p_pale_entry[31~24]:    Alpha value of the palette.
 | |
| 		} GET_PALETTEACRCBY;
 | |
| 
 | |
| 
 | |
| 		/* Macro API */
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Video Display Layer Buffer Content
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_VDOBUFCONTENT" to
 | |
| 		    set the specified Video "DISPLAYER"'s buffer content.
 | |
| 		    This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_VDOBUFCONTENT.b_en = TRUE;  //Or FALSE
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_ENABLE, &disp_lyr);
 | |
| 		    @note This control operation is VD Latached, so the user must set pDispObj->load to validate the configurations.
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_SET_VDOBUFCONTENT
 | |
| 			IDE_BUFFERID            buf_id;    ///< select which of the Buffer ID to fill the content.
 | |
| 			PYUVCOLOR               p_ycbcr;   ///< The color which will be filled up with the buffer
 | |
| 		} SET_VDOBUFCONTENT;
 | |
| 
 | |
| 
 | |
| 		struct { // DISPLAYER_OP_GET_BLEND
 | |
| 			DISPBLENDTYPE       type;
 | |
| 			UINT32              ui_global_alpha;
 | |
| 			BOOL                b_global_alpha5;
 | |
| 		} GET_BLEND;
 | |
| 
 | |
| 
 | |
| 		struct { // DISPLAYER_OP_GET_VDOCOLORKEY_SRC
 | |
| 			DISPVDOCKCMPSOURCE  ck_src;          ///< color key source select
 | |
| 		} GET_VDOCOLORKEY_SRC;
 | |
| 
 | |
| 
 | |
| 		struct { // DISPLAYER_OP_GET_COLORKEY
 | |
| 			DISPCKOP            ck_op;           ///< color key operation
 | |
| 			UINT32              ui_ck_y;          ///< color key color Y(R)
 | |
| 			UINT32              ui_ck_cb;         ///< color key color Cb(G)
 | |
| 			UINT32              ui_ck_cr;         ///< color key color Cr(B)
 | |
| 			UINT32              ui_ck_alpha;      ///< color key alpha(only used in osd)
 | |
| 		} GET_COLORKEY;
 | |
| 
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display Layer buffer source position.
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_SET_BUFXY"
 | |
| 		    to get the specified "DISPLAYER" buffer source position. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_BUFXY, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_BUFXY.ui_buf_ofs_x"
 | |
| 		\n  "disp_lyr.SEL.GET_BUFXY.ui_buf_ofs_y"
 | |
| 		    is the buffer source position of specified "DISPLAYER"
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_BUFXY
 | |
| 			UINT32          ui_buf_ofs_x;       ///< The display Video/OSD layer buffer source offset X
 | |
| 			UINT32          ui_buf_ofs_y;       ///< The display Video/OSD layer buffer source offset Y
 | |
| 		} GET_BUFXY;
 | |
| 
 | |
| 		/**
 | |
| 		    Get Specified Display Layer DMA length
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_DMALEN"
 | |
| 		    to get the specified "DISPLAYER" dma length. This structure shuld be used like this:
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_DMALEN, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.GET_DMALEN.DMAY_A"
 | |
| 		\n  "disp_lyr.SEL.GET_DMALEN.DMAC_RGB"
 | |
| 		    is the dma length of specified "DISPLAYER"
 | |
| 		*/
 | |
| 		/*struct// DISPLAYER_OP_GET_DMALEN
 | |
| 		{
 | |
| 		    DISPDMALEN       DMAY_A;        ///< DMA Len for Y or alpha or palette channel
 | |
| 		    DISPDMALEN       DMAC_RGB;      ///< DMA Len for C or RGB channel
 | |
| 		} GET_DMALEN;
 | |
| 		*/
 | |
| 		/**
 | |
| 		    Get FD Layer enable/disable
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_FDEN"
 | |
| 		    to get the specified "FD" enable/disable. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.GEL.GET_FDEN.fd_num = DISPFD_NUM0;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_FDLEN, &disp_lyr);
 | |
| 		\n  "disp_lyr.GEL.GET_FDEN.b_en"
 | |
| 		    is the FD number enable/disable
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_FDEN
 | |
| 			DISPFDNUM        fd_num;        ///< FD channel number
 | |
| 			BOOL             b_en;           ///< FD channel enable/disable
 | |
| 		} GET_FDEN;
 | |
| 
 | |
| 		/**
 | |
| 		    Get FD Layer size
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_FDSIZE"
 | |
| 		    to get the specified "FD" size. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.SEL.SET_FDSIZE.fd_num = DISPFD_NUM0;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_SET_FDSIZE, &disp_lyr);
 | |
| 		\n  "disp_lyr.SEL.SET_FDSIZE.ui_fdx"
 | |
| 		\n  "disp_lyr.SEL.SET_FDSIZE.ui_fdy"
 | |
| 		\n  "disp_lyr.SEL.SET_FDSIZE.ui_fdw"
 | |
| 		\n  "disp_lyr.SEL.SET_FDSIZE.ui_fdh"
 | |
| 		\n  "disp_lyr.SEL.SET_FDSIZE.ui_fd_bord_w"
 | |
| 		\n  "disp_lyr.SEL.SET_FDSIZE.ui_fd_bord_h"
 | |
| 		    is the FD number size
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_FDSIZE
 | |
| 			DISPFDNUM        fd_num;        ///< FD channel number
 | |
| 			UINT32           ui_fdx;         ///< FD channel position X
 | |
| 			UINT32           ui_fdy;         ///< FD channel position Y
 | |
| 			UINT32           ui_fdw;         ///< FD channel width
 | |
| 			UINT32           ui_fdh;         ///< FD channel height
 | |
| 			UINT32           ui_fd_bord_w;    ///< FD channel border width
 | |
| 			UINT32           ui_fd_bord_h;    ///< FD channel border heigh
 | |
| 		} GET_FDSIZE;
 | |
| 
 | |
| 		/**
 | |
| 		    Get FD Layer color
 | |
| 
 | |
| 		    This structure is used for layer operation code "DISPLAYER_OP_GET_FDCOLOR"
 | |
| 		    to get the specified "FD" color. This structure shuld be used like this:
 | |
| 		\n  disp_lyr.GEL.GET_FDCOLOR.fd_num = DISPFD_NUM0;
 | |
| 		\n  pDispObj->disp_lyr_ctrl(DISPLAYER, DISPLAYER_OP_GET_FDCOLOR, &disp_lyr);
 | |
| 		\n  "disp_lyr.GEL.GET_FDCOLOR.ui_fd_cr_y"
 | |
| 		\n  "disp_lyr.GEL.GET_FDCOLOR.ui_fd_cr_cb"
 | |
| 		\n  "disp_lyr.GEL.GET_FDCOLOR.ui_fd_cr_cr"
 | |
| 		    is the FD number color
 | |
| 		*/
 | |
| 		struct { // DISPLAYER_OP_GET_FDCOLOR
 | |
| 			DISPFDNUM        fd_num;        ///< FD channel number
 | |
| 			UINT32           ui_fd_cr_y;       ///< FD channel y color
 | |
| 			UINT32           ui_fd_cr_cb;      ///< FD channel cb color
 | |
| 			UINT32           ui_fd_cr_cr;      ///< FD channel cr color
 | |
| 		} GET_FDCOLOR;
 | |
| 
 | |
| 		/**
 | |
| 		    Get FD line layer swap parameter
 | |
| 
 | |
| 		    This structure is used for swap osd layer and only valid @ IDE1
 | |
| 		\n  DispDev.SEL.SET_OSDSWAP.bEnOSDSwap  = TRUE or FALSE;
 | |
| 		\n  pDispObj->dev_ctrl(DISPDEV_SET_OSD_LAYER_SWAP, &DispDev);
 | |
| 		*/
 | |
| 		struct { //DISPLAYER_OP_GET_OSDSWAP
 | |
| 			BOOL        b_en_fd_line_swap;      ///< Enable / Disable FD line layer swap
 | |
| 			///< 0: FD ' Line (up to low)
 | |
| 			///< 1: Line ' FD (up to low)
 | |
| 
 | |
| 		} GET_FDLINESWAP;
 | |
| 
 | |
| 		/**
 | |
| 		    Get CST value of RGB to YUV for color key @ ARGB
 | |
| 
 | |
| 		    This structure is used only for OSD layer
 | |
| 		    @code
 | |
| 		    {
 | |
| 				UINT8 r_to_y;
 | |
| 				UINT8 g_to_u;
 | |
| 				UINT8 b_to_v;
 | |
| 
 | |
| 				UINT16  rgb565 = 0x50EA; //RGB565 plane
 | |
| 					=>bit[ 4..0] = R => ((0x50ea & 0x1F) << 3           => 0xa ---> r_to_y
 | |
| 					=>bit[10..5] = G => (((0x50ea >> 5) & 0x3F) << 2)   => 0x07---> g_to_u
 | |
| 					=>bit[4..0] = R => (((0x50ea >> 11) & 0x1F) << 3)   => 0xa ---> b_to_v
 | |
| 				DISPLAYER_PARAM test_disp_param;
 | |
| 
 | |
| 				test_disp_param.SEL.GET_CST_OF_RGB_TO_YUV.r_to_y = r_to_y;
 | |
| 				test_disp_param.SEL.GET_CST_OF_RGB_TO_YUV.g_to_u = g_to_u;
 | |
| 				test_disp_param.SEL.GET_CST_OF_RGB_TO_YUV.b_to_v = b_to_v;
 | |
| 
 | |
| 				disp_set_disp1_layer_ctrl(DISPLAYER_OSD1, DISPLAYER_OP_GET_CST_FROM_RGB_TO_YUV, &test_disp_param);
 | |
| 				DBG_DUMP("output Y=%d, U=%d, V=%d\r\n", p_lyr_param->SEL.GET_CST_OF_RGB_TO_YUV.r_to_y, p_lyr_param->SEL.GET_CST_OF_RGB_TO_YUV.g_to_u, p_lyr_param->SEL.GET_CST_OF_RGB_TO_YUV.b_to_v);
 | |
| 		    }
 | |
| 		    @endcode
 | |
| 
 | |
| 		*/
 | |
| 		struct { //DISPLAYER_OP_GET_CST_FROM_RGB_TO_YUV
 | |
| 			UINT8    r_to_y;    ///< Point of R data and output for Y data (need shift to 8bit)
 | |
| 			UINT8    g_to_u;    ///< Point of G data and output for U data (need shift to 8bit)
 | |
| 			UINT8    b_to_v;    ///< Point of B data and output for V data (need shift to 8bit)
 | |
| 			UINT8    alpha;     ///< Use for align to 4 byte (alpha here is useless)
 | |
| 		} GET_CST_OF_RGB_TO_YUV;
 | |
| 	} SEL;
 | |
| } DISPLAYER_PARAM, *PDISPLAYER_PARAM;
 | |
| //@}
 | |
| 
 | |
| 
 | |
| typedef ER(*DISPLYRCTRL)(DISPLAYER, DISPLAYER_OP, PDISPLAYER_PARAM);
 | |
| //@}
 | |
| 
 | |
| #endif
 | 
