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

📄 jdmerge.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
0000ca  704a              STRB     r2,[r1,#1]
;;;281        outptr[RGB_BLUE] =  range_limit[y + cblue];
0000cc  195a              ADDS     r2,r3,r5
0000ce  5c80              LDRB     r0,[r0,r2]
0000d0  7088              STRB     r0,[r1,#2]
                  |L2.210|
;;;282      }
;;;283    }
0000d2  e8bd8ffc          POP      {r2-r11,pc}
;;;284    
                          ENDP


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

                  h2v2_merged_upsample PROC
;;;290    METHODDEF(void)
;;;291    h2v2_merged_upsample (j_decompress_ptr cinfo,
000000  e92d4fff          PUSH     {r0-r11,lr}
;;;292    		      JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
;;;293    		      JSAMPARRAY output_buf)
;;;294    {
000004  4683              MOV      r11,r0
;;;295      my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
;;;296      register int y, cred, cgreen, cblue;
;;;297      int cb, cr;
;;;298      register JSAMPROW outptr0, outptr1;
;;;299      JSAMPROW inptr00, inptr01, inptr1, inptr2;
;;;300      JDIMENSION col;
;;;301      /* copy these pointers into registers if possible */
;;;302      register JSAMPLE * range_limit = cinfo->sample_range_limit;
000006  f8d041c4          LDR      r4,[r0,#0x1c4]
00000a  f8d00144          LDR      r0,[r0,#0x144]
;;;303      int * Crrtab = upsample->Cr_r_tab;
;;;304      int * Cbbtab = upsample->Cb_b_tab;
;;;305      INT32 * Crgtab = upsample->Cr_g_tab;
00000e  e9d46704          LDRD     r6,r7,[r4,#0x10]
000012  69a5              LDR      r5,[r4,#0x18]         ;303
;;;306      INT32 * Cbgtab = upsample->Cb_g_tab;
000014  9603              STR      r6,[sp,#0xc]
000016  69e6              LDR      r6,[r4,#0x1c]         ;304
;;;307      SHIFT_TEMPS
;;;308    
;;;309      inptr00 = input_buf[0][in_row_group_ctr*2];
000018  9702              STR      r7,[sp,#8]
00001a  680c              LDR      r4,[r1,#0]            ;305
;;;310      inptr01 = input_buf[0][in_row_group_ctr*2 + 1];
00001c  9501              STR      r5,[sp,#4]
00001e  2504              MOVS     r5,#4
000020  9600              STR      r6,[sp,#0]            ;309
000022  eb0505c2          ADD      r5,r5,r2,LSL #3
000026  f854e032          LDR      lr,[r4,r2,LSL #3]     ;309
00002a  f854c005          LDR      r12,[r4,r5]
;;;311      inptr1 = input_buf[1][in_row_group_ctr];
;;;312      inptr2 = input_buf[2][in_row_group_ctr];
;;;313      outptr0 = output_buf[0];
00002e  e9d14501          LDRD     r4,r5,[r1,#4]
000032  f854a022          LDR      r10,[r4,r2,LSL #2]    ;311
000036  f8559022          LDR      r9,[r5,r2,LSL #2]     ;312
;;;314      outptr1 = output_buf[1];
;;;315      /* Loop for each group of output pixels */
;;;316      for (col = cinfo->output_width >> 1; col > 0; col--) {
00003a  cb06              LDM      r3!,{r1,r2}
00003c  f8db3070          LDR      r3,[r11,#0x70]
000040  085b              LSRS     r3,r3,#1
000042  e04e              B        |L3.226|
                  |L3.68|
;;;317        /* Do the chroma part of the calculation */
;;;318        cb = GETJSAMPLE(*inptr1++);
;;;319        cr = GETJSAMPLE(*inptr2++);
000044  f8194b01          LDRB     r4,[r9],#1
;;;320        cred = Crrtab[cr];
000048  9b03              LDR      r3,[sp,#0xc]
00004a  f81a7b01          LDRB     r7,[r10],#1           ;318
;;;321        cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
00004e  9d00              LDR      r5,[sp,#0]
000050  9e01              LDR      r6,[sp,#4]
000052  f8533024          LDR      r3,[r3,r4,LSL #2]     ;320
000056  f8555027          LDR      r5,[r5,r7,LSL #2]
00005a  f8564024          LDR      r4,[r6,r4,LSL #2]
;;;322        cblue = Cbbtab[cb];
;;;323        /* Fetch 4 Y values and emit 4 pixels */
;;;324        y  = GETJSAMPLE(*inptr00++);
00005e  f89e6000          LDRB     r6,[lr,#0]
000062  442c              ADD      r4,r4,r5              ;321
000064  9d02              LDR      r5,[sp,#8]            ;322
000066  1424              ASRS     r4,r4,#16             ;321
000068  f8555027          LDR      r5,[r5,r7,LSL #2]     ;322
;;;325        outptr0[RGB_RED] =   range_limit[y + cred];
00006c  18f7              ADDS     r7,r6,r3
00006e  5dc7              LDRB     r7,[r0,r7]
000070  700f              STRB     r7,[r1,#0]
;;;326        outptr0[RGB_GREEN] = range_limit[y + cgreen];
000072  1937              ADDS     r7,r6,r4
000074  5dc7              LDRB     r7,[r0,r7]
000076  704f              STRB     r7,[r1,#1]
;;;327        outptr0[RGB_BLUE] =  range_limit[y + cblue];
000078  442e              ADD      r6,r6,r5
00007a  5d86              LDRB     r6,[r0,r6]
00007c  708e              STRB     r6,[r1,#2]
;;;328        outptr0 += RGB_PIXELSIZE;
;;;329        y  = GETJSAMPLE(*inptr00++);
00007e  f81e6f01          LDRB     r6,[lr,#1]!
000082  f10e0e01          ADD      lr,lr,#1
;;;330        outptr0[RGB_RED] =   range_limit[y + cred];
000086  18f7              ADDS     r7,r6,r3
000088  5dc7              LDRB     r7,[r0,r7]
00008a  f8017f03          STRB     r7,[r1,#3]!
;;;331        outptr0[RGB_GREEN] = range_limit[y + cgreen];
00008e  1937              ADDS     r7,r6,r4
000090  5dc7              LDRB     r7,[r0,r7]
000092  704f              STRB     r7,[r1,#1]
;;;332        outptr0[RGB_BLUE] =  range_limit[y + cblue];
000094  442e              ADD      r6,r6,r5
000096  5d86              LDRB     r6,[r0,r6]
000098  708e              STRB     r6,[r1,#2]
;;;333        outptr0 += RGB_PIXELSIZE;
;;;334        y  = GETJSAMPLE(*inptr01++);
00009a  f89c6000          LDRB     r6,[r12,#0]
00009e  4667              MOV      r7,r12
;;;335        outptr1[RGB_RED] =   range_limit[y + cred];
0000a0  eb060c03          ADD      r12,r6,r3
0000a4  f810c00c          LDRB     r12,[r0,r12]
0000a8  f882c000          STRB     r12,[r2,#0]
;;;336        outptr1[RGB_GREEN] = range_limit[y + cgreen];
0000ac  eb060c04          ADD      r12,r6,r4
0000b0  f810c00c          LDRB     r12,[r0,r12]
0000b4  f882c001          STRB     r12,[r2,#1]
;;;337        outptr1[RGB_BLUE] =  range_limit[y + cblue];
0000b8  442e              ADD      r6,r6,r5
0000ba  5d86              LDRB     r6,[r0,r6]
0000bc  7096              STRB     r6,[r2,#2]
;;;338        outptr1 += RGB_PIXELSIZE;
;;;339        y  = GETJSAMPLE(*inptr01++);
0000be  f8176f01          LDRB     r6,[r7,#1]!
0000c2  1cc9              ADDS     r1,r1,#3              ;333
;;;340        outptr1[RGB_RED] =   range_limit[y + cred];
0000c4  4433              ADD      r3,r3,r6
0000c6  5cc3              LDRB     r3,[r0,r3]
0000c8  f8023f03          STRB     r3,[r2,#3]!
;;;341        outptr1[RGB_GREEN] = range_limit[y + cgreen];
0000cc  1933              ADDS     r3,r6,r4
0000ce  5cc3              LDRB     r3,[r0,r3]
0000d0  7053              STRB     r3,[r2,#1]
;;;342        outptr1[RGB_BLUE] =  range_limit[y + cblue];
0000d2  1973              ADDS     r3,r6,r5
0000d4  5cc3              LDRB     r3,[r0,r3]
0000d6  7093              STRB     r3,[r2,#2]
0000d8  f1070c01          ADD      r12,r7,#1             ;339
;;;343        outptr1 += RGB_PIXELSIZE;
0000dc  1cd2              ADDS     r2,r2,#3
0000de  f1a80301          SUB      r3,r8,#1              ;316
                  |L3.226|
0000e2  ea5f0803          MOVS     r8,r3                 ;316
0000e6  d1ad              BNE      |L3.68|
;;;344      }
;;;345      /* If image width is odd, do the last output column separately */
;;;346      if (cinfo->output_width & 1) {
0000e8  f8db3070          LDR      r3,[r11,#0x70]
0000ec  07db              LSLS     r3,r3,#31
0000ee  d027              BEQ      |L3.320|
;;;347        cb = GETJSAMPLE(*inptr1);
;;;348        cr = GETJSAMPLE(*inptr2);
0000f0  f8994000          LDRB     r4,[r9,#0]
;;;349        cred = Crrtab[cr];
0000f4  9b03              LDR      r3,[sp,#0xc]
0000f6  f89a7000          LDRB     r7,[r10,#0]           ;347
;;;350        cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
0000fa  9d00              LDR      r5,[sp,#0]
0000fc  9e01              LDR      r6,[sp,#4]
0000fe  f8533024          LDR      r3,[r3,r4,LSL #2]     ;349
000102  f8555027          LDR      r5,[r5,r7,LSL #2]
000106  f8564024          LDR      r4,[r6,r4,LSL #2]
;;;351        cblue = Cbbtab[cb];
;;;352        y  = GETJSAMPLE(*inptr00);
00010a  f89e6000          LDRB     r6,[lr,#0]
00010e  442c              ADD      r4,r4,r5              ;350
000110  9d02              LDR      r5,[sp,#8]            ;351
000112  1424              ASRS     r4,r4,#16             ;350
000114  f8555027          LDR      r5,[r5,r7,LSL #2]     ;351
;;;353        outptr0[RGB_RED] =   range_limit[y + cred];
000118  18f7              ADDS     r7,r6,r3
00011a  5dc7              LDRB     r7,[r0,r7]
00011c  700f              STRB     r7,[r1,#0]
;;;354        outptr0[RGB_GREEN] = range_limit[y + cgreen];
00011e  1937              ADDS     r7,r6,r4
000120  5dc7              LDRB     r7,[r0,r7]
000122  704f              STRB     r7,[r1,#1]
;;;355        outptr0[RGB_BLUE] =  range_limit[y + cblue];
000124  442e              ADD      r6,r6,r5
000126  5d86              LDRB     r6,[r0,r6]
000128  708e              STRB     r6,[r1,#2]
;;;356        y  = GETJSAMPLE(*inptr01);
00012a  f89c1000          LDRB     r1,[r12,#0]
;;;357        outptr1[RGB_RED] =   range_limit[y + cred];
00012e  440b              ADD      r3,r3,r1
000130  5cc3              LDRB     r3,[r0,r3]
000132  7013              STRB     r3,[r2,#0]
;;;358        outptr1[RGB_GREEN] = range_limit[y + cgreen];
000134  190b              ADDS     r3,r1,r4
000136  5cc3              LDRB     r3,[r0,r3]
000138  7053              STRB     r3,[r2,#1]
;;;359        outptr1[RGB_BLUE] =  range_limit[y + cblue];
00013a  4429              ADD      r1,r1,r5
00013c  5c40              LDRB     r0,[r0,r1]
00013e  7090              STRB     r0,[r2,#2]
                  |L3.320|
;;;360      }
;;;361    }
000140  e8bd8fff          POP      {r0-r11,pc}
;;;362    
                          ENDP


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

                  jinit_merged_upsampler PROC
;;;372    GLOBAL(void)
;;;373    jinit_merged_upsampler (j_decompress_ptr cinfo)
000000  b570              PUSH     {r4-r6,lr}
;;;374    {
000002  4605              MOV      r5,r0
;;;375      my_upsample_ptr upsample;
;;;376    
;;;377      upsample = (my_upsample_ptr)
000004  6840              LDR      r0,[r0,#4]
000006  2230              MOVS     r2,#0x30
000008  6803              LDR      r3,[r0,#0]
00000a  2101              MOVS     r1,#1
00000c  4628              MOV      r0,r5
00000e  4798              BLX      r3
;;;378        (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;379    				SIZEOF(my_upsampler));
;;;380      cinfo->upsample = (struct jpeg_upsampler *) upsample;
;;;381      upsample->pub.start_pass = start_pass_merged_upsample;
000010  4911              LDR      r1,|L4.88|
000012  f8c501c4          STR      r0,[r5,#0x1c4]
;;;382      upsample->pub.need_context_rows = FALSE;
000016  6001              STR      r1,[r0,#0]
000018  2100              MOVS     r1,#0
;;;383    
;;;384      upsample->out_row_width = cinfo->output_width * cinfo->out_color_components;
00001a  6081              STR      r1,[r0,#8]
00001c  4604              MOV      r4,r0                 ;377
00001e  6f2a              LDR      r2,[r5,#0x70]

⌨️ 快捷键说明

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