📄 jdmerge.txt
字号:
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 + -