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

📄 jdsample.txt

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

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

                  fullsize_upsample PROC
;;;157    METHODDEF(void)
;;;158    fullsize_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
000000  601a              STR      r2,[r3,#0]
;;;159    		   JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
;;;160    {
;;;161      GUI_USE_PARA(compptr);
;;;162      GUI_USE_PARA(cinfo);
;;;163      *output_data_ptr = input_data;
;;;164    }
000002  4770              BX       lr
;;;165    
                          ENDP


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

                  h2v1_fancy_upsample PROC
;;;311    METHODDEF(void)
;;;312    h2v1_fancy_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;313    		     JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
;;;314    {
000004  4680              MOV      r8,r0
;;;315      JSAMPARRAY output_data = *output_data_ptr;
;;;316      register JSAMPROW inptr, outptr;
;;;317      register int invalue;
;;;318      register JDIMENSION colctr;
;;;319      int inrow;
;;;320    
;;;321      for (inrow = 0; inrow < cinfo->max_v_samp_factor; inrow++) {
000006  2500              MOVS     r5,#0
000008  f8d3e000          LDR      lr,[r3,#0]
00000c  e031              B        |L2.114|
;;;322        inptr = input_data[inrow];
00000e  bf00              NOP      
                  |L2.16|
000010  f8520025          LDR      r0,[r2,r5,LSL #2]
;;;323        outptr = output_data[inrow];
000014  f85e3025          LDR      r3,[lr,r5,LSL #2]
;;;324        /* Special case for first column */
;;;325        invalue = GETJSAMPLE(*inptr++);
000018  7804              LDRB     r4,[r0,#0]
;;;326        *outptr++ = (JSAMPLE) invalue;
00001a  701c              STRB     r4,[r3,#0]
;;;327        *outptr++ = (JSAMPLE) ((invalue * 3 + GETJSAMPLE(*inptr) + 2) >> 2);
00001c  f8106f01          LDRB     r6,[r0,#1]!
000020  eb040444          ADD      r4,r4,r4,LSL #1
000024  1ca4              ADDS     r4,r4,#2
000026  4434              ADD      r4,r4,r6
000028  10a4              ASRS     r4,r4,#2
00002a  f8034f01          STRB     r4,[r3,#1]!
;;;328    
;;;329        for (colctr = compptr->downsampled_width - 2; colctr > 0; colctr--) {
00002e  6a8c              LDR      r4,[r1,#0x28]
000030  1c5b              ADDS     r3,r3,#1              ;327
000032  1ea4              SUBS     r4,r4,#2
000034  d012              BEQ      |L2.92|
                  |L2.54|
;;;330          /* General case: 3/4 * nearer pixel + 1/4 * further pixel */
;;;331          invalue = GETJSAMPLE(*inptr++) * 3;
000036  7806              LDRB     r6,[r0,#0]
;;;332          *outptr++ = (JSAMPLE) ((invalue + GETJSAMPLE(inptr[-2]) + 1) >> 2);
000038  f810cc01          LDRB     r12,[r0,#-1]
00003c  eb060646          ADD      r6,r6,r6,LSL #1       ;331
000040  1c77              ADDS     r7,r6,#1
000042  4467              ADD      r7,r7,r12
000044  10bf              ASRS     r7,r7,#2
000046  701f              STRB     r7,[r3,#0]
;;;333          *outptr++ = (JSAMPLE) ((invalue + GETJSAMPLE(*inptr) + 2) >> 2);
000048  f8107f01          LDRB     r7,[r0,#1]!
00004c  1cb6              ADDS     r6,r6,#2
00004e  443e              ADD      r6,r6,r7
000050  10b6              ASRS     r6,r6,#2
000052  f8036f01          STRB     r6,[r3,#1]!
000056  1c5b              ADDS     r3,r3,#1
000058  1e64              SUBS     r4,r4,#1              ;329
00005a  d1ec              BNE      |L2.54|
                  |L2.92|
;;;334        }
;;;335    
;;;336        /* Special case for last column */
;;;337        invalue = GETJSAMPLE(*inptr);
00005c  7804              LDRB     r4,[r0,#0]
;;;338        *outptr++ = (JSAMPLE) ((invalue * 3 + GETJSAMPLE(inptr[-1]) + 1) >> 2);
00005e  f8100c01          LDRB     r0,[r0,#-1]
000062  eb040644          ADD      r6,r4,r4,LSL #1
000066  1c76              ADDS     r6,r6,#1
000068  4430              ADD      r0,r0,r6
00006a  1080              ASRS     r0,r0,#2
00006c  7018              STRB     r0,[r3,#0]
;;;339        *outptr   = (JSAMPLE) invalue;
00006e  705c              STRB     r4,[r3,#1]
000070  1c6d              ADDS     r5,r5,#1              ;321
                  |L2.114|
000072  f8d80138          LDR      r0,[r8,#0x138]        ;321
000076  42a8              CMP      r0,r5                 ;321
000078  dcca              BGT      |L2.16|
;;;340      }
;;;341    }
00007a  e8bd81f0          POP      {r4-r8,pc}
;;;342    
                          ENDP


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

                  h2v1_upsample PROC
;;;238    METHODDEF(void)
;;;239    h2v1_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
000000  b5f0              PUSH     {r4-r7,lr}
;;;240    	       JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
;;;241    {
;;;242      JSAMPARRAY output_data = *output_data_ptr;
;;;243      register JSAMPROW inptr, outptr;
;;;244      register JSAMPLE invalue;
;;;245      JSAMPROW outend;
;;;246      int inrow;
;;;247    
;;;248      GUI_USE_PARA(compptr);
;;;249      for (inrow = 0; inrow < cinfo->max_v_samp_factor; inrow++) {
000002  2400              MOVS     r4,#0
000004  681f              LDR      r7,[r3,#0]
000006  e010              B        |L3.42|
                  |L3.8|
;;;250        inptr = input_data[inrow];
;;;251        outptr = output_data[inrow];
000008  f8571024          LDR      r1,[r7,r4,LSL #2]
;;;252        outend = outptr + cinfo->output_width;
00000c  6f05              LDR      r5,[r0,#0x70]
00000e  f8523024          LDR      r3,[r2,r4,LSL #2]     ;250
000012  186e              ADDS     r6,r5,r1
;;;253        while (outptr < outend) {
000014  e006              B        |L3.36|
;;;254          invalue = *inptr++;	/* don't need GETJSAMPLE() here */
000016  bf00              NOP      
                  |L3.24|
000018  f8135b01          LDRB     r5,[r3],#1
;;;255          *outptr++ = invalue;
00001c  700d              STRB     r5,[r1,#0]
;;;256          *outptr++ = invalue;
00001e  f8015f01          STRB     r5,[r1,#1]!
000022  1c49              ADDS     r1,r1,#1
                  |L3.36|
000024  42b1              CMP      r1,r6                 ;253
000026  d3f7              BCC      |L3.24|
000028  1c64              ADDS     r4,r4,#1              ;249
                  |L3.42|
00002a  f8d01138          LDR      r1,[r0,#0x138]        ;249
00002e  42a1              CMP      r1,r4                 ;249
000030  dcea              BGT      |L3.8|
;;;257        }
;;;258      }
;;;259    }
000032  bdf0              POP      {r4-r7,pc}
;;;260    
                          ENDP


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

                  h2v2_fancy_upsample PROC
;;;352    METHODDEF(void)
;;;353    h2v2_fancy_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
000000  e92d4fff          PUSH     {r0-r11,lr}
;;;354    		     JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
;;;355    {
;;;356      JSAMPARRAY output_data = *output_data_ptr;
;;;357      register JSAMPROW inptr0, inptr1, outptr;
;;;358    #if BITS_IN_JSAMPLE == 8
;;;359      register int thiscolsum, lastcolsum, nextcolsum;
;;;360    #else
;;;361      register INT32 thiscolsum, lastcolsum, nextcolsum;
;;;362    #endif
;;;363      register JDIMENSION colctr;
;;;364      int inrow, outrow, v;
;;;365    
;;;366      inrow = outrow = 0;
000004  f04f0e00          MOV      lr,#0
000008  4692              MOV      r10,r2                ;355
00000a  46f0              MOV      r8,lr
;;;367      while (outrow < cinfo->max_v_samp_factor) {
00000c  f8d3b000          LDR      r11,[r3,#0]
000010  e05b              B        |L4.202|
;;;368        for (v = 0; v < 2; v++) {
000012  bf00              NOP      
                  |L4.20|
000014  f04f0c00          MOV      r12,#0
;;;369          /* inptr0 points to nearest input row, inptr1 points to next nearest */
;;;370          inptr0 = input_data[inrow];
000018  eb0a0988          ADD      r9,r10,r8,LSL #2
                  |L4.28|
00001c  f85a3028          LDR      r3,[r10,r8,LSL #2]
;;;371          if (v == 0)		/* next nearest is row above */
000020  f1bc0f00          CMP      r12,#0
000024  4648              MOV      r0,r9
000026  d102              BNE      |L4.46|
;;;372    	inptr1 = input_data[inrow-1];
000028  f8504c04          LDR      r4,[r0,#-4]
00002c  e000              B        |L4.48|
                  |L4.46|
;;;373          else			/* next nearest is row below */
;;;374    	inptr1 = input_data[inrow+1];
00002e  6844              LDR      r4,[r0,#4]
                  |L4.48|
;;;375          outptr = output_data[outrow++];
;;;376    
;;;377          /* Special case for first column */
;;;378          thiscolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++);
000030  7819              LDRB     r1,[r3,#0]
000032  7822              LDRB     r2,[r4,#0]
000034  eb010141          ADD      r1,r1,r1,LSL #1
000038  188d              ADDS     r5,r1,r2
;;;379          nextcolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++);
00003a  f8131f01          LDRB     r1,[r3,#1]!
00003e  f8142f01          LDRB     r2,[r4,#1]!
000042  eb010141          ADD      r1,r1,r1,LSL #1
000046  4411              ADD      r1,r1,r2
;;;380          *outptr++ = (JSAMPLE) ((thiscolsum * 4 + 8) >> 4);
000048  2208              MOVS     r2,#8
00004a  f85b002e          LDR      r0,[r11,lr,LSL #2]    ;375
00004e  eb020285          ADD      r2,r2,r5,LSL #2
000052  1112              ASRS     r2,r2,#4
000054  7002              STRB     r2,[r0,#0]
;;;381          *outptr++ = (JSAMPLE) ((thiscolsum * 3 + nextcolsum + 7) >> 4);
000056  eb050245          ADD      r2,r5,r5,LSL #1
00005a  440a              ADD      r2,r2,r1
00005c  1dd2              ADDS     r2,r2,#7
00005e  1112              ASRS     r2,r2,#4
000060  f8002f01          STRB     r2,[r0,#1]!
;;;382          lastcolsum = thiscolsum; thiscolsum = nextcolsum;
;;;383    
;;;384          for (colctr = compptr->downsampled_width - 2; colctr > 0; colctr--) {
000064  9a01              LDR      r2,[sp,#4]
000066  1c5b              ADDS     r3,r3,#1              ;379
000068  6a92              LDR      r2,[r2,#0x28]
00006a  1c64              ADDS     r4,r4,#1              ;379
00006c  1c40              ADDS     r0,r0,#1              ;381
00006e  f10e0e01          ADD      lr,lr,#1              ;375
000072  1e92              SUBS     r2,r2,#2
000074  d017              BEQ      |L4.166|
;;;385    	/* General case: 3/4 * nearer pixel + 1/4 * further pixel in each */
;;;386    	/* dimension, thus 9/16, 3/16, 3/16, 1/16 overall */
;;;387    	nextcolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++);
000076  bf00              NOP      
                  |L4.120|
000078  f8136b01          LDRB     r6,[r3],#1
00007c  f8147b01          LDRB     r7,[r4],#1
000080  eb060646          ADD      r6,r6,r6,LSL #1
000084  4437              ADD      r7,r7,r6
;;;388    	*outptr++ = (JSAMPLE) ((thiscolsum * 3 + lastcolsum + 8) >> 4);
000086  eb010641          ADD      r6,r1,r1,LSL #1
00008a  4435              ADD      r5,r5,r6
00008c  3508              ADDS     r5,r5,#8
00008e  112d              ASRS     r5,r5,#4
000090  7005              STRB     r5,[r0,#0]
;;;389    	*outptr++ = (JSAMPLE) ((thiscolsum * 3 + nextcolsum + 7) >> 4);
000092  19f5              ADDS     r5,r6,r7
000094  1ded              ADDS     r5,r5,#7
000096  112d              ASRS     r5,r5,#4
000098  f8005f01          STRB     r5,[r0,#1]!
00009c  1c40              ADDS     r0,r0,#1
;;;390    	lastcolsum = thiscolsum; thiscolsum = nextcolsum;
00009e  460d              MOV      r5,r1
0000a0  4639              MOV      r1,r7
0000a2  1e52              SUBS     r2,r2,#1              ;384
0000a4  d1e8              BNE      |L4.120|
                  |L4.166|
;;;391          }
;;;392    
;;;393          /* Special case for last column */
;;;394          *outptr++ = (JSAMPLE) ((thiscolsum * 3 + lastcolsum + 8) >> 4);
0000a6  eb010241          ADD      r2,r1,r1,LSL #1
0000aa  442a              ADD      r2,r2,r5
0000ac  3208              ADDS     r2,r2,#8
0000ae  1112              ASRS     r2,r2,#4
0000b0  7002              STRB     r2,[r0,#0]
;;;395          *outptr   = (JSAMPLE) ((thiscolsum * 4 + 7) >> 4);
0000b2  2207              MOVS     r2,#7
0000b4  eb020181          ADD      r1,r2,r1,LSL #2
0000b8  1109              ASRS     r1,r1,#4
0000ba  f10c0c01          ADD      r12,r12,#1            ;368
0000be  7041              STRB     r1,[r0,#1]
0000c0  f1bc0f02          CMP      r12,#2                ;368
0000c4  dbaa              BLT      |L4.28|
;;;396        }
;;;397        inrow++;
0000c6  f1080801          ADD      r8,r8,#1
                  |L4.202|
0000ca  9800              LDR      r0,[sp,#0]            ;367
0000cc  f8d00138          LDR      r0,[r0,#0x138]        ;367
0000d0  4570              CMP      r0,lr                 ;367

⌨️ 快捷键说明

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