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

📄 jdcoefct.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
000098  580f              LDR      r7,[r1,r0]
;;;357        output_ptr = output_buf[ci];
00009a  9808              LDR      r0,[sp,#0x20]
00009c  f8500029          LDR      r0,[r0,r9,LSL #2]
;;;358        /* Loop over all DCT blocks to be processed. */
;;;359        for (block_row = 0; block_row < block_rows; block_row++) {
0000a0  9002              STR      r0,[sp,#8]
0000a2  2000              MOVS     r0,#0
0000a4  e01c              B        |L2.224|
                  |L2.166|
;;;360          buffer_ptr = buffer[block_row];
0000a6  9803              LDR      r0,[sp,#0xc]
;;;361          output_col = 0;
0000a8  f04f0a00          MOV      r10,#0
0000ac  f850b028          LDR      r11,[r0,r8,LSL #2]    ;360
;;;362          for (block_num = 0; block_num < compptr->width_in_blocks; block_num++) {
0000b0  4656              MOV      r6,r10
0000b2  e00b              B        |L2.204|
                  |L2.180|
;;;363    	(*inverse_DCT) (cinfo, compptr, (JCOEFPTR) buffer_ptr,
0000b4  f8cda000          STR      r10,[sp,#0]
0000b8  465a              MOV      r2,r11
0000ba  4629              MOV      r1,r5
0000bc  4620              MOV      r0,r4
0000be  9b02              LDR      r3,[sp,#8]
0000c0  47b8              BLX      r7
;;;364    			output_ptr, output_col);
;;;365    	buffer_ptr++;
;;;366    	output_col += compptr->DCT_scaled_size;
0000c2  6a68              LDR      r0,[r5,#0x24]
0000c4  f10b0b80          ADD      r11,r11,#0x80         ;365
0000c8  4482              ADD      r10,r10,r0
0000ca  1c76              ADDS     r6,r6,#1              ;362
                  |L2.204|
0000cc  69e8              LDR      r0,[r5,#0x1c]         ;362
0000ce  42b0              CMP      r0,r6                 ;362
0000d0  d8f0              BHI      |L2.180|
;;;367          }
;;;368          output_ptr += compptr->DCT_scaled_size;
0000d2  6a69              LDR      r1,[r5,#0x24]
0000d4  9a02              LDR      r2,[sp,#8]
0000d6  f1080001          ADD      r0,r8,#1              ;359
0000da  eb020181          ADD      r1,r2,r1,LSL #2
0000de  9102              STR      r1,[sp,#8]
                  |L2.224|
0000e0  9904              LDR      r1,[sp,#0x10]         ;359
0000e2  4680              MOV      r8,r0                 ;359
0000e4  4288              CMP      r0,r1                 ;359
0000e6  dbde              BLT      |L2.166|
                  |L2.232|
0000e8  f1090901          ADD      r9,r9,#1              ;339
0000ec  3554              ADDS     r5,r5,#0x54           ;339
                  |L2.238|
0000ee  6a60              LDR      r0,[r4,#0x24]         ;338
0000f0  4548              CMP      r0,r9                 ;338
0000f2  dcaa              BGT      |L2.74|
;;;369        }
;;;370      }
;;;371    
;;;372      if (++(cinfo->output_iMCU_row) < cinfo->total_iMCU_rows)
0000f4  f8540f9c          LDR      r0,[r4,#0x9c]!
0000f8  1c40              ADDS     r0,r0,#1
0000fa  6020              STR      r0,[r4,#0]
0000fc  f8d410a4          LDR      r1,[r4,#0xa4]
000100  4288              CMP      r0,r1
000102  d203              BCS      |L2.268|
;;;373        return JPEG_ROW_COMPLETED;
000104  2003              MOVS     r0,#3
                  |L2.262|
;;;374      return JPEG_SCAN_COMPLETED;
;;;375    }
000106  b009              ADD      sp,sp,#0x24
000108  e8bd8ff0          POP      {r4-r11,pc}
                  |L2.268|
00010c  2004              MOVS     r0,#4                 ;374
00010e  e7fa              B        |L2.262|
;;;376    
                          ENDP


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

                  decompress_onepass PROC
;;;146    METHODDEF(int)
;;;147    decompress_onepass (j_decompress_ptr cinfo, JSAMPIMAGE output_buf)
000000  e92d4ff3          PUSH     {r0,r1,r4-r11,lr}
;;;148    {
;;;149      my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
;;;150      JDIMENSION MCU_col_num;	/* index of current MCU within row */
;;;151      JDIMENSION last_MCU_col = cinfo->MCUs_per_row - 1;
000004  f8d0a1ac          LDR      r10,[r0,#0x1ac]
000008  4605              MOV      r5,r0                 ;148
00000a  f8d0015c          LDR      r0,[r0,#0x15c]
;;;152      JDIMENSION last_iMCU_row = cinfo->total_iMCU_rows - 1;
;;;153      int blkn, ci, xindex, yindex, yoffset, useful_width;
;;;154      JSAMPARRAY output_ptr;
;;;155      JDIMENSION start_col, output_col;
;;;156      jpeg_component_info *compptr;
;;;157      inverse_DCT_method_ptr inverse_DCT;
;;;158    
;;;159      /* Loop to process as much as one whole iMCU row */
;;;160      for (yoffset = coef->MCU_vert_offset; yoffset < coef->MCU_rows_per_iMCU_row;
00000e  f8d51140          LDR      r1,[r5,#0x140]
000012  b089              SUB      sp,sp,#0x24           ;148
000014  1e40              SUBS     r0,r0,#1              ;151
000016  f8da2018          LDR      r2,[r10,#0x18]        ;151
00001a  1e49              SUBS     r1,r1,#1              ;152
00001c  9205              STR      r2,[sp,#0x14]
00001e  e9cd1007          STRD     r1,r0,[sp,#0x1c]
000022  e086              B        |L3.306|
                  |L3.36|
;;;161           yoffset++) {
;;;162        for (MCU_col_num = coef->MCU_ctr; MCU_col_num <= last_MCU_col;
000024  f8da0014          LDR      r0,[r10,#0x14]
000028  e079              B        |L3.286|
;;;163    	 MCU_col_num++) {
;;;164          /* Try to fetch an MCU.  Entropy decoder expects buffer to be zeroed. */
;;;165          jzero_far((void FAR *) coef->MCU_buffer[0],
00002a  bf00              NOP      
                  |L3.44|
00002c  f8d50164          LDR      r0,[r5,#0x164]
000030  01c1              LSLS     r1,r0,#7
000032  f8da0020          LDR      r0,[r10,#0x20]
000036  f7fffffe          BL       jzero_far
;;;166    		(size_t) (cinfo->blocks_in_MCU * SIZEOF(JBLOCK)));
;;;167          if (! (*cinfo->entropy->decode_mcu) (cinfo, coef->MCU_buffer)) {
00003a  f8d501bc          LDR      r0,[r5,#0x1bc]
00003e  f10a0120          ADD      r1,r10,#0x20
000042  6842              LDR      r2,[r0,#4]
000044  4628              MOV      r0,r5
000046  4790              BLX      r2
000048  b930              CBNZ     r0,|L3.88|
;;;168    	/* Suspension forced; update state counters and exit */
;;;169    	coef->MCU_vert_offset = yoffset;
00004a  9805              LDR      r0,[sp,#0x14]
;;;170    	coef->MCU_ctr = MCU_col_num;
;;;171    	return JPEG_SUSPENDED;
00004c  e9cab005          STRD     r11,r0,[r10,#0x14]
000050  2000              MOVS     r0,#0
                  |L3.82|
;;;172          }
;;;173          /* Determine where data should go in output_buf and do the IDCT thing.
;;;174           * We skip dummy blocks at the right and bottom edges (but blkn gets
;;;175           * incremented past them!).  Note the inner loop relies on having
;;;176           * allocated the MCU_buffer[] blocks sequentially.
;;;177           */
;;;178          blkn = 0;			/* index of current DCT block within MCU */
;;;179          for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
;;;180    	compptr = cinfo->cur_comp_info[ci];
;;;181    	/* Don't bother to IDCT an uninteresting component. */
;;;182    	if (! compptr->component_needed) {
;;;183    	  blkn += compptr->MCU_blocks;
;;;184    	  continue;
;;;185    	}
;;;186    	inverse_DCT = cinfo->idct->inverse_DCT[compptr->component_index];
;;;187    	useful_width = (MCU_col_num < last_MCU_col) ? compptr->MCU_width
;;;188    						    : compptr->last_col_width;
;;;189    	output_ptr = output_buf[compptr->component_index] +
;;;190    	  yoffset * compptr->DCT_scaled_size;
;;;191    	start_col = MCU_col_num * compptr->MCU_sample_width;
;;;192    	for (yindex = 0; yindex < compptr->MCU_height; yindex++) {
;;;193    	  if (cinfo->input_iMCU_row < last_iMCU_row ||
;;;194    	      yoffset+yindex < compptr->last_row_height) {
;;;195    	    output_col = start_col;
;;;196    	    for (xindex = 0; xindex < useful_width; xindex++) {
;;;197    	      (*inverse_DCT) (cinfo, compptr,
;;;198    			      (JCOEFPTR) coef->MCU_buffer[blkn+xindex],
;;;199    			      output_ptr, output_col);
;;;200    	      output_col += compptr->DCT_scaled_size;
;;;201    	    }
;;;202    	  }
;;;203    	  blkn += compptr->MCU_width;
;;;204    	  output_ptr += compptr->DCT_scaled_size;
;;;205    	}
;;;206          }
;;;207        }
;;;208        /* Completed an MCU row, but perhaps not an iMCU row */
;;;209        coef->MCU_ctr = 0;
;;;210      }
;;;211      /* Completed the iMCU row, advance counters for next one */
;;;212      cinfo->output_iMCU_row++;
;;;213      if (++(cinfo->input_iMCU_row) < cinfo->total_iMCU_rows) {
;;;214        start_iMCU_row(cinfo);
;;;215        return JPEG_ROW_COMPLETED;
;;;216      }
;;;217      /* Completed the scan */
;;;218      (*cinfo->inputctl->finish_input_pass) (cinfo);
;;;219      return JPEG_SCAN_COMPLETED;
;;;220    }
000052  b00b              ADD      sp,sp,#0x2c
000054  e8bd8ff0          POP      {r4-r11,pc}
                  |L3.88|
000058  f04f0800          MOV      r8,#0                 ;178
00005c  4640              MOV      r0,r8                 ;179
00005e  e056              B        |L3.270|
                  |L3.96|
000060  eb050081          ADD      r0,r5,r1,LSL #2       ;180
000064  f8d0414c          LDR      r4,[r0,#0x14c]        ;182
000068  6b20              LDR      r0,[r4,#0x30]         ;182
00006a  b910              CBNZ     r0,|L3.114|
00006c  6be0              LDR      r0,[r4,#0x3c]         ;183
00006e  4480              ADD      r8,r8,r0              ;183
000070  e04b              B        |L3.266|
                  |L3.114|
000072  6861              LDR      r1,[r4,#4]            ;187
000074  f8d501c0          LDR      r0,[r5,#0x1c0]        ;186
000078  2204              MOVS     r2,#4                 ;186
00007a  9e08              LDR      r6,[sp,#0x20]         ;187
00007c  eb020281          ADD      r2,r2,r1,LSL #2       ;186
000080  5887              LDR      r7,[r0,r2]            ;186
000082  45b3              CMP      r11,r6                ;187
000084  d201              BCS      |L3.138|
000086  6b60              LDR      r0,[r4,#0x34]         ;187
000088  e000              B        |L3.140|
                  |L3.138|
00008a  6c60              LDR      r0,[r4,#0x44]         ;188
                  |L3.140|
00008c  9004              STR      r0,[sp,#0x10]         ;189
00008e  980a              LDR      r0,[sp,#0x28]         ;189
000090  9b05              LDR      r3,[sp,#0x14]         ;191
000092  f8502021          LDR      r2,[r0,r1,LSL #2]     ;189
000096  6a60              LDR      r0,[r4,#0x24]         ;189
000098  6c21              LDR      r1,[r4,#0x40]         ;191
00009a  4358              MULS     r0,r3,r0              ;189
00009c  fb01f10b          MUL      r1,r1,r11             ;191
0000a0  eb020080          ADD      r0,r2,r0,LSL #2       ;189
0000a4  e9cd1002          STRD     r1,r0,[sp,#8]         ;192
0000a8  f04f0900          MOV      r9,#0                 ;192
0000ac  e02a              B        |L3.260|
0000ae  bf00              NOP                            ;193
                  |L3.176|
0000b0  f8d50094          LDR      r0,[r5,#0x94]         ;193
0000b4  9907              LDR      r1,[sp,#0x1c]         ;193
0000b6  4288              CMP      r0,r1                 ;193
0000b8  d304              BCC      |L3.196|
0000ba  9805              LDR      r0,[sp,#0x14]         ;194
0000bc  6ca1              LDR      r1,[r4,#0x48]         ;194
0000be  4448              ADD      r0,r0,r9              ;194
0000c0  4288              CMP      r0,r1                 ;194
0000c2  da16              BGE      |L3.242|
                  |L3.196|
0000c4  9802              LDR      r0,[sp,#8]            ;195
0000c6  2600              MOVS     r6,#0                 ;196
0000c8  9001              STR      r0,[sp,#4]            ;196
0000ca  e00f              B        |L3.236|
                  |L3.204|
0000cc  9b01              LDR      r3,[sp,#4]            ;197
0000ce  eb080006          ADD      r0,r8,r6              ;197
0000d2  9300              STR      r3,[sp,#0]            ;197
0000d4  eb0a0080          ADD      r0,r10,r0,LSL #2      ;197
0000d8  6a02              LDR      r2,[r0,#0x20]         ;197
0000da  4621              MOV      r1,r4                 ;197
0000dc  4628              MOV      r0,r5                 ;197
0000de  9b03              LDR      r3,[sp,#0xc]          ;197
0000e0  47b8              BLX      r7                    ;197
0000e2  6a60              LDR      r0,[r4,#0x24]         ;200
0000e4  9901              LDR      r1,[sp,#4]            ;200
0000e6  1c76              ADDS     r6,r6,#1              ;196
0000e8  4408              ADD      r0,r0,r1              ;200
0000ea  9001              STR      r0,[sp,#4]            ;196
                  |L3.236|
0000ec  9804              LDR      r0,[sp,#0x10]         ;196
0000ee  4286              CMP      r6,r0                 ;196
0000f0  dbec              BLT      |L3.204|
                  |L3.242|
0000f2  6b60              LDR      r0,[r4,#0x34]         ;204
0000f4  6a62              LDR      r2,[r4,#0x24]         ;204
0000f6  9b03              LDR      r3,[sp,#0xc]          ;204
0000f8  4480              ADD      r8,r8,r0              ;203
0000fa  eb030082          ADD      r0,r3,r2,LSL #2       ;204
0000fe  f1090901          ADD      r9,r9,#1              ;192
000102  9003              STR      r0,[sp,#0xc]          ;204
                  |L3.260|
000104  6ba0              LDR      r0,[r4,#0x38]         ;192
000106  4548              CMP      r0,r9                 ;192
000108  dcd2              BGT      |L3.176|
                  |L3.266|
00010a  9806              LDR      r0,[sp,#0x18]         ;179
00010c  1c40              ADDS     r0,r0,#1              ;179
                  |L3.270|
00010e  9006              STR      r0,[sp,#0x18]         ;179
000110  f8d50148          LDR      r0,[r5,#0x148]        ;179
000114  9906              LDR      r1,[sp,#0x18]         ;179
000116  4288              CMP      r0,r1                 ;179
000118  dca2              BGT      |L3.96|
00011a  f10b0001          ADD      r0,r11,#1             ;163
                  |L3.286|
00011e  9908              LDR      r1,[sp,#0x20]         ;162
000120  4683              MOV      r11,r0                ;162
000122  4288              CMP      r0,r1                 ;162
000124  d982              BLS      |L3.44|
000126  2000              MOVS     r0,#0                 ;209
000128  f8ca0014          STR      r0,[r10,#0x14]        ;161
00012c  9805              LDR      r0,[sp,#0x14]         ;161
00012e  1c40              ADDS     r0,r0,#1              ;161
000130  9005              STR      r0,[sp,#0x14]         ;161

⌨️ 快捷键说明

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