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

📄 jpegfmt.h

📁 ct952 source code use for Digital Frame Photo
💻 H
📖 第 1 页 / 共 3 页
字号:
    //SLIDESHOW coeff buffer size: 0xC9700-0x7e900 =0x4ae00 = 306688    //THUMBNAIL coeff buffer size:  0x68700-0x1D880(360*224*1.5)=0x4ae80 =306816    #define JPEG_COEFFBUFF_SIZE_SLIDESHOW (JPEGFMT_BUFF_SIZE_SLIDESHOW_DEC_BASE-0x7e900)//306688    #define JPEG_COEFFBUFF_SIZE_THUMBNAIL (JPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_BASE-0x1D880)//306816    //#define JPEG_COEFFBUFF_SIZE_THUMBNAIL   (JPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_BASE-0x7e900)    #define JPEG_COEFFBUFF_SLIDESHOW_ADDR (JPEGFMT_BUFF_SLIDESHOW_DEC+0x7e900)//0x4024ca00    #define JPEG_COEFFBUFF_THUMBNAIL_ADDR (JPEGFMT_BUFF_THUMBNAIL_DEC+0x1D880)//0x404ec180    //#define JPEG_COEFFBUFF_THUMBNAIL_ADDR (JPEGFMT_BUFF_THUMBNAIL_DEC+0x07e900)    #else//when DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_16    //THUMBNAIL total buffer size: 0x400DD000 + 0xe7000; size=231K DW    //SLIDESHOW total buffer size: 0x400A0000 + 0x148000; 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    //#define JPEGFMT_BUFF_THUMBNAIL_ST_ADDR (0x400DD000)//0x400dd000    //#define JPEGFMT_BUFF_SLIDESHOW_ST_ADDR (0x400A0000)//0x400a0000    //#define JPEGFMT_BUFF_THUMBNAIL_ST_ADDR    //#define JPEGFMT_BUFF_SLIDESHOW_ST_ADDR    //#define JPEGFMT_BUFF_THUMBNAIL_ST_ADDR	(JPEGFMT_BUFF_SLIDESHOW_ST_ADDR+0xe7000)    //#define JPEGFMT_BUFF_SLIDESHOW_END_ADDR (JPEGFMT_BUFF_SLIDESHOW_ST_ADDR+0x148000)    #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    //decoding + original buffer    #define JPEGFMT_BUFF_THUMBNAIL_DEC (JPEGFMT_BUFF_THUMBNAIL_DISP + JPEG_DISPBUF_SIZE)//0x4015b900    #define JPEGFMT_BUFF_SLIDESHOW_DEC (JPEGFMT_BUFF_SLIDESHOW_DISP + JPEG_DISPBUF_SIZE)//0x4011e900        #define JPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_BASE  (0x68700)//427776    #define JPEGFMT_BUFF_SIZE_SLIDESHOW_DEC_BASE  (0xC9700)//825088    //#define JPEGFMT_BUFF_SIZE_SLIDESHOW_DEC_BASE (0x68700)    #define JPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_PROG  (0x1D880)// 360*224*1.5= 120960(0x1d880)    #define JPEGFMT_BUFF_SIZE_SLIDESHOW_DEC_PROG  (0x7E900)//518400    //#define JPEGFMT_BUFF_SIZE_SLIDESHOW_DEC_PROG  (0x1D880)    //SLIDESHOW coeff buffer size: 0xC9700-0x7e900 =0x4ae00 = 306688    //THUMBNAIL coeff buffer size:  0x68700-0x1D880(360*224*1.5)=0x4ae80 =306816    #define JPEG_COEFFBUFF_SIZE_SLIDESHOW (JPEGFMT_BUFF_SIZE_SLIDESHOW_DEC_BASE-0x7e900)//306688    #define JPEG_COEFFBUFF_SIZE_THUMBNAIL (JPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_BASE-0x1D880)//306816    #define JPEG_COEFFBUFF_SLIDESHOW_ADDR (JPEGFMT_BUFF_SLIDESHOW_DEC+0x7e900)//0x4019d200    #define JPEG_COEFFBUFF_THUMBNAIL_ADDR (JPEGFMT_BUFF_THUMBNAIL_DEC+0x1D880)//0x40179180    //#define JPEG_COEFFBUFF_SIZE_SLIDESHOW (JPEGFMT_BUFF_SIZE_SLIDESHOW_DEC_BASE-0x1D880)#endif//#if(JPEG_TEST_16M== 1)#endif  //16M*///---------------------------------------//senshong2.17a:16M solution//---------------------------------------    //THUMBNAIL total buffer size: 0x400A0000 + 0x1E8000; size=225K DW    //SLIDESHOW total buffer size: 0x400A0000 + 0x181000; size=328K DW    //THUMBNAIL decoding buffer size: 225*1024*4 - 0x7E900(640*432*1.5) = 0xe1000(921600)  - 0x65400(414720) = 0x7BC00 =506880    //SLIDESHOW decoding buffer size: 328*1024*4 - 0xA8C00(640*432*1.5+640*432) = 0x148000(1343488) - 0xA8C00(691200) = 0x9f400 =652288    //THUMBNAIL  coeff buffer size: 0x7BC00(506880) -0x36600 (464*320*1.5) = 0x7BC00(506880) - 0x36600(222720)=0x45600(284160)    //SLIDESHOW coeff buffer size: 0x9f400(652288) - 0x5a300(592*416*1.5) = 0x9f400(652288) -0x5a300(369408)= 0x45100(282880)//--------------------------------------------------------// ----------------------------------//#if (DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_32)//#endif  //32M// ----------------------------------// For 64M Solution////senshong 2.17 remove/*#if(JPEG_TEST_16M!=1 && DRAM_CONFIGURATION_TYPE_DVD!=DRAM_SIZE_16)//senshong2.16:avoid to simulate 16m,the define overlap 64m#if (DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_64 || DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_32)    //old-fashioned declartions, for CT909A    //Assume total buffer = DISP*2 + ORIG*2    //    #define JPEGFMT_BUFF_TOTALSIZE      (JPEG_ORIGBUF_SIZE * 2 + JPEG_DISPBUF_SIZE * 2)    #define JPEGFMT_BUFF_START          (DS_FRAMEBUF_ST)    #define JPEGFMT_BUFF_DISP0          (JPEGFMT_BUFF_START)    #define JPEGFMT_BUFF_ORIG           (JPEGFMT_BUFF_START + JPEG_DISPBUF_SIZE)    #define JPEGFMT_BUFF_TEMP           (JPEGFMT_BUFF_ORIG  + JPEG_ORIGBUF_SIZE)    #define JPEGFMT_BUFF_DISP1          (JPEGFMT_BUFF_TEMP  + JPEG_ORIGBUF_SIZE)    #ifdef USE_EXTRA_INCOMING_BUFFER        #define JPEG_DECBUFF_ADDR       (DS_JPG_ORG_BUFF_ST)        #define JPEG_DECBUFF_SIZE       (DS_JPG_ORG_BUFF_END - DS_JPG_ORG_BUFF_ST)        #define JPEG_COEFFBUFF_ADDR0    (JPEGFMT_BUFF_DISP0)        #define JPEG_COEFFBUFF_ADDR1    (JPEGFMT_BUFF_ORIG)        #define JPEG_COEFFBUFF_SIZE     (JPEG_ORIGBUF_SIZE * 2 + JPEG_DISPBUF_SIZE)    #else   //USE_EXTRA_INCOMING_BUFFER        #define JPEG_DECBUFF_ADDR0      (JPEGFMT_BUFF_DISP0)        #define JPEG_DECBUFF_ADDR1      (JPEGFMT_BUFF_ORIG)        //decoding buffer size for BASELINE        #define JPEG_DECBUFF_SIZE_BASE  (JPEG_ORIGBUF_SIZE * 2 + JPEG_DISPBUF_SIZE)        //decoding buffer size for PROGRESSIVE: aligned to 32x        #define JPEG_DECBUFF_SIZE_PROG  (JPEG_ORIGBUF_SIZE * 2) //640x432x1.5*2        #define JPEG_COEFFBUFF_ADDR0    (JPEG_DECBUFF_ADDR0 + JPEG_DECBUFF_SIZE_PROG)        #define JPEG_COEFFBUFF_ADDR1    (JPEG_DECBUFF_ADDR1 + JPEG_DECBUFF_SIZE_PROG)        #define JPEG_COEFFBUFF_SIZE     (JPEG_DECBUFF_SIZE_BASE - JPEG_DECBUFF_SIZE_PROG)    #endif  //USE_EXTRA_INCOMING_BUFFER*/    //    // -----------------    // Adopt new buffer plan, resulting in: (1) new SC+FR _JPEGDEC_Operate()    // applied, and (2) use the whole buffer allocated by MPEG-2    //    // MPEG-2 buffer size = 720x576x1.5 = 0x97E00 --> 0x98000 (aligned to 0x800)    /*    #define JPEGFMT_BUFF_TOTALSIZE      (DS_FRAMEBUF_SIZE * 3)    #define JPEGFMT_BUFF_START          (DS_FRAMEBUF_ST)    #define JPEGFMT_BUFF_DISP0          (JPEGFMT_BUFF_START)    #define JPEGFMT_BUFF_ORIG           (JPEGFMT_BUFF_START + JPEG_DISPBUF_SIZE)    #define JPEGFMT_BUFF_DISP1          (JPEGFMT_BUFF_START + JPEGFMT_BUFF_TOTALSIZE - JPEG_DISPBUF_SIZE)    #ifdef USE_EXTRA_INCOMING_BUFFER        #define JPEG_DECBUFF_ADDR       (DS_JPG_ORG_BUFF_ST)        #define JPEG_DECBUFF_SIZE       (DS_JPG_ORG_BUFF_END - DS_JPG_ORG_BUFF_ST)        #define JPEG_COEFFBUFF_ADDR0    (JPEGFMT_BUFF_DISP0)        #define JPEG_COEFFBUFF_ADDR1    (JPEGFMT_BUFF_ORIG)        #define JPEG_COEFFBUFF_SIZE     (JPEGFMT_BUFF_TOTALSIZE - JPEG_DISPBUF_SIZE)    #else   //USE_EXTRA_INCOMING_BUFFER        #define JPEG_DECBUFF_ADDR0      (JPEGFMT_BUFF_DISP0)        #define JPEG_DECBUFF_ADDR1      (JPEGFMT_BUFF_ORIG)        //decoding buffer size for BASELINE        #define JPEG_DECBUFF_SIZE_BASE  (JPEGFMT_BUFF_TOTALSIZE - JPEG_DISPBUF_SIZE)        //decoding buffer size for PROGRESSIVE: aligned to 32x        #define JPEG_DECBUFF_SIZE_PROG  (JPEG_ORIGBUF_SIZE * 2) //640x432x1.5*2        #define JPEG_COEFFBUFF_ADDR0    (JPEG_DECBUFF_ADDR0 + JPEG_DECBUFF_SIZE_PROG)        #define JPEG_COEFFBUFF_ADDR1    (JPEG_DECBUFF_ADDR1 + JPEG_DECBUFF_SIZE_PROG)        #define JPEG_COEFFBUFF_SIZE     (JPEG_DECBUFF_SIZE_BASE - JPEG_DECBUFF_SIZE_PROG)    #endif  //USE_EXTRA_INCOMING_BUFFER    *///senshong2.17:remove    //#endif  //64M//#endif//#if(JPEG_TEST_16M!=1 && DRAM_CONFIGURATION_TYPE_DVD!=DRAM_SIZE_16)/*#if (DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_32)    #define JPEGFMT_BUFF_START      DS_FRAMEBUF_ST    #define JPEGFMT_BUFF_DISP0      (JPEGFMT_BUFF_START)    #define JPEGFMT_BUFF_ORIG       (JPEGFMT_BUFF_START + JPEG_DISPBUF_SIZE)#ifdef SUPPORT_CT909S_JPU_MODIFICATIONS    #define JPEGFMT_BUFF_DISP1      (JPEGFMT_BUFF_START + DS_FRAMEBUF_SIZE - JPEG_DISPBUF_SIZE)#else   //SUPPORT_CT909S_JPU_MODIFICATIONS    #define JPEGFMT_BUFF_TEMP       (JPEGFMT_BUFF_ORIG  + JPEG_ORIGBUF_SIZE)    #define JPEGFMT_BUFF_DISP1      (JPEGFMT_BUFF_TEMP  + JPEG_ORIGBUF_SIZE)#endif  //SUPPORT_CT909S_JPU_MODIFICATIONS    //tommy2.16: support progressive for 32M    #define JPEGFMT_COEFFBUFF_ADDR  (JPEGFMT_BUFF_ORIG  + JPEG_ORIGBUF_SIZE)    #define JPEGFMT_COEFFBUFF_SIZE  (311040)    //#define JPEGFMT_COEFFBUFF_SIZE ((DS_FRAMEBUF_SIZE - JPEG_ORIGBUF_SIZE) * 3)        //312576    #undef  JPEG_INCOMEBUFFSIZE    //decoding buffer size    #define JPEGFMT_DECBUFF_SIZE_BASELINE       (JPEG_ORIGBUF_SIZE * 2 + JPEG_DISPBUF_SIZE)    #define JPEGFMT_DECBUFF_SIZE_PROGRESSIVE    (JPEG_DISPBUF_SIZE)    #define JPEGFMT_DECBUFF_ADDR_PROGRESSIVE    (JPEGFMT_BUFF_ORIG)#elif (DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_16)    //tommy2.15: for 16M solution, re-define these settings    //#define JPEGFMT_BUFF_START      DS_FRAMEBUF_ST    //#define JPEGFMT_BUFF_DISP0      (JPEGFMT_BUFF_START)    //#define JPEGFMT_BUFF_ORIG       (JPEGFMT_BUFF_START + JPEG_DISPBUF_SIZE)    #undef JPEG_INCOMEBUFFSIZE    //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    //SLIDESHOW decoding buffer size: 328*1024*4 - 0x7e900 = 0x148000 - 0x7e900 = 0xC9700    //DISPLAY BUFFER STARTING ADDRESS    #define JPEGFMT_DISPBUFF_ADDR_THUMBNAIL (0x400DD000)    #define JPEGFMT_DISPBUFF_ADDR_SLIDESHOW (0x400A0000)    //decoding + original buffer    #define JPEGFMT_DECBUFF_ADDR_THUMBNAIL  (0x400DD000 + JPEG_DISPBUF_SIZE)    #define JPEGFMT_DECBUFF_ADDR_SLIDESHOW  (0x400A0000 + JPEG_DISPBUF_SIZE)    #define JPEGFMT_DECBUFF_SIZE_THUMBNAIL  (0x68700)    #define JPEGFMT_DECBUFF_SIZE_SLIDESHOW  (0xC9700)//64M SOLUTION#else#ifndef SUPPORT_CT909S_JPU_MODIFICATIONS    #define JPEGFMT_BUFF_START      DS_FRAMEBUF_ST    #define JPEGFMT_BUFF_DISP0      (JPEGFMT_BUFF_START)    #define JPEGFMT_BUFF_ORIG       (JPEGFMT_BUFF_START + JPEG_DISPBUF_SIZE)    #define JPEGFMT_BUFF_TEMP       (JPEGFMT_BUFF_ORIG  + JPEG_ORIGBUF_SIZE)    #define JPEGFMT_BUFF_DISP1      (JPEGFMT_BUFF_TEMP  + JPEG_ORIGBUF_SIZE)#else   //SUPPORT_CT909S_JPU_MODIFICATIONS    #define JPEGFMT_BUFF_START      DS_FRAMEBUF_ST    #define JPEGFMT_BUFF_DISP0      (JPEGFMT_BUFF_START)    #define JPEGFMT_BUFF_ORIG       (JPEGFMT_BUFF_START + JPEG_DISPBUF_SIZE)    #define JPEGFMT_BUFF_DISP1      (JPEGFMT_BUFF_START + DS_FRAMEBUF_SIZE - JPEG_DISPBUF_SIZE)#endif  //SUPPORT_CT909S_JPU_MODIFICATIONS#endif*/// *** Constant Definition (from jpgpvt.h) ***//#define JPEGSAMPLEWIDTH                 (8)#define JPEGSAMPLESIZE                  (64)#define JPEGMAXHUFFMANTABLES            (4)#define JPEGMAXQUANTIZATIONTABLES       (4)#define JPEGMAXCOMPONENTSPERFRAME       (255)#define JPEGMAXCOMPONENTSPERSCAN        (4)#define JPEGMINSAMPLINGFREQUENCY        (1)#define JPEGMAXSAMPLINGFREQUENCY        (4)#define JPEGMAXHUFFMANCODELENGTH        (16)#define JPEGMAXNUMBEROF8BITHUFFMANCODES (256)#define JPEGMAXNUMBEROFHUFFMANCODES     (256)// *** Type Definition ***//typedef struct tagHUFFDECODER{    // 20040804 tommylin: maxcode and mincode have to be "signed" (short).    // If they're "WORD" (unsigned short), we may encounter incorrect    // comparison while executing decode()    // Maximum Huffman code value of length N    //#ifdef CT909P_IC_SYSTEM#if defined(CT909P_IC_SYSTEM ) || defined(CT909G_IC_SYSTEM)    //WORD maxcode [JPEGMAXHUFFMANCODELENGTH];    LONG maxcode [JPEGMAXHUFFMANCODELENGTH];#else    SHORT maxcode [JPEGMAXHUFFMANCODELENGTH];#endif        // Minimum Huffman code value of length N    SHORT mincode [JPEGMAXHUFFMANCODELENGTH];    // Index into "values" for minimum code of length N    WORD valptr [JPEGMAXHUFFMANCODELENGTH];             //tommy1.05: BYTE-->WORD    // Huffman values    WORD huff_values [JPEGMAXNUMBEROFHUFFMANCODES];     //tommy1.05: BYTE-->WORD    //BYTE table_defined;    WORD minimum_code_length;#ifdef TABLE_LOOKUP_VLD    WORD lookup0_7 [JPEGMAXNUMBEROFHUFFMANCODES];#endif} HUFFDECODER, * PHUFFDECODER;typedef struct tagQUANTTAB{    //tommy0.81: actually, we only read 8-bit quantization value into the table    WORD quant_values [JPEGSAMPLESIZE];     //UBYTE2    //tommy1.05: BYTE-->WORD} QUANTTAB, * PQUANTTAB;typedef SHORT COEFBLOCK [JPEGSAMPLESIZE];   //BYTE2// JPEG Decoder Component//typedef struct tagCOMPONENT{    PHUFFDECODER DC_Table;    PHUFFDECODER AC_Table;    SHORT last_dc_value;        //int    WORD H;    WORD V;    WORD Tq;    //Quantization Table Index    WORD v_sampling;            //unsigned int    WORD h_sampling;            //unsigned int    //tommy0.95: End of band Run - Progressive Specific    WORD eob_run;               //unsigned int; tommy0.95a: can't use BYTE     //Non-interleaved dimensions.    WORD noninterleaved_rows;   //unsigned int    WORD noninterleaved_cols;   //unsigned int    WORD du_rows;               //unsigned int    WORD du_cols;               //unsigned int    BYTE *data_units;           //UBYTE1    COEFBLOCK *coefficient_blocks;    //PQUANTTAB quantization_tables;    // same as the wMcuHeight & wMcuWidth    //WORD image_height;    //WORD image_width;} COMPONENT, * PCOMPONENT;/*typedef struct tagJPEG_BUFFER_SET{    volatile DWORD dwJPEGFMT_BUFF_START;    volatile DWORD dwJPEGFMT_BUFF_END;    volatile DWORD dwJPEGFMT_BUFF_DISP0;    volatile DWORD dwJPEGFMT_BUFF_ORIG;    volatile DWORD dwJPEGFMT_BUFF_TEMP;    volatile DWORD dwJPEGFMT_BUFF_DISP1;    volatile DWORD dwJPEG_COEFFBUFF_ADDR0;    volatile DWORD dwJPEG_COEFFBUFF_ADDR1;    volatile DWORD dwJPEG_COEFFBUFF_SIZE;    volatile DWORD dwJPEG_DECBUFF_ADDR0;    volatile DWORD dwJPEG_DECBUFF_ADDR1;    //decoding buffer size for BASELINE    volatile DWORD dwJPEG_DECBUFF_SIZE_BASE;    //decoding buffer size for PROGRESSIVE: aligned to 32x    volatile DWORD dwJPEG_DECBUFF_SIZE_PROG;    //for 16M Thumbnail mode    volatile DWORD dwJPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_BASE;    volatile DWORD dwJPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_PROG;    volatile DWORD dwJPEG_COEFFBUFF_SIZE_THUMBNAIL;    volatile DWORD dwJPEGFMT_BUFF_TEMP1;        //for 64M extra buffer    volatile DWORD dwJPEG_DECBUFF_ADDR;    volatile DWORD dwJPEG_DECBUFF_SIZE;    volatile DWORD dwJPEG_EXTRABUFF_END;    volatile DWORD dwJPEG_DISPBUF_SIZE;    volatile DWORD dwJPEG_DISPBUF_SIZE_Y;    volatile WORD wJPEG_DISPBUF_WIDTH;    volatile WORD wJPEG_DISPBUF_HEIGHT;    volatile WORD wDRAMType;    } JPEG_BUFFER_SET, *PJPEG_BUFFER_SET;*/typedef struct tagJPEG_BUFFER_SET{    DWORD dwJPEGFMT_BUFF_START;    DWORD dwJPEGFMT_BUFF_END;    DWORD dwJPEGFMT_BUFF_DISP0;    DWORD dwJPEGFMT_BUFF_ORIG;    DWORD dwJPEGFMT_BUFF_TEMP;    DWORD dwJPEGFMT_BUFF_DISP1;

⌨️ 快捷键说明

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