TjpgDec¼¼ÊõÊֲᣨÖÐÎİ棩 - ͼÎÄ(2)
JDR_MEM2£ºÊäÈ뻺³åÇøµÄÈÝÁ¿¹ýС£¬ JD_SZBUFÊý¾Ý¹ýС¡£ JDR_PAR£ºÈë¿Ú²ÎÊý´íÎó£¬Ö¸¶¨µÄ¹¤×÷ÇøÖ¸ÕëΪNULL. JDR_FMT1: Èë¿Ú²ÎÊý´íÎó£¬Ö¸¶¨µÄJPEGÊý¾ÝÎÞ·¨¶ÁÈ¡ JDR_FMT2£º·ÇJPEGͼÏñ
JDR_FMT3£º·Ç±ê×¼¸ñʽµÄ²ÊÉ«JPEGͼÏñ ±¸×¢£º
jd_prepareº¯ÊýÊÇÖ´ÐÐJPEGͼƬ½âÂëµÄµÚÒ»²½¹¤×÷. ´Ëº¯ÊýÓÃÓÚ·ÖÎöJPEGͼƬµÄÐÅÏ¢£¬²¢ÎªºóÐøµÄ½âÂë¹ý³Ì´´½¨Ò»¸ö½âÂë¶ÔÏ󡣴˺¯Êýµ÷Óóɹ¦ºó,±ã¿ÉÒÔµ÷ÓÃjd_decompº¯ÊýÖ´ÐнâÂëµÄ¹¤×÷¡£´Ëº¯Êý¿ÉÒÔÌáÈ¡JPEGµÄ³ß´ç²ÎÊý£¬¿ÉÓÃÓÚÅäÖÃÓû§×Ô¶¨ÒåµÄ¶ÔÏóÐÅÏ¢£¬ÒÔ¼°ÓÃÓÚºóÐøµÄ½âѹ¹¤×÷¡£
2. jd_decomp
º¯Êý¹¦ÄÜ£º½âѹJPEGͼƬ£¬²¢Êä³öRGB¸ñʽµÄÊý¾Ý º¯ÊýÍ·£ºJRESULT jd_decomp (
JDEC* jdec, /* Ö¸ÏòÒ»¸öÒѶ¨ÒåµÄ½âÂë¶ÔÏó */ UINT(*outfunc)(JDEC*,void*,JRECT*), /* Ö¸ÏòÊä³öº¯ÊýµÄÖ¸Õë */ BYTE scale /* ͼÏñ½âѹ³ß´ç±ÈÀýÅäÖà */ ); Èë¿Ú²ÎÊý£º
Jdec£ºÖ¸ÏòÒ»¸öÒѶ¨ÒåµÄ½âÂë¶ÔÏó
£¨*outfunc£©£ºÖ¸ÏòÒ»¸öÓû§¶¨ÒåµÄÊä³öº¯Êý.ÓÃÓÚÒÔRGB¸ñʽÊä³öͼƬµÄÊý¾Ý¡£
Scale£ºÅäÖÃͼÏñ½âѹËõÊä³ö³ß´ç±ÈÀý£¬Êä³öͼÏñµÄ±ÈÀý±»ÅäÖÃΪ 1 / 2 ^ N (N = 0 to 3).ÕâÀïÐèÒªÅäÖõıãÊÇNµÄ´óС£¬Èç¹ûÊä³ö±ÈÀý¹¦Äܱ»¹Ø±Õ (JD_USE_SCALE == 0),ÄÇôÕâ¸öÊý¾Ý±ØÐëÊÇ0£» ·µ»ØÖµ£º
JDR_OK£ºº¯ÊýÖ´Ðгɹ¦ JDR_INTR£º½âѹËõµÄ¹¤×÷±»Êä³öº¯ÊýÖжϣ¬¼´Êä³öº¯ÊýÖгöÏÖ´íÎó»òÕßÊä³öº¯ÊýÃüÁî±¾º¯Êý½âÂëÖÐÖ¹¡£ JDR_INP£ºÓÉÓÚ´ÅÅÌ´íÎó»òÕß´íÎóµÄÊý¾Ý½áÊø±êʶ¶øµ¼ÖÂÊäÈ뺯ÊýÔËÐÐʧ°Ü JDR_PAR£º¸ø¶¨µÄͼÏñÊä³ö±ÈÀý²ÎÊý´íÎó
JDR_FMT1£ºÊý¾Ý½á¹¹´íÎó£¬ÎÞ·¨¼ÓÔØJPEGͼƬµÄÊý¾Ý ±¸×¢£º
jd_decompº¯ÊýÊǽâÂëÒ»¸öJPEGͼƬµÄµÚ¶þ²½¹¤×÷.´Ëº¯Êý½âÂëJPEGͼƬ£¬²¢Í¨¹ýÓû§ÌṩµÄÊä³öº¯ÊýÊä³ö½âÂëµÃµ½µÄRGBÊý¾Ý.´Ëº¯ÊýÖ´ÐйýÒԺ󣬴ý½âÂë¶ÔÏó×Ô¶¯Ê§Ð§¡£
ͼÏñÊä³ö±ÈÀý²ÎÊý¿ÉÒÔ±»Ô¤Éè.Ëü¿ÉÒÔ±»Ô¤ÉèΪ 1/2, 1/4 »òÕß 1/8.ÀýÈ磺 µ±Ê¹ÓÃ1/4µÄͼÏñÊä³ö±ÈÀý½âÂëÒ»¸ö´óСΪ1024x768µÄJPEG ͼÏñʱ,ËüµÄÊä³ö³ß´ç½«»áÊÇ 256x192. Ò»°ãÇé¿öÏ£¬Í¼ÏñÊä³ö±ÈÀýΪ1/2¡¢1/4ʱ£¬Óë²»½øÐбÈÀýÊä³öʱÏà±È»áÇá΢µÄ½µµÍ½âÂëµÄËÙ¶È¡£µ«Êǵ±Í¼ÏñÊä³ö±ÈÀýµÈÓÚ 1/8 ʱ£¬½«»á±ÈÎÞÊä³ö±ÈÀýʱ¿ì 2/3 ʱ¼ä£¬ÒòΪ½âÂëµÄ²¿·Ö¹¦Äܽ«»á±»Ê¡ÂÔ. Õâ¸öÌØÐÔ±»ÓÃÓÚ²úÉúËõÂÔͼ¡£ 3.Input Function
º¯Êý¹¦ÄÜ£ºÓû§×Ô¶¨ÒåµÄÓÃÓÚÊäÈëÊý¾ÝµÄº¯Êý
º¯ÊýÍ·£ºUINT in_func ( JDEC* jdec, /* Ö¸Ïò´ý½âÂë¶ÔÏóµÄÖ¸Õë */ BYTE* buff, /* Ö¸ÏòÓÃÓÚ´æ´¢¶ÁÈ¡µÄÊý¾ÝµÄ»º³åÇøµÄÖ¸Õë */ UINT ndata /* ´ý¶ÁÈ¡Êý¾ÝµÄÊýÁ¿ */ );
Èë¿Ú²ÎÊý£º
Jdec£ºÖ¸Ïò´ý½âÂë¶ÔÏóµÄÖ¸Õë Buff£ºÖ¸ÏòÓÃÓÚ´æ´¢¶ÁÈ¡µÄÊý¾ÝµÄ»º³åÇøµÄÖ¸Õë. µ±´ËÖ¸ÕëΪNULLʱ£¬½«´ÓÊäÈëÊý¾ÝÁ÷ÖÐɾ³ýÊý¾Ý¡£ Ndata£ºÖ¸¶¨½«Òª´ÓÊäÈëÊý¾ÝÁ÷ÖжÁÈ¡/ɾ³ýµÄÊý¾ÝµÄ×Ö½ÚÊý¡£ ·µ»ØÖµ£º
·µ»Ø¶ÁÈ¡/ɾ³ýµÄ×Ö½ÚÊýÄ¿£»Èç¹û·µ»ØÖµÎª0£¬Ôòjd_prepareºÍjd_decompº¯Êý½«·µ»ØJDR_INP¡£ ±¸×¢£º
´Ëº¯ÊýÊÇTjpgDecÄ£¿éµÄÊý¾ÝÊäÈë½Ó¿Ú. ÏàÓ¦µÄ½âÂëÁ÷³Ì»áʹÓñ»´«µÝ¸øº¯Êýjd_prepareµÄµÚ5¸öÈë¿Ú²ÎÊýµÄÊý¾Ý½øÐнâÂ빤×÷£¬´Ë²ÎÊýÊÇÓû§×Ô¶¨ÒåµÄ½âÂë¶ÔÏóÐÅÏ¢£¬±»´æ´¢ÓÚ jdec->device ¡££¨ÒëÕß×¢£ºÔÚMCUµÄÓ¦ÓÃÖУ¬´ËÊý¾ÝÀàÐͽöʹÓÃFILÀàÐÍÓÃÒÔÖ¸ÏòÒ»¸ö´ý½âÂëµÄJPEGÎļþ£© 4. Output Function
º¯Êý¹¦ÄÜ£ºÓû§×Ô¶¨ÒåµÄÊä³öº¯Êý£¬ÓÃÓÚÏòÊä³öÉ豸Êä³ö½âÂëºóµÄͼƬÊý¾Ý º¯ÊýÍ·£ºUINT out_func ( JDEC* jdec, /*Ö¸ÏòÒ»¸öÒѶ¨ÒåµÄ½âÂë¶ÔÏó*/ void* bitmap, /*Ö¸ÏòÒѽâÂëºÃµ«µÈ´ýÊä³öµÄRGBλͼÊý¾ÝµÄÖ¸Õë*/ JRECT* rect /* bitmapËù´ú±íµÄ´ýÊä³öµÄÏñËØ¿éµÄ´óС */ ); Èë¿Ú²ÎÊý£º
Jdec£ºÖ¸ÏòÒ»¸öÒѶ¨ÒåµÄ½âÂë¶ÔÏó
Bitmap£ºÖ¸ÏòÒѽâÂëºÃµ«µÈ´ýÊä³öµÄRGBλͼÊý¾ÝµÄÖ¸Õë
Rect: bitmapËù´ú±íµÄ´ýÊä³öµÄÏñËØ¿éµÄ³ß´ç´óС£¨ÒëÕß×¢£º¿´Æä¶¨Òå¿ÉÖª£¬´Ë½á¹¹ÌåʹÓá°ÉÏÏÂ×óÓÒ¡±µÄÖµÀ´±íʾһ¸ö¾ØÐÎͼƬÏñËØ¿éµÄËĸöµã£©
·µ»ØÖµ£ºÒ»°ãÇé¿öÏ·µ»Ø1.Õâ¸ö·µ»ØÖµ½«ÔÊÐíTjpgDecÄ£¿é¼ÌÐø½øÐнâÂ빤×÷¡£µ±ËüµÄ·µ»ØÖµÎª0ʱ£¬jd_decompº¯Êý½«»áÖÕÖ¹½âÂ빤×÷£¬²¢·µ»ØJDR_INTR¡£ÕâÖÖÀûÓÃout_funcµÄ·µ»ØÖµÀ´ÖÕÖ¹½âÂëµÄ·½Ê½£¬ÊǷdz£ÓÐÓõġ£ ±¸×¢£º ´Ëº¯ÊýÊÇTjpgDecÄ£¿éµÄÊä³ö½Ó¿Ú¡£ÏàÓ¦µÄ½âÂëÁ÷³Ì»áʹÓñ»´«µÝ¸øº¯Êýjd_prepareµÄµÚ5¸öÈë¿Ú²ÎÊýµÄÊý¾Ý½øÐнâÂ빤×÷£¬´Ë²ÎÊýÊÇÓû§×Ô¶¨ÒåµÄ½âÂë¶ÔÏóÐÅÏ¢£¬±»´æ´¢ÓÚ jdec->device ¡££¨ÒëÕß×¢£ºÔÚMCUµÄÓ¦ÓÃÖУ¬´ËÊý¾ÝÀàÐͽöʹÓÃFILÀàÐÍÓÃÒÔÖ¸ÏòÒ»¸ö´ý½âÂëµÄJPEGÎļþ£© ½âѹºóµÃµ½µÄRGBλͼÊý¾Ý¿ÉÒÔÔڴ˺¯ÊýÖб»·¢Ë͵½ÏÔʾÉ豸»òÕßÊý¾Ý»º³åÇø£¬RGBλͼÊý¾ÝµÄµÚÒ»¸öÊý¾ÝÊÇͼƬµÄ×óÉϽǵľØÐοéµÄÏñËØÊý¾Ý£¬µÚ¶þ¸öÊý¾ÝÊÇÓÒ±ßÒ»¸ö¾ØÐοéµÄÏñËØÊý¾Ý£¬×îºóÒ»¸öÊý¾ÝÊÇͼƬÓÒϽǵľØÐοéµÄÏñËØÊý¾Ý¡£ ÿһ¸ö¾ØÐÎÏñËØ¿éµÄ´óСÊǸù¾Ý²Ã¼ô·½Ê½ºÍͼÏñÊä³ö±ÈÀýµÄ²»Í¬¶ø´Ó1x1µ½16x16²»µÈµÄ£¨ÒëÕß×¢£ºÏñËØ¿éµÄ´óСÊÇTjpgDec×ÔÓÉÑ¡ÔñµÄ£¬Óû§ÎÞ·¨Ö¸¶¨£©¡£Èç¹û¾ØÐοéµÄ´óС³¬¹ýÁËÊý¾Ý»º³åÇøµÄÈÝÁ¿£¬ÄÇôÔÚÕâ¸öÊä³öº¯ÊýÖÐÐèÒª½øÐÐÒ»¶¨µÄ²Ã¼ô¡£
£¨ÒëÕß×¢£ºÔÚTjpgDecÄ£¿éÖУ¬Í¼ÏñµÄÏñËØÊý¾ÝµÄÊä³öÊÇÒÔÏñËØ¿éΪµ¥Î»µÄ£¬ÀýÈ磺µ±Ê¹ÓÃLCDÏÔʾͼƬʱ£¬¿ÉÒÔ¿´µ½Í¼Æ¬ÊÇÒÔÒ»¿éÒ»¿éµÄÐÎʽ´Ó×óÉϽǵ½ÓÒϽǰÑÕû¸öͼƬÏÔʾ³öÀ´µÄ¡£ËùÒÔ£¬ÔÚMCUµÄʹÓÃÖУ¬µ±Ê¹ÓÃTFTLCDÏÔʾͼƬʱ£¬ÐèÒªÔÚÕâ¸öÊä³öº¯ÊýÖÐÏȸù¾ÝrectÌṩµÄÖµÔÚLCDÉ϶¨Òå³öÒ»¸öͼƬÏÔʾµÄ¾ØÐδ°¿Ú£¬È»ºóÔÙ°ÑbitmapÊý¾ÝÊä³öµ½Õâ¸ö¾ØÐδ°¿ÚÖУ¬¶øTjpgDec»á¸ù¾ÝͼƬµÄÐÅÏ¢×Ô¶¯¸Ä±ärectµÄÖµ£¬Óû§²»ÓüÆËãÏÂÒ»¸öÏñËØ¿éµÄÏÔʾλÖᣣ© RGBλͼÊý¾ÝµÄ¸ñʽÐèҪʹÓÃÅäÖÃÑ¡ÏîÖеÄJD_FORMAT½øÐж¨Òå¡££¨ÔÚÎļþtjpgd.hÖУ© µ±¶¨ÒåΪ24Î»Õæ²ÊÉ«£¨RGB888£©Ê±£¬RGBλͼÊý¾ÝʹÓÃ3¸ö×Ö½Ú±íʾһ¸öÏñËØµã£ºRRRRRRRR, GGGGGGGG, BBBBBBBB, RRRRRRRR, GGGGGGGG, BBBBBBBB, ... µ±¶¨ÒåΪRGB565¸ñʽʱ£¬RGBλͼÊý¾ÝʹÓÃÒ»¸ö°ë×Ö£¨16룩µÄÊý¾Ý±íʾһ¸öÏñËØµã£ºRRRRRGGGGGGBBBBB, RRRRRGGGGGGBBBBB, RRRRRGGGGGGBBBBB, ...
µÚÈýÕ º¯ÊýÖÐʹÓõĽṹÌå
1. JDEC£º´Ë½á¹¹Ìå´æ´¢ÓйؽâÂëʹÓõÄÊý¾Ý¡¢Ö¸ÕëºÍ¸÷ÖÖ±êÖ¾¡££¨´ý½âÂë¶ÔÏóÐÅÏ¢¼Ç¼±í£© struct JDEC {
UINT dctr; /* ÊäÈ뻺³åÇøµÄÈÝÁ¿ */
BYTE* dptr; /* Ö¸Ïòµ±Ç°ÕýÔÚ¶ÁÈ¡µÄÊý¾ÝµÄÖ¸Õë */ BYTE* inbuf; /* Ö¸ÏòÊäÈ뻺³åÇøµÄÖ¸Õë */
BYTE dmsk; /* µ±Ç°ÕýÔÚ¶ÁÈ¡µÄ×Ö½ÚÖеĵ±Ç°µÄÒ»¸öλ */ BYTE scale; /* ͼÏñÊä³ö±ÈÀý */
BYTE msx, msy; /* µ¥Æ¬»úÒ»¸öÄÚ´æ¿éµÄ´óС (¿í¶ÈºÍ¸ß¶È) */ BYTE qtid[3]; /* ÿ¸ö×é¼þµÄÁ¿»¯±íµÄ±àºÅ */
SHORT dcv[3]; /* Previous DC element of each component */ WORD nrst; /* Restart inverval */
UINT width, height; /* ÊäÈëµÄͼƬµÄ´óС£¨ÏñËØ£© */
BYTE* huffbits[2][2];
/*»ô·òÂü±ÈÌØ·Ö²¼±í [yc][dcac] */
WORD* huffcode[2][2]; /* »ô·òÂüÂë×Ö±í [yc][dcac] */ BYTE* huffdata[2][2]; /* »ô·òÂü½âÂëÊý¾Ý±í [yc][dcac] */ LONG* qttbl[4]; /* De-quaitizer tables [id] */ voi ¡¡ ´Ë´¦Òþ²Ø£º5900×Ö£¬È«²¿ÎĵµÄÚÈÝÇëÏÂÔØºó²é¿´¡£Ï²»¶¾ÍÏÂÔØ°É ¡¡
ÏÂһƪ£º2018-2019ѧÄêÏæ½Ì°æÎåÄê¼¶ÓïÎÄÉϲáµÚ¶þµ¥Ôª²âÊÔ¾í¼°½âÎö
Ïà¹ØÍÆ¼ö£º
- [×ÛºÏÎĵµ]Ó¦´ðÆ÷É豸¼¼Êõ¹æ·¶£¨Õ÷ÇóÒâ¼û¸å£©A1
- [×ÛºÏÎĵµ]½Ìʦ 2012Äê¸ß¿¼ÕþÖÎÊÔÌâ°´¿¼µã·ÖÀà»ã
- [×ÛºÏÎĵµ]±£ÏÕ¹«Ë¾µÄ×ܾÀíÖúÀí¾ºÖ°ÑÝ˵
- [×ÛºÏÎĵµ]ÎÀÉúÓ¦¼±´óÁ·±ø´ó±ÈÎä»î¶¯¿¼ÊÔ--Ìâ¿â£¨
- [×ÛºÏÎĵµ]ÐìÖݾ¼Ã¼¼Êõ¿ª·¢Çø×ÜÌ广»®»·¾³Ó°Ï챨
- [×ÛºÏÎĵµ]ººÓïÆ´Òô±í£¨´øÉùµ÷£©
- [×ÛºÏÎĵµ]¶þÄê¼¶ ÉÏ Ë¼Î¬ÑµÁ·( 1~18)
- [×ÛºÏÎĵµ]ÌØÉ«Ñ§Ð£ÎåÄê·¢Õ¹¹æ»®
- [×ÛºÏÎĵµ]»ú´²¾³£³öÏÖ±¨¾¯¡°X1Öᶨλ¼à¿Ø¡±
- [×ÛºÏÎĵµ]¡¶µç×Ó¼¼Êõ»ù´¡¡·21.¡ì5¡ª2¡¢3¡¢4 ϰÌâ
- [×ÛºÏÎĵµ]Õã½Ê¡ÉÆÕͨ¸ßÖпγ̸ĸï
- [×ÛºÏÎĵµ]CRISPÔÀí - ͼÎÄ
- [×ÛºÏÎĵµ]2017Äêµç´óÉç»áµ÷²éÑо¿Óë·½·¨Ðο¼´ð°¸
- [×ÛºÏÎĵµ]dzÎö½¨ÖþÊ©¹¤°²È«±ÏÒµÂÛÎÄ
- [×ÛºÏÎĵµ]¡¶»ØÒäÎÒµÄĸÇס·Ãûʦ½Ì°¸
- [×ÛºÏÎĵµ]×°ÊÎ×°ÐÞ¹¤³Ì¼àÀí¹æ»®
- [×ÛºÏÎĵµ]ÈýÏÂÏçÐĵÃÌå»á-ÎÄÒÕ
- [×ÛºÏÎĵµ]Öù¼ÆË㳤¶ÈϵÊý - ͼÎÄ
- [×ÛºÏÎĵµ]È«Á÷³Ì˼¿¼£¬Ìá¸ßȼµçϵͳÈȵçת»»ÂÊ--
- [×ÛºÏÎĵµ]2018Äê¼Î¶¨ÇøÖп¼ÎïÀíһģº¬´ð°¸
- 433M³µ¿âÃŹö¶¯ÂëÒ£¿ØÆ÷
- 8¡¢¼Ü¿ÕÏß·ʩ¹¤¹æ·¶
- ´óѧËÄÄêÉùÀÖѧϰµÄÌå»á
- б±Ê¦´ó°æÎåÄê¼¶ÊýѧÉϲᡶÖá¶Ô³ÆÔÙÈÏ
- ²¿±à°æÎåÄê¼¶ÉϲáÓïÎĵÚÁùµ¥ÔªÐ¡½á¸´Ï°
- СѧÁùÄê¼¶Ó¢ÓïÐÎÈÝ´ÊÓ÷¨
- µÚ2¿Î ¿¹ÃÀÔ®³¯±£¼ÒÎÀ¹ú ¿Î¼þ01(ÔÀ´°æ
- 2015ÄêÌì½ò´óѧÔ˳ïѧ»ù´¡¿¼ÑÐÕæÌâ,¿¼
- ΢»ú¼ÆËã»ú¿ØÖƼ¼Êõ¿ÎºóÓÚº£Éú(µÚ2°æ)
- °²È«½ÌÓýʵ¼ù»î¶¯
- Delphi³ÌÐòÉè¼Æ½Ì³Ì_µÚ1ÕÂ_Delphi¸ÅÊö
- µÚ°Ë½² ¹¤Òµ¸ïÃüÓëÆôÃÉÔ˶¯
- ¡¶ÖлªÈËÃñ¹²ºÍ¹úÒ©µä¡·2005Äê°æ¶þ²¿¿±
- ¿ÆÔÁ°æ¾ÅÄê¼¶»¯Ñ§2.3¹¹³ÉÎïÖʵÄ΢Á£(1)
- Î÷ʦ´ó°æÊýѧÈýÄ꼶ϲᡶ³¤·½ÐΡ¢Õý·½
- ch6_ðÅÝÅÅÐòÑÝʾ
- µÚ4Õ ³å²ÃÄ£¾ßÉè¼Æ
- Õã½ÖÐСÃñÓªÆóÒµÔ±¹¤Á÷ʧÂÛÎÄ[ÖÕ¸å]
- ÔÙÒéÓÐÏßÊý×ÖµçÊÓÊг¡ÓªÔËģʽ
- À¥Ã÷¹©Ë®¹¤³Ì¼àÀí´ó¸Ù




