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

📄 jquant1.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\jquant1.o --depend=.\Obj\jquant1.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\jquant1.c]
                          THUMB

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

                  alloc_fs_workspace PROC
;;;725    LOCAL(void)
;;;726    alloc_fs_workspace (j_decompress_ptr cinfo)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;727    {
000004  4605              MOV      r5,r0
;;;728      my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;729      size_t arraysize;
;;;730      int i;
;;;731    
;;;732      arraysize = (size_t) ((cinfo->output_width + 2) * SIZEOF(FSERROR));
000006  f8d061cc          LDR      r6,[r0,#0x1cc]
00000a  6f00              LDR      r0,[r0,#0x70]
;;;733      for (i = 0; i < cinfo->out_color_components; i++) {
00000c  2400              MOVS     r4,#0
00000e  0047              LSLS     r7,r0,#1              ;732
000010  1d3f              ADDS     r7,r7,#4              ;732
000012  e009              B        |L1.40|
                  |L1.20|
;;;734        cquantize->fserrors[i] = (FSERRPTR)
000014  6868              LDR      r0,[r5,#4]
000016  463a              MOV      r2,r7
000018  6843              LDR      r3,[r0,#4]
00001a  2101              MOVS     r1,#1
00001c  4628              MOV      r0,r5
00001e  4798              BLX      r3
000020  eb060184          ADD      r1,r6,r4,LSL #2
000024  1c64              ADDS     r4,r4,#1              ;733
000026  6448              STR      r0,[r1,#0x44]         ;733
                  |L1.40|
000028  6fa8              LDR      r0,[r5,#0x78]         ;733
00002a  42a0              CMP      r0,r4                 ;733
00002c  dcf2              BGT      |L1.20|
;;;735          (*cinfo->mem->alloc_large)((j_common_ptr) cinfo, JPOOL_IMAGE, arraysize);
;;;736      }
;;;737    }
00002e  e8bd81f0          POP      {r4-r8,pc}
;;;738    
                          ENDP


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

                  color_quantize PROC
;;;462    METHODDEF(void)
;;;463    color_quantize (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
000000  e92d4ff0          PUSH     {r4-r11,lr}
;;;464    		JSAMPARRAY output_buf, int num_rows)
;;;465    /* General case, no dithering */
;;;466    {
000004  468b              MOV      r11,r1
;;;467      my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;468      JSAMPARRAY colorindex = cquantize->colorindex;
000006  f8d011cc          LDR      r1,[r0,#0x1cc]
00000a  4691              MOV      r9,r2                 ;466
00000c  469a              MOV      r10,r3                ;466
;;;469      register int pixcode, ci;
;;;470      register JSAMPROW ptrin, ptrout;
;;;471      int row;
;;;472      JDIMENSION col;
;;;473      JDIMENSION width = cinfo->output_width;
00000e  f8d1e018          LDR      lr,[r1,#0x18]
;;;474      register int nc = cinfo->out_color_components;
;;;475    
;;;476      for (row = 0; row < num_rows; row++) {
000012  2400              MOVS     r4,#0
000014  f8d0c078          LDR      r12,[r0,#0x78]
000018  f8d08070          LDR      r8,[r0,#0x70]
00001c  e018              B        |L2.80|
;;;477        ptrin = input_buf[row];
00001e  bf00              NOP      
                  |L2.32|
000020  f85b2024          LDR      r2,[r11,r4,LSL #2]
;;;478        ptrout = output_buf[row];
000024  f8597024          LDR      r7,[r9,r4,LSL #2]
;;;479        for (col = width; col > 0; col--) {
000028  ea5f0308          MOVS     r3,r8
00002c  d00f              BEQ      |L2.78|
                  |L2.46|
;;;480          pixcode = 0;
00002e  2100              MOVS     r1,#0
;;;481          for (ci = 0; ci < nc; ci++) {
000030  4608              MOV      r0,r1
000032  e006              B        |L2.66|
                  |L2.52|
;;;482    	pixcode += GETJSAMPLE(colorindex[ci][GETJSAMPLE(*ptrin++)]);
000034  f85e5020          LDR      r5,[lr,r0,LSL #2]
000038  f8126b01          LDRB     r6,[r2],#1
00003c  1c40              ADDS     r0,r0,#1              ;481
00003e  5dad              LDRB     r5,[r5,r6]
000040  4429              ADD      r1,r1,r5
                  |L2.66|
000042  4560              CMP      r0,r12                ;481
000044  dbf6              BLT      |L2.52|
;;;483          }
;;;484          *ptrout++ = (JSAMPLE) pixcode;
000046  f8071b01          STRB     r1,[r7],#1
00004a  1e5b              SUBS     r3,r3,#1              ;479
00004c  d1ef              BNE      |L2.46|
                  |L2.78|
00004e  1c64              ADDS     r4,r4,#1              ;476
                  |L2.80|
000050  4554              CMP      r4,r10                ;476
000052  dbe5              BLT      |L2.32|
;;;485        }
;;;486      }
;;;487    }
000054  e8bd8ff0          POP      {r4-r11,pc}
;;;488    
                          ENDP


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

                  color_quantize3 PROC
;;;490    METHODDEF(void)
;;;491    color_quantize3 (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
000000  e92d4ff0          PUSH     {r4-r11,lr}
;;;492    		 JSAMPARRAY output_buf, int num_rows)
;;;493    /* Fast path for out_color_components==3, no dithering */
;;;494    {
000004  468b              MOV      r11,r1
;;;495      my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;496      register int pixcode;
;;;497      register JSAMPROW ptrin, ptrout;
;;;498      JSAMPROW colorindex0 = cquantize->colorindex[0];
000006  f8d011cc          LDR      r1,[r0,#0x1cc]
00000a  4692              MOV      r10,r2                ;494
00000c  6989              LDR      r1,[r1,#0x18]
00000e  4699              MOV      r9,r3                 ;494
;;;499      JSAMPROW colorindex1 = cquantize->colorindex[1];
;;;500      JSAMPROW colorindex2 = cquantize->colorindex[2];
;;;501      int row;
;;;502      JDIMENSION col;
;;;503      JDIMENSION width = cinfo->output_width;
000010  e9d14e01          LDRD     r4,lr,[r1,#4]
;;;504    
;;;505      for (row = 0; row < num_rows; row++) {
000014  2200              MOVS     r2,#0
000016  f8d08070          LDR      r8,[r0,#0x70]         ;498
00001a  f8d1c000          LDR      r12,[r1,#0]
00001e  e017              B        |L3.80|
                  |L3.32|
;;;506        ptrin = input_buf[row];
000020  f85b3022          LDR      r3,[r11,r2,LSL #2]
;;;507        ptrout = output_buf[row];
000024  f85a1022          LDR      r1,[r10,r2,LSL #2]
;;;508        for (col = width; col > 0; col--) {
000028  ea5f0008          MOVS     r0,r8
00002c  d00f              BEQ      |L3.78|
                  |L3.46|
;;;509          pixcode  = GETJSAMPLE(colorindex0[GETJSAMPLE(*ptrin++)]);
00002e  781e              LDRB     r6,[r3,#0]
;;;510          pixcode += GETJSAMPLE(colorindex1[GETJSAMPLE(*ptrin++)]);
000030  785d              LDRB     r5,[r3,#1]
000032  f81c6006          LDRB     r6,[r12,r6]           ;509
000036  5d65              LDRB     r5,[r4,r5]
;;;511          pixcode += GETJSAMPLE(colorindex2[GETJSAMPLE(*ptrin++)]);
000038  f8137f02          LDRB     r7,[r3,#2]!
00003c  4435              ADD      r5,r5,r6              ;510
00003e  f81e6007          LDRB     r6,[lr,r7]
000042  1c5b              ADDS     r3,r3,#1
000044  4435              ADD      r5,r5,r6
;;;512          *ptrout++ = (JSAMPLE) pixcode;
000046  f8015b01          STRB     r5,[r1],#1
00004a  1e40              SUBS     r0,r0,#1              ;508
00004c  d1ef              BNE      |L3.46|
                  |L3.78|
00004e  1c52              ADDS     r2,r2,#1              ;505
                  |L3.80|
000050  454a              CMP      r2,r9                 ;505
000052  dbe5              BLT      |L3.32|
;;;513        }
;;;514      }
;;;515    }
000054  e8bd8ff0          POP      {r4-r11,pc}
;;;516    
                          ENDP


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

                  create_colorindex PROC
;;;336    LOCAL(void)
;;;337    create_colorindex (j_decompress_ptr cinfo)
000000  e92d4ff1          PUSH     {r0,r4-r11,lr}
;;;338    {
;;;339      my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;340      JSAMPROW indexptr;
;;;341      int i,j,k, nci, blksize, val, pad;
;;;342    
;;;343      /* For ordered dither, we pad the color index tables by MAXJSAMPLE in
;;;344       * each direction (input index values can be -MAXJSAMPLE .. 2*MAXJSAMPLE).
;;;345       * This is not necessary in the other dithering modes.  However, we
;;;346       * flag whether it was done in case user changes dithering mode.
;;;347       */
;;;348      if (cinfo->dither_mode == JDITHER_ORDERED) {
000004  9900              LDR      r1,[sp,#0]
000006  9800              LDR      r0,[sp,#0]            ;339
000008  f8911058          LDRB     r1,[r1,#0x58]
00000c  f8d081cc          LDR      r8,[r0,#0x1cc]
000010  2901              CMP      r1,#1
000012  d102              BNE      |L4.26|
;;;349        pad = MAXJSAMPLE*2;
000014  f44f7bff          MOV      r11,#0x1fe
;;;350        cquantize->is_padded = TRUE;
000018  e002              B        |L4.32|
                  |L4.26|
;;;351      } else {
;;;352        pad = 0;
00001a  f04f0b00          MOV      r11,#0
;;;353        cquantize->is_padded = FALSE;
00001e  4659              MOV      r1,r11
                  |L4.32|
;;;354      }
;;;355    
;;;356      cquantize->colorindex = (*cinfo->mem->alloc_sarray)
000020  f8c8101c          STR      r1,[r8,#0x1c]
000024  9800              LDR      r0,[sp,#0]
000026  f50b7280          ADD      r2,r11,#0x100
00002a  6f83              LDR      r3,[r0,#0x78]
00002c  6840              LDR      r0,[r0,#4]
00002e  2101              MOVS     r1,#1
000030  6884              LDR      r4,[r0,#8]
000032  9800              LDR      r0,[sp,#0]
000034  47a0              BLX      r4
;;;357        ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;358         (JDIMENSION) (MAXJSAMPLE+1 + pad),
;;;359         (JDIMENSION) cinfo->out_color_components);
;;;360    
;;;361      /* blksize is number of adjacent repeated entries for a component */
;;;362      blksize = cquantize->sv_actual;
000036  f8c80018          STR      r0,[r8,#0x18]
;;;363    
;;;364      for (i = 0; i < cinfo->out_color_components; i++) {
00003a  2600              MOVS     r6,#0
00003c  f8d8a014          LDR      r10,[r8,#0x14]
000040  e03f              B        |L4.194|
;;;365        /* fill in colorindex entries for i'th color component */
;;;366        nci = cquantize->Ncolors[i]; /* # of distinct values for this color */
000042  bf00              NOP      
                  |L4.68|
000044  eb080086          ADD      r0,r8,r6,LSL #2
;;;367        blksize = blksize / nci;
000048  f8d09020          LDR      r9,[r0,#0x20]
;;;368    
;;;369        /* adjust colorindex pointers to provide padding at negative indexes. */
;;;370        if (pad)
00004c  f1bb0f00          CMP      r11,#0
000050  fb9afaf9          SDIV     r10,r10,r9            ;367
000054  d006              BEQ      |L4.100|
;;;371          cquantize->colorindex[i] += MAXJSAMPLE;
000056  f8d80018          LDR      r0,[r8,#0x18]
00005a  f8501026          LDR      r1,[r0,r6,LSL #2]
00005e  31ff              ADDS     r1,r1,#0xff
000060  f8401026          STR      r1,[r0,r6,LSL #2]
                  |L4.100|
;;;372    
;;;373        /* in loop, val = index of current output value, */
;;;374        /* and k = largest j that maps to current val */
;;;375        indexptr = cquantize->colorindex[i];
000064  f8d80018          LDR      r0,[r8,#0x18]
;;;376        val = 0;
000068  2700              MOVS     r7,#0
00006a  f8504026          LDR      r4,[r0,r6,LSL #2]     ;375
;;;377        k = largest_input_value(cinfo, i, 0, nci-1);
00006e  f1a90301          SUB      r3,r9,#1
000072  463a              MOV      r2,r7
000074  4631              MOV      r1,r6
000076  9800              LDR      r0,[sp,#0]
000078  f7fffffe          BL       largest_input_value
;;;378        for (j = 0; j <= MAXJSAMPLE; j++) {
00007c  2500              MOVS     r5,#0
00007e  e007              B        |L4.144|
                  |L4.128|
;;;379          while (j > k)		/* advance val if past boundary */
;;;380    	k = largest_input_value(cinfo, i, ++val, nci-1);

⌨️ 快捷键说明

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