/** @file DHL_AVCAP.h @brief DHL AVCAP (Audio/Video decoding and Capture) API AudioVideo decoding/capture/output API Header Copyright 2006~2010 Digital STREAM Technology, Inc. All Rights Reserved */ #ifndef __DHL_AVCAP_H__ #define __DHL_AVCAP_H__ #include "DHL_OSAL.h" #include "DHL_MPEGTypes.h" #ifdef __cplusplus extern "C" { #endif #if COMMENT ____Overview____(){} #endif /** @file DHL_AVCAP.h HAL Interface Design Philosophy Target: Audio Video µðÄÚµù ¹× Ãâ·Â°ú °ü·ÃµÈ ±â´É. °¢ ¼­ºñ½º º° ÀÔ·Â µ¥ÀÌÅÍ Æ÷Æ® ¾Æ³¯·Î±× ÀÔ·Â NTSC ¹æ¼Û ¾Æ³¯·Î±× ¿ÜºÎ ÀÔ·Â (ÄÄÆ÷³ÍÆ®, ÄÄÆ÷ÁöÆ®) ==> BT.601/656 ÀÔ·Â Æ÷Æ® ÇÚµé·Î Ãß»óÈ­ ÇÔ. µðÁöÅÐ Compressed ÀÔ·Â Terrestrial ¹× Cable RF ¹æ¼Û IEEE1 1394 ==> ¸ðµÎ DHL DemuxÀÇ DHL_TSD ÇÚµé·Î Ãß»óÈ­ ÇÔ. µðÁöÅÐ Uncompressed ÀÔ·Â HDMI ÀÔ·Â ==> TBD.. module overview - - APIs implementations dependencies nv parameters */ #if COMMENT ____Config____(){} #endif /* ÀÌ ºÎºÐÀº º°µµÀÇ DHL_XXX_Config configuration file À» Ȱ¿ëÇÏ´Â °ÍÀÌ ÁÁÀ» °Í °°À½. */ #include "DHL_Config.h" #if COMMENT ____Types____(){} #endif typedef enum { eDHL_UD_TYPE_SEQ, eDHL_UD_TYPE_GOP, eDHL_UD_TYPE_PICTURE, eDHL_UD_TYPE_SEI, /*H.264*/ eDHL_UD_TYPE_ENTRYPOINT, eDHL_UD_TYPE_FIELD, eDHL_UD_TYPE_FRAME, eDHL_UD_TYPE_SLICE } tDHL_UserDataType; typedef enum { eDHL_PIC_POLARITY_TOP_FIELD, eDHL_PIC_POLARITY_TOP_BOTTOM, eDHL_PIC_POLARITY_TOP_FRAME } tDHL_PicPolarity; typedef enum { eDHL_PIC_CODING_UNKNOWN=0, eDHL_PIC_CODING_I, eDHL_PIC_CODING_P, eDHL_PIC_CODING_B } tDHL_PicCoding; typedef struct { UINT32 block_size; tDHL_PicPolarity polarity; tDHL_UserDataType ud_type; BOOL top_field_first; BOOL repeat_first_field; tDHL_PicCoding pic_coding; BOOL pts_valid; UINT32 pts; UINT32 pic_coding_ext[2]; UINT32 payload_size; } tDHL_UserDataHeader; typedef struct { tDHL_UserDataHeader hdr; UINT8 *pdata; } tDHL_UserData; /** @brief video Ãâ·Â ´ÜÀÚ (Æ÷Æ®) ¿Ü°ü »óÀ¸·Î º¸ÀÌ´Â ºñµð¿À ´ÜÀÚ (Å͹̳Î)´Â ¸ðµÎ ÀÌ ÁßÀÇ Çϳª¿¡ ÇØ´çµÈ´Ù. */ typedef enum { eDHL_DISP_PORT_UNKNOWN = 0x0, eDHL_DISP_PORT_COMPONENT = 0x1, eDHL_DISP_PORT_COMPOSITE = 0x2, eDHL_DISP_PORT_SVIDEO = 0x4, eDHL_DISP_PORT_DVI = 0x8, eDHL_DISP_PORT_HDMI = 0x10 } tDHL_DispPort; #if 0 // ´çÀå »ç¿ëµÇ´Â °÷ÀÌ ¾øÀ½. /** @brief video display Ãâ·Â ŸÀÔ. DHL_AV_ChangeVideoFormat() API ¿¡¼­ ÀÎÀÚ·Î »ç¿ë. °¢ ŸÀÔµéÀº µ¶¸³ÀûÀÎ Ãâ·Â Æ÷Æ® (Ä¿³ØÅÍ)°¡ µÇ¾î¾ß ÇÒÅÙµ¥, ÀÌ »ó¼öµéÀº bit flag·Î Á¤ÀÇ µÇ¾î ÀÖÀ¸¹Ç·Î, bit OR¸¦ ÇÏ¿© °Ç³×¸é µÈ´Ù. ¹®Á¦Á¡ - HDMIÀÇ °æ¿ì YCbCr 4:4:4, YCbCr 4:2:2 µî°ú °°ÀÌ ¼¼ºÎ »çÇ×À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾øÀ½. */ typedef enum { eDHL_DISP_OUTPUT_UNKNOWN=0x0, eDHL_DISP_OUTPUT_PS2=0x1, /* 1 PS/2 ("VGA") */ eDHL_DISP_OUTPUT_DVI=0x2, /* 2 DVI */ eDHL_DISP_OUTPUT_656=0x4, /* 3 ITU-R BT.656, 8-bit output */ eDHL_DISP_OUTPUT_YPRPB=0x8, /* 4 YPrPb (HDTV), tri-sync */ eDHL_DISP_OUTPUT_COMPOSITE=0x10, /* 5 SDTV composite */ eDHL_DISP_OUTPUT_SVIDEO=0x20, /* 6 SDTV S-Video */ eDHL_DISP_OUTPUT_YPRPB_YSYNC=0x40, /* 7 YPrPb (HDTV), sync on Y only */ eDHL_DISP_OUTPUT_RGB=0x80, /* 8 RGB component, tri-sync */ eDHL_DISP_OUTPUT_RGB_GSYNC=0x100, /* 9 RGB component, sync on green */ eDHL_DISP_OUTPUT_PS2_YPRPB=0x200 /* 10 PS/2 ("VGA") YPrPb output */ } tDHL_DispOutput; #endif /** @brief display output timing °ª À̸§Àº VideoFormat ÀÌÁö¸¸, STB ÀÔÀå¿¡¼­´Â »ç½Ç DisplayTiming ÀÌ ´õ Á¤È®ÇÑ Ç¥ÇöÀÌ´Ù. DHL_AV_DispSetFormat() APIÀÇ ÀÎÀÚ·Î »ç¿ëµÈ´Ù. ¿©±â¿¡´Â Ãâ·Â frequency¸¦ ±¸ºÐÇÏ´Â Á¤º¸´Â ¾ø´Ù. 50Hz, 60Hz¸¦ µÑ ´Ù Áö¿øÇϸ鼭 ¼³Á¤¿¡ µû¶ó ¹Ù²î´Â ±×·± Á¦Ç°Àº ¾øÀ½. µû¶ó¼­ °¢ Á¦Ç° »ç¾ç¿¡ µû¶ó ƯÁ¤ Á֯ļö·Î °íÁ¤ÇÑ´Ù. 60Hz ¿Í 59.94Hz ¿Í °°Àº Â÷ÀÌ´Â HAL ³»ºÎ¿¡¼­ ¾Ë¾Æ¼­ °áÁ¤. VGA ȣȯ Ãâ·ÂÀÇ °æ¿ì ¾Æ·¡¿¡ ÀÖ´Â Á¤º¸¸¸À¸·Î´Â ÅξøÀÌ ºÎÁ·Çϰí, ¹º°¡ ´Ù¸¥ ¹æ¹ýÀ¸·Î ÁöÁ¤ÇØ¾ß ÇÑ´Ù. (TODO) ÀÏ´Ü VGA´Â Áö¿øÇÏÁö ¾Ê´Â °ÍÀ¸·Î °£ÁÖ. HDMI ºñÇ¥ÁØ ÇØ»óµµÀÇ °æ¿ìµµ ¿ª½Ã ´Ù¸¥ ¹æ¹ýÀÌ ÇÊ¿äÇÏ´Ù. (TODO) ÀϹÝÀûÀ¸·Î Ç¥ÁØ ÇØ»óµµ¸¦ ÁÖ·Î »ç¿ëÇÑ´Ù. ÀÌ Å¸ÀÔÀº DHL_AV_VideoGetStatus() api ¿¡¼­µµ »ç¿ëÇϴµ¥, ±× °æ¿ì ÇöÀç Ãâ·Â formatÀÌ ¾Æ·¡ ¸®½ºÆ®¿¡ ¾ø´Â °æ¿ì eDHL_DISP_UNKNOWN À» µÇµ¹·ÁÁØ´Ù. ÀÌ eDHL_DISP_UNKNOWN ´Â DHL_AV_DispSetFormat() api ¿¡¼­´Â »ç¿ëµÇ¾î¼­´Â ¾ÈµÈ´Ù. */ typedef enum { eDHL_DISP_NO_OUTPUT, eDHL_DISP_720x480i, /*720x480 interlaced */ eDHL_DISP_720x480p, /*720x480 progressive */ eDHL_DISP_960x540p, /*960x540*/ eDHL_DISP_1280x720p, /*1280x720 progressive */ eDHL_DISP_1920x1080i, /*1920x1080 interlaced */ eDHL_DISP_1366x768, /*1366x768P 59.94Hz : 32" WXGA LG LCD */ eDHL_DISP_UNKNOWN = 0xF0, /* Unknown format */ } tDHL_DispFormat; #if 0 // ´çÀå »ç¿ëµÇ´Â °÷ÀÌ ¾øÀ½. /** @brief TV displayÀÇ aspect ratio. HDMI ÀåÄ¡ÀÇ °æ¿ì EDID·Î ºÎÅÍ ÀÐÀ» ¼öµµ Àִµ¥, ÀÏ´Ü applicationÀÌ ÁöÁ¤ÇÏ´Â °ÍÀ¸·Î ÇÔ. ÀÚµ¿ ARC ±â´É¿¡¼­ ÀÌ Á¤º¸¸¦ Ȱ¿ëÇÏ´Â °æ¿ì°¡ ÀÖ´Ù. ±× ¿Ü¿¡´Â ÀÌ Á¤º¸´Â informational À̸ç, AFDÀÇ °æ¿ì application¿¡¼­´Â ÀÌ¹Ì ÀÌ Á¤º¸¸¦ ¾Ë°í ÀÖÀ¸¹Ç·Î ±×³É ÂüÁ¶¿ëÀ¸·Î¸¸ Ȱ¿ëµÈ´Ù. ÇöÀç´Â 4:3°ú 16:9 ¸¸ Àǹ̰¡ ÀÖÀ½. */ typedef enum { eDHL_DISP_ASPECT_1_1 = 1, /* Display aspect ratio is 1:1 */ eDHL_DISP_ASPECT_4_3, /* Display aspect ratio is 4:3 */ eDHL_DISP_ASPECT_16_9, /* Display aspect ratio is 16:9 */ eDHL_DISP_ASPECT_5_4 /* Display aspect ratio is 5:4 */ } tDHL_DispAspectRatio; #endif /** @brief display color space ÄÄÆ÷³ÍÆ® ´ÜÀÚ ¹× HDMI/DVI °æ¿ì¿¡¸¸ ¼³Á¤ÀÌ °¡´ÉÇÏ´Ù. */ typedef enum { eDHL_DISP_CS_DEFAULT, eDHL_DISP_CS_YCBCR, eDHL_DISP_CS_RGB, } tDHL_DispColorSpace; /** @brief ºñµð¿À µðÄÚ´õ ID ºñµð¿À µðÄÚ´õ ID. 0ºÎÅÍ ½ÃÀÛÇÏ´Â Á¤¼ö. single decoder¸¸ Áö¿øÇÏ´Â ½Ã½ºÅÛ¿¡¼­´Â 0À» »ç¿ëÇÑ´Ù. */ typedef UINT8 tDHL_VDID; /** @brief ºñµð¿À ĸÃÄ ÀåÄ¡ ID ºñµð¿À ĸÃÄ ÀåÄ¡ ID. */ typedef UINT8 tDHL_VCAPID; /** @brief ºñµð¿À ÄÚµ¦ ŸÀÔ. DHL_AV_VideoStart API ¿¡¼­ »ç¿ëµÈ´Ù. ¹Ýµå½Ã Á¤È®ÇÑ typeÀ» ÁöÁ¤ÇØ¾ß Á¤»óÀûÀÎ µ¿ÀÛÀÌ º¸ÀåµÈ´Ù. */ typedef enum { eDHL_VIDEO_TYPE_UNKNOWN =0, eDHL_VIDEO_TYPE_MPEG1= 1, /* MPEG-1 Video (ISO/IEC 11172-2) */ eDHL_VIDEO_TYPE_MPEG2= 2, /* MPEG-2 Video (ISO/IEC 13818-2) */ eDHL_VIDEO_TYPE_MPEG4P2= 0x10, /* MPEG-4 Part 2 Video */ eDHL_VIDEO_TYPE_H263 = 0x1A, /* H.263 Video. The value of the enum is not based on PSI standards. */ eDHL_VIDEO_TYPE_H264= 5, /* H.264 (ITU-T) or ISO/IEC 14496-10/MPEG-4 AVC */ eDHL_VIDEO_TYPE_VC1 = 0xEA, /* VC-1 Advanced Profile */ eDHL_VIDEO_TYPE_VC1SM = 0xEB, /* VC-1 Simple&Main Profile */ eDHL_VIDEO_TYPE_DIVX311= 0x311, /* DivX 3.11 coded video */ eDHL_VIDEO_TYPE_AVS = 0x42, /* AVS video */ eDHL_VIDEO_TYPE_DC2 } tDHL_VideoCodingType; /** @brief MPEG-2 Video ES sequence_header Á¤º¸ ƯÁ¤ application¿¡¼­´Â ÀÌ Á¤º¸¸¦ ÇÊ¿ä·Î ÇϹǷΠÁ¦°øÇÔ. MPEG-4 ³ª AVCÀÇ °æ¿ì¿¡´Â ȣȯÀÌ µÇÁö ¾ÊÀ» ¼ö ÀÖÀ½. */ typedef struct { UINT32 generationNumber; /* Increments each time it changes */ UINT16 horizontal_size; /* incorporates horizontal_size_value and extension */ UINT16 vertical_size; /* incorporates vettical_size_value and extension */ MPEG_ASPECT_RATIO aspect_ratio_information; MPEG_FRAME_RATE frame_rate_code; float frame_rate; /* incorporates frame_rate_code, extension_n,_d */ UINT32 bit_rate; /* bit_rate_extension is added */ UINT32 vbv_buffer_size; /* Specified in bytes. (vbv_buffer_size_extension,value * 16/8 * 1024 */ BOOL constrained_parameter_flag; BOOL MPEG2; /* True if sequece_extension is present */ UINT8 profile_and_level_indication; BOOL progressive_sequence; MPEG_CHROMA_FORMAT chroma_format; BOOL low_delay; } tDHL_VideoSeqHdr; /** @brief ºñµð¿À µðÄÚµù »óÅ Á¤º¸ ¿¹¿Ü ó¸® üũ¸¦ À§ÇØ µ¿ÀÛ ¸ð´ÏÅ͸µÀ» Çϱâ À§ÇØ »ç¿ëµÈ´Ù. ¶Ç´Â info banner µî¿¡ »ç¿ëÀÚ¸¦ À§ÇÑ °¢Á¾ Á¤º¸ Ç¥½Ã¸¦ À§ÇØ »ç¿ëµÈ´Ù. */ typedef struct { /** @brief µðÄÚµùÀÌ ÁøÇàÁßÀ̸é TRUE. API´Â start µÇ¾úÁö¸¸ ³»ºÎÀûÀ¸·Î halt µÈ °æ¿ì¶ó¸é? ÀÌ °ªÀº Ç×»ó DHL_AV_VideoStart/Stop API È£Ãâ »óŸ¦ ¹Ý¿µÇØ¾ß ÇÑ´Ù. video decoderÀÇ ³»ºÎ µ¿ÀÛ ¿À·ùÀÇ º¹±¸¿¡ ´ëÇÑ Ã¥ÀÓÀº HAL¿¡ ÀÖ´Ù. */ BOOL bDecoding; /** @brief ÇöÀç decoding ÁßÀÎ ºñµð¿À ŸÀÔ. ´ëºÎºÐÀÇ °æ¿ì, DHL_AV_VideoStart ¿¡¼­ ÁöÁ¤Çß´ø °ªÀÌ µÉ °ÍÀÌÁö¸¸, stream type auto detection ±â´ÉÀÌ ÀÖ´Ù¸é ´õ Á¤È®ÇÑ Á¤º¸°¡ µÉ ¼ö ÀÖ´Ù. */ tDHL_VideoCodingType type; /** @brief ºñµð¿À µ¥ÀÌÅͰ¡ Ãâ·Â ÁßÀ̸é TRUE. µðÄÚµùÀ» ½ÃÀÛ Çß´õ¶óµµ pid µîÀÌ À߸ø ÁöÁ¤µÇ¾ú´Ù¸é ½ÇÁ¦·Î´Â ¾Æ¹«·± µðÄÚµùÀÌ ¼öÇàµÇÁö ¾Ê´Â´Ù. À̶§ ÀÌ °ªÀº FALSE°¡ µÇ¾î¾ß ÇÑ´Ù. DHL_AV_VideoGetStatus API¸¦ È£Ãâ ÇÒ ½ÃÁ¡ÀÇ »óÅÂÀ̾î¾ß ÇÑ´Ù. */ BOOL bOutputExist; /** @brief scrambled ºñµð¿ÀÀÎ °æ¿ì TRUE. DHL_AV_VideoGetStatus API¸¦ È£Ãâ ÇÒ ½ÃÁ¡ÀÇ »óÅÂÀ̾î¾ß ÇÑ´Ù. */ BOOL bScrambleDetected; /** @brief ÇöÀç hdmi°¡ ¿¬°á ÁßÀ̸é TRUE. ÇöÀç´Â HDMI ¿¬°á Á¤º¸¸¦ ¾Ë·ÁÁÖ´Â callbackÀº ¾ø°í, app¿¡¼­´Â ÁÖ±âÀûÀ¸·Î polling üũ ÇØ¾ß ÇÑ´Ù. */ BOOL bHdmiConnected; /** @brief ÇöÀç Ãâ·ÂÁßÀÎ hdmi (¶Ç´Â component) display formatÀ» ¾Ë·ÁÁØ´Ù. platform ÀÌ hdmi ¿Í component ÇØ»óµµ¸¦ º°µµ·Î ÁöÁ¤ÀÌ ºÒ°¡´ÉÇÒ °æ¿ì hdmi ¿¬°á »óÅ¿¡ µû¶ó hd Ãâ·Â ÇØ»óµµ°¡ ´Þ¶óÁö°Ô µÈ´Ù. À̶§ ÀÌ api·Î ½ÇÁ¦ Ãâ·Â ½ÅÈ£ formatÀ» ¾Ë ¼ö ÀÖ´Ù. hdmi°¡ ¿¬°áÀÌ ¾ÈµÈ »óŶó¸é ÀÌ °ªÀº component Ãâ·Â ÇØ»óµµ¸¦ ¸»ÇÑ´Ù. ¸¸¾à hdmi ¿Í component ÇØ»óµµ¸¦ ´Ù¸£°Ô ¼³Á¤ÇÒ ¼ö ÀÖ´Â platform ÀÎ °æ¿ì, ÀÌ °ªÀº hdmi Æ÷Æ®ÀÇ Ãâ·Â ÇØ»óµµÀÌ´Ù. (component ÇØ»óµµ´Â ¾Æ´Ô) component Ãâ·Â ÇØ»óµµ´Â Ç×»ó ¸¶Áö¸· DHL_AV_DispSetFormat() api¿¡¼­ ÁöÁ¤ÇÑ °ªÀ̹ǷΠ±»ÀÌ queryÇÏÁö ¾Ê¾Æµµ ¾Ë ¼ö ÀÖ´Ù. */ tDHL_DispFormat curDisplayFormat; } tDHL_VideoStatus; /** @brief HDMI »óÅ Á¤º¸. eDHL_CB_HdmiStatusChanged ÄݹéÀÇ ÆÄ¶ó¹ÌÅÍ·Î »ç¿ëµÈ´Ù. ÇöÀç ÀÌ Á¤º¸¸¦ queryÇÏ´Â API´Â ¾ÆÁ÷ ÁغñÇÏÁö ¾Ê¾ÒÀ½. ÀϺΠ³»¿ëÀº DHL_AV_VideoGetStatus() ·Î ¾Ë ¼ö´Â ÀÖ´Ù. */ typedef struct { /** @brief ÇöÀç hdmi/dvi°¡ ¿¬°á ÁßÀ̸é TRUE. ´Ü¼øÈ÷ ¹°¸®ÀûÀÎ ¿¬°áÀÌ ¾Æ´Ï°í, hdmi/dvi ¿¬°á ÈÄ RX sense ÈÄ¿¡ edid Á¤º¸±îÁö ÇØ¼®µÇ°í ³ª¼­ "connected"°¡ µÈ´Ù. */ BOOL bConnected; /** @brief ÇöÀç ¿¬°áµÈ hdmi display¿¡¼­ Áö¿øÇÏ´Â ÇØ»óµµ Á¤º¸ bitmap. °¢ bit°¡ tDHL_DispFormat ŸÀ̹ÖÀ» Áö¿øÇÒ °æ¿ì 1ÀÌ µÇ¸ç, LSB bit 0 ºÎÅÍ »ç¿ë. ¿¹¸¦ µé¾î 480p, 1080i ¸¦ Áö¿øÇÏ´Â TV¶ó¸é ´ÙÀ½ °ªÀ» °®´Â´Ù. (1 << eDHL_DISP_720x480p) | (1 << eDHL_DISP_1920x1080i) eDHL_DISP_UNKNOWN °ªÀº Ç¥½ÃÇÏÁö ¾Ê´Â´Ù. "connected" »óŰ¡ ¾Æ´Ñ °æ¿ì ÀÌ °ªÀº 0ÀÌ µÇ¾î¾ß ÇÑ´Ù. */ UINT32 supportedFormat; /** @brief TV°¡ ¼±È£ÇÏ´Â format. TVÀÇ ¼±È£ formatÀÌ DHL¿¡¼­ Áö¿øÇÏÁö ¸øÇÏ´Â Çü½ÄÀÏ °æ¿ì eDHL_DISP_UNKNOWN À¸·Î ¾Ë·ÁÁØ´Ù. */ tDHL_DispFormat preferedFormat; } tDHL_VideoHdmiStatus; /** @brief ºñµð¿À Ãâ·ÂÀÇ Aspect Ratio Adjustment. ARC ¶ó°íµµ ÇÑ´Ù. (Aspect Ratio Correction) DHL_AV_VideoSetARC APIÀÇ ÀÎÀÚ·Î »ç¿ëµÈ´Ù. eDHL_ARC_USER ¸ðµåÀÇ °æ¿ì ¾î¶² ½ÄÀ¸·Î »ç¿ëÀÚ°¡ ¼³Á¤ÇÒ °ÍÀÎÁö¿¡ ´ëÇØ¼­´Â ¹æ¹ýÀº È®Á¤µÇÁö ¾Ê¾Ò´Ù. */ typedef enum { /*! Ưº°ÇÑ Àǹ̷Π»ç¿ë. APIÀÇ ÀÎÀڷδ »ç¿ëµÇ¸é ¾ÈµÊ. */ eDHL_ARC_UNKNOWN = 0, /*! Àüü È­¸é: Ãâ·ÂÇØ»óµµ ÀüºÎ¸¦ ä¿ò */ eDHL_ARC_FULLSCREEN = 1, /*! ·¹Å͹ڽº ¸ðµå: »óÇÏ ¿©¹é(»ó12.5% ÇÏ12.5%), no crop, Àüü video */ eDHL_ARC_LETTERBOX = 2, /*! »çÀ̵å¹Ù ¸ðµå: ÁÂ¿ì ¿©¹é(ÁÂ12.5% ¿ì12.5%), no crop, Àüü video */ eDHL_ARC_SIDEBAR = 3, /*! ÆÒ½ºÄµ ¸ðµå: Á¿ì 25% crop(ÁÂ12.5% ¿ì12.5%), Àüü ½ºÅ©¸° */ eDHL_ARC_PAN_AND_SCAN = 4, /*! ƿƮ½ºÄµ ¸ðµå: »óÇÏ 25% crop(»ó12.5% ÇÏ12.5%), Àüü ½ºÅ©¸° */ eDHL_ARC_TILT_AND_SCAN = 5, /*! ºÎºÐ ·¹Å͹ڽº ¸ðµå: »óÇÏ ¿©¹é(»ó6.25% ÇÏ6.25%), Á¿ì 12.5% crop(ÁÂ6.25% ¿ì6.25%), ·¹Å͹ڽº ¸ðµå¿Í ÆÒ½ºÄµ ¸ðµåÀÇ Áß°£. */ eDHL_ARC_PARTIAL_LETTERBOX = 6, /*! ºÎºÐ »çÀ̵å¹Ù ¸ðµå: ÁÂ¿ì ¿©¹é(ÁÂ6.25% ¿ì6.25%), »óÇÏ 12.5% crop(»ó6.25% ÇÏ6.25%), »çÀ̵å¹Ù ¸ðµå¿Í ƿƮ½ºÄµ ¸ðµåÀÇ Áß°£. */ eDHL_ARC_PARTIAL_SIDEBAR = 7, /*! »óÇÏÁ¿ì 12.5% crop(»ó6.25% ÇÏ6.25% ÁÂ6.25% ¿ì6.25%). Àüü ½ºÅ©¸° */ eDHL_ARC_ZOOM1 = 8, /*! »óÇÏÁ¿ì 25% crop(»ó12.5% ÇÏ12.5% ÁÂ12.5% ¿ì12.5%). Àüü ½ºÅ©¸° */ eDHL_ARC_ZOOM2 = 9, /*! callback¿¡ ÀÇÇØ »ç¿ëÀÚ°¡ Á÷Á¢ ÁöÁ¤/ ¾ÆÁ÷ ¾î¶°ÇÑ API, ¸ÞÄ¿´ÏÁò¿¡ ÀÇÇØ¼­ 󸮸¦ ÇÒÁö È®Á¤ µÇÁö ¾Ê¾ÒÀ½. À§ÀÇ ARC ¸ðµå À̿ܿ¡ ´õ ¸¹Àº ¸ðµå¸¦ ¿øÇÏ´Â customer°¡ ÀÖ´Ù¸é ±× ¶§ °í·ÁÇϵµ·Ï ÇÔ. */ eDHL_ARC_USER = 100, } tDHL_DispARC; typedef struct { INT16 x; INT16 y; INT16 w; INT16 h; } DHL_WINRECT; #if COMMENT ____Types2____(){} #endif /** @brief Audio Coding type. DHL_AV_AudioStart() API ¿¡¼­ »ç¿ëµÊ. º¸ÅëÀº PMTÀÇ stream type Á¤º¸¿¡¼­ audio coding typeÀ» ¾Ë¾Æ³½´Ù. Á¤È®ÇÏ°Ô ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é audio decodingÀÌ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. */ typedef enum { eDHL_AUDIO_TYPE_UNKNOWN=0, eDHL_AUDIO_TYPE_PCM, eDHL_AUDIO_TYPE_AC3, ///< Dolby AC3 (A/52) eDHL_AUDIO_TYPE_AAC_ADTS, ///< MPEG-2 part 7 AAC with ADTS syntax eDHL_AUDIO_TYPE_AAC_LATM, ///< MPEG-4 part 3 AAC with LATM syntax eDHL_AUDIO_TYPE_DTS, /** @todo ¾Æ·¡ Ç׸ñµéÀÌ ¾î¶»°Ô ±¸ºÐµÇ´ÂÁö üũ ÇÊ¿äÇÔ. */ eDHL_AUDIO_TYPE_MPEG_1, eDHL_AUDIO_TYPE_MPEG_2, eDHL_AUDIO_TYPE_MPEG_4, eDHL_AUDIO_TYPE_MPEG_L1, eDHL_AUDIO_TYPE_MPEG_L2, eDHL_AUDIO_TYPE_MPEG_L3, eDHL_AUDIO_TYPE_AIFF, eDHL_AUDIO_TYPE_SINEWAVE } tDHL_AudioCodingType; /** @brief ¿Àµð¿À µðÄÚµù »óÅ Á¤º¸ ¿¹¿Ü ó¸® üũ¸¦ À§ÇØ µ¿ÀÛ ¸ð´ÏÅ͸µÀ» Çϱâ À§ÇØ »ç¿ëµÈ´Ù. ¶Ç´Â info banner µî¿¡ »ç¿ëÀÚ¸¦ À§ÇÑ °¢Á¾ Á¤º¸ Ç¥½Ã¸¦ À§ÇØ »ç¿ëµÈ´Ù. */ typedef struct { BOOL bDecoding; ///< µðÄÚµùÀÌ ÁøÇàÁßÀ̸é TRUE¸¦ ¸®ÅÏÇÑ´Ù. tDHL_AudioCodingType type; /** µðÄÚµùÀÌ ÁøÇà ÁßÀÌ´õ¶óµµ pid µîÀÌ À߸ø ÁöÁ¤µÇ¾ú´Ù¸é ½ÇÁ¦·Î´Â ¾Æ¹«·± ¼Ò¸®µµ ³ª¿ÀÁö ¾Ê´Â´Ù. À̶§ ÀÌ °ªÀº FALSE°¡ µÇ¾î¾ß ÇÑ´Ù. ½ÇÁ¦·Î ±Í¿¡ ¼Ò¸®°¡ µé¸®´ÂÁö ¿©ºÎ¿Í´Â »ó°ü ¾ø´Ù. (¹«À½ Á¤º¸°¡ encoding µÈ ½ºÆ®¸²ÀÌ play µÇ´Â °æ¿ì ÀÌ °ªÀº TRUE°¡ µÇ¾î¾ß ÇÔ) */ BOOL bOutputExist; ///< audio µ¥ÀÌÅͰ¡ Ãâ·Â ÁßÀ̸é TRUE¸¦ ¸®ÅÏ. BOOL bSurround; ///< 2ä³Î Ãʰú ÀÎ °æ¿ì TRUE. 2.1~5.1 ä³Î BOOL bStereo; ///< stereo 2ch ¿Àµð¿À¶ó¸é TRUE } tDHL_AudioStatus; /** @brief µðÁöÅÐ ¿Àµð¿À Ãâ·Â ÇüÅ ¼³Á¤. S/PDIF Ãâ·Â Æ÷Æ® ¶Ç´Â HDMIÀÇ ¿Àµð¿À Ãâ·Â ºÎºÐ¿¡ ¼³Á¤ °¡´ÉÇÏ´Ù. DISABLEÀ» »ç¿ëÇÏ¸é ½ÅÈ£ Ãâ·Â ÀÚü°¡ ³ª°¡Áö ¾Ê´Â °ÍÀ̸ç, ÇØ´ç Æ÷Æ®ÀÇ audio mute¿Í´Â ¾à°£ÀÇ Â÷À̰¡ ÀÖÀ» ¼ö ÀÖ´Ù. */ typedef enum { eDHL_AUDIO_OUT_DISABLE, eDHL_AUDIO_OUT_PCM, ///< IEC 958 PCM uncompressed Ãâ·Â eDHL_AUDIO_OUT_COMPRESSED, ///< IEC 61937 compressed Ãâ·Â eDHL_AUDIO_OUT_END } tDHL_AudioIecOutFormat; /** @brief ¿Àµð¿À Ãâ·Â mute ¼³Á¤ Æ÷ÀÎÆ® API¸¦ ÀÌ¿ëÇÏ¿© SWÀûÀ¸·Î mute Á¦¾î ÇÒ ¼ö ÀÖ´Â À§Ä¡µéÀÌ´Ù. ¿Àµð¿À mute Á¦¾î´Â ´ÙÀ½°ú °°Àº ¿©·¯ Á¶°Ç¿¡¼­ ÇÊ¿äÇÏ´Ù. - »ç¿ëÀÚ°¡ ¸®¸ðÄÁÀÇ MUTE ۸¦ ´©¸¥ °æ¿ì - °¢Á¾ block »óÅ (ch block, rating block µî..) - ¿Àµð¿À º¼·ý 0 »óÅ - ºÎÆÃ ÃʱâÈ­ ´Ü°èÀÇ pop noise Á¦°Å¸¦ À§ÇØ - standby ÁøÀÔ Á÷Àü pop noise Á¦°Å¸¦ À§ÇØ ÇÏÁö¸¸ application °èÃþ¿¡¼­ ÀÌ·¯ÇÑ ±¸ºÐ 󸮸¦ ÇϹǷÎ, DHL ·¹º§¿¡¼­´Â ÇÑ Á¾·ùÀÇ mute¸¸ Á¦°øÇصµ ¹«¹æÇÏ´Ù. */ typedef enum { eDHL_AUDIO_MUTE_DECODER, ///< ¿Àµð¿À µðÄÚ´õ¿¡¼­ mute¸¦ ¼öÇà. ¸ðµç ¿Àµð¿À Ãâ·Â Æ÷Æ®¿¡ ´Ù Àû¿ëµÈ´Ù. ///< µû¶ó¼­ app level ¿¡¼­ ±âº»ÀûÀ¸·Î »ç¿ëÇÏ´Â mute ¹æ½ÄÀÌ´Ù. eDHL_AUDIO_MUTE_GPIO, ///< GPIO·Î Á÷Á¢ ±¸ÇöÇÑ mute ȸ·Î ///< ÀÌ ¿É¼ÇÀº Àü¿ø on/off ½ÃÀÇ pop-up noise Á¦°Å¸¦ À§ÇØ ÁÖ·Î »ç¿ëµÈ´Ù. eDHL_AUDIO_MUTE_AMP, ///< DAC ¶Ç´Â AmpÀÇ RST/MUTE µîÀ» ÀÌ¿ëÇÑ ¹æ½Ä. ///< DACÀÌ ³»ÀåµÇ¾î SoC¿¡¼­ Á÷Á¢ LR ½ÅÈ£°¡ ³ª¿À´Â °æ¿ì¶óµç°¡, ///< DDX·Î Ãâ·ÂÀÌ µÇ´Â °æ¿ì¿¡µµ, ´«¿¡ º¸ÀÌ´Â ¾ÚÇÁ´Â ¾øÁö¸¸ ///< ÀûÀýÇÑ mute ±â´É ±¸Çö ÇÊ¿ä. eDHL_AUDIO_MUTE_SPDIF, ///< S/PDIF Ãâ·Â ¿Àµð¿ÀÀÇ mute. ///< ½ÅÈ£ Ãâ·Â ÀÚü°¡ disable µÈ °Í°ú´Â ±¸ºÐµÈ´Ù. eDHL_AUDIO_MUTE_HDMI, ///< HDMI Ãâ·Â ¿Àµð¿ÀÀÇ mute. eDHL_AUDIO_MUTE_HEADPHONE, ///< ÇìµåÆù Ãâ·Â ´ÜÀÚ°¡ ÀÖÀ» °æ¿ì mute. } tDHL_AudioMutePlace; /** @brief ¿Àµð¿À ´Ù¿î¹Í½º ŸÀÔ */ typedef enum { eDHL_AUDIO_MIX_TYPE_LTRT = 0, ///< Line out mode. eDHL_AUDIO_MIX_TYPE_LORO = 1, ///< RF mode. } tDHL_AudioDownmixType; #if COMMENT ____Types3____(){} #endif /** @brief ÀÏ¹Ý Á¶È¸ ÇÔ¼öÀÇ Á¶È¸ÇÒ ³»¿ë. DHL_AV_Query APIÀÇ ÀÎÀÚ·Î »ç¿ëµÈ´Ù. °¢ °ª º°·Î DHL_AV_Query ¸®ÅÏ °á°ú °ª (pValue)ÀÇ Àǹ̰¡ Á¤ÇØÁ® ÀÖ´Ù. */ typedef enum { eDHL_AV_QUERY_UNKNOWN, /** Video decoder capability data. °á°ú: ºñµð¿À µðÄÚ´õ cap data. tDHL_VideoCodingType ¿­°Å ŸÀÔÀÇ bit Ç¥ÇöÀÌ´Ù. ex) MPEG1°ú MPEG2¸¸ Áö¿øÇÑ´Ù°í Çϸé, ¾Æ·¡ cap °ªÀÌ ¸®ÅϵȴÙ. cap = (1<