#ifndef _BLT_IOCTL_H_ #define _BLT_IOCTL_H_ #include #include "drv_types.h" #define BLT_CMD_TEXP 0x01 //Text Expansion #define BLT_CMD_GEXP 0x02 //Graphic Expansion #define BLT_CMD_CFILL 0x04 //Color Fill #define BLT_CMD_CLUT 0x08 //CLUT DMA Update #define BLT_CMD_SCL 0x10 //Stretch/Shrink #define BLT_CMD_CP 0x20 //Source Copy #define BLT_CMD_BLD 0x40 //Blending #define BLT_CMD_SWINT 0x80 //SW Interrupt #define BLT_CMD_LINE 0x00800004 //Line draw #define BLT_CMD_ELLIPSE 0x00400004 // #define BLT_CMD_ANTI_ALIAS 0x00000010 #define BLT_CMD_POLYGON_FILL 0x00040040 #define BLT_CMD_GRADIENT_FILL 0x00200004 #define BITS_PER_PIXEL_1 1 #define BITS_PER_PIXEL_2 2 #define BITS_PER_PIXEL_4 4 #define BITS_PER_PIXEL_8 8 #define BITS_PER_PIXEL_16 16 #define BITS_PER_PIXEL_24 24 #define BITS_PER_PIXEL_32 32 #define BYTE_PER_PIXEL_8 1 #define BYTE_PER_PIXEL_24 3 #define DRV_BITS_PER_PIXEL_1 1 #define DRV_BITS_PER_PIXEL_2 0 #define DRV_BITS_PER_PIXEL_4 2 #define DRV_BITS_PER_PIXEL_8 3 #define DRV_BITS_PER_PIXEL_16 4 #define DRV_BITS_PER_PIXEL_24 5 #define DRV_BITS_PER_PIXEL_32 6 //********* Ioctl Blt Rotation AP use //x16 version define #define ROT_DIRECTION_CLOCKWISE 1 #define ROT_DIRECTION_COUNTERCLOCKWISE 2 #define ROT_DIRECTION_HFLIP 3 #define ROT_DIRECTION_VFLIP 4 #define ROT_180_ANGLE 5 //********* x26 will let AP to use #define MODE_2ROT_NORMAL 0x70000000//copy //add 0x200 for check only #define MODE_2ROT_V_FLIP 0x70100000 #define MODE_2ROT_H_FLIP 0x70200000 #define MODE_2ROT_180_ANGLE 0x70300000 #define MODE_2ROT_90_ANGLE_H_FLIP 0x70400000 #define MODE_2ROT_270_ANGLE 0x70500000 #define MODE_2ROT_90_ANGLE 0x70600000 #define MODE_2ROT_90_ANGLE_V_FLIP 0x70700000 #define MODE_ALPHA_INVERT 0xE0100000 #define MODE_BILINEAR_ENABLE 0xE0200000 //******** 368 //------ 0x 1 1 8 => #define BLT_CPE_ALPHA_REPLACE_BSHIFT 8 #define BLT_CPE_ALPHA_CHANGE_BSHIFT 16 #define BLT_CPE_ROTE_BSHIFT 17 #define BLT_CPE_ALPHA_REPLACE_ENABLED_BSHIFT 23 #define BLT_CPE_ALPHA_INVERSE_BSHIFT 24 #define BLT_CPE_DITHER_ENABLED_BSHIFT 25 #define BLT_CPE_FUN_SHIFT 20 //22:20 #define BLT_CPE_FUN_CP 0 #define BLT_CPE_FUN_COMPRE 1 #define BLT_CPE_FUN_DE_COM 2 #define BLT_CPE_FUN_MERGE 3 #define BLT_CPE_FUN_ROP 4 //******** COMPRESS #define BLT_CP_COMPRESS_16A 0x00 #define BLT_CP_FUNC_MASK 0x07 //22:20 #define BLT_CP_COMPRESS_EN 0x01 //22:20 001b #define BLT_CP_COMPRESS_DE 0x02 //22:20 010b #define BLT_CP_COMPRESS_INVERSE_EN 0x05 //22:20 101b #define BLT_CP_COMPRESS_EN_NEW 0x06 //22:20 110b #define BLT_CP_COMPRESS_INVERSE_EN_NEW 0x07 //22:20 111b #define BLT_COMP_SATRT_ADDR 13 //13 //------ 0x 1 3 0 => #define BLT_CPE_TYPE_SHIFT 8 //12:8 #define BLT_CPE_TYPE_ARGB8565_ARGB8565 0x00 #define BLT_CPE_TYPE_ARGB8565_ARGB4444 0x01 #define BLT_CPE_TYPE_8565_2222 0x02 #define BLT_CPE_TYPE_ARGB8565_RGB565 0x03 #define BLT_CPE_TYPE_MERGE_NORMAL 0x04 #define BLT_CPE_TYPE_MERGE_420_YUV 0x05 #define BLT_CPE_TYPE_MERGE_422_YUV 0x25 //13 12:8 #define BLT_CPE_TYPE_MERGE_444_YUV 0x06 #define BLT_CPE_TYPE_MERGE_420_VIP 0x07 #define BLT_CPE_TYPE_MERGE_422_VIP 0x27 //13 12:8 #define BLT_CPE_TYPE_MERGE_444_VIP 0x107 //16 12:8 #define BLT_CPE_TYPE_MERGE_Gray_VIP 0x207 //17 #define BLT_CPE_TYPE_RGBA8888_ARGB8565 0x08 #define BLT_CPE_TYPE_RGB888_ARGB8565 0x09 #define BLT_CPE_TYPE_RGBA5551_ARGB8565 0x0a #define BLT_CPE_TYPE_RGBA4444_ARGB8565 0x0b #define BLT_CPE_TYPE_RGB565_ARGB8565 0x0c #define BLT_CPE_TYPE_LA88_ARGB8565 0x0d #define BLT_CPE_TYPE_L8_ARGB8565 0x0e #define BLT_CPE_TYPE_A8_ARGB8565 0x0f #define BLT_CPE_TYPE_ARGB8888_ARGB8565 0x10 #define BLT_CPE_TYPE_ARGB4444_ARGB8565 0x11 #define BLT_CPE_TYPE_ARGB8565_A8 0x12 #define BLT_CPE_TYPE_ARGB8565_L8 0x13 #define BLT_CPE_TYPE_ARGB8565_L8_Gray 0x14 #define BLT_CPE_TYPE_ABGR8888_ARGB8565 0x15 #define BLT_CPE_TYPE_A8Y8_ARGB8565 0x16 #define BLT_CPE_TYPE_L8_ARGB8555 0x17 #define BLT_CPE_TYPE_ARGB8888_ARGB8888 0x19 #define BLT_CPE_TYPE_ABGR8888_ARGB8888 0x1a #define BLT_CPE_TYPE_RGB888_ARGB8888 0x1b #define BLT_CPE_TYPE_RGB565_ARGB8888 0x1c #define BLT_CPE_TYPE_ARGB8888_RGB565 0x1d #define BLT_CPE_TYPE_ARGB8888_ARGB1555 0x1e #define BLT_CPE_TYPE_ARGB8565_ARGB1555 0x1f //Enable format mode for scaling, blending, scaling&blending, and compress after 331 #define BLT_CPE_MODE_SHIFT 6 //7:6 #define BLT_CPE_MODE_ARGB1555 0x1 #define BLT_CPE_MODE_ARGB4444 0x2 #define BLT_COMPARE_ARGB8565_ARGB8888 0x80000000 // #define BLT_COMPARE_ARGB4444_ARGB8565 (0x80000000 +BLT_CPE_TYPE_ARGB4444_ARGB8565) #define BLT_COMPARE_ARGB8565_ARGB4444 (0x80000000 +BLT_CPE_TYPE_ARGB8565_ARGB4444)\ //******** 358 #define BLT_H264MERGE_NORMAL 0x00180000 //not change OSD has use #define BLT_H264MERGE_420_YUV 0x001a0000 //not change OSD has use #define BLT_H264MERGE_422_YUV 0x001b0000 //not change OSD has use #define BLT_H264MERGE_444_YUV 0x001c0000 //not change OSD has use #define BLT_H264MERGE_420_VIP 0x001d0000 // 368 #define BLT_H264MERGE_422_VIP 0x001e0000 // 368 #define BLT_H264MERGE_444_VIP 0x00190000 // 368 #define BLT_H264MERGE_Gray_VIP 0x00200000 #define BLT_CURSOR_DATA_SW_SIZE (64 * 64 * 3) // 8 5 6 5 //12288 0x3000 #define BLT_CURSOR_DATA_HW_SIZE (64 * 0x100) // It must 2 5 6 alig_ment //16384 0x4000 //Androi_d Virtual Screen Width/Height //taco [ocean blue] #ifdef CONFIG_FB1366_768 #define PS_AND_WIDTH 1366 #define PS_AND_HEIGHT 768 #endif #ifdef CONFIG_FB720 #define PS_AND_WIDTH 1280 #define PS_AND_HEIGHT 720 #endif #ifdef CONFIG_FB1080 #define PS_AND_WIDTH 1920 #define PS_AND_HEIGHT 1080 #endif #ifdef CONFIG_FB768 #define PS_AND_WIDTH 1024 #define PS_AND_HEIGHT 768 #endif #if !defined(PS_AND_WIDTH) || !defined(PS_AND_HEIGHT) #define PS_AND_WIDTH 1920 #define PS_AND_HEIGHT 1080 #endif //~taco [ocean blue] //CC Virtual Screen Width/Height #define PS_CC_WIDTH 16*34//16*32//720 #define PS_CC_HEIGHT 26*15//576 //Subtitle Virtual Screen Width/Height #define PS_SUBTITLE_WIDTH 720 #define PS_SUBTITLE_HEIGHT 576 //Teletex Virtual Screen Width/Height #define PS_TT_WIDTH 12*40//720 #define PS_TT_HEIGHT 10*25//576 //Menu Virtual Screen Width/Height #define PS_MENU_WIDTH 683//600//720 #define PS_MENU_HEIGHT 384//300//576 #define PS_MEDIA_WIDTH 1366 #define PS_MEDIA_HEIGHT 768 //OSDGAME Virtual Sceen Width/Height #define PS_GAME_WIDTH 640 #define PS_GAME_HEIGHT 480 #define OSD_PIXEL_DEPTH 24 // bits per pixel(RGB(5:6:5) + 8-bit Alpha #define OSD_PIXEL_DEPTH_IN_BYTE 3 //(OSD_PIXEL_DEPTH / 8) #define OSD_FAILURE 0 #define OSD_SUCCESS 1 //for update opton Show effect mode #define UPDATE_NOW 0x01 #define UPDATE_FADE_IN 0x02 #define UPDATE_FADE_OUT 0x04 #define UPDATE_FADE_MOV 0x08 #define UPDATE_PULL_DOWN_IN 0x10 #define UPDATE_PULL_DOWN_OUT 0x20 #define UPDATE_PULL_UP_IN 0x40 #define UPDATE_PULL_UP_OUT 0x80 #if 1//ENABLE_BLT_FADE_IN_OUT //pull I_O => hide mov_in + dis_play mov_out #define UPDATE_PULL_I_O_2DOWN 0x0100 #define UPDATE_PULL_I_O_2UP 0x0200 #define UPDATE_PULL_I_O_2LEFT 0x0400 #define UPDATE_PULL_I_O_2RIGHT 0x0800 #define UPDATE_PULL_I_O_DIR_MASK (UPDATE_PULL_I_O_2DOWN|UPDATE_PULL_I_O_2UP|UPDATE_PULL_I_O_2LEFT|UPDATE_PULL_I_O_2RIGHT) //driver only #endif #define TEXT_MODE_ITALIC 0x00000001 #define TEXT_MODE_UNDERLINE 0x00000002 #define TEXT_MODE_DOUBLE_WIDTH 0x00000004 #define TEXT_MODE_DOUBLE_HEIGHT 0x00000008 #define TEXT_MODE_FLASH 0x00000010 //Don't set FLASH directly, Set the following flash mode instead #define TEXT_MODE_FLASH_FG_TO_BG (0x00000020 | TEXT_MODE_FLASH) #define TEXT_MODE_FLASH_FG_INVERT (0x00000040 | TEXT_MODE_FLASH) #define TEXT_MODE_FLASH_FG_BG_INVERT (0x00000080 | TEXT_MODE_FLASH) #define TEXT_MODE_SCROLL 0x00000100 //Don't set SCROLL directly, set the following scroll mode instead #define TEXT_MODE_SCROLL_UP (0x00000200 | TEXT_MODE_SCROLL) #define TEXT_MODE_SCROLL_DOWN (0x00000400 | TEXT_MODE_SCROLL) #define TEXT_MODE_SCROLL_LEFT (0x00000800 | TEXT_MODE_SCROLL) #define TEXT_MODE_SCROLL_RIGHT (0x00001000 | TEXT_MODE_SCROLL) #define TEXT_MODE_LARGE_FONT 0x00002000 #define TEXT_MODE_SMALL_FONT 0x00004000 #define TEXT_MODE_ITALIC_HEAD (0x00008000 | TEXT_MODE_ITALIC) #define TEXT_MODE_ITALIC_TAIL (0x00010000 | TEXT_MODE_ITALIC) #define TEXT_MODE_FORCE_COVER 0x00020000 // for C_C will trans_patent window #define TEXT_MODE_FLASH_FG_TO_BG_PHASE_INVERT (0x00040000 | TEXT_MODE_FLASH) #define TEXT_MODE_FLASH_FG_TO_USERDEF (0x00080000 | TEXT_MODE_FLASH) #define TEXT_MODE_FLASH_RATE_SLOW 0 #define TEXT_MODE_FLASH_RATE_FAST_PHASE_1 0x00100000 #define TEXT_MODE_FLASH_RATE_FAST_PHASE_2 0x00200000 #define TEXT_MODE_FLASH_RATE_FAST_PHASE_3 0x00300000 #define TEXT_MODE_FLASH_RATE_MASK 0x00300000 #define TEXT_MODE_EDGE_RIGHT_DROP 0x01000000 // S/W mode only #define TEXT_MODE_EDGE_RAISED 0x02000000 // S/W mode only #define TEXT_MODE_EDGE_DEPRESSED 0x04000000 // S/W mode only #define TEXT_MODE_EDGE_UNIFORM 0x08000000 // S/W mode only #define TEXT_MODE_EDGE_LEFT_DROP 0x10000000 // S/W mode only #define TEXT_MODE_EDGE_BY_HW 0x20000000 // should set by OSD_lib #define TEXT_MODE_EDGE_SW_ENABLE (TEXT_MODE_EDGE_RIGHT_DROP|TEXT_MODE_EDGE_RAISED|TEXT_MODE_EDGE_DEPRESSED|TEXT_MODE_EDGE_UNIFORM|TEXT_MODE_EDGE_LEFT_DROP) // for blt driver only #define TEXT_FOREGROUND 0 #define TEXT_BACKGROUND 1 #define TEXT_EDGE 2 #define TEXT_SHADOW 3 //special use in TEXT_MODE_FLAHS_FG_TO_USERDEF to define customize flash color #define TEXT_USERDEF_FOREGROUND 2 #define TEXT_USERDEF_BACKGROUND 3 #define TEXT_MODE_2ROT_NORMAL 0x40000000 #define TEXT_MODE_2ROT_V_FLIP 0x40100000 #define TEXT_MODE_2ROT_H_FLIP 0x40200000 #define TEXT_MODE_2ROT_180_ANGLE 0x40300000 #define TEXT_MODE_2ROT_90_ANGLE_H_FLIP 0x40400000 #define TEXT_MODE_2ROT_270_ANGLE 0x40500000 #define TEXT_MODE_2ROT_90_ANGLE 0x40600000 #define TEXT_MODE_2ROT_90_ANGLE_V_FLIP 0x40700000 #define BLT_MAX_PRIORITY_NUM 8 //--------------------------------------------------------------------------------------- typedef enum { PS_BOTTOM =0, PS_ANDROID, PS_CC, PS_SUBTITLE, PS_TT, PS_EX_TT, PS_OSD_GAME, PS_ESTICKER, PS_MEDIA, PS_MENU, PS_KEYPAD, PS_BLTAP, PS_PLANE_NUM, PS_REDO, PS_FLASH, PS_IOCTL }PLANE_STYLE; typedef enum { MODE_ORIGINAL =0, MODE_EBOOK, MODE_GAME, MODE_NUM }MEMORY_MODE; ///////////////////////Color Look Up Table/////////////////////////////////// typedef enum { CR_ALPHA, CR_RED, CR_GREEN, CR_BLUE }COLOR_STYLE; typedef enum { CLUT_TYPE_ARGB, CLUT_TYPE_AYCC }CLUT_TYPE; enum //IOCTL MULTI FUNC { IMF_CUR_DATA_CHANGE_BY_BLT = 1, //should not use IMF_CUR_DATA_CHANGE_BY_AP , // size = 64 x 64 *3 IMF_CUR_DATA_CHANGE_BY_BLT_HALF_W , IMF_CUR_DATA_CHANGE_BY_BLT_HALF_H, IMF_PDP_CHNAGE_SIT }; typedef enum { OSD_SSE_MOVE_FROM_LAST = 0, // not change use last value OSD_SSE_MOVE_FROM_LEFT = 0x1, //notice:: depend on iotcl.h OSD_SSE_MOVE_FROM_UP = 0x2, OSD_SSE_MOVE_FROM_RIGHT = 0x3, OSD_SSE_MOVE_FROM_DOWN = 0x4, OSD_SSE_MOVE_FROM_LEFT_UP = 0x5, OSD_SSE_MOVE_FROM_RIGHT_UP = 0x6, OSD_SSE_MOVE_FROM_LEFT_DOWN = 0x7, OSD_SSE_MOVE_FROM_RIGHT_DOWN = 0x8, OSD_SSE_MOVE_FROM_XY = 0x9, //selt set }OSD_SSE_MOVE_IN_DIRECTION; // Show Special Effect typedef enum { OSD_SSE_MOVE_TO_LAST = 0x0, // not change use last value OSD_SSE_MOVE_TO_LEFT = 0x11, OSD_SSE_MOVE_TO_UP = 0x12, OSD_SSE_MOVE_TO_RIGHT = 0x13, OSD_SSE_MOVE_TO_DOWN = 0x14, OSD_SSE_MOVE_TO_LEFT_UP = 0x15, OSD_SSE_MOVE_TO_RIGHT_UP = 0x16, OSD_SSE_MOVE_TO_LEFT_DOWN = 0x17, OSD_SSE_MOVE_TO_RIGHT_DOWN = 0x18, OSD_SSE_MOVE_TO_XY = 0x19, //selt set }OSD_SSE_MOVE_OUT_DIRECTION; // Show Special Effect typedef enum { //For use to recognize the font type, used to translate the index between unicode and font table FONT_TT = 1, FONT_TT_ITALIC, // 2 FONT_CAPTION, // 3 FONT_CAPTION_ITALIC, // 4 FONT_SYSTEM, // 5 FONT_EPG = FONT_SYSTEM, // 5 FONT_CHINESE, // 6 FONT_CCSTYLE, // 7 FONT_CUSTOM, // 8 FONT_MULTI_LANG0 // 9 //2081126 }FONT_TYPE; //--------------------------------------------------------------------------------------- typedef struct { UINT8 crBlue; UINT8 crGreen; UINT8 crRed; UINT8 crAlpha; }COLOR_ARGB, *PCOLOR_ARGB; typedef enum { RGB_888=0, BGR_888, YUV_888, }DATA_FORMAT; typedef struct { union { ULONG argb; ULONG aycc; COLOR_ARGB argb_byte; }; }COLOR_ENTRY, *PCOLOR_ENTRY; typedef struct { ULONG ClutType:8; //CLUT_TYPE_ARGB: ARGB(8,8,8,8), CLUT_TYPE_AYCC: AYCC(8,8,8,8) ULONG StartEntry:8; ULONG EntryNums:16; // 1 ~ 255 COLOR_ENTRY Entry[1]; }CLU_TABLE, *PCLU_TABLE; typedef struct { ULONG a565:24; ULONG Reserved_1:8; }COLOR_A565, *PCOLOR_A565; typedef struct { ULONG blue:5; ULONG green:6; ULONG red:5; ULONG alpha:8; ULONG Reserved_2:8; }COLOR_A565_BYTE; typedef struct { union{ COLOR_A565 ClrA565; COLOR_A565_BYTE ClrA565Byte; }; }COLOR_24BIT; ///////////////////////////////////////////////////////////////////////////// typedef struct _tagPOINT_ { UINT32 nX:16; UINT32 nY:16; }S_POINT,* PS_POINT; typedef struct _tagSIZE_ { UINT32 nWidth:16; UINT32 nHeight:16; }S_SIZE,* PS_SIZE; typedef struct _tagBlock_ { S_POINT TopLeftPt; S_SIZE Size; }S_BLOCK,* PS_BLOCK; typedef struct _tagRECTANGLE_ { UINT32 nLeft:16; UINT32 nTop:16; UINT32 nRight:16; UINT32 nBottom:16; }S_RECT,*PS_RECT; /*//////////////////////////// Font Table /////////////////////////////////// Font ---> ----------------- \ Address | Char Code 0 | Font Offset, every char code should have the same Font Offset ----------------- / | Char Code 1 | ----------------- | | ----------------- | Char Code N | ----------------- */////////////////////////////////////////////////////////////////////// typedef struct { //The byte length of the character, if it's not byte aligend, rounded up to //the nearest byte size. //For example, a 13*18, 2 bit per pixel font should have 468 bits. //CharLen = 59 byte(actual 58.5 byte) //CharW = 13 //CharH = 18 ULONG CharLen:16; ULONG CharW:8; //number of columns of the character ULONG CharH:8; //number of rows of the character UINT8 CharBmp[1]; //Should allocate size as FontOffset for each CHAR_CODE }CHAR_CODE, *PCHAR_CODE; typedef struct { ULONG FontOffset:16; //FontOffset value should be 16-byte aligned ULONG BitsPerPixel:8; //Value should be 1 or 2. //For 1bpp, 0 is background color, 1 is foreground color //For 2bpp, in addition to 0 and 1, //2 means shadow color and 3 means the edge color //4 may be used in TT 12x10x4, 6x5x4 DRCS ULONG FontType:8; //Enum values defined in FONT_TYPE UINT32 (*IndexTransformFun)(ULONG ); //If the index of the unicode character is not the same to //the index of the font table, the value will not be NULL. //It'll be the function pointer that transform the index of //unicode character to the index of the font table UINT32 reserved1; ULONG reserved2:16; ULONG CharNums:16; //Char numbers of the font table CHAR_CODE Char[1]; //Font address should be 16-byte aligned }FONT_TABLE, *PFONT_TABLE; ///////////////////////////////////////////////////////////////////////////// typedef struct { //If pCluTable is NULL, the following 4 color entry represents the real ARGB value of Backgournd, forground, edge and shadow color. if pCluTable is not NULL, the following 4 color represents the index of the color look up table. In the last case, only low byte is used. Cause the maximum index of the CLUT is 256. PCLU_TABLE pCluTable; COLOR_ENTRY Color[4]; //represent TEXT_BACKGROUND, TEXT_FOREGROUND, TEXT_EDGE and TEXT_SHADOW respectively ULONG TextMode; //eg. italic, flash, double width, double height, etc, the value could be XORed with the pre-defined TEXT_MODE_XXX value }TEXT_ATTRIBUTE, *PTEXT_ATTRIBUTE; typedef struct { PFONT_TABLE pFontTable; PTEXT_ATTRIBUTE pTextAttrib; S_BLOCK DestBlock; S_SIZE fontStrExpSize; // for Str _ Ex will as "Texp size" vs "virture" vs "true size" ULONG TextCount; union{ UINT8 * pCharByte; //if pFontTable->CharNums <= 256, use pCharByte UINT16 * pCharUnicode; //if pFontTable->CharNums > 256, use pCharUnicode }; }OSD_TEXT, * POSD_TEXT; typedef struct _BLT_CMD_UNIT_ { ULONG BltCmd; void * pParam; //pass the following corresponding data structure with the BltCmd ULONG option[2];//option[0]has used for 1 bit }BLT_CMD_UNIT, *PBLT_CMD_UNIT; typedef struct _BLT_IOCTL_PARAM_ { INT32 BlockIndex; //returned from driver ULONG bDisplay:8; ULONG Ps:7; ULONG bUsePTS:1; ULONG BltCmdNums:16; ULONG priority; ULONG Pts; ULONG PtsTimeOut; BLT_CMD_UNIT * pBltCmdUnit; }BLT_IOCTL_PARAM, *PBLT_IOCTL_PARAM; typedef struct _BLT_IOCTL_MULTI_FUNC_ { ULONG functionMode; ULONG oneValue; ULONG moreDataSize; INT8 *pData; }BLT_IOCTL_MULTI_FUNC, *PBLT_IOCTL_MULTI_FUNC; typedef struct _CFILL_UNIT_ { // the coordinate is relative to CFILL block Coordinate S_BLOCK RelBlock; ULONG Argb565Clr:24; //A:r:g:b 8:5:6:5 ULONG Reserved_2:8; }CFILL_UNIT, *PCFILL_UNIT; #define CFILL_TYPE_BLOCK 0 #define CFILL_TYPE_BACKGROUND 1 typedef struct _CFILL_PARAM_ { INT32 DestBlockId; //Returned from Driver INT32 CFillType; //0 : Normal Object, 1:Background //Coordinate relative to the virtual screen of the specified plane //Maximum CFill Size relative to the virtual screen of the specified plane S_BLOCK DestBlock; ULONG CFillUnitNums; CFILL_UNIT * pCfillUnit; }CFILL_PARAM, *PCFILL_PARAM; typedef struct _CLUT_PARAM_ { ULONG IsYCC:1; //1 //1: YCC, 0: RGB ULONG Reserved_1:7; ULONG DestStartEntry:8; // Starting Entry Index to fill, 0~0xff, DestStartEntry+ClutEntryNum should be <= 256 ULONG ClutEntryNum:16; //1 // 1 ~ 256 COLOR_ENTRY * pClutEntry; /* ULONG DestStartEntry:8; // Starting Entry Index to fill, 0~0xff, DestStartEntry+ClutEntryNum should be <= 256 ULONG Reserved_1:24; CLU_TABLE Clut; */ }CLUT_PARAM, *PCLUT_PARAM; typedef struct _MEMORY_PARAM_ { ULONG phyAddr; ULONG Size; }MEMORY_PARAM, *PMEMORY_PARAM; typedef struct _GEXP_PARAM_ { // PLANE_STYLE Ps; ULONG SrcAddr; ULONG MMUEnable; ULONG SrcAddr2; //NULL if the bitmap is not interlaced, usually used in subtitle ULONG MMUEnable2; S_SIZE SrcSize; S_SIZE WishSize; UINT8 alphaOld; UINT8 alphaNew; S_POINT DestLeftTopPt; PCLUT_PARAM pClut; //Used when ClutEn is 1 COLOR_24BIT DclrARGB565[4]; //argb Only, not used when ClutEn is 1 // ULONG DclrARGB565:24; ULONG SrcBPP:3; ULONG DclrRoute:3; // Dclr Set value : 0 ~ 5 ULONG ClutEn:1; //0: Disable CLUT(using Dclr Mode), 1: Enable CLUT ULONG Reserved_1:25; ULONG Mode; INT32 DestBlockId; //Returned from Driver }GEXP_PARAM, *PGEXP_PARAM; typedef struct _GEXPDFB_PARAM_ { ULONG SrcAddr; ULONG DestAddr; //NULL if the bitmap is not interlaced, usually used in subtitle ULONG DestOffset; UINT32 SrcWidth:16; UINT32 SrcHeight:16; PCLUT_PARAM pClut; //Used when ClutEn is 1 ULONG SrcBPP:3; ULONG Reserved_1:29; INT32 DestBlockId; //Returned from Driver }GEXPDFB_PARAM, *PGEXPDFB_PARAM; typedef struct _TEXP_PARAM_ { // PLANE_STYLE Ps; INT32 DestBlockId; //Returned from Driver OSD_TEXT OsdText; }TEXP_PARAM, *PTEXP_PARAM; typedef struct _BLD_PARAM_ { // PLANE_STYLE Ps; INT32 SrcBlockId; //Set by UI INT32 DestBlockId; //Set by UI, if 0 means blend to the Plane ULONG SrcPosX:16; //PosX in Src position ULONG SrctPosY:16; //PosY in Src Position ULONG SrcWidth:12; //in Pixel ULONG SrcHeight:12; //in Pixel ULONG Reserved_1:8; ULONG DestPosX:16; //PosX in Dest Position ULONG DestPosY:16; //PosY in Dest Position }BLD_PARAM, *PBLD_PARAM; typedef struct _SCL_PARAM_ { // PLANE_STYLE Ps; INT32 SrcBlockId; INT32 DestBlockId; //Returned from driver ULONG SrcPosX:16; //PosX in Src Position ULONG SrctPosY:16;//PoxY in Src Position ULONG SrcWidth:12; //in Pixel ULONG SrcHeight:12; //in Pixel ULONG Reserved_1:8; //End of Dword ULONG DestWidth:12; //in Pixel ULONG DestHeight:12; //in Pixel ULONG Reserved_2:8; //End of Dword ULONG DestOffset:14; //in Byte, if 0 or too small then would be decided by driver ULONG Reserved_3:18; //End of Dword }SCL_PARAM, *PSCL_PARAM; typedef struct _CP_PARAM_ { // PLANE_STYLE Ps; INT32 SrcBlockId; INT32 DestBlockId; //Returned from driver ULONG SrcWidth:12; //in Pixel ULONG SrcHeight:12; //in Pixel ULONG Reserved_1:8; //End of Dword ULONG DestOffset:14; //in Byte, if 0 or too small then would be decided by driver ULONG Reserved_2:18; //End of Dword }CP_PARAM, *PCP_PARAM; ///////////////////////////////////////////////////////////////////// typedef struct _REMOVE_BLOCK_IOCTL_PARAM_ { PLANE_STYLE Plane; INT32 BlockType; //-1 means all ULONG bUpdate:16; //if bUpdate = 0, do not update display screen, otherwise, display screen will be updated. ULONG bFound:8; //Return from Driver ULONG Reserved:8; INT32 RmBlkNums; //If 0 means all, the pRmBlockIndex will be ignored, otherwize it means the nums of the pDispBlockIndex nums INT32 * pRmBlockIndex; }REMOVE_BLOCK_IOCTL_PARAM, *PREMOVE_BLOCK_IOCTL_PARAM; typedef struct _REMOVE_SHOW_GROUP_IOCTL_PARAM_ { PLANE_STYLE Plane; ULONG bUpdate:16; //if bUpdate = 0, do not update display screen, otherwise, display screen will be updated. ULONG bFound:8; //Return from Driver ULONG Reserved:8; INT32 RmBlkNums; INT32 * pRmBlockIndex; S_POINT *pRmsPt; }REMOVE_SHOW_GROUP_IOCTL_PARAM, *PREMOVE_SHOW_GROUP_IOCTL_PARAM; typedef struct _DISPLAY_BLOCK_IOCTL_PARAM_ { PLANE_STYLE Plane; INT32 BlockType; //-1 means all ULONG bUpdate:16; //if bUpdate = 0, do not update display screen, otherwise, display screen will be updated immediately. ULONG bFound:8; //Return from Driver ULONG Reserved:8; INT32 DispBlkNums; //If 0 means all, the pDispBlockIndex will be ignored, otherwize it means the nums of the pDispBlockIndex nums INT32 * pDispBlockIndex; }DISPLAY_BLOCK_IOCTL_PARAM, *PDISPLAY_BLOCK_IOCTL_PARAM; typedef struct _MOVE_BLOCK_IOCTL_PARAM_ { PLANE_STYLE Plane; INT32 BlockIndex; S_POINT DestPt; //Dispaly Postion, each -1 value of nX or nY means no change S_BLOCK SrcBlock; //If you want to display partial of the src block, set the top-left point and size of the block, if it's left unchanged, set the value to -1 ULONG bUpdate:16; ULONG bFound:8; //Return from driver, 0 means cann't find the block ULONG Reserved:8; }MOVE_BLOCK_IOCTL_PARAM, *PMOVE_BLOCK_IOCTL_PARAM; ///////////////////////////////////////////////////////////////////// typedef struct _RESERVED_FONT_INFO_ { ULONG ReservedAddr; ULONG ReservedSize; ULONG AvailableAddr; ULONG RequiredFontSize; ULONG RequiredMode; //2081126 => }RESERVED_FONT_INFO, *PRESERVED_FONT_INFO; #define OSD_FONT_SITE_AT_0 0 // use same addr range #define OSD_FONT_SITE_ORDER 1 // use other addr range #define OSD_FONT_MULTI_LANG0_SIZE 150*1024 //2081126 <= typedef struct _RGB_3TO4_TRANSFORM_ { ULONG SrcAddr; ULONG Width; ULONG Height; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestLineOffset; }RGB_3TO4_TRANSFORM, *PRGB_3TO4_TRANSFORM; typedef struct _RGBYCC_SCALING_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestWidth; ULONG DestHeight; ULONG DestLineOffset; ULONG TempAddr; ULONG DataFormat; #ifdef BLT_HAPS ULONG MMU_Enable_line; ULONG TypeBits:5; ULONG Blending; ULONG Srcbpp; PCLUT_PARAM pClut; //Used when ClutEn is 1 #endif }RGBYCC_SCALING, *PRGBYCC_SCALING; typedef struct _RGBYCC_SCALING_MODES_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestWidth; ULONG DestHeight; ULONG DestLineOffset; ULONG Mode; // Dithering:1 [10] InterAlgorithm:1 [9] Dithering:1 [8] TypeBits:5 [4:0] }RGBYCC_SCALING_MODES, *PRGBYCC_SCALING_MODES; typedef struct _OSDPLANE_SETTING_ { PLANE_STYLE Ps; S_SIZE VirtualScrSize; S_BLOCK OsdPlaneBlock; }OSDPLANE_SETTING, *POSDPLANE_SETTING; typedef struct _OSDPLANE_DISPLAYSIZE_ { PLANE_STYLE Ps; S_POINT sPt; S_SIZE DisplaySize; }OSDPLANE_DISPLAYSIZE, *POSDPLANE_DISPLAYSIZE; typedef struct _BLT_MEMCOPY_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestLineOffset; }BLT_MEMCOPY, *PBLT_MEMCOPY; typedef struct _BLT_MEMCOPY_EX_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestLineOffset; ULONG Option; }BLT_MEMCOPY_EX, *PBLT_MEMCOPY_EX; typedef struct _BLT_CONCENTRATE_ // com_press 3 { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestLineOffset; ULONG Option; ULONG OutOption; ULONG UpperBboundAddr; }BLT_CONCENTRATE, *PBLT_CONCENTRATE; typedef struct _BLT_OSC_EVEN_ { ULONG cursorX; ULONG cursorY; ULONG cursorW; //picture W ULONG cursorH; //picture H ULONG phyAddress; //when only chagne set value if set 0 => not chane ULONG turnOn; //when only chagne set 1 ULONG turnOff; //when only chagne set 1 ULONG lineOffset; }BLT_OSC_EVEN, *PBLT_OSC_EVEN; typedef struct _BLT_OSC_MOVE_ //O SC 02 { ULONG Hds; ULONG Vds; ULONG Hde; ULONG Vde; ULONG address; // //ULONG byteOffset; // odd, even ULONG InversePICAddr; // , when inver_se PIC to use ; SW inver_se ULONG InversePICOffset; // , when inver_se PIC to use ; SW inver_se }BLT_OSC_MOVE, *PBLT_OSC_MOVE; typedef struct _BLT_OSC_INI_ //ini_t will use //O SC 03 { ULONG baseAddr; // same as address //not use //only fix use it had mod 16 value ULONG w; // pic's W ULONG h; // pic's H ULONG offset; ULONG reg_00; // Os_c size:3 offset:2 UINT8 onOff; ULONG setLineH; // inver_se need ULONG bWOffset; // inver_se need ULONG brushOffset; // inver_se need }BLT_OSC_INI, *PBLT_OSC_INI; typedef struct _BLT_BLD_2S1D_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestLineOffset; ULONG Option; ULONG Src1Addr; ULONG Src1LineOffset; }BLT_BLD_2S1D, *PBLT_BLD_2S1D; typedef struct _Blt_H264_MERGE_ { ULONG SrcWidth; ULONG SrcHeight; ULONG SrcAddr0; ULONG SrcLineOffset0; ULONG SrcAddr1; ULONG SrcLineOffset1; ULONG SrcAddr2; ULONG SrcLineOffset2; ULONG DestAddr; ULONG DestLineOffset; ULONG Option; }Blt_H264_MERGE, *PBlt_H264_MERGE; typedef struct _BLT_MEMSET_ { ULONG DestAddr; ULONG DestWidth; ULONG DestHeight; ULONG DestLineOffset; ULONG Value:24; ULONG Reserved:8; }BLT_MEMSET, *PBLT_MEMSET; typedef struct _OSD_MEMSET_MODE_ { ULONG DestAddr; ULONG DestWidth; ULONG DestHeight; ULONG DestLineOffset; ULONG Value; ULONG ModeByte; //[15:0] must 2, 3, 4 => "5 6 5", "8 5 6 5" , "8 8 8 8" [16] Bet Argb En }OSD_MEMSET_MODE, *POSD_MEMSET_MODE; typedef struct _BLT_MERGE_STR_BLOCK_PARAM_ { PLANE_STYLE Ps; ULONG osdType; INT32 isFlashing; INT32 nItem; INT32 *pBlockIdsIn; INT32 *pBlockIdOut; }BLT_MERGE_STR_BLOCK_PARAM, *PBLT_MERGE_STR_BLOCK_PARAM; typedef struct _OSDPLANE_INT_ { PLANE_STYLE Ps; UINT32 intd; }OSDPLANE_INT, *POSDPLANE_INT; typedef struct _OSDPLANE_UINT_ { PLANE_STYLE Ps; UINT32 uint; }OSDPLANE_UINT, *POSDPLANE_UINT; typedef struct _OSDPLANE_POINT_ { PLANE_STYLE Ps; S_POINT sPt; }OSDPLANE_POINT, *POSDPLANE_POINT; typedef struct _OSD_SHOW_IN_OUT_INFO_ { PLANE_STYLE Ps; INT32 rect_X; INT32 rect_Y; INT32 rect_W; INT32 rect_H; INT32 shift_X; // total will shift value must > 0 INT32 shift_Y; // total will shift value must > 0 INT32 stepNo; // to finish step number must > 0 INT32 msdelay; //each step will delay ms time must > 0 default:30 }OSD_SHOW_IN_OUT_INFO, *POSD_SHOW_IN_OUT_INFO; typedef struct _OSDPLANE_CUTRATIO_ { S_RECT CutWin; S_BLOCK DispWin; }OSDPLANE_CUTRATIO, *POSDPLANE_CUTRATIO; //---------------------------365chip------------------------------------------------------ typedef struct _OSD_LINE_DRAW_PARAM_ { ULONG DestAddr; ULONG DestLineOffset; ULONG Width; ULONG X0; ULONG Y0; ULONG X1; ULONG Y1; ULONG Mask; ULONG Mode; COLOR_24BIT Color; }OSD_LINE_DRAW_PARAM, *POSD_LINE_DRAW_PARAM; typedef struct _OSD_ELLIPSE_F_PARAM_ { ULONG DestAddr; ULONG DestLineOffset; ULONG Width; ULONG X; ULONG Y; ULONG X1; ULONG Y1; ULONG Mask; COLOR_24BIT ColorInner; COLOR_24BIT ColorLine; COLOR_24BIT ColorOut; }OSD_ELLIPSE_F_PARAM, *POSD_ELLIPSE_F_PARAM; typedef struct _OSD_ELLIPSE_FB_PARAM_ { ULONG DestAddr; ULONG DestLineOffset; ULONG Width; ULONG X; ULONG Y; ULONG X1; ULONG Y1; ULONG Mask; ULONG Delta; ULONG UseDBit; COLOR_24BIT ColorInner; COLOR_24BIT ColorLine; COLOR_24BIT ColorOut; }OSD_ELLIPSE_FB_PARAM, *POSD_ELLIPSE_FB_PARAM; typedef struct _OSD_ANTI_ALIAS_PARAM_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestWidth; ULONG DestHeight; ULONG DestLineOffset; ULONG H_Alias; ULONG V_Alias; ULONG F_Option; }OSD_ANTI_ALIAS_PARAM, *POSD_ANTI_ALIAS_PARAM; typedef struct _OSD_POLYGON_FILL_PARAM_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestLineOffset; ULONG X0; ULONG Y0; ULONG X1; ULONG Y1; ULONG X2; ULONG Y2; COLOR_24BIT ColorIn; COLOR_24BIT ColorOut; ULONG Mode; }OSD_POLYGON_FILL_PARAM, *POSD_POLYGON_FILL_PARAM; typedef struct _OSD_GRADIENT_FILL_PARAM_ { ULONG DestAddr;; ULONG DestWidth; ULONG DestHeight; ULONG DestLineOffset; ULONG H_Enable; ULONG H_Reflect; ULONG H_ChangeValueAlpah; ULONG H_ChangeValueRed; ULONG H_ChangeValueGreen; ULONG H_ChangeValueBlue; ULONG H_PixelAlpha; ULONG H_PixelRed; ULONG H_PixelGreen; ULONG H_PixelBlue; ULONG V_Enable; ULONG V_Reflect; ULONG V_ChangeValueAlpah; ULONG V_ChangeValueRed; ULONG V_ChangeValueGreen; ULONG V_ChangeValueBlue; ULONG V_PixelAlpha; ULONG V_PixelRed; ULONG V_PixelGreen; ULONG V_PixelBlue; ULONG Argb565Clr; ULONG UpArgb565Clr; ULONG LowArgb565Clr; }OSD_GRADIENT_FILL_PARAM, *POSD_GRADIENT_FILL_PARAM; typedef struct _OSD_FORMAT_TRANS_ // Ex 6 { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestLineOffset; ULONG Mode; ULONG AlphaNewOld; }OSD_FORMAT_TRANS, *POSD_FORMAT_TRANS; typedef struct _OSD_COPY_SPECI_ // Ex 6 { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestLineOffset; ULONG IsSpeci; ULONG IsAlphaTest; ULONG AlphaTestValue; ULONG AlphaTestMode; ULONG RoteMode; }OSD_COPY_SPECI, *POSD_COPY_SPECI; typedef struct _OSD_LOGIC_OP_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestLineOffset; ULONG Mode; }OSD_LOGIC_OP, *POSD_LOGIC_OP; typedef struct _OSD_BLD_MULTI_FORMAT_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestLineOffset; ULONG SrcColorFact; ULONG DestColorFact; ULONG SrcAlphaFact; ULONG DestAlphaFact; ULONG Mode; ULONG FillColor; ULONG Src1Addr; ULONG Src1LineOffset; }OSD_BLD_MULTI_FORMAT, *POSD_BLD_MULTI_FORMAT; typedef struct _OSD_PATTERN_ROP_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG Src2Addr; ULONG Src2LineOffset; ULONG DestAddr; ULONG DestLineOffset; ULONG PatternAddr; ULONG PatternLineOffset; ULONG Mode; }OSD_PATTERN_ROP, *POSD_PATTERN_ROP; typedef struct _OSD_BEZIER_CURVE_ { ULONG DestAddr; ULONG DestLineOffset; ULONG LineUseMode; ULONG LineWidth; ULONG ClrA8565; ULONG X0; ULONG Y0; ULONG X1; ULONG Y1; ULONG Xa; ULONG Ya; ULONG Xb; ULONG Yb; }OSD_BEZIER_CURVE, *POSD_BEZIER_CURVE; typedef struct _tagOSDROUND_RECT { ULONG DestAddr; ULONG DestWidth; ULONG DestHeight; ULONG DestOffset; COLOR_24BIT DestDrawData; ULONG x; ULONG y; }OSDROUND_RECT, *POSDROUND_RECT; typedef struct _RGBYCC_P_SCALING_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestWidth; ULONG DestHeight; ULONG DestLineOffset; ULONG Para_nnVH; // 8~80 }RGBYCC_P_SCALING, *PRGBYCC_P_SCALING; typedef struct _BLT_ROTATION_ { ULONG SrcAddr; ULONG SrcWidth; ULONG SrcHeight; ULONG SrcLineOffset; ULONG DestAddr; ULONG DestLineOffset; ULONG RotDirection; }BLT_ROTATION, *PBLT_ROTATION; typedef struct _BLT_FB_Info { UINT32 FB_OnScreen_Addr; UINT32 FB_OffScreen_Addr; UINT32 FB_Width; UINT32 FB_Height; UINT32 FB_Lineoffset; UINT32 BLT_FB_Size; UINT32 BLT_Eng_Size; UINT32 FB_Addr; UINT32 eng_Source_Addr; UINT32 eng_FB_Region_Addr; UINT32 eng_tmp_Addr; #if (defined(CONFIG_SUPPORT_TTX)||defined(CONFIG_SUPPORT_MHEG5)) UINT32 eng_FB_Tmp_Addr; #endif ULONG andBufSize; ULONG andPhyAddr; ULONG andVirAddr; ULONG andoffset; ULONG bitmapoffset; ULONG transp_X; ULONG transp_Y; ULONG transp_W; ULONG transp_H; ULONG reserved_X; ULONG reserved_Y; ULONG reserved_W; ULONG reserved_H; ULONG reserved_Alpha; ULONG reserved_mem_size; //UINT32 FB_Enable; }BLT_FB_Info,*PBLT_FB_Info; typedef struct _BLT_SHOW_EFFECT_PARAM_ { PLANE_STYLE Ps; // set by Osd lib OSD_SSE_MOVE_IN_DIRECTION inDir; // set 0 not change S_POINT insPt; // if set x= -1 or y = -1 => not change INT32 inStepNumber; // wish how step to finish, min 2 // set 0 not change INT32 inStepIntervalMs; // set 0 not change OSD_SSE_MOVE_OUT_DIRECTION outDir; S_POINT outsPt; // if set x= -1 or y = -1 => not change INT32 outStepNumber; // wish how step to finish, min 2 // set 0 not change INT32 outStepIntervalMs; // set 0 not change }BLT_SHOW_EFFECT_PARAM, *PBLT_SHOW_EFFECT_PARAM; typedef struct _BLT_FB_Param { ULONG FB_On_Address; ULONG FB_Off_Address; ULONG FB_Width; ULONG FB_Height; ULONG BLT_Source_Address; ULONG BLT_FBRegion_Address; ULONG BLT_Tmp_Address; }BLT_FB_Param,*PBLT_FB_Param; typedef struct _BLT_STB_PARAM { UINT32 HStart; UINT32 VStart; UINT32 HEnd; UINT32 VEnd; UINT32 nWidth; UINT32 nHeight; INT32 doUnderScan; UINT32 top; UINT32 down; UINT32 left; UINT32 right; UINT32 isUnderScanChange; UINT32 mChangeTo; }BLT_STB_PARAM, *PBLT_STB_PARAM; typedef struct _BLT_BLOCK_HOLE_PARAM_ { INT32 BlockIndex; ULONG bDisplay:8; ULONG Ps:7; ULONG bUsePTS:1; ULONG BltCmdNums:16; ULONG sBlockNums:16; S_BLOCK *pSBlock; ULONG setAlpha; ULONG option; //reserved }BLT_BLOCK_HOLE_PARAM, *PBLT_BLOCK_HOLE_PARAM; typedef struct _OSD_MIRROR_ { INT32 nBlockId; // input: will mir_ror's ID, output: after mirror use ID S_POINT sPt; }OSD_MIRROR, * POSD_MIRROR; typedef struct _BLT_MIRROR_PARAM_ { INT32 nBlockId;// input: will mir_ror's ID, output: after mirror use ID S_POINT sPt; ULONG bDisplay:8; ULONG Ps:7; ULONG bUsePTS:1; ULONG BltCmdNums:16; }BLT_MIRROR_PARAM, * PBLT_MIRROR_PARAM; typedef struct _OSD_MIRROR_EX_CP_ { INT32 nBlockId; // input: will mir_ror's ID, output: after mirror use ID S_POINT sPt; S_SIZE Size; // -1 or 0xffff is not chage size UINT8 oldAlpha; UINT8 newAlpha; // if(old == new) => does not change UINT8 blendAlpha; // if 0 => does not all block blen_d }OSD_MIRROR_EX_CP, * POSD_MIRROR_EX_CP; typedef struct _BLT_MIRROR_EX_CP_PARAM_ { INT32 nBlockId;// input: will mir_ror's ID, output: after mirror use ID S_POINT sPt; ULONG bDisplay:8; ULONG Ps:7; ULONG bUsePTS:1; ULONG BltCmdNums:16; S_SIZE Size; // -1 or 0xffff is not chage size UINT8 oldAlpha; UINT8 newAlpha; // if(old == new) => does not change UINT8 blendAlpha; // if 0 => does not all block blen_d }BLT_MIRROR_EX_CP_PARAM, * PBLT_MIRROR_EX_CP_PARAM; typedef struct _OSD_MEM_INFO_ { ULONG width; ULONG height; ULONG offset; ULONG osdAddress; ULONG osdSize; ULONG osdUsedSize; ULONG fontAddress; ULONG fontSize; ULONG compMem_0; ULONG compMem_1; ULONG dispMem_0; ULONG dispMem_1; ULONG cmdqMem; ULONG drvVersion; ULONG osdVersion; ULONG oscMem_0; ULONG reserved_2; ULONG reserved_1; ULONG reserved_0; }OSD_MEM_INFO, *POSD_MEM_INFO; typedef struct _BLT_BLOCK_DUMP_OSD_ { UINT8 *sourAddr[70]; S_POINT insPt; INT32 line; UINT8 * Addr; UINT32 offset; }BLT_BLOCK_DUMP_OSD, *PBLT_BLOCK_DUMP_OSD; typedef struct _BLT_BYPASS_WINDOW_ { S_BLOCK BypassWin[4]; }BLT_BYPASS_WINDOW, *PBLT_BYPASS_WINDOW; typedef struct _BLT_ZOOM_ASPECT_ { INT32 HPercent; INT32 VPercent; }BLT_ZOOM_ASPECT, *PBLT_ZOOM_ASPECT; //*************************************** #ifndef BLT_HAPS #define DRV_BLT_MAGIC 't' #else #ifdef SISOSD_DEV_MAJOR #define DRV_BLT_MAGIC SISOSD_DEV_MAJOR #else #define DRV_BLT_MAGIC 94 #endif #endif #define DRV_BLT_CMD _IOWR(DRV_BLT_MAGIC, 1, BLT_IOCTL_PARAM *) #define DRV_BLT_FONTINFO _IOWR(DRV_BLT_MAGIC, 2, RESERVED_FONT_INFO *) #define DRV_BLT_RGBTRANSFORM _IOWR(DRV_BLT_MAGIC, 3, RGB_3TO4_TRANSFORM *) #define DRV_BLT_REMOVEBLOCK _IOWR(DRV_BLT_MAGIC, 4, REMOVE_BLOCK_IOCTL_PARAM *) #define DRV_BLT_CMDDEBUG _IOWR(DRV_BLT_MAGIC, 5, BLT_IOCTL_PARAM *) #define DRV_BLT_CMDDEBUG_TT _IOWR(DRV_BLT_MAGIC, 6, BLT_IOCTL_PARAM *) #define DRV_BLT_RGBYCC_SCALING _IOWR(DRV_BLT_MAGIC, 7, RGBYCC_SCALING *) #define DRV_BLT_DISPLAYBLOCK _IOWR(DRV_BLT_MAGIC, 8, DISPLAY_BLOCK_IOCTL_PARAM *) #define DRV_BLT_MOVEBLOCK _IOWR(DRV_BLT_MAGIC, 9, MOVE_BLOCK_IOCTL_PARAM *) #define DRV_BLT_QUERY_OSDPLANE _IOWR(DRV_BLT_MAGIC, 10, OSDPLANE_DISPLAYSIZE *) #define DRV_BLT_SET_PLANEBLOCK _IOWR(DRV_BLT_MAGIC, 11, OSDPLANE_SETTING *) #define DRV_BLT_MEM_COPY _IOWR(DRV_BLT_MAGIC, 12, BLT_MEMCOPY *) #define DRV_BLT_MEM_SET _IOWR(DRV_BLT_MAGIC, 13, BLT_MEMSET *) #define DRV_BLT_HIDEBLOCK _IOWR(DRV_BLT_MAGIC, 14, DISPLAY_BLOCK_IOCTL_PARAM *) #define DRV_BLT_ROTATION _IOWR(DRV_BLT_MAGIC, 15, BLT_ROTATION *) #define DRV_BLT_MEM_COPY_EX _IOWR(DRV_BLT_MAGIC, 16, BLT_MEMCOPY_EX *) #define DRV_BLT_MEM_COMPARE_3BU _IOWR(DRV_BLT_MAGIC, 17, BLT_MEMCOPY *) #define DRV_BLT_MEM_COMPARE_2BU _IOWR(DRV_BLT_MAGIC, 18, BLT_MEMCOPY *) #define DRV_BLT_MEM_COMPARE_ROT _IOWR(DRV_BLT_MAGIC, 19, BLT_MEMCOPY_EX *) #define DRV_BLT_MEM_COMPARE_32BU _IOWR(DRV_BLT_MAGIC, 20, BLT_MEMCOPY *) #define DRV_BLT_MEM_COMPARE_PATT _IOWR(DRV_BLT_MAGIC, 21, BLT_MEMCOPY *) //#define DRV_BLT_OSD_PRINT_OR_NOT _IOWR(DRV_BLT_MAGIC, 22, ULONG *) #define DRV_BLT_TEST_FILLBLENDING _IOWR(DRV_BLT_MAGIC, 23, BLT_MEMSET *) #define DRV_BLT_TEST_BLENDING _IOWR(DRV_BLT_MAGIC, 24, BLT_MEMCOPY *) #define DRV_BLT_TEST_BLENDFADE _IOWR(DRV_BLT_MAGIC, 25, BLT_MEMCOPY_EX *) #define DRV_BLT_MERGE_STR_BLOCK _IOWR(DRV_BLT_MAGIC, 26, BLT_MERGE_STR_BLOCK_PARAM *) #define DRV_BLT_SHOW_EFFECT_IN_Dir _IOWR(DRV_BLT_MAGIC, 27, OSDPLANE_UINT *) #define DRV_BLT_SHOW_EFFECT_IN_XY _IOWR(DRV_BLT_MAGIC, 28, OSDPLANE_POINT *) #define DRV_BLT_SHOW_EFFECT_OUT_Dir _IOWR(DRV_BLT_MAGIC, 29, OSDPLANE_UINT *) #define DRV_BLT_SHOW_EFFECT_OUT_XY _IOWR(DRV_BLT_MAGIC, 30, OSDPLANE_POINT *) #define DRV_BLT_SHOW_EFFECT_IN_LOOP _IOWR(DRV_BLT_MAGIC, 31, OSDPLANE_INT *) #define DRV_BLT_SHOW_EFFECT_IN_INTERVAL _IOWR(DRV_BLT_MAGIC, 32, OSDPLANE_INT *) #define DRV_BLT_SHOW_EFFECT_OUT_LOOP _IOWR(DRV_BLT_MAGIC, 33, OSDPLANE_INT *) #define DRV_BLT_SHOW_EFFECT_OUT_INTERVAL _IOWR(DRV_BLT_MAGIC, 34, OSDPLANE_INT *) #define DRV_BLT_SHOW_GROUP_MOVE _IOWR(DRV_BLT_MAGIC, 35, OSDPLANE_INT *) #define DRV_BLT_SET_SHOW_EFFECT_PARAMETER _IOWR(DRV_BLT_MAGIC, 36, BLT_SHOW_EFFECT_PARAM *) #define DRV_BLT_GET_SHOW_EFFECT_PARAMETER _IOWR(DRV_BLT_MAGIC, 37, BLT_SHOW_EFFECT_PARAM *) #define DRV_BLT_YUV_SCALING _IOWR(DRV_BLT_MAGIC, 38, BLT_SHOW_EFFECT_PARAM *) #define DRV_BLT_MOVE_HIDDEN_AS_MIRROR_SOURCE_BLOCK _IOWR(DRV_BLT_MAGIC, 39, OSDPLANE_INT *) #define DRV_BLT_RELEASE_MIRROR_SOURCE_BLOCK _IOWR(DRV_BLT_MAGIC, 40, OSDPLANE_INT *) #define DRV_BLT_DRAW_MIRROR_BLOCK _IOWR(DRV_BLT_MAGIC, 41, BLT_MIRROR_PARAM *) #define DRV_BLT_CONCENTRATE _IOWR(DRV_BLT_MAGIC, 42, BLT_CONCENTRATE *) #define DRV_BLT_H264_MERGE _IOWR(DRV_BLT_MAGIC, 43, Blt_H264_MERGE *) #define DRV_BLT_H264_COMPARE _IOWR(DRV_BLT_MAGIC, 44, Blt_H264_MERGE *) #define DRV_BLT_BLENDING_2S1D _IOWR(DRV_BLT_MAGIC, 45, BLT_BLD_2S1D *) #define DRV_BLT_LOOP_CMD _IOWR(DRV_BLT_MAGIC, 46, BLT_MEMCOPY *) #define DRV_BLT_GET_MEM_INFO _IOWR(DRV_BLT_MAGIC, 47, OSD_MEM_INFO *) #define DRV_BLT_SHOW_IN_OUT_INFO _IOWR(DRV_BLT_MAGIC, 48, OSD_SHOW_IN_OUT_INFO *) #define DRV_BLT_DRAW_MIRROR_EX_CP_BLOCK _IOWR(DRV_BLT_MAGIC, 49, BLT_MIRROR_EX_CP_PARAM *) #define DRV_BLT_IDLE_DRV _IOWR(DRV_BLT_MAGIC, 50, OSDPLANE_INT *) #define DRV_BLT_WORKING_DRV _IOWR(DRV_BLT_MAGIC, 51, OSDPLANE_INT *) #define DRV_BLT_LINE_DRAW _IOWR(DRV_BLT_MAGIC, 52, OSD_LINE_DRAW_PARAM *) #define DRV_BLT_ELLIPSE_FILL _IOWR(DRV_BLT_MAGIC, 53, OSD_ELLIPSE_F_PARAM *) #define DRV_BLT_ANTI_ALIAS _IOWR(DRV_BLT_MAGIC, 54, OSD_ANTI_ALIAS_PARAM *) #define DRV_BLT_POLYGON_FILL _IOWR(DRV_BLT_MAGIC, 55, OSD_POLYGON_FILL_PARAM *) #define DRV_BLT_FORMAT_TRANS _IOWR(DRV_BLT_MAGIC, 56, OSD_FORMAT_TRANS *) #define DRV_BLT_COMPARE_TRANS _IOWR(DRV_BLT_MAGIC, 57, OSD_FORMAT_TRANS *) #define DRV_BLT_LOGIC_OP _IOWR(DRV_BLT_MAGIC, 58, OSD_LOGIC_OP *) #define DRV_BLT_COMPARE_LOGIC _IOWR(DRV_BLT_MAGIC, 59, OSD_LOGIC_OP *) #define DRV_BLT_GRADIENT_FILL _IOWR(DRV_BLT_MAGIC, 60, OSD_GRADIENT_FILL_PARAM *) #define DRV_BLT_BLEND_MULTI_FORMAT _IOWR(DRV_BLT_MAGIC, 61, OSD_BLD_MULTI_FORMAT *) #define DRV_BLT_COPY_SPECI_TEST _IOWR(DRV_BLT_MAGIC, 62, OSD_COPY_SPECI *) #define DRV_BLT_PATTERN_ROP _IOWR(DRV_BLT_MAGIC, 63, OSD_PATTERN_ROP *) #define DRV_BLT_BEZIER_CURVE _IOWR(DRV_BLT_MAGIC, 64, OSD_BEZIER_CURVE *) #define DRV_BLT_ELLIPSE_FILLB _IOWR(DRV_BLT_MAGIC, 65, OSD_ELLIPSE_FB_PARAM *) #define DRV_BLT_RGBYCC_P_SCALING _IOWR(DRV_BLT_MAGIC, 66, RGBYCC_P_SCALING *) #define DRV_BLT_MEM_SET_565 _IOWR(DRV_BLT_MAGIC, 67, BLT_MEMSET *) #define DRV_BLT_ELLIPSE_FILLB_FULL _IOWR(DRV_BLT_MAGIC, 68, OSD_ELLIPSE_FB_PARAM *) #define DRV_BLT_ROUND_RECT _IOWR(DRV_BLT_MAGIC, 69, OSDROUND_RECT *) //#define GRAPHIC_ELLIPSE_FILL _IOWR(DRV_BLT_MAGIC, 70, Graphic_ELLIPSE_FB_PARAM *) //#define GRAPHIC_MEM_SET _IOWR(DRV_BLT_MAGIC, 71, Graphic_MEMSET *) //#define GRAPHIC_LINE_DRAW _IOWR(DRV_BLT_MAGIC, 72, Graphic_LINE_DRAW_PARAM *) //#define GRAPHIC_MEM_COPY _IOWR(DRV_BLT_MAGIC, 73, Graphic_MEMCOPY *) //#define GRAPHIC_BEZIER_CURVE _IOWR(DRV_BLT_MAGIC, 74, Graphic_BEZIER_CURVE *) //#define GRAPHIC_SCALING _IOWR(DRV_BLT_MAGIC, 75, Graphic_SCALING *) //#define GRAPHIC_POLYGON _IOWR(DRV_BLT_MAGIC, 76, Graphic_POLYGON_FILL_PARAM *) //#define GRAPHIC_ROTATE _IOWR(DRV_BLT_MAGIC, 77, Graphic_ROTATION *) //#define GRAPHIC_ANTIALIAS _IOWR(DRV_BLT_MAGIC, 78, Graphic_ANTI_ALIAS_PARAM *) //#define GRAPHIC_ROUNDRECT _IOWR(DRV_BLT_MAGIC, 79, Graphic_ROUND_RECT_PARAM *) //#define GRAPHIC_MULTIF_BLEND _IOWR(DRV_BLT_MAGIC, 80, Graphic_MULTIF_BLEND_PARAM *) //#define GRAPHIC_FORMAT_TRANS _IOWR(DRV_BLT_MAGIC, 81, Graphic_FORMAT_TRANS_PARAM *) //#define GRAPHIC_ROUNDRECT_2 _IOWR(DRV_BLT_MAGIC, 82, Graphic_ROUND_RECT2_PARAM *) #define DRV_GET_TOTAL_SIZE _IOWR(DRV_BLT_MAGIC, 83, And_Buffer_Param *) #define DRV_MAP _IOWR(DRV_BLT_MAGIC, 84, And_Buffer_Param *) #define DRV_MAP_END _IOWR(DRV_BLT_MAGIC, 85, And_Buffer_Param *) //#define GRAPHIC_QUERYBUFINFO _IOWR(DRV_BLT_MAGIC, 86, Graphic_BUFINFO *) #define GRAPHIC_BUFAREACOPY _IOWR(DRV_BLT_MAGIC, 87, Graphic_BUFAREACOPY *) //#define GRAPHIC_8888_BLT _IOWR(DRV_BLT_MAGIC, 88, Graphic_BUFAREACOPY *) #define GRAPHIC_BUFAREABLEND _IOWR(DRV_BLT_MAGIC, 89, Graphic_BUFAREABLEND *) //#define Graphic_BitmapAllocation _IOWR(DRV_BLT_MAGIC, 90, Graphic_BITMAPALLOCATION *) //#define Graphic_BitmapRelease _IOWR(DRV_BLT_MAGIC, 91, Graphic_BITMAPALLOCATION *) //#define SIS516BLT_MEM_8888_CHECKSUM _IOWR(DRV_BLT_MAGIC, 92, TEST_MEMCOMPARE *) #define GRAPHIC_AllocBitmap _IOWR(DRV_BLT_MAGIC, 93, ULONG *) #define GRAPHIC_DeallocBitmap _IOWR(DRV_BLT_MAGIC, 94, ULONG *) #define GRAPHIC_DeallocByPid _IOWR(DRV_BLT_MAGIC, 95, ULONG *) #define DRV_BLT_CURSOR_INI_XY _IOWR(DRV_BLT_MAGIC, 97, ULONG *) #define DRV_BLT_IS_USE_CURSOR _IOWR(DRV_BLT_MAGIC, 98, ULONG *) #define DRV_BLT_OSC_EVEN _IOWR(DRV_BLT_MAGIC, 99, BLT_OSC_EVEN *) #define DRV_BLT_DRAW_AND _IOWR(DRV_BLT_MAGIC, 100, ULONG *) #define DRV_BLT_MEMSET_MODE _IOWR(DRV_BLT_MAGIC, 107, OSD_MEMSET_MODE *) #define DRV_BLT_SCALING_MODES _IOWR(DRV_BLT_MAGIC, 127, RGBYCC_SCALING_MODES *) #define DRV_BLT_QUERY_VIDEO_PLANE _IOWR(DRV_BLT_MAGIC, 128, S_SIZE *) #define DRV_BLT_MULTI_FUNC _IOWR(DRV_BLT_MAGIC, 129, BLT_IOCTL_MULTI_FUNC *) #define DRV_BLT_FLASH_SCALLING _IOWR(DRV_BLT_MAGIC, 130, ULONG *) #define DRV_BLT_BLOCK_HOLES _IOWR(DRV_BLT_MAGIC, 132, BLT_BLOCK_HOLE_PARAM *) #define DRV_BLT_JPEG_MULTIP_ALPHA _IOWR(DRV_BLT_MAGIC, 133, BLT_MEMCOPY_EX *) #define DRV_BLT_ALLOC_OSDBLOCK _IOWR(DRV_BLT_MAGIC, 134, MEMORY_PARAM *) #define DRV_BLT_FREE_OSDBLOCK _IOWR(DRV_BLT_MAGIC, 135, MEMORY_PARAM *) #define DRV_BLT_GRAPHIC_INDEX_EXP _IOWR(DRV_BLT_MAGIC, 136, GEXPDFB_PARAM *) #define DRV_BLT_DUMP_OSD _IOWR(DRV_BLT_MAGIC, 137, BLT_BLOCK_DUMP_OSD*) #define DRV_BLT_RELEASE_MHEG5_TEMP _IOWR(DRV_BLT_MAGIC, 139, ULONG *) #define DRV_BLT_GET_MEMC_BYPASS_WINDOW _IOWR(DRV_BLT_MAGIC, 141, BLT_BYPASS_WINDOW*) #define DRV_BLT_PRIMARY_SURFACE_FILP _IOWR(DRV_BLT_MAGIC, 142, MEMORY_PARAM *) #define DRV_BLT_GRAPHIC_ALLOC_BUFFER _IOWR(DRV_BLT_MAGIC, 143, MEMORY_PARAM *) #define DRV_BLT_GRAPHIC_FREE_BUFFER _IOWR(DRV_BLT_MAGIC, 144, MEMORY_PARAM *) #define DRV_BLT_YUV_MULTI_SCALING _IOWR(DRV_BLT_MAGIC, 145, BLT_SHOW_EFFECT_PARAM *) #define DRV_BLT_SET_OSD _IOWR(DRV_BLT_MAGIC, 146, BOOL *) #define DRV_BLT_HAS_BLOCK _IOWR(DRV_BLT_MAGIC, 147, ULONG *) #define DRV_BLT_DUMP_MEMORY _IOWR(DRV_BLT_MAGIC, 148, BLT_BLOCK_DUMP_OSD*) #define DRV_BLT_SET_MEMORY_MODE _IOWR(DRV_BLT_MAGIC, 149, UINT8 *) #define DRV_BLT_YUV_SCALING_CONVERT_ARGB _IOWR(DRV_BLT_MAGIC, 150, BLT_SHOW_EFFECT_PARAM *) #define DRV_BLT_SET_SUBTITLE _IOWR(DRV_BLT_MAGIC, 151, BOOL *) #define DRV_BLT_MEMORY_ALLOC_SET _IOWR(DRV_BLT_MAGIC, 152, UINT8 *) #define DRV_BLT_MEMORY_DUMP _IOWR(DRV_BLT_MAGIC, 153, UINT8 *) #define DRV_BLT_SET_ZOOM_ASPECT _IOWR(DRV_BLT_MAGIC, 154, BLT_ZOOM_ASPECT *) #define DRV_BLT_IOC_MAXNUM 155 #endif //End of _BLT_IOCTL_H_