📄 jdinput.txt
字号:
;;;157 if (cinfo->comps_in_scan <= 0 || cinfo->comps_in_scan > MAX_COMPS_IN_SCAN)
;;;158 ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->comps_in_scan,
;;;159 MAX_COMPS_IN_SCAN);
;;;160
;;;161 /* Overall image size in MCUs */
;;;162 cinfo->MCUs_per_row = (JDIMENSION)
;;;163 jdiv_round_up((long) cinfo->image_width,
;;;164 (long) (cinfo->max_h_samp_factor*DCTSIZE));
;;;165 cinfo->MCU_rows_in_scan = (JDIMENSION)
;;;166 jdiv_round_up((long) cinfo->image_height,
;;;167 (long) (cinfo->max_v_samp_factor*DCTSIZE));
;;;168
;;;169 cinfo->blocks_in_MCU = 0;
;;;170
;;;171 for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
;;;172 compptr = cinfo->cur_comp_info[ci];
;;;173 /* Sampling factors give # of blocks of component in each MCU */
;;;174 compptr->MCU_width = compptr->h_samp_factor;
;;;175 compptr->MCU_height = compptr->v_samp_factor;
;;;176 compptr->MCU_blocks = compptr->MCU_width * compptr->MCU_height;
;;;177 compptr->MCU_sample_width = compptr->MCU_width * compptr->DCT_scaled_size;
;;;178 /* Figure number of non-dummy blocks in last MCU column & row */
;;;179 tmp = (int) (compptr->width_in_blocks % compptr->MCU_width);
;;;180 if (tmp == 0) tmp = compptr->MCU_width;
;;;181 compptr->last_col_width = tmp;
;;;182 tmp = (int) (compptr->height_in_blocks % compptr->MCU_height);
;;;183 if (tmp == 0) tmp = compptr->MCU_height;
;;;184 compptr->last_row_height = tmp;
;;;185 /* Prepare array describing MCU composition */
;;;186 mcublks = compptr->MCU_blocks;
;;;187 if (cinfo->blocks_in_MCU + mcublks > D_MAX_BLOCKS_IN_MCU)
;;;188 ERREXIT(cinfo, JERR_BAD_MCU_SIZE);
;;;189 while (mcublks-- > 0) {
;;;190 cinfo->MCU_membership[cinfo->blocks_in_MCU++] = ci;
;;;191 }
;;;192 }
;;;193
;;;194 }
;;;195 }
000048 e8bd81f0 POP {r4-r8,pc}
|L5.76|
00004c 2800 CMP r0,#0 ;157
00004e dd01 BLE |L5.84|
000050 2804 CMP r0,#4 ;157
000052 dd0d BLE |L5.112|
|L5.84|
000054 6821 LDR r1,[r4,#0] ;158
000056 201a MOVS r0,#0x1a ;158
000058 6148 STR r0,[r1,#0x14] ;158
00005a 6821 LDR r1,[r4,#0] ;158
00005c f8d40148 LDR r0,[r4,#0x148] ;158
000060 6188 STR r0,[r1,#0x18] ;158
000062 6821 LDR r1,[r4,#0] ;158
000064 2004 MOVS r0,#4 ;158
000066 61c8 STR r0,[r1,#0x1c] ;158
000068 6820 LDR r0,[r4,#0] ;158
00006a 6801 LDR r1,[r0,#0] ;158
00006c 4620 MOV r0,r4 ;158
00006e 4788 BLX r1 ;158
|L5.112|
000070 34e8 ADDS r4,r4,#0xe8 ;158
000072 6ce0 LDR r0,[r4,#0x4c] ;162
000074 00c1 LSLS r1,r0,#3 ;162
000076 f8540ccc LDR r0,[r4,#-0xcc] ;162
00007a f7fffffe BL jdiv_round_up
00007e 6760 STR r0,[r4,#0x74] ;165
000080 6d20 LDR r0,[r4,#0x50] ;165
000082 00c1 LSLS r1,r0,#3 ;165
000084 f8540cc8 LDR r0,[r4,#-0xc8] ;165
000088 f7fffffe BL jdiv_round_up
00008c e9c4051e STRD r0,r5,[r4,#0x78] ;169
000090 3ce8 SUBS r4,r4,#0xe8 ;169
000092 2500 MOVS r5,#0 ;171
000094 e03a B |L5.268|
000096 bf00 NOP ;172
|L5.152|
000098 eb040085 ADD r0,r4,r5,LSL #2 ;172
00009c f8d0014c LDR r0,[r0,#0x14c] ;172
0000a0 6883 LDR r3,[r0,#8] ;174
0000a2 6343 STR r3,[r0,#0x34] ;175
0000a4 68c1 LDR r1,[r0,#0xc] ;176
0000a6 fb03f201 MUL r2,r3,r1 ;176
0000aa e9c0120e STRD r1,r2,[r0,#0x38] ;177
0000ae 6a46 LDR r6,[r0,#0x24] ;177
0000b0 4617 MOV r7,r2 ;176
0000b2 435e MULS r6,r3,r6 ;177
0000b4 6406 STR r6,[r0,#0x40] ;179
0000b6 69c2 LDR r2,[r0,#0x1c] ;179
0000b8 fbb2f6f3 UDIV r6,r2,r3 ;179
0000bc fb032216 MLS r2,r3,r6,r2 ;179
0000c0 b902 CBNZ r2,|L5.196|
0000c2 461a MOV r2,r3 ;180
|L5.196|
0000c4 6442 STR r2,[r0,#0x44] ;182
0000c6 6a02 LDR r2,[r0,#0x20] ;182
0000c8 fbb2f3f1 UDIV r3,r2,r1 ;182
0000cc fb012213 MLS r2,r1,r3,r2 ;182
0000d0 b902 CBNZ r2,|L5.212|
0000d2 460a MOV r2,r1 ;183
|L5.212|
0000d4 6482 STR r2,[r0,#0x48] ;187
0000d6 f8d40164 LDR r0,[r4,#0x164] ;187
0000da 4438 ADD r0,r0,r7 ;187
0000dc 280a CMP r0,#0xa ;187
0000de dd10 BLE |L5.258|
0000e0 6821 LDR r1,[r4,#0] ;188
0000e2 200d MOVS r0,#0xd ;188
0000e4 6148 STR r0,[r1,#0x14] ;188
0000e6 6820 LDR r0,[r4,#0] ;188
0000e8 6801 LDR r1,[r0,#0] ;188
0000ea 4620 MOV r0,r4 ;188
0000ec 4788 BLX r1 ;188
0000ee e008 B |L5.258|
|L5.240|
0000f0 f8d40164 LDR r0,[r4,#0x164] ;190
0000f4 1c41 ADDS r1,r0,#1 ;190
0000f6 eb040080 ADD r0,r4,r0,LSL #2 ;190
0000fa f8c41164 STR r1,[r4,#0x164] ;190
0000fe f8c05168 STR r5,[r0,#0x168] ;190
|L5.258|
000102 1e38 SUBS r0,r7,#0 ;189
000104 f1a70701 SUB r7,r7,#1 ;189
000108 dcf2 BGT |L5.240|
00010a 1c6d ADDS r5,r5,#1 ;171
|L5.268|
00010c f8d40148 LDR r0,[r4,#0x148] ;171
000110 42a8 CMP r0,r5 ;171
000112 dcc1 BGT |L5.152|
000114 e798 B |L5.72|
;;;196
ENDP
AREA ||i.reset_input_controller||, CODE, READONLY, ALIGN=2
reset_input_controller PROC
;;;338 METHODDEF(void)
;;;339 reset_input_controller (j_decompress_ptr cinfo)
000000 b570 PUSH {r4-r6,lr}
;;;340 {
000002 4604 MOV r4,r0
;;;341 my_inputctl_ptr inputctl = (my_inputctl_ptr) cinfo->inputctl;
000004 f8d001b4 LDR r0,[r0,#0x1b4]
;;;342
;;;343 inputctl->pub.consume_input = consume_markers;
;;;344 inputctl->pub.has_multiple_scans = FALSE; /* "unknown" would be better */
000008 2500 MOVS r5,#0
;;;345 inputctl->pub.eoi_reached = FALSE;
00000a 6105 STR r5,[r0,#0x10]
00000c 4908 LDR r1,|L6.48|
;;;346 inputctl->inheaders = TRUE;
00000e 6145 STR r5,[r0,#0x14]
000010 6001 STR r1,[r0,#0]
000012 2101 MOVS r1,#1
;;;347 /* Reset other modules */
;;;348 (*cinfo->err->reset_error_mgr) ((j_common_ptr) cinfo);
000014 6181 STR r1,[r0,#0x18]
000016 6820 LDR r0,[r4,#0]
000018 6901 LDR r1,[r0,#0x10]
00001a 4620 MOV r0,r4
00001c 4788 BLX r1
;;;349 (*cinfo->marker->reset_marker_reader) (cinfo);
00001e f8d401b8 LDR r0,[r4,#0x1b8]
000022 6801 LDR r1,[r0,#0]
000024 4620 MOV r0,r4
000026 4788 BLX r1
;;;350 /* Reset progression state -- would be cleaner if entropy decoder did this */
;;;351 cinfo->coef_bits = NULL;
;;;352 }
000028 f8c450a0 STR r5,[r4,#0xa0]
00002c bd70 POP {r4-r6,pc}
;;;353
ENDP
00002e 0000 DCW 0x0000
|L6.48|
DCD consume_markers
AREA ||i.start_input_pass||, CODE, READONLY, ALIGN=2
start_input_pass PROC
;;;253 METHODDEF(void)
;;;254 start_input_pass (j_decompress_ptr cinfo)
000000 e92d41f0 PUSH {r4-r8,lr}
;;;255 {
000004 4604 MOV r4,r0
;;;256 per_scan_setup(cinfo);
000006 f7fffffe BL per_scan_setup
00000a 2600 MOVS r6,#0
00000c e029 B |L7.98|
00000e bf00 NOP
|L7.16|
000010 eb040086 ADD r0,r4,r6,LSL #2
000014 f8d0714c LDR r7,[r0,#0x14c]
000018 6cf8 LDR r0,[r7,#0x4c]
00001a bb08 CBNZ r0,|L7.96|
00001c 693d LDR r5,[r7,#0x10]
00001e 2d04 CMP r5,#4
000020 d204 BCS |L7.44|
000022 eb040085 ADD r0,r4,r5,LSL #2
000026 f8d000a4 LDR r0,[r0,#0xa4]
00002a b940 CBNZ r0,|L7.62|
|L7.44|
00002c 6821 LDR r1,[r4,#0]
00002e 2034 MOVS r0,#0x34
000030 6148 STR r0,[r1,#0x14]
000032 6820 LDR r0,[r4,#0]
000034 6185 STR r5,[r0,#0x18]
000036 6820 LDR r0,[r4,#0]
000038 6801 LDR r1,[r0,#0]
00003a 4620 MOV r0,r4
00003c 4788 BLX r1
|L7.62|
00003e 6860 LDR r0,[r4,#4]
000040 2284 MOVS r2,#0x84
000042 6803 LDR r3,[r0,#0]
000044 2101 MOVS r1,#1
000046 4620 MOV r0,r4
000048 4798 BLX r3
00004a 4680 MOV r8,r0
00004c eb040085 ADD r0,r4,r5,LSL #2
000050 f8d010a4 LDR r1,[r0,#0xa4]
000054 2284 MOVS r2,#0x84
000056 4640 MOV r0,r8
000058 f7fffffe BL __aeabi_memcpy4
00005c f8c7804c STR r8,[r7,#0x4c]
|L7.96|
000060 1c76 ADDS r6,r6,#1
|L7.98|
000062 f8d40148 LDR r0,[r4,#0x148]
000066 42b0 CMP r0,r6
000068 dcd2 BGT |L7.16|
;;;257 latch_quant_tables(cinfo);
;;;258 (*cinfo->entropy->start_pass) (cinfo);
00006a f8d401bc LDR r0,[r4,#0x1bc]
00006e 6801 LDR r1,[r0,#0]
000070 4620 MOV r0,r4
000072 4788 BLX r1
;;;259 (*cinfo->coef->start_input_pass) (cinfo);
000074 f8d401ac LDR r0,[r4,#0x1ac]
000078 6801 LDR r1,[r0,#0]
00007a 4620 MOV r0,r4
00007c 4788 BLX r1
;;;260 cinfo->inputctl->consume_input = cinfo->coef->consume_data;
00007e f8d401ac LDR r0,[r4,#0x1ac]
000082 f8d411b4 LDR r1,[r4,#0x1b4]
000086 6840 LDR r0,[r0,#4]
;;;261 }
000088 6008 STR r0,[r1,#0]
00008a e8bd81f0 POP {r4-r8,pc}
;;;262
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -