📄 jdcolor.txt
字号:
;;;330 case JCS_YCCK:
;;;331 if (cinfo->num_components != 4)
00003e 6a61 LDR r1,[r4,#0x24]
000040 2904 CMP r1,#4
000042 d009 BEQ |L4.88|
000044 e002 B |L4.76|
|L4.70|
;;;332 ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
;;;333 break;
;;;334
;;;335 default: /* JCS_UNKNOWN can be anything */
;;;336 if (cinfo->num_components < 1)
000046 6a61 LDR r1,[r4,#0x24]
000048 2901 CMP r1,#1
00004a da05 BGE |L4.88|
|L4.76|
;;;337 ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
00004c 6821 LDR r1,[r4,#0]
00004e 6148 STR r0,[r1,#0x14]
000050 6820 LDR r0,[r4,#0]
000052 6801 LDR r1,[r0,#0]
000054 4620 MOV r0,r4
000056 4788 BLX r1
|L4.88|
;;;338 break;
;;;339 }
;;;340
;;;341 /* Set out_color_components and conversion method based on requested space.
;;;342 * Also clear the component_needed flags for any unused components,
;;;343 * so that earlier pipeline stages can avoid useless computation.
;;;344 */
;;;345
;;;346 switch (cinfo->out_color_space) {
000058 f8940029 LDRB r0,[r4,#0x29]
;;;347 case JCS_GRAYSCALE:
;;;348 cinfo->out_color_components = 1;
;;;349 if (cinfo->jpeg_color_space == JCS_GRAYSCALE ||
;;;350 cinfo->jpeg_color_space == JCS_YCbCr) {
;;;351 cconvert->pub.color_convert = grayscale_convert;
;;;352 /* For color->grayscale conversion, only the Y (0) component is needed */
;;;353 for (ci = 1; ci < cinfo->num_components; ci++)
;;;354 cinfo->comp_info[ci].component_needed = FALSE;
;;;355 } else
;;;356 ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
00005c 211b MOVS r1,#0x1b
00005e 2601 MOVS r6,#1 ;310
000060 2801 CMP r0,#1 ;346
000062 d00f BEQ |L4.132|
;;;357 break;
;;;358
;;;359 case JCS_RGB:
;;;360 cinfo->out_color_components = RGB_PIXELSIZE;
;;;361 if (cinfo->jpeg_color_space == JCS_YCbCr) {
;;;362 cconvert->pub.color_convert = ycc_rgb_convert;
;;;363 build_ycc_rgb_table(cinfo);
;;;364 } else if (cinfo->jpeg_color_space == JCS_GRAYSCALE) {
;;;365 cconvert->pub.color_convert = gray_rgb_convert;
;;;366 } else if (cinfo->jpeg_color_space == JCS_RGB && RGB_PIXELSIZE == 3) {
;;;367 cconvert->pub.color_convert = null_convert;
000064 4a2a LDR r2,|L4.272|
000066 2802 CMP r0,#2 ;346
000068 d028 BEQ |L4.188|
00006a 2804 CMP r0,#4 ;346
00006c d13a BNE |L4.228|
;;;368 } else
;;;369 ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
;;;370 break;
;;;371
;;;372 case JCS_CMYK:
;;;373 cinfo->out_color_components = 4;
;;;374 if (cinfo->jpeg_color_space == JCS_YCCK) {
00006e 67a0 STR r0,[r4,#0x78]
000070 f8940028 LDRB r0,[r4,#0x28]
000074 2805 CMP r0,#5
000076 d131 BNE |L4.220|
;;;375 cconvert->pub.color_convert = ycck_cmyk_convert;
000078 4826 LDR r0,|L4.276|
|L4.122|
;;;376 build_ycc_rgb_table(cinfo);
00007a 6068 STR r0,[r5,#4]
00007c 4620 MOV r0,r4
00007e f7fffffe BL build_ycc_rgb_table
000082 e03c B |L4.254|
|L4.132|
000084 67a6 STR r6,[r4,#0x78] ;349
000086 f8940028 LDRB r0,[r4,#0x28] ;349
00008a 2801 CMP r0,#1 ;349
00008c d001 BEQ |L4.146|
00008e 2803 CMP r0,#3 ;350
000090 d12f BNE |L4.242|
|L4.146|
000092 4821 LDR r0,|L4.280|
000094 6068 STR r0,[r5,#4] ;353
000096 2001 MOVS r0,#1 ;353
000098 2200 MOVS r2,#0 ;354
00009a 2330 MOVS r3,#0x30 ;354
00009c e00a B |L4.180|
00009e bf00 NOP ;354
|L4.160|
0000a0 ebc001c0 RSB r1,r0,r0,LSL #3 ;354
0000a4 eb010141 ADD r1,r1,r1,LSL #1 ;354
0000a8 f8d450d8 LDR r5,[r4,#0xd8] ;354
0000ac eb030181 ADD r1,r3,r1,LSL #2 ;354
0000b0 506a STR r2,[r5,r1] ;354
0000b2 1c40 ADDS r0,r0,#1 ;353
|L4.180|
0000b4 6a61 LDR r1,[r4,#0x24] ;353
0000b6 4281 CMP r1,r0 ;353
0000b8 dcf2 BGT |L4.160|
0000ba e020 B |L4.254|
|L4.188|
0000bc 2003 MOVS r0,#3 ;360
0000be 67a0 STR r0,[r4,#0x78] ;361
0000c0 f8940028 LDRB r0,[r4,#0x28] ;361
0000c4 2803 CMP r0,#3 ;361
0000c6 d101 BNE |L4.204|
0000c8 4814 LDR r0,|L4.284|
0000ca e7d6 B |L4.122|
|L4.204|
0000cc 2801 CMP r0,#1 ;364
0000ce d102 BNE |L4.214|
0000d0 4813 LDR r0,|L4.288|
0000d2 6068 STR r0,[r5,#4] ;365
0000d4 e013 B |L4.254|
|L4.214|
0000d6 2802 CMP r0,#2 ;366
0000d8 d10b BNE |L4.242|
0000da e001 B |L4.224|
|L4.220|
;;;377 } else if (cinfo->jpeg_color_space == JCS_CMYK) {
0000dc 2804 CMP r0,#4
0000de d108 BNE |L4.242|
|L4.224|
;;;378 cconvert->pub.color_convert = null_convert;
0000e0 606a STR r2,[r5,#4]
0000e2 e00c B |L4.254|
|L4.228|
;;;379 } else
;;;380 ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
;;;381 break;
;;;382
;;;383 default:
;;;384 /* Permit null conversion to same output space */
;;;385 if (cinfo->out_color_space == cinfo->jpeg_color_space) {
0000e4 f8943028 LDRB r3,[r4,#0x28]
0000e8 4298 CMP r0,r3
0000ea d102 BNE |L4.242|
;;;386 cinfo->out_color_components = cinfo->num_components;
0000ec 6a60 LDR r0,[r4,#0x24]
;;;387 cconvert->pub.color_convert = null_convert;
0000ee 67a0 STR r0,[r4,#0x78]
0000f0 e7f6 B |L4.224|
|L4.242|
;;;388 } else /* unsupported non-null conversion */
;;;389 ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
0000f2 6820 LDR r0,[r4,#0]
0000f4 6141 STR r1,[r0,#0x14]
0000f6 6820 LDR r0,[r4,#0]
0000f8 6801 LDR r1,[r0,#0]
0000fa 4620 MOV r0,r4
0000fc 4788 BLX r1
|L4.254|
;;;390 break;
;;;391 }
;;;392
;;;393 if (cinfo->quantize_colors)
0000fe 6d60 LDR r0,[r4,#0x54]
000100 b108 CBZ r0,|L4.262|
;;;394 cinfo->output_components = 1; /* single colormapped output component */
000102 67e6 STR r6,[r4,#0x7c]
;;;395 else
;;;396 cinfo->output_components = cinfo->out_color_components;
;;;397 }
000104 bd70 POP {r4-r6,pc}
|L4.262|
000106 6fa0 LDR r0,[r4,#0x78] ;396
000108 67e0 STR r0,[r4,#0x7c] ;396
00010a bd70 POP {r4-r6,pc}
ENDP
|L4.268|
DCD start_pass_dcolor
|L4.272|
DCD null_convert
|L4.276|
DCD ycck_cmyk_convert
|L4.280|
DCD grayscale_convert
|L4.284|
DCD ycc_rgb_convert
|L4.288|
DCD gray_rgb_convert
AREA ||i.null_convert||, CODE, READONLY, ALIGN=2
null_convert PROC
;;;168 METHODDEF(void)
;;;169 null_convert (j_decompress_ptr cinfo,
000000 e92d43f0 PUSH {r4-r9,lr}
;;;170 JSAMPIMAGE input_buf, JDIMENSION input_row,
;;;171 JSAMPARRAY output_buf, int num_rows)
;;;172 {
000004 4689 MOV r9,r1
;;;173 register JSAMPROW inptr, outptr;
;;;174 register JDIMENSION count;
;;;175 register int num_components = cinfo->num_components;
000006 f8dd801c LDR r8,[sp,#0x1c]
;;;176 JDIMENSION num_cols = cinfo->output_width;
;;;177 int ci;
;;;178
;;;179 while (--num_rows >= 0) {
00000a f8d0e070 LDR lr,[r0,#0x70]
00000e 6a46 LDR r6,[r0,#0x24]
000010 e019 B |L5.70|
|L5.18|
;;;180 for (ci = 0; ci < num_components; ci++) {
000012 2100 MOVS r1,#0
000014 e013 B |L5.62|
;;;181 inptr = input_buf[ci][input_row];
000016 bf00 NOP
|L5.24|
000018 f8590021 LDR r0,[r9,r1,LSL #2]
;;;182 outptr = output_buf[0] + ci;
;;;183 for (count = num_cols; count > 0; count--) {
00001c 681d LDR r5,[r3,#0]
00001e f8504022 LDR r4,[r0,r2,LSL #2] ;181
000022 ea5f000e MOVS r0,lr
000026 440d ADD r5,r5,r1 ;182
000028 d008 BEQ |L5.60|
;;;184 *outptr = *inptr++; /* needn't bother with GETJSAMPLE() here */
00002a bf00 NOP
|L5.44|
00002c f8147b01 LDRB r7,[r4],#1
;;;185 outptr += num_components;
000030 eb050c06 ADD r12,r5,r6
000034 702f STRB r7,[r5,#0] ;184
000036 4665 MOV r5,r12
000038 1e40 SUBS r0,r0,#1 ;183
00003a d1f7 BNE |L5.44|
|L5.60|
00003c 1c49 ADDS r1,r1,#1 ;180
|L5.62|
00003e 42b1 CMP r1,r6 ;180
000040 dbea BLT |L5.24|
;;;186 }
;;;187 }
;;;188 input_row++;
000042 1c52 ADDS r2,r2,#1
;;;189 output_buf++;
000044 1d1b ADDS r3,r3,#4
|L5.70|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -