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

📄 jdmaster.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
00018a  e7ff              B        |L5.396|
                  |L5.396|
;;;413        } else {
;;;414          /* For a nonprogressive multiscan file, estimate 1 scan per component. */
;;;415          nscans = cinfo->num_components;
;;;416        }
;;;417        cinfo->progress->pass_counter = 0L;
;;;418        cinfo->progress->pass_limit = (long) cinfo->total_iMCU_rows * nscans;
00018c  604f              STR      r7,[r1,#4]
00018e  f8d41140          LDR      r1,[r4,#0x140]
000192  68a2              LDR      r2,[r4,#8]
000194  4341              MULS     r1,r0,r1
;;;419        cinfo->progress->completed_passes = 0;
000196  6091              STR      r1,[r2,#8]
000198  68a1              LDR      r1,[r4,#8]
;;;420        cinfo->progress->total_passes = (cinfo->enable_2pass_quant ? 3 : 2);
00019a  2003              MOVS     r0,#3
00019c  60cf              STR      r7,[r1,#0xc]
00019e  6ee1              LDR      r1,[r4,#0x6c]
0001a0  b901              CBNZ     r1,|L5.420|
0001a2  2002              MOVS     r0,#2
                  |L5.420|
0001a4  68a1              LDR      r1,[r4,#8]
;;;421        /* Count the input pass as done */
;;;422        master->pass_number++;
0001a6  6108              STR      r0,[r1,#0x10]
0001a8  68e8              LDR      r0,[r5,#0xc]
0001aa  1c40              ADDS     r0,r0,#1
;;;423      }
0001ac  60e8              STR      r0,[r5,#0xc]
                  |L5.430|
;;;424    #endif /* D_MULTISCAN_FILES_SUPPORTED */
;;;425    }
0001ae  e8bd81f0          POP      {r4-r8,pc}
;;;426    
                          ENDP


                          AREA ||i.prepare_for_output_pass||, CODE, READONLY, ALIGN=1

                  prepare_for_output_pass PROC
;;;437    METHODDEF(void)
;;;438    prepare_for_output_pass (j_decompress_ptr cinfo)
000000  b570              PUSH     {r4-r6,lr}
;;;439    {
;;;440      my_master_ptr master = (my_master_ptr) cinfo->master;
;;;441    
;;;442      if (master->pub.is_dummy_pass) {
000002  f8d051a4          LDR      r5,[r0,#0x1a4]
000006  4604              MOV      r4,r0                 ;439
000008  68a8              LDR      r0,[r5,#8]
00000a  b190              CBZ      r0,|L6.50|
;;;443    #ifdef QUANT_2PASS_SUPPORTED
;;;444        /* Final pass of 2-pass quantization */
;;;445        master->pub.is_dummy_pass = FALSE;
00000c  2000              MOVS     r0,#0
;;;446        (*cinfo->cquantize->start_pass) (cinfo, FALSE);
00000e  60a8              STR      r0,[r5,#8]
000010  f8d401cc          LDR      r0,[r4,#0x1cc]
000014  2100              MOVS     r1,#0
000016  6802              LDR      r2,[r0,#0]
000018  4620              MOV      r0,r4
00001a  4790              BLX      r2
;;;447        (*cinfo->post->start_pass) (cinfo, JBUF_CRANK_DEST);
00001c  f8d401b0          LDR      r0,[r4,#0x1b0]
000020  2102              MOVS     r1,#2
000022  6802              LDR      r2,[r0,#0]
000024  4620              MOV      r0,r4
000026  4790              BLX      r2
;;;448        (*cinfo->main->start_pass) (cinfo, JBUF_CRANK_DEST);
000028  f8d401a8          LDR      r0,[r4,#0x1a8]
00002c  2102              MOVS     r1,#2
00002e  6802              LDR      r2,[r0,#0]
000030  e049              B        |L6.198|
                  |L6.50|
;;;449    #else
;;;450        ERREXIT(cinfo, JERR_NOT_COMPILED);
;;;451    #endif /* QUANT_2PASS_SUPPORTED */
;;;452      } else {
;;;453        if (cinfo->quantize_colors && cinfo->colormap == NULL) {
000032  6d60              LDR      r0,[r4,#0x54]
000034  b1c8              CBZ      r0,|L6.106|
000036  f8d40088          LDR      r0,[r4,#0x88]
00003a  b9b0              CBNZ     r0,|L6.106|
;;;454          /* Select new quantization method */
;;;455          if (cinfo->two_pass_quantize && cinfo->enable_2pass_quant) {
00003c  6de0              LDR      r0,[r4,#0x5c]
00003e  b138              CBZ      r0,|L6.80|
000040  6ee0              LDR      r0,[r4,#0x6c]
000042  b128              CBZ      r0,|L6.80|
;;;456    	cinfo->cquantize = master->quantizer_2pass;
000044  69a9              LDR      r1,[r5,#0x18]
;;;457    	master->pub.is_dummy_pass = TRUE;
000046  2001              MOVS     r0,#1
000048  f8c411cc          STR      r1,[r4,#0x1cc]
00004c  60a8              STR      r0,[r5,#8]
00004e  e00c              B        |L6.106|
                  |L6.80|
;;;458          } else if (cinfo->enable_1pass_quant) {
000050  6e60              LDR      r0,[r4,#0x64]
000052  b118              CBZ      r0,|L6.92|
;;;459    	cinfo->cquantize = master->quantizer_1pass;
000054  6968              LDR      r0,[r5,#0x14]
000056  f8c401cc          STR      r0,[r4,#0x1cc]
00005a  e006              B        |L6.106|
                  |L6.92|
;;;460          } else {
;;;461    	ERREXIT(cinfo, JERR_MODE_CHANGE);
00005c  6821              LDR      r1,[r4,#0]
00005e  202e              MOVS     r0,#0x2e
000060  6148              STR      r0,[r1,#0x14]
000062  6820              LDR      r0,[r4,#0]
000064  6801              LDR      r1,[r0,#0]
000066  4620              MOV      r0,r4
000068  4788              BLX      r1
                  |L6.106|
;;;462          }
;;;463        }
;;;464        (*cinfo->idct->start_pass) (cinfo);
00006a  f8d401c0          LDR      r0,[r4,#0x1c0]
00006e  6801              LDR      r1,[r0,#0]
000070  4620              MOV      r0,r4
000072  4788              BLX      r1
;;;465        (*cinfo->coef->start_output_pass) (cinfo);
000074  f8d401ac          LDR      r0,[r4,#0x1ac]
000078  6881              LDR      r1,[r0,#8]
00007a  4620              MOV      r0,r4
00007c  4788              BLX      r1
;;;466        if (! cinfo->raw_data_out) {
00007e  6c60              LDR      r0,[r4,#0x44]
000080  bb18              CBNZ     r0,|L6.202|
;;;467          if (! master->using_merged_upsample)
000082  6928              LDR      r0,[r5,#0x10]
000084  b920              CBNZ     r0,|L6.144|
;;;468    	(*cinfo->cconvert->start_pass) (cinfo);
000086  f8d401c8          LDR      r0,[r4,#0x1c8]
00008a  6801              LDR      r1,[r0,#0]
00008c  4620              MOV      r0,r4
00008e  4788              BLX      r1
                  |L6.144|
;;;469          (*cinfo->upsample->start_pass) (cinfo);
000090  f8d401c4          LDR      r0,[r4,#0x1c4]
000094  6801              LDR      r1,[r0,#0]
000096  4620              MOV      r0,r4
000098  4788              BLX      r1
;;;470          if (cinfo->quantize_colors)
00009a  6d60              LDR      r0,[r4,#0x54]
00009c  b128              CBZ      r0,|L6.170|
;;;471    	(*cinfo->cquantize->start_pass) (cinfo, master->pub.is_dummy_pass);
00009e  f8d401cc          LDR      r0,[r4,#0x1cc]
0000a2  68a9              LDR      r1,[r5,#8]
0000a4  6802              LDR      r2,[r0,#0]
0000a6  4620              MOV      r0,r4
0000a8  4790              BLX      r2
                  |L6.170|
;;;472          (*cinfo->post->start_pass) (cinfo,
0000aa  68a8              LDR      r0,[r5,#8]
0000ac  b108              CBZ      r0,|L6.178|
;;;473    	    (master->pub.is_dummy_pass ? JBUF_SAVE_AND_PASS : JBUF_PASS_THRU));
0000ae  2103              MOVS     r1,#3
0000b0  e000              B        |L6.180|
                  |L6.178|
0000b2  2100              MOVS     r1,#0
                  |L6.180|
0000b4  f8d401b0          LDR      r0,[r4,#0x1b0]
0000b8  6802              LDR      r2,[r0,#0]
0000ba  4620              MOV      r0,r4
0000bc  4790              BLX      r2
;;;474          (*cinfo->main->start_pass) (cinfo, JBUF_PASS_THRU);
0000be  f8d401a8          LDR      r0,[r4,#0x1a8]
0000c2  2100              MOVS     r1,#0
0000c4  6802              LDR      r2,[r0,#0]
                  |L6.198|
0000c6  4620              MOV      r0,r4
0000c8  4790              BLX      r2
                  |L6.202|
;;;475        }
;;;476      }
;;;477    
;;;478      /* Set up progress monitor's pass info if present */
;;;479      if (cinfo->progress != NULL) {
0000ca  68a0              LDR      r0,[r4,#8]
0000cc  2800              CMP      r0,#0
0000ce  d018              BEQ      |L6.258|
;;;480        cinfo->progress->completed_passes = master->pass_number;
0000d0  68eb              LDR      r3,[r5,#0xc]
;;;481        cinfo->progress->total_passes = master->pass_number +
0000d2  60c3              STR      r3,[r0,#0xc]
;;;482    				    (master->pub.is_dummy_pass ? 2 : 1);
0000d4  e9d53002          LDRD     r3,r0,[r5,#8]
0000d8  2102              MOVS     r1,#2
0000da  460a              MOV      r2,r1
0000dc  b903              CBNZ     r3,|L6.224|
0000de  2201              MOVS     r2,#1
                  |L6.224|
0000e0  4410              ADD      r0,r0,r2
0000e2  68a2              LDR      r2,[r4,#8]
;;;483        /* In buffered-image mode, we assume one more output pass if EOI not
;;;484         * yet reached, but no more passes if EOI has been reached.
;;;485         */
;;;486        if (cinfo->buffered_image && ! cinfo->inputctl->eoi_reached) {
0000e4  6110              STR      r0,[r2,#0x10]
0000e6  6c22              LDR      r2,[r4,#0x40]
0000e8  2a00              CMP      r2,#0
0000ea  d00a              BEQ      |L6.258|
0000ec  f8d421b4          LDR      r2,[r4,#0x1b4]
0000f0  6952              LDR      r2,[r2,#0x14]
0000f2  2a00              CMP      r2,#0
0000f4  d105              BNE      |L6.258|
;;;487          cinfo->progress->total_passes += (cinfo->enable_2pass_quant ? 2 : 1);
0000f6  6ee3              LDR      r3,[r4,#0x6c]
0000f8  68a2              LDR      r2,[r4,#8]
0000fa  b903              CBNZ     r3,|L6.254|
0000fc  2101              MOVS     r1,#1
                  |L6.254|
0000fe  4408              ADD      r0,r0,r1
000100  6110              STR      r0,[r2,#0x10]
                  |L6.258|
;;;488        }
;;;489      }
;;;490    }
000102  bd70              POP      {r4-r6,pc}
;;;491    
                          ENDP


                          AREA ||i.use_merged_upsample||, CODE, READONLY, ALIGN=1

                  use_merged_upsample PROC
;;;43     LOCAL(boolean)
;;;44     use_merged_upsample (j_decompress_ptr cinfo)
000000  6cc1              LDR      r1,[r0,#0x4c]
;;;45     {
;;;46     #ifdef UPSAMPLE_MERGING_SUPPORTED
;;;47       /* Merging is the equivalent of plain box-filter upsampling */
;;;48       if (cinfo->do_fancy_upsampling || cinfo->CCIR601_sampling)
000002  bb91              CBNZ     r1,|L7.106|
000004  f8d0112c          LDR      r1,[r0,#0x12c]
000008  bb79              CBNZ     r1,|L7.106|
;;;49         return FALSE;
;;;50       /* jdmerge.c only supports YCC=>RGB color conversion */
;;;51       if (cinfo->jpeg_color_space != JCS_YCbCr || cinfo->num_components != 3 ||
00000a  f8901028          LDRB     r1,[r0,#0x28]
00000e  2903              CMP      r1,#3
000010  d12b              BNE      |L7.106|
000012  6a41              LDR      r1,[r0,#0x24]
000014  2903              CMP      r1,#3
000016  d128              BNE      |L7.106|
;;;52           cinfo->out_color_space != JCS_RGB ||
000018  f8901029          LDRB     r1,[r0,#0x29]
00001c  2902              CMP      r1,#2
00001e  d124              BNE      |L7.106|
;;;53           cinfo->out_color_components != RGB_PIXELSIZE)
000020  6f81              LDR      r1,[r0,#0x78]
000022  2903              CMP      r1,#3
000024  d121              BNE      |L7.106|
;;;54         return FALSE;
;;;55       /* and it only handles 2h1v or 2h2v sampling ratios */
;;;56       if (cinfo->comp_info[0].h_samp_factor != 2 ||
000026  f8d010d8          LDR      r1,[r0,#0xd8]
00002a  688a              LDR      r2,[r1,#8]
00002c  2a02              CMP      r2,#2
00002e  d11c              BNE      |L7.106|
;;;57           cinfo->comp_info[1].h_samp_factor != 1 ||
000030  6dca              LDR      r2,[r1,#0x5c]
000032  2a01              CMP      r2,#1
000034  d119              BNE      |L7.106|
;;;58           cinfo->comp_info[2].h_samp_factor != 1 ||
000036  f8d120b0          LDR      r2,[r1,#0xb0]
00003a  2a01              CMP      r2,#1
00003c  d115              BNE      |L7.106|
;;;59           cinfo->comp_info[0].v_samp_factor >  2 ||
00003e  68ca              LDR      r2,[r1,#0xc]
000040  2a02              CMP      r2,#2
000042  dc12              BGT      |L7.106|
;;;60           cinfo->comp_info[1].v_samp_factor != 1 ||
000044  6e0a              LDR      r2,[r1,#0x60]
000046  2a01              CMP      r2,#1
000048  d10f              BNE      |L7.106|
;;;61           cinfo->comp_info[2].v_samp_factor != 1)
00004a  f8d120b4          LDR      r2,[r1,#0xb4]
00004e  2a01              CMP      r2,#1
000050  d10b              BNE      |L7.106|
;;;62         return FALSE;
;;;63       /* furthermore, it doesn't work if we've scaled the IDCTs differently */
;;;64       if (cinfo->comp_info[0].DCT_scaled_size != cinfo->min_DCT_scaled_size ||
000052  6a4a              LDR      r2,[r1,#0x24]
000054  f8d0013c          LDR      r0,[r0,#0x13c]
000058  4282              CMP      r2,r0
00005a  d106              BNE      |L7.106|
;;;65           cinfo->comp_info[1].DCT_scaled_size != cinfo->min_DCT_scaled_size ||
00005c  6f8a              LDR      r2,[r1,#0x78]
00005e  4282              CMP      r2,r0
000060  d103              BNE      |L7.106|
;;;66           cinfo->comp_info[2].DCT_scaled_size != cinfo->min_DCT_scaled_size)
000062  f8d110cc          LDR      r1,[r1,#0xcc]
000066  4281              CMP      r1,r0
000068  d001              BEQ      |L7.110|
                  |L7.106|
;;;67         return FALSE;
00006a  2000              MOVS     r0,#0
;;;68       /* ??? also need to test for upsample-time rescaling, when & if supported */
;;;69       return TRUE;			/* by golly, it'll work... */
;;;70     #else
;;;71       return FALSE;
;;;72     #endif
;;;73     }
00006c  4770              BX       lr
                  |L7.110|
00006e  2001              MOVS     r0,#1                 ;69
000070  4770              BX       lr
;;;74     
                          ENDP

⌨️ 快捷键说明

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