#ifndef __CC_DEF_H__ #define __CC_DEF_H__ #include "DHL_Types.h" #if 0 __Configuration__() {} #endif #define MAX_NUM_WIDE_COL 42 #define MAX_NUM_4X3_COL 32 #define MAX_NUM_ROW 15 #define MAX_NUM_KOR_WIDE_COL 52 #define MAX_NUM_KOR_4X3_COL 40 #define MAX_NUM_KOR_ROW 12 //font size°¡ ÀÛÀº °æ¿ì ÃÖ´ë »çÀÌÁî ÀÌ»óÀÇ ±ÛÀÚ°¡ µé¾î°¥ ¼ö ÀÖ±â ‹š¹®¿¡, //8Á¤µµÀÇ ¿©À¯ºÐÀ» µÐ´Ù. #if USE_KOR_CC #define MAX_NUM_COL (MAX_NUM_KOR_WIDE_COL+8) #else #define MAX_NUM_COL (MAX_NUM_WIDE_COL+8) #endif #define DCC_AUTO_SET 0xff #define DCC_TRP_CODE 0x520 #define MAX_SIZE_PIC_UD 108 //ATSC id(4) + typecode(1) + cc data(98) + ¿©À¯ //ccdata = hdr(2) + cccnt max 32 * 3 #define DCC_SET_RECT(r,a,b,c,d) (r)->x=a,(r)->y=b,(r)->w=c,(r)->h=d #if 0 __Picture_User_Data__() {} #endif typedef enum { eDCC_PIC_CT_UNKNOWN=0x0, eDCC_PIC_CT_I=0x1, eDCC_PIC_CT_P=0x2, eDCC_PIC_CT_B=0x3, } tDCC_PicCodingType; /* coding type */ typedef enum { eDCC_UD_TC_UNKNOWN=0x0, eDCC_UD_TC_708=0x3, eDCC_UD_TC_608=0x4, eDCC_UD_TC_SCTE2X=0x5 } tDCC_UDTypeCode; #if 0 __708_Spec_Def__() {} #endif typedef enum { eDCC_S_NONE=0, eDCC_S_CC1, eDCC_S_CC2, eDCC_S_CC3, eDCC_S_CC4, eDCC_S_T1, eDCC_S_T2, eDCC_S_T3, eDCC_S_T4, eDCC_S_CS1, eDCC_S_CS2, eDCC_S_CS3, eDCC_S_CS4, eDCC_S_CS5, eDCC_S_CS6, eDCC_S_CSEXT, eDCC_S_NUM } tDCC_Service; #define CC_SERVICE_NAME(s) \ s==eDCC_S_CC1?"CC1":\ s==eDCC_S_CC2?"CC2":\ s==eDCC_S_CC3?"CC3":\ s==eDCC_S_CC4?"CC4":\ s==eDCC_S_T1?"T1":\ s==eDCC_S_T2?"T2":\ s==eDCC_S_T3?"T3":\ s==eDCC_S_T4?"T4":\ s==eDCC_S_CS1?"CS1":\ s==eDCC_S_CS2?"CS2":\ s==eDCC_S_CS3?"CS3":\ s==eDCC_S_CS4?"CS4":\ s==eDCC_S_CS5?"CS5":\ s==eDCC_S_CS6?"CS6":"None" typedef enum { eDCC_C0_NUL=0x00, eDCC_C0_ETX=0x03, eDCC_C0_BS=0x08, eDCC_C0_FF=0x0C, eDCC_C0_CR=0x0D, eDCC_C0_HCR=0x0E, eDCC_C0_EXT1=0x10, eDCC_C0_P16=0x18 } tDCC_C0; #define CC_C0_NAME(c) \ c==eDCC_C0_NUL?"NUL":\ c==eDCC_C0_ETX?"ETX":\ c==eDCC_C0_BS?"BS":\ c==eDCC_C0_FF?"FF":\ c==eDCC_C0_CR?"CR":\ c==eDCC_C0_HCR?"HCR":\ c==eDCC_C0_EXT1?"EXT1":\ c==eDCC_C0_P16?"P16":"Unknown" typedef enum { eDCC_C1_CW0=0x80, eDCC_C1_CW1, eDCC_C1_CW2, eDCC_C1_CW3, eDCC_C1_CW4, eDCC_C1_CW5, eDCC_C1_CW6, eDCC_C1_CW7, eDCC_C1_CLW, eDCC_C1_DSW, eDCC_C1_HDW, eDCC_C1_TGW, eDCC_C1_DLW, eDCC_C1_DLY, eDCC_C1_DLC, eDCC_C1_RST, eDCC_C1_SPA=0x90, eDCC_C1_SPC, eDCC_C1_SPL, eDCC_C1_SWA=0x97, eDCC_C1_DF0, eDCC_C1_DF1, eDCC_C1_DF2, eDCC_C1_DF3, eDCC_C1_DF4, eDCC_C1_DF5, eDCC_C1_DF6, eDCC_C1_DF7 } tDCC_C1; #define CC_C1_NAME(c) \ c==eDCC_C1_CW0?"CW0":\ c==eDCC_C1_CW1?"CW1":\ c==eDCC_C1_CW2?"CW2":\ c==eDCC_C1_CW3?"CW3":\ c==eDCC_C1_CW4?"CW4":\ c==eDCC_C1_CW5?"CW5":\ c==eDCC_C1_CW6?"CW6":\ c==eDCC_C1_CW7?"CW7":\ c==eDCC_C1_CLW?"CLW":\ c==eDCC_C1_DSW?"DSW":\ c==eDCC_C1_HDW?"HDW":\ c==eDCC_C1_TGW?"TGW":\ c==eDCC_C1_DLW?"DLW":\ c==eDCC_C1_DLY?"DLY":\ c==eDCC_C1_DLC?"DLC":\ c==eDCC_C1_RST?"RST":\ c==eDCC_C1_SPA?"SPA":\ c==eDCC_C1_SPC?"SPC":\ c==eDCC_C1_SPL?"SPL":\ c==eDCC_C1_SWA?"SWA":\ c==eDCC_C1_DF0?"DF0":\ c==eDCC_C1_DF1?"DF1":\ c==eDCC_C1_DF2?"DF2":\ c==eDCC_C1_DF3?"DF3":\ c==eDCC_C1_DF4?"DF4":\ c==eDCC_C1_DF5?"DF5":\ c==eDCC_C1_DF6?"DF6":\ c==eDCC_C1_DF7?"DF7":"Unknown" typedef enum { eDCC_CR_C0=0, eDCC_CR_G0, eDCC_CR_C1, eDCC_CR_G1, eDCC_CR_C2, eDCC_CR_G2, eDCC_CR_C3, eDCC_CR_G3 } tDCC_CR; #define CC_CR_NAME(c) \ c==eDCC_CR_C0?"C0":\ c==eDCC_CR_G0?"G0":\ c==eDCC_CR_C1?"C1":\ c==eDCC_CR_G1?"G1":\ c==eDCC_CR_C2?"C2":\ c==eDCC_CR_G2?"G2":\ c==eDCC_CR_C3?"C3":\ c==eDCC_CR_G3?"G3":"Unknown" typedef enum { eDCC_J_LEFT=0, eDCC_J_RIGHT, eDCC_J_CENTER, eDCC_J_FULL } tDCC_Justification; typedef enum { eDCC_D_LTTORT=0, eDCC_D_RTTOLT, eDCC_D_TPTOBT, eDCC_D_BTTOTP } tDCC_Direction; typedef enum { eDCC_O_SOLID=0, eDCC_O_FLASH, eDCC_O_TRANSLUCENT, eDCC_O_TRANSPARENT } tDCC_Opacity; typedef enum { eDCC_S_SMALL=0, eDCC_S_STANDARD, eDCC_S_LARGE } tDCC_Size; typedef enum { eDCC_O_SUBSCRIPT=0, eDCC_O_NORMAL, eDCC_O_SUPERSCRIPT } tDCC_Offset; typedef enum { eDCC_ET_NONE=0, eDCC_ET_RAISED, eDCC_ET_DEPRESSED, eDCC_ET_UNIFORM, eDCC_ET_LEFT_DROP_SHADOW, eDCC_ET_RIGHT_DROP_SHADOW } tDCC_EdgeType; typedef enum { //bit 2:b, 1: g, 0: r eDCC_C_BLACK=0x0, eDCC_C_RED=0x1, eDCC_C_GREEN=0x2, eDCC_C_YELLOW=0x3, eDCC_C_BLUE=0x4, eDCC_C_MAGENTA=0x5, eDCC_C_CYAN=0x6, eDCC_C_WHITE=0x7, eDCC_C_TRANSPARENT=0x10, eDCC_C_NONE=0x11, //¾È±×¸² } tDCC_Color; typedef enum { eDCC_FS_DEFAULT=0, eDCC_FS_SERIFMONO, eDCC_FS_SERIF, eDCC_FS_SANSERIFMONO, eDCC_FS_SANSERIF, eDCC_FS_CASUAL, eDCC_FS_CURSIVE, eDCC_FS_SMALLCAPITAL, eDCC_FS_ANALOG, //analog Àü¿ë. eDCC_FS_KOREAN=100, } tDCC_FontStyle; typedef struct { UINT8 j; UINT8 pd; //print direction UINT8 sd; //scroll direction UINT8 ww; //word wrap UINT8 de; //display effect UINT8 ed; //effect direction UINT8 es; //effect speed; UINT8 fc; //fr, fg, fb UINT8 fo; //fill opacity UINT8 bt; //border(edge) UINT8 bc; //br, bg, bb } tDCC_WinAttr; typedef struct { UINT8 s : 2; //pen size UINT8 fs : 3; //font style UINT8 tt : 4; //text tag UINT8 o : 2; //offset UINT8 u : 1; //underline UINT8 i : 1; //italic UINT8 et : 3; //edge type UINT8 fc : 3; //fr, fg, fb UINT8 fo : 2; UINT8 bc : 3; //br, bb, bg UINT8 bo : 2; UINT8 ec : 3; //er, eg, eb UINT8 p16 : 1; // p16ÀÇ codeÀÎÁö.. } tDCC_PenAttr; typedef struct { UINT8 s; UINT8 fs; UINT8 tt; UINT8 o; UINT8 u; UINT8 i; UINT8 et; UINT8 fc; UINT8 fo; UINT8 bc; UINT8 bo; UINT8 ec; } tDCC_PenUserAttr; #if 0 __608_Spec_Def__() {} #endif typedef enum { eDCC_C_RCL=0x20, eDCC_C_BS, eDCC_C_AOF, eDCC_C_AON, eDCC_C_DER, eDCC_C_RU2, eDCC_C_RU3, eDCC_C_RU4, eDCC_C_FON, eDCC_C_RDC, eDCC_C_TR, eDCC_C_RTD, eDCC_C_EDM, eDCC_C_CR, eDCC_C_ENM, eDCC_C_EOC, eDCC_C_TO1=0x21, eDCC_C_TO2, eDCC_C_TO3 } tDCC_CtrlCode; typedef enum { eDCC_M_NONE=0x0, eDCC_M_ROLLUP2, eDCC_M_ROLLUP3, eDCC_M_ROLLUP4, eDCC_M_POPON, eDCC_M_PAINTON, eDCC_M_TEXT } eDCC_Mode; #if 0 __User_Define__() {} #endif typedef enum { eDCC_R_480=0, eDCC_R_720, eDCC_R_1080, eDCC_R_540, eDCC_R_NUM } tDCC_Resoulution; typedef enum { eCMD_SET_TIMER=0, eCMD_TIMER, eCMD_TIMER_RESET, eCMD_SYNC, eCMD_BUF_FULL, eCMD_SERVICE_ON, eCMD_USER_INIT, eCMD_USER_SET_DISPLAY, eCMD_USER_SET_SERVICE, eCMD_USER_SET_KOREAN, eCMD_USER_SET_OPTION, eCMD_USER_SET_ATTR, eCMD_USER_SET_POSITION, eCMD_USER_SET_FEEDING, eCMD_C0, //14 eCMD_CWX, eCMD_DFX, eCMD_CLW, eCMD_DLW, eCMD_DSW, eCMD_HDW, eCMD_TGW, eCMD_SWA, eCMD_SPA, eCMD_SPC, //21 eCMD_SPL, eCMD_DLY, eCMD_DLC, eCMD_RST, eCMD_GX, eCMD_USER_DATA=0x40, eCMD_CC_DATA_PACKETS } tDCC_CmdSet; typedef struct { INT16 x; INT16 y; INT16 w; INT16 h; } tDCC_RECT; typedef struct { UINT32 cmd; UINT32 opt; UINT32 param1; UINT32 param2; } tDCC_CMD; typedef struct { UINT8 pic_type; UINT8 pic_structure; BOOL top_field_first; BOOL repeat_first_field; int size; UINT8 data[MAX_SIZE_PIC_UD]; UINT32 ms_rcv; // for debugging BOOL isUsing; // overflow¸¦ üũÇϱâ À§ÇØ »ç¿ë (TRUE: ÆÄ½ÌÀ» À§ÇØ ´ë±â Áß ÀÓÀ» ÀǹÌ, FALSE: »ç¿ëÁßÀÌÁö ¾ÊÀ½) } tDCC_PicUDRaw; typedef struct { UINT8 ud_type; UINT8 flags; //3°³ÀÇ flag¸¦ ÀúÀå UINT8 cc_count; UINT8 em_data; } tDCC_PicUD; typedef struct { UINT16 ch; UINT8 w:6; UINT8 h:6; UINT8 full_ch:1; /* ÇÑ±Û ÀüÀÚ ¹ÝÀÚ¸¦ À§ÇÔ, 1Àº ÀüÀÚ, 0Àº ¹ÝÀÚ */ UINT8 pos:1; /* ÇÑ±Û ¹ÝÀÚ,ÀüÀÚ Ã³¸®¸¦ À§ÇÔ, ¹ÝÀÚ´Â ÀÇ¹Ì ¾øÀ½ 0->|0| |, 1->| |0| */ tDCC_PenAttr attr; } tDCC_Char; typedef struct { UINT16 y; UINT16 h; tDCC_Char str[MAX_NUM_COL+1]; } tDCC_Line; typedef struct { BOOL bcreated; //¼ö½Å¹ÞÀº attrÀ» ±×´ë·Î ÀúÀåÇÔ. tDCC_WinAttr rcvd_win_attr; tDCC_PenAttr rcvd_pen_attr; tDCC_WinAttr win_attr; //modifyµÊ tDCC_PenAttr pen_attr; BOOL bswa_rcvd; BOOL bspa_rcvd; BOOL bspc_rcvd; tDCC_RECT win_r; //text. tDCC_Line text[MAX_NUM_ROW]; int cur_x; int cur_y; UINT32 id_draw; /* È­¸é¿¡ ±×·ÁÁú ¶§ÀÇ id, ±×·ÁÁø ¼ø¼­´ë·Î ¼øÂ÷ÀûÀÓ */ UINT8 overlap_win[8]; //Àڽź¸´Ù À§¿¡ ÀÖ´Â win ³ª¿­. p°¡ ³·Àº ¼ø¼­´ë·Î Á¤·Ä. UINT8 num_overlap_win; UINT8 id; UINT8 p; UINT8 cl; UINT8 rl; UINT8 v; UINT8 av; UINT8 rp; UINT8 ah; UINT8 rc; UINT8 ap; UINT8 cc; UINT8 ps; UINT8 ws; } tDCC_DefWin; typedef struct { //Ãß°¡ BOOL b_wide; UINT8 style; UINT8 text_size; UINT8 edge_type; UINT8 pen_type; UINT8 text_color; UINT8 edge_color; UINT8 bg_color; UINT8 hor_pitch; UINT8 ver_pitch; UINT8 ver_align; UINT8 text_delay; UINT8 text_opacity; UINT8 bg_opacity; }tDCC_UserAttr; typedef struct { UINT8 ks; //black solid UINT8 rs; //red solid UINT8 gs; UINT8 ys; UINT8 bs; UINT8 ms; UINT8 cs; UINT8 ws; UINT8 kt; //black translucent UINT8 rt; //red translucent UINT8 gt; UINT8 yt; UINT8 bt; UINT8 mt; UINT8 ct; UINT8 wt; UINT8 tp; //transparent UINT8 no; //none } tDCC_ColorMap; typedef struct { BOOL is_cc_wide; //cc wide BOOL is_src_wide; //Ãâ·Â screen wide¿©ºÎ. BOOL is_korean; //ÇÑ±Û ¿©ºÎ BOOL is_unicode; //unicode ¿©ºÎ UINT8 resolution; //±×·¡ÇÈ Ç÷¹ÀÎ ÇØ»óµµ, tDCC_Resoulution tDCC_ColorMap *color_map; //Ä÷¯ ¸Ê } tDCC_Config; typedef enum { eDCC_OPT_P16=0x1, eDCC_OPT_IS608=0x2, eDCC_OPT_TIMER_ONESHOT=0x4, eDCC_OPT_SYNC=0x8, eDCC_OPT_CH_CR=0x10, eDCC_OPT_CH_BS=0x20, eDCC_OPT_FULL_CH=0x40, /* korean cc¸¦ À§ÇÔ */ eDCC_OPT_ROW_LOC_MODE=0x80, /* row loc mode 0: Àý´ë ÁÂÇ¥, 1:»ó´ë ÁÂÇ¥ */ eDCC_OPT_COL_LOC_MODE=0x100, /* col loc mode 0: Àý´ë ÁÂÇ¥, 1:»ó´ë ÁÂÇ¥ */ } tDCC_Option; typedef struct { BOOL bready; BOOL bdisplay_on; UINT8 service; BOOL buser_opt; tDCC_Config config; tDCC_PenUserAttr pen_attr; tDCC_WinAttr win_attr; int win_posx; int win_posy; BOOL is_feeding_608; } tDCC_Info; typedef enum {// p1 p2 eDCC_IT_708_CMD,// ptr x eDCC_IT_708_WIN,// id ptr eDCC_IT_708_WINATTR,//ptr x eDCC_IT_708_PENATTR,//ptr x eDCC_IT_CC_DATA_PACKETS, // ptr size eDCC_IT_SCTE20, // (field no.) (cc data) } tDCC_InfoType; //cc info¸¦ app¿¡¼­ ¾ò°íÀÚ ÇÒ ¶§ ÀÌ ÇüÅ´ë·Î »ý¼ºÇÑ´Ù. typedef void (*tDCC_InfoCallback)(tDCC_InfoType type, UINT32 opt, UINT32 param1, UINT32 param2); #endif //__CC_DEF_H__ /* end of file */