📄 jdcolor.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\jdcolor.o --depend=.\Obj\jdcolor.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\jdcolor.c]
THUMB
AREA ||i.build_ycc_rgb_table||, CODE, READONLY, ALIGN=2
build_ycc_rgb_table PROC
;;;69 LOCAL(void)
;;;70 build_ycc_rgb_table (j_decompress_ptr cinfo)
000000 b570 PUSH {r4-r6,lr}
;;;71 {
000002 4605 MOV r5,r0
;;;72 my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
;;;73 int i;
;;;74 INT32 x;
;;;75 SHIFT_TEMPS
;;;76
;;;77 cconvert->Cr_r_tab = (int *)
000004 f8d041c8 LDR r4,[r0,#0x1c8]
000008 6840 LDR r0,[r0,#4]
00000a f44f6680 MOV r6,#0x400
00000e 6803 LDR r3,[r0,#0]
000010 4632 MOV r2,r6
000012 2101 MOVS r1,#1
000014 4628 MOV r0,r5
000016 4798 BLX r3
;;;78 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;79 (MAXJSAMPLE+1) * SIZEOF(int));
;;;80 cconvert->Cb_b_tab = (int *)
000018 60a0 STR r0,[r4,#8]
00001a 6868 LDR r0,[r5,#4]
00001c 4632 MOV r2,r6
00001e 6803 LDR r3,[r0,#0]
000020 2101 MOVS r1,#1
000022 4628 MOV r0,r5
000024 4798 BLX r3
;;;81 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;82 (MAXJSAMPLE+1) * SIZEOF(int));
;;;83 cconvert->Cr_g_tab = (INT32 *)
000026 60e0 STR r0,[r4,#0xc]
000028 6868 LDR r0,[r5,#4]
00002a 4632 MOV r2,r6
00002c 6803 LDR r3,[r0,#0]
00002e 2101 MOVS r1,#1
000030 4628 MOV r0,r5
000032 4798 BLX r3
;;;84 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;85 (MAXJSAMPLE+1) * SIZEOF(INT32));
;;;86 cconvert->Cb_g_tab = (INT32 *)
000034 6120 STR r0,[r4,#0x10]
000036 6868 LDR r0,[r5,#4]
000038 4632 MOV r2,r6
00003a 6803 LDR r3,[r0,#0]
00003c 2101 MOVS r1,#1
00003e 4628 MOV r0,r5
000040 4798 BLX r3
;;;87 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;88 (MAXJSAMPLE+1) * SIZEOF(INT32));
;;;89
;;;90 for (i = 0, x = -CENTERJSAMPLE; i <= MAXJSAMPLE; i++, x++) {
000042 6160 STR r0,[r4,#0x14]
000044 2000 MOVS r0,#0
000046 f06f017f MVN r1,#0x7f
;;;91 /* i is the actual input pixel value, in the range 0..MAXJSAMPLE */
;;;92 /* The Cb or Cr value we are thinking of is x = i - CENTERJSAMPLE */
;;;93 /* Cr=>R value is nearest int to 1.40200 * x */
;;;94 cconvert->Cr_r_tab[i] = (int)
;;;95 RIGHT_SHIFT(FIX(1.40200) * x + ONE_HALF, SCALEBITS);
;;;96 /* Cb=>B value is nearest int to 1.77200 * x */
;;;97 cconvert->Cb_b_tab[i] = (int)
00004a 0176 LSLS r6,r6,#5
|L1.76|
00004c 4a11 LDR r2,|L1.148|
00004e 68a3 LDR r3,[r4,#8] ;94
000050 434a MULS r2,r1,r2 ;94
000052 f5024200 ADD r2,r2,#0x8000 ;94
000056 1412 ASRS r2,r2,#16 ;94
000058 f8432020 STR r2,[r3,r0,LSL #2] ;94
00005c f24e25d1 MOV r5,#0xe2d1
000060 fb01f205 MUL r2,r1,r5
000064 eb060242 ADD r2,r6,r2,LSL #1
000068 68e3 LDR r3,[r4,#0xc]
00006a 1412 ASRS r2,r2,#16
00006c f8432020 STR r2,[r3,r0,LSL #2]
;;;98 RIGHT_SHIFT(FIX(1.77200) * x + ONE_HALF, SCALEBITS);
;;;99 /* Cr=>G value is scaled-up -0.71414 * x */
;;;100 cconvert->Cr_g_tab[i] = (- FIX(0.71414)) * x;
000070 4d09 LDR r5,|L1.152|
000072 6922 LDR r2,[r4,#0x10]
000074 434d MULS r5,r1,r5
;;;101 /* Cb=>G value is scaled-up -0.34414 * x */
;;;102 /* We also add in ONE_HALF so that need not do it in inner loop */
;;;103 cconvert->Cb_g_tab[i] = (- FIX(0.34414)) * x + ONE_HALF;
000076 4b09 LDR r3,|L1.156|
000078 f8425020 STR r5,[r2,r0,LSL #2] ;100
00007c 434b MULS r3,r1,r3
00007e eb060243 ADD r2,r6,r3,LSL #1
000082 4605 MOV r5,r0
000084 6963 LDR r3,[r4,#0x14]
000086 1c40 ADDS r0,r0,#1 ;90
000088 1c49 ADDS r1,r1,#1 ;90
00008a f8432025 STR r2,[r3,r5,LSL #2]
00008e 28ff CMP r0,#0xff ;90
000090 dddc BLE |L1.76|
;;;104 }
;;;105 }
000092 bd70 POP {r4-r6,pc}
;;;106
ENDP
|L1.148|
DCD 0x000166e9
|L1.152|
DCD 0xffff492e
|L1.156|
DCD 0xffffd3f3
AREA ||i.gray_rgb_convert||, CODE, READONLY, ALIGN=1
gray_rgb_convert PROC
;;;216 METHODDEF(void)
;;;217 gray_rgb_convert (j_decompress_ptr cinfo,
000000 b5f0 PUSH {r4-r7,lr}
;;;218 JSAMPIMAGE input_buf, JDIMENSION input_row,
;;;219 JSAMPARRAY output_buf, int num_rows)
;;;220 {
;;;221 register JSAMPROW inptr, outptr;
;;;222 register JDIMENSION col;
;;;223 JDIMENSION num_cols = cinfo->output_width;
000002 9e05 LDR r6,[sp,#0x14]
;;;224
;;;225 while (--num_rows >= 0) {
000004 f8d0c070 LDR r12,[r0,#0x70]
000008 e00f B |L2.42|
|L2.10|
;;;226 inptr = input_buf[0][input_row++];
00000a 4615 MOV r5,r2
00000c 680c LDR r4,[r1,#0]
00000e 1c52 ADDS r2,r2,#1
;;;227 outptr = *output_buf++;
000010 cb01 LDM r3!,{r0}
000012 f8547025 LDR r7,[r4,r5,LSL #2] ;226
;;;228 for (col = 0; col < num_cols; col++) {
000016 2400 MOVS r4,#0
000018 e005 B |L2.38|
|L2.26|
;;;229 /* We can dispense with GETJSAMPLE() here */
;;;230 outptr[RGB_RED] = outptr[RGB_GREEN] = outptr[RGB_BLUE] = inptr[col];
00001a 5d3d LDRB r5,[r7,r4]
00001c 7085 STRB r5,[r0,#2]
00001e 7045 STRB r5,[r0,#1]
000020 f8005b03 STRB r5,[r0],#3
000024 1c64 ADDS r4,r4,#1 ;228
|L2.38|
000026 4564 CMP r4,r12 ;228
000028 d3f7 BCC |L2.26|
|L2.42|
00002a 1e76 SUBS r6,r6,#1 ;225
00002c d5ed BPL |L2.10|
;;;231 outptr += RGB_PIXELSIZE;
;;;232 }
;;;233 }
;;;234 }
00002e bdf0 POP {r4-r7,pc}
;;;235
ENDP
AREA ||i.grayscale_convert||, CODE, READONLY, ALIGN=1
grayscale_convert PROC
;;;200 METHODDEF(void)
;;;201 grayscale_convert (j_decompress_ptr cinfo,
000000 b57c PUSH {r2-r6,lr}
;;;202 JSAMPIMAGE input_buf, JDIMENSION input_row,
;;;203 JSAMPARRAY output_buf, int num_rows)
;;;204 {
000002 460d MOV r5,r1
000004 461c MOV r4,r3
000006 4611 MOV r1,r2
;;;205 jcopy_sample_rows(input_buf[0], (int) input_row, output_buf, 0,
000008 6f03 LDR r3,[r0,#0x70]
00000a 9a06 LDR r2,[sp,#0x18]
00000c e9cd2300 STRD r2,r3,[sp,#0]
000010 2300 MOVS r3,#0
000012 4622 MOV r2,r4
000014 6828 LDR r0,[r5,#0]
000016 f7fffffe BL jcopy_sample_rows
;;;206 num_rows, cinfo->output_width);
;;;207 }
00001a bd7c POP {r2-r6,pc}
;;;208
ENDP
AREA ||i.jinit_color_deconverter||, CODE, READONLY, ALIGN=2
jinit_color_deconverter PROC
;;;304 GLOBAL(void)
;;;305 jinit_color_deconverter (j_decompress_ptr cinfo)
000000 b570 PUSH {r4-r6,lr}
;;;306 {
000002 4604 MOV r4,r0
;;;307 my_cconvert_ptr cconvert;
;;;308 int ci;
;;;309
;;;310 cconvert = (my_cconvert_ptr)
000004 6840 LDR r0,[r0,#4]
000006 2218 MOVS r2,#0x18
000008 6803 LDR r3,[r0,#0]
00000a 2101 MOVS r1,#1
00000c 4620 MOV r0,r4
00000e 4798 BLX r3
;;;311 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;312 SIZEOF(my_color_deconverter));
;;;313 cinfo->cconvert = (struct jpeg_color_deconverter *) cconvert;
;;;314 cconvert->pub.start_pass = start_pass_dcolor;
000010 493e LDR r1,|L4.268|
000012 f8c401c8 STR r0,[r4,#0x1c8]
;;;315
;;;316 /* Make sure num_components agrees with jpeg_color_space */
;;;317 switch (cinfo->jpeg_color_space) {
000016 6001 STR r1,[r0,#0]
000018 4605 MOV r5,r0 ;310
00001a f8941028 LDRB r1,[r4,#0x28]
;;;318 case JCS_GRAYSCALE:
;;;319 if (cinfo->num_components != 1)
;;;320 ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
00001e 200a MOVS r0,#0xa
000020 2906 CMP r1,#6 ;317
000022 d210 BCS |L4.70|
000024 e8dff001 TBB [pc,r1] ;317
000028 0f030707 DCB 0x0f,0x03,0x07,0x07
00002c 0b0b DCB 0x0b,0x0b
00002e 6a61 LDR r1,[r4,#0x24] ;319
000030 2901 CMP r1,#1 ;319
000032 d011 BEQ |L4.88|
000034 e00a B |L4.76|
;;;321 break;
;;;322
;;;323 case JCS_RGB:
;;;324 case JCS_YCbCr:
;;;325 if (cinfo->num_components != 3)
000036 6a61 LDR r1,[r4,#0x24]
000038 2903 CMP r1,#3
00003a d00d BEQ |L4.88|
00003c e006 B |L4.76|
;;;326 ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
;;;327 break;
;;;328
;;;329 case JCS_CMYK:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -