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

📄 jddctmgr.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\jddctmgr.o --depend=.\Obj\jddctmgr.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\JPEG\jddctmgr.c]
                          THUMB

                          AREA ||i.jinit_inverse_dct||, CODE, READONLY, ALIGN=2

                  jinit_inverse_dct PROC
;;;243    GLOBAL(void)
;;;244    jinit_inverse_dct (j_decompress_ptr cinfo)
000000  e92d47f0          PUSH     {r4-r10,lr}
;;;245    {
000004  4605              MOV      r5,r0
;;;246      my_idct_ptr idct;
;;;247      int ci;
;;;248      jpeg_component_info *compptr;
;;;249    
;;;250      idct = (my_idct_ptr)
000006  6840              LDR      r0,[r0,#4]
000008  2224              MOVS     r2,#0x24
00000a  6803              LDR      r3,[r0,#0]
00000c  2101              MOVS     r1,#1
00000e  4628              MOV      r0,r5
000010  4798              BLX      r3
;;;251        (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;252    				SIZEOF(my_idct_controller));
;;;253      cinfo->idct = (struct jpeg_inverse_dct *) idct;
;;;254      idct->pub.start_pass = start_pass;
000012  4911              LDR      r1,|L1.88|
000014  f8c501c0          STR      r0,[r5,#0x1c0]
;;;255    
;;;256      for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
000018  6001              STR      r1,[r0,#0]
00001a  4607              MOV      r7,r0                 ;250
00001c  2400              MOVS     r4,#0
;;;257           ci++, compptr++) {
;;;258        /* Allocate and pre-zero a multiplier table for each component */
;;;259        compptr->dct_table =
00001e  f44f7880          MOV      r8,#0x100
;;;260          (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;261    				  SIZEOF(multiplier_table));
;;;262        MEMZERO(compptr->dct_table, SIZEOF(multiplier_table));
;;;263        /* Mark multiplier table not yet set up for any method */
;;;264        idct->cur_method[ci] = -1;
000022  f04f39ff          MOV      r9,#0xffffffff
000026  f8d560d8          LDR      r6,[r5,#0xd8]         ;257
00002a  e00f              B        |L1.76|
                  |L1.44|
00002c  6868              LDR      r0,[r5,#4]            ;259
00002e  4642              MOV      r2,r8                 ;259
000030  6803              LDR      r3,[r0,#0]            ;259
000032  2101              MOVS     r1,#1                 ;259
000034  4628              MOV      r0,r5                 ;259
000036  4798              BLX      r3                    ;259
000038  4641              MOV      r1,r8                 ;262
00003a  6530              STR      r0,[r6,#0x50]         ;262
00003c  f7fffffe          BL       __aeabi_memclr
000040  eb070184          ADD      r1,r7,r4,LSL #2
000044  1c64              ADDS     r4,r4,#1              ;257
000046  3654              ADDS     r6,r6,#0x54           ;257
000048  f8c19014          STR      r9,[r1,#0x14]         ;257
                  |L1.76|
00004c  6a68              LDR      r0,[r5,#0x24]         ;256
00004e  42a0              CMP      r0,r4                 ;256
000050  dcec              BGT      |L1.44|
;;;265      }
;;;266    }
000052  e8bd87f0          POP      {r4-r10,pc}
                          ENDP

000056  0000              DCW      0x0000
                  |L1.88|
                          DCD      start_pass

                          AREA ||i.start_pass||, CODE, READONLY, ALIGN=2

                  start_pass PROC
;;;87     
;;;88     METHODDEF(void) start_pass (j_decompress_ptr cinfo) {
000000  e92d47f0          PUSH     {r4-r10,lr}
;;;89       my_idct_ptr idct = (my_idct_ptr) cinfo->idct;
;;;90       int ci, i;
;;;91       jpeg_component_info *compptr;
;;;92       int method = 0;
000004  2600              MOVS     r6,#0
000006  4604              MOV      r4,r0                 ;88
;;;93       inverse_DCT_method_ptr method_ptr = NULL;
000008  46b0              MOV      r8,r6
;;;94       JQUANT_TBL * qtbl;
;;;95     
;;;96       for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components; ci++, compptr++) {
00000a  4637              MOV      r7,r6
;;;97         /* Select the proper IDCT routine for this component's scaling */
;;;98         switch (compptr->DCT_scaled_size) {
;;;99     #ifdef IDCT_SCALING_SUPPORTED
;;;100        case 1:
;;;101          method_ptr = jpeg_idct_1x1;
;;;102          method = JDCT_ISLOW;	/* jidctred uses islow-style table */
;;;103          break;
;;;104        case 2:
;;;105          method_ptr = jpeg_idct_2x2;
;;;106          method = JDCT_ISLOW;	/* jidctred uses islow-style table */
;;;107          break;
;;;108        case 4:
;;;109          method_ptr = jpeg_idct_4x4;
;;;110          method = JDCT_ISLOW;	/* jidctred uses islow-style table */
;;;111          break;
;;;112    #endif
;;;113        case DCTSIZE:
;;;114          switch (cinfo->dct_method) {
;;;115    #ifdef DCT_ISLOW_SUPPORTED
;;;116          case JDCT_ISLOW:
;;;117    	method_ptr = jpeg_idct_islow;
;;;118    	method = JDCT_ISLOW;
;;;119    	break;
;;;120    #endif
;;;121    #ifdef DCT_IFAST_SUPPORTED
;;;122          case JDCT_IFAST:
;;;123    	method_ptr = jpeg_idct_ifast;
;;;124    	method = JDCT_IFAST;
;;;125    	break;
;;;126    #endif
;;;127    #ifdef DCT_FLOAT_SUPPORTED
;;;128          case JDCT_FLOAT:
;;;129    	method_ptr = jpeg_idct_float;
;;;130    	method = JDCT_FLOAT;
;;;131    	break;
;;;132    #endif
;;;133          default:
;;;134    	ERREXIT(cinfo, JERR_NOT_COMPILED);
00000c  f04f0a30          MOV      r10,#0x30
000010  f8d091c0          LDR      r9,[r0,#0x1c0]        ;96
000014  f8d050d8          LDR      r5,[r0,#0xd8]         ;96
000018  e054              B        |L2.196|
                  |L2.26|
00001a  6a68              LDR      r0,[r5,#0x24]         ;98
00001c  2808              CMP      r0,#8                 ;98
00001e  d114              BNE      |L2.74|
000020  f8940048          LDRB     r0,[r4,#0x48]         ;114
000024  b128              CBZ      r0,|L2.50|
000026  2801              CMP      r0,#1                 ;114
000028  d107              BNE      |L2.58|
00002a  f8df80a4          LDR      r8,|L2.208|
00002e  2601              MOVS     r6,#1                 ;124
000030  e012              B        |L2.88|
                  |L2.50|
000032  f8df80a0          LDR      r8,|L2.212|
000036  2600              MOVS     r6,#0                 ;118
000038  e00e              B        |L2.88|
                  |L2.58|
00003a  6821              LDR      r1,[r4,#0]
00003c  f8c1a014          STR      r10,[r1,#0x14]
                  |L2.64|
000040  6820              LDR      r0,[r4,#0]
000042  6801              LDR      r1,[r0,#0]
000044  4620              MOV      r0,r4
000046  4788              BLX      r1
000048  e006              B        |L2.88|
                  |L2.74|
;;;135    	break;
;;;136          }
;;;137          break;
;;;138        default:
;;;139          ERREXIT1(cinfo, JERR_BAD_DCTSIZE, compptr->DCT_scaled_size);
00004a  6821              LDR      r1,[r4,#0]
00004c  2007              MOVS     r0,#7
00004e  6148              STR      r0,[r1,#0x14]
000050  6821              LDR      r1,[r4,#0]
000052  6a68              LDR      r0,[r5,#0x24]
;;;140          break;
000054  6188              STR      r0,[r1,#0x18]
000056  e7f3              B        |L2.64|
                  |L2.88|
;;;141        }
;;;142        idct->pub.inverse_DCT[ci] = method_ptr;
000058  eb090087          ADD      r0,r9,r7,LSL #2
;;;143        /* Create multiplier table from quant table.
;;;144         * However, we can skip this if the component is uninteresting
;;;145         * or if we already built the table.  Also, if no quant table
;;;146         * has yet been saved for the component, we leave the
;;;147         * multiplier table all-zero; we'll be reading zeroes from the
;;;148         * coefficient controller's buffer anyway.
;;;149         */
;;;150        if (! compptr->component_needed || idct->cur_method[ci] == method)
00005c  f8c08004          STR      r8,[r0,#4]
000060  6b29              LDR      r1,[r5,#0x30]

⌨️ 快捷键说明

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