⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpegfmt.h

📁 ct952 source code use for Digital Frame Photo
💻 H
📖 第 1 页 / 共 3 页
字号:
//  **************************************************************************//      (C)Copyright Cheertek Inc. 2003-2006,//          J500, all right reserved.////      Product : CT909////      Author  : Cheertek (J500 Tommy)//      Purpose : For JPEG format, parser, and decoder implementation//      Sources : //  **************************************************************************//#ifndef __JPEG_FORMAT_H__#define __JPEG_FORMAT_H__#ifdef __cplusplusextern "C" {#endif //__cplusplus//tommy0.95a: multiple debugging levels #undef JPEG_DECODER_DBGMSG_EXECFLOW#undef JPEG_DECODER_DBGMSG_DETAILED//Profiling Category#undef JPEG_DECODER_DBGMSG_PROFILE#ifdef JPEG_DECODER_DBGMSG_PROFILE#define JPEG_PROFILE_DECODING   0#define JPEG_PROFILE_HEADER     1#define JPEG_PROFILE_CONTENT    2#define JPEG_PROFILE_TABLE      3#define JPEG_PROFILE_SCANALL    4#define JPEG_PROFILE_APP1       5#define JPEG_PROFILE_APPX       6#define JPEG_PROFILE_POSTPROC   7#define JPEG_PROFILE_IDCTALL    8#define JPEG_PROFILE_BYTESTUFF  9#define JPEG_PROFILE_RUNLENGTH  10#define JPEG_PROFILE_OPERATION  11#define JPEG_PROFILE_IDCTCOEF   12#define JPEG_PROFILE_BYPASS     13#define JPEG_PROFILE_GETBITS    14#define JPEG_PROFILE_DECCALC    15#define JPEG_PROFILE_WAITVLD    16#define JPEG_PROFILE_MAXNUM     17#endif//#ifndef CT909P_IC_SYSTEM#if defined(CT909P_IC_SYSTEM ) || defined(CT909G_IC_SYSTEM)//#define CT909P_SUPPORT_MJPEG#else//senshong2.60:If no jpeg and mp3 mode and only jpeg mode, we can disable "#define CT909R_JPEG_AND_MP3"//#define CT909R_JPEG_AND_MP3#ifndef CT909R_JPEG_AND_MP3#define JPEG_USE_TWO_PROCESSOR#endif#endif//senshong: using strip decoding method#define JPEG_STRIP_DECODING#define JPEG_STRIP_DEC_PROGRESSIVE//tommy1.05#define JPEG_TUNE_WAIT_VDFIFO//tommy1.07: for performance evaluation//tommy1.10: fixed _wMonitorBitStuffCount-related lines for exit-bit-mode issue#undef JPEG_NO_BYTESTUFFING//tommy1.08: decode DC only threshold for both slideshow and thumbnail modes.#define DECODE_DC_ONLY_THRESHOLD_SLIDE      (5000000)//tommy2.17: this should be smaller than 100000 pixels#define DECODE_DC_ONLY_THRESHOLD_THUMB      (100000)//tommy1.10: count the times of calling WaitVLD() in run-length decoding#undef JPEG_PROFILE_WAITVLD_CALLS#define JPEG_PROFILE_WAITVLD_CYCLES         (11)#define JPEG_PROFILE_READVLD_CYCLES         (14)//tommy1.10: inline some functions for better performance. Default: on//tommy2.16b: removed. it's always on.//#define PREFIX_INLINE_FLAG//#ifdef PREFIX_INLINE_FLAG//#define PREFIX_INLINE                       inline//#else//#define PREFIX_INLINE                       //#endif//tommy1.11: switch for flatten wait_vdfifo part. Default: on#define FLATTEN_CRITICAL_WAITVDFIFO//#ifndef CT909P_IC_SYSTEM#if defined(CT909P_IC_SYSTEM ) || defined(CT909G_IC_SYSTEM)#else//tommy1.11: for MC-scaling down vertical 1/8; ref issue: #742, #757, #769. Default: on//tommy2.10: CT909S has fixed this. default: off//tommy2.14: still has problems in CT909S; make it on defaultly#define MC_SCALE_DOWN_VERTICAL_8X_PATCH#endif//tommy1.11: use Chuan's table-lookup for variable-length decoding. Default: on#define TABLE_LOOKUP_VLD//tommy1.20: define IDCT/MC-scaling and JPU timed-out counts#define JPEG_IDCT_TIMEDOUT_COUNT            (COUNT_1_SEC)#define JPEG_JPU_TIMEDOUT_COUNT             (COUNT_1_SEC)//tommy1.20: register value validation for IDCT/MC-scaling and JPU. Default: off//#define JPEG_REGVALUE_VALIDATION//tommy1.20a: acceptable decoding ratio for display. Default: 50#define JPEG_ACCEPTABLE_DECODE_RATIO        (50)// *** PLATFORM dependent ***//// Use CT909 VLD to process datastream// This definition will affect datastream consuming related utility functions.#define USE_CT909_VLD// switch of doing Y-deflickering#undef APPLY_Y_DEFLICKERING// ON:  calculate aligned size (width & height) for Forg-3 to Forg-1// OFF: use wFirstScalingWidth & wFirstScalingHeight for Forg-3 to Forg-1#undef JPEGFMT_CALCSIZE_FOR_FRAMEORIG// *** JPEG Marker Definitions ***//// prefix of JPEG marker#define JPEG_MARKER_PREFIX   (0xFF)// --- Start Of Frame ---//// Baseline DCT#define JPEG_MARKER_SOF0     (0xC0)// Extended sequential DCT, Huffman coding//tommy1.21: already support & open this marker#define JPEG_MARKER_SOF1     (0xC1)// Progressive DCT, Huffman coding#define JPEG_MARKER_SOF2     (0xC2)// Lossless (sequential), Huffman coding//#define JPEG_MARKER_SOF3     (0xC3)// Differential sequential DCT//#define JPEG_MARKER_SOF5     (0xC5)// Differential progressive DCT//#define JPEG_MARKER_SOF6     (0xC6)// Differential lossless (sequential)//#define JPEG_MARKER_SOF7     (0xC7)// Extended sequential DCT, arithmetic coding//#define JPEG_MARKER_SOF9     (0xC9)// Progressive DCT, arithmetic coding//#define JPEG_MARKER_SOF10    (0xCA)// Lossless (sequential), arithmetic coding//#define JPEG_MARKER_SOF11    (0xCB)// Differential, arithmetic coding//#define JPEG_MARKER_SOF13    (0xCD)//#define JPEG_MARKER_SOF14    (0xCE)//#define JPEG_MARKER_SOF15    (0xCF)// --- RSTm: Restart with modulo 8 count "m" ---#define JPEG_MARKER_RST0     (0xD0)#define JPEG_MARKER_RST1     (0xD1)#define JPEG_MARKER_RST2     (0xD2)#define JPEG_MARKER_RST3     (0xD3)#define JPEG_MARKER_RST4     (0xD4)#define JPEG_MARKER_RST5     (0xD5)#define JPEG_MARKER_RST6     (0xD6)#define JPEG_MARKER_RST7     (0xD7)// --- Start/End Of Image ---#define JPEG_MARKER_SOI      (0xD8)#define JPEG_MARKER_EOI      (0xD9)//  --- Start Of Scan ---#define JPEG_MARKER_SOS      (0xDA)// --- DNL: Define Number of Lines ---#define JPEG_MARKER_DNL      (0xDC)// --- DRI: Define Restart Interval segment ---#define JPEG_MARKER_DRI      (0xDD)// --- APPn ---#define JPEG_MARKER_APP0     (0xE0)#define JPEG_MARKER_APP1     (0xE1)#define JPEG_MARKER_APP2     (0xE2)#define JPEG_MARKER_APP3     (0xE3)#define JPEG_MARKER_APP4     (0xE4)#define JPEG_MARKER_APP5     (0xE5)#define JPEG_MARKER_APP6     (0xE6)#define JPEG_MARKER_APP7     (0xE7)#define JPEG_MARKER_APP8     (0xE8)#define JPEG_MARKER_APP9     (0xE9)#define JPEG_MARKER_APPA     (0xEA)#define JPEG_MARKER_APPB     (0xEB)#define JPEG_MARKER_APPC     (0xEC)#define JPEG_MARKER_APPD     (0xED)#define JPEG_MARKER_APPE     (0xEE)#define JPEG_MARKER_APPF     (0xEF)// --- COM: comment ---#define JPEG_MARKER_COM      (0xFE)// --- DHT and DQT: Huffman and Quantization Table ---#define JPEG_MARKER_DQT      (0xDB)#define JPEG_MARKER_DHT      (0xC4)//tommy1.20a: process corner case while exit bit mode.#define JPEG_MARKER_BYTESTUFF   (0x00)// *** Constant Definition for JPEG Decoder ***//tommy0.66: buffer plan -- 720x480 *2 + 640x432 *2//32M Solution//#define JPEG_INCOMEBUFFSIZE     (1347840)     //3-to-1 incoming buffer 32M Solution                                                //size=720x576x3(MPEG2 buffer) - 720x480@420// Constants for Fdisp0 & Fdisp1#define JPEG_DISPBUF_WIDTH      (720)#define JPEG_DISPBUF_HEIGHT     (480)#define JPEG_DISPBUF_SIZE       (0x7E900)       //518400#define JPEG_DISPBUF_SIZE_Y     (0x54600)       //345600#define JPEG_DISPBUF_SIZE_UV    (0x2A300)       //172800#define JPEG_DISPBUF_COLS       (0x5A)          //columns for display buffer#define JPEG_DISPBUF_ROWS       (0x3C)          //rows for display buffer//tommy0.66 Constants for Ftemp & Forig//tommy2.10: this section should be moved into CT909A-ONLY block#define JPEG_ORIGBUF_WIDTH      (640)#define JPEG_ORIGBUF_HEIGHT     (432)#define JPEG_ORIGBUF_SIZE       (0x65400)       //414720#define JPEG_ORIGBUF_SIZE_Y     (0x43800)       //276480#define JPEG_ORIGBUF_SIZE_UV    (0x21C00)       //138240#define JPEG_ORIGBUF_COLS       (0x50)#define JPEG_ORIGBUF_ROWS       (0x36)#define JPEG_TEST_16M 0#define JPEG_ORIGBUF_SIZE_32M       (0x70800)   //460800//senshong2.32: define JPEG original buffer width and height#define JPEG_ORIGBUF_WIDTH_64M  (800)#define JPEG_ORIGBUF_HEIGHT_64M (640)#define JPEG_ORIGBUF_WIDTH_32M  (640)#define JPEG_ORIGBUF_HEIGHT_32M (480)#define JPEG_ORIGBUF_WIDTH_16M  (576)#define JPEG_ORIGBUF_HEIGHT_16M (400)#define JPEG_THUMB_ORIGBUF_WIDTH_16M  (320)#define JPEG_THUMB_ORIGBUF_HEIGHT_16M (240)//tommy1.21: define the use of extra incoming buffer for decoding.//           if it's disable, we'll use 3-in-1 buffer for decoding.//tommy2.10: use extra incoming buffer for JPEG decoding by DRAM configuration//#if ((DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_16) || (DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_32)||(JPEG_TEST_16M ==1))/*#if ((DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_16) ||(JPEG_TEST_16M ==1))    #undef USE_EXTRA_INCOMING_BUFFER#else       //64M     #undef  USE_EXTRA_INCOMING_BUFFER    //#define USE_EXTRA_INCOMING_BUFFER#endif#if((DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_16)||(JPEG_TEST_16M ==1))    #define NOT_USE_JPU_SCFR_COMBO    #undef USE_JPU_SCFR_COMBO_OPERATION_PATCH#else    #define NOT_USE_JPU_SCFR_COMBO    //#undef NOT_USE_JPU_SCFR_COMBO    #undef USE_JPU_SCFR_COMBO_OPERATION_PATCH#endif*/#undef USE_EXTRA_INCOMING_BUFFER#undef NOT_USE_JPU_SCFR_COMBO#undef USE_JPU_SCFR_COMBO_OPERATION_PATCH//#define JPEG_STRIP_DECODING_1#define JPEG_STRIP_DECODING_AND_EFFECT//-------------------------------------------------------------------------------//Test JPEG 16M//-------------------------------------------------------------------------------    //#define JPEGFMT_BUFF_THUMBNAIL_DISP (DS_JPG_ORG_BUFF_ST)//0x40450000    //#define JPEGFMT_BUFF_SLIDESHOW_DISP (DS_FRAMEBUF_ST)//0x4014f800        //#define JPEGFMT_BUFF_DISP0 (DS_FRAMEBUF_ST)//0x4014f800    //#define JPEGFMT_BUFF_DISP1 (DS_JPG_ORG_BUFF_ST)//0x40450000    /*#define JPEGFMT_BUFF_THUMBNAIL_ST_ADDR  (DS_FRAMEBUF_THUMBNAIL_ST)    #define JPEGFMT_BUFF_SLIDESHOW_ST_ADDR  (DS_FRAMEBUF_SLIDESHOW_ST)    #define JPEGFMT_BUFF_THUMBNAIL_END_ADDR (DS_FRAMEBUF_THUMBNAIL_END)    #define JPEGFMT_BUFF_SLIDESHOW_END_ADDR (DS_FRAMEBUF_SLIDESHOW_END)        //DISPLAY BUFFER STARTING ADDRESS    #define JPEGFMT_BUFF_THUMBNAIL_DISP (JPEGFMT_BUFF_THUMBNAIL_ST_ADDR)//0x400dd000    #define JPEGFMT_BUFF_SLIDESHOW_DISP (JPEGFMT_BUFF_SLIDESHOW_ST_ADDR)//0x400a0000        #define JPEGFMT_BUFF_DISP0 (JPEGFMT_BUFF_SLIDESHOW_DISP)//0x400a0000    #define JPEGFMT_BUFF_DISP1 (JPEGFMT_BUFF_THUMBNAIL_DISP)//0x400dd000*/    //-------------------------------------------------------------------------/*#ifdef USE_EXTRA_INCOMING_BUFFER    //use extra incoming buffer    #define JPEG_INCOMEBUFFSIZE     (DS_JPG_ORG_BUFF_END - DS_JPG_ORG_BUFF_ST)#else   //USE_EXTRA_INCOMING_BUFFER    //use 3-in-1 buffer    //#define JPEG_INCOMEBUFFSIZE     (738432)    #define JPEG_INCOMEBUFFSIZE     (JPEG_ORIGBUF_SIZE * 2 + JPEG_DISPBUF_SIZE)#endif  //USE_EXTRA_INCOMING_BUFFER*/// BUFFER ADDRESS DECLARATIONS// specify buffer plan for different memory allocations//// ----------------------------------/*#if (DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_16||JPEG_TEST_16M== 1)//senshong2.16: define JPEG deocder for 16M//THUMBNAIL total buffer size: 0x400DD000 + 0x7E900; size=231K DW    //SLIDESHOW total buffer size: 0x400A0000 + 0x7E900; size=328K DW    //THUMBNAIL decoding buffer size: 231*1024*4 - 0x7e900 = 0xe7000  - 0x7e900 = 0x68700 =427776    //SLIDESHOW decoding buffer size: 328*1024*4 - 0x7e900 = 0x148000 - 0x7e900 = 0xC9700 =825088#if(JPEG_TEST_16M== 1)//senshong2.16: this define is use 64M extra memory to simulate 16m solution    //DISPLAY BUFFER STARTING ADDRESS    #define JPEGFMT_BUFF_THUMBNAIL_DISP (DS_JPG_ORG_BUFF_ST)//0x40450000    //#define JPEGFMT_BUFF_THUMBNAIL_DISP (DS_FRAMEBUF_ST)    #define JPEGFMT_BUFF_SLIDESHOW_DISP (DS_FRAMEBUF_ST)//0x4014f800        #define JPEGFMT_BUFF_DISP0 (DS_FRAMEBUF_ST)//0x4014f800    #define JPEGFMT_BUFF_DISP1 (DS_JPG_ORG_BUFF_ST)//0x40450000    //#define JPEGFMT_BUFF_DISP1 (DS_FRAMEBUF_ST)       //decoding + original buffer    #define JPEGFMT_BUFF_THUMBNAIL_DEC (DS_JPG_ORG_BUFF_ST + JPEG_DISPBUF_SIZE)//0x404ce900    #define JPEGFMT_BUFF_SLIDESHOW_DEC (DS_FRAMEBUF_ST + JPEG_DISPBUF_SIZE)//0x401ce100    //#define JPEGFMT_BUFF_THUMBNAIL_DEC (DS_FRAMEBUF_ST + JPEG_DISPBUF_SIZE)            #define JPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_BASE  (0x68700)//427776       //#define JPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_BASE (0xC9700)    #define JPEGFMT_BUFF_SIZE_SLIDESHOW_DEC_BASE  (0xC9700)//825088        #define JPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_PROG  (0x1D880)//120960    #define JPEGFMT_BUFF_SIZE_SLIDESHOW_DEC_PROG  (0x7E900)//518400    //#define JPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_PROG (0x7E900)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -