📄 jdcoefct.txt
字号:
|L3.306|
000132 f8da001c LDR r0,[r10,#0x1c] ;160
000136 9905 LDR r1,[sp,#0x14] ;160
000138 4288 CMP r0,r1 ;160
00013a f73faf73 BGT |L3.36|
00013e 3594 ADDS r5,r5,#0x94 ;160
000140 68a8 LDR r0,[r5,#8] ;212
000142 1c40 ADDS r0,r0,#1 ;212
000144 60a8 STR r0,[r5,#8] ;213
000146 6828 LDR r0,[r5,#0] ;213
000148 1c40 ADDS r0,r0,#1 ;213
00014a 6028 STR r0,[r5,#0] ;213
00014c f8d510ac LDR r1,[r5,#0xac] ;213
000150 3d94 SUBS r5,r5,#0x94 ;213
000152 4288 CMP r0,r1 ;213
000154 d204 BCS |L3.352|
000156 4628 MOV r0,r5 ;214
000158 f7fffffe BL start_iMCU_row
00015c 2003 MOVS r0,#3 ;215
00015e e778 B |L3.82|
|L3.352|
000160 f8d501b4 LDR r0,[r5,#0x1b4] ;218
000164 68c1 LDR r1,[r0,#0xc] ;218
000166 4628 MOV r0,r5 ;218
000168 4788 BLX r1 ;218
00016a 2004 MOVS r0,#4 ;219
00016c e771 B |L3.82|
;;;221
ENDP
AREA ||i.dummy_consume_data||, CODE, READONLY, ALIGN=1
dummy_consume_data PROC
;;;227 METHODDEF(int)
;;;228 dummy_consume_data (j_decompress_ptr cinfo)
000000 2000 MOVS r0,#0
;;;229 {
;;;230 GUI_USE_PARA(cinfo);
;;;231 return JPEG_SUSPENDED; /* Always indicate nothing was done */
;;;232 }
000002 4770 BX lr
;;;233
ENDP
AREA ||i.jinit_d_coef_controller||, CODE, READONLY, ALIGN=2
jinit_d_coef_controller PROC
;;;676 GLOBAL(void)
;;;677 jinit_d_coef_controller (j_decompress_ptr cinfo, boolean need_full_buffer)
000000 e92d47fc PUSH {r2-r10,lr}
;;;678 {
000004 4680 MOV r8,r0
;;;679 my_coef_ptr coef;
;;;680
;;;681 coef = (my_coef_ptr)
000006 6840 LDR r0,[r0,#4]
000008 460d MOV r5,r1 ;678
00000a 2258 MOVS r2,#0x58
00000c 6803 LDR r3,[r0,#0]
00000e 2101 MOVS r1,#1
000010 4640 MOV r0,r8
000012 4798 BLX r3
;;;682 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;683 SIZEOF(my_coef_controller));
;;;684 cinfo->coef = (struct jpeg_d_coef_controller *) coef;
;;;685 coef->pub.start_input_pass = start_input_pass;
000014 4924 LDR r1,|L5.168|
000016 f8c801ac STR r0,[r8,#0x1ac]
;;;686 coef->pub.start_output_pass = start_output_pass;
00001a 6001 STR r1,[r0,#0]
00001c 4923 LDR r1,|L5.172|
00001e 4604 MOV r4,r0 ;681
;;;687 #ifdef BLOCK_SMOOTHING_SUPPORTED
;;;688 coef->coef_bits_latch = NULL;
;;;689 #endif
;;;690
;;;691 /* Create the coefficient buffer. */
;;;692 if (need_full_buffer) {
000020 6081 STR r1,[r0,#8]
000022 b33d CBZ r5,|L5.116|
;;;693 #ifdef D_MULTISCAN_FILES_SUPPORTED
;;;694 /* Allocate a full-image virtual array for each component, */
;;;695 /* padded to a multiple of samp_factor DCT blocks in each direction. */
;;;696 /* Note we ask for a pre-zeroed array. */
;;;697 int ci, access_rows;
;;;698 jpeg_component_info *compptr;
;;;699
;;;700 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
000024 2600 MOVS r6,#0
000026 f8d850d8 LDR r5,[r8,#0xd8]
00002a e018 B |L5.94|
|L5.44|
;;;701 ci++, compptr++) {
;;;702 access_rows = compptr->v_samp_factor;
00002c 68e9 LDR r1,[r5,#0xc]
;;;703 #ifdef BLOCK_SMOOTHING_SUPPORTED
;;;704 /* If block smoothing could be used, need a bigger window */
;;;705 if (cinfo->progressive_mode)
;;;706 access_rows *= 3;
;;;707 #endif
;;;708 coef->whole_image[ci] = (*cinfo->mem->request_virt_barray)
00002e 6a28 LDR r0,[r5,#0x20]
000030 460f MOV r7,r1 ;702
000032 f7fffffe BL jround_up
000036 4681 MOV r9,r0
000038 68a9 LDR r1,[r5,#8]
00003a 69e8 LDR r0,[r5,#0x1c]
00003c f7fffffe BL jround_up
000040 e9cd9700 STRD r9,r7,[sp,#0]
000044 f8d81004 LDR r1,[r8,#4]
000048 4603 MOV r3,r0
00004a 2201 MOVS r2,#1
00004c 694f LDR r7,[r1,#0x14]
00004e 4611 MOV r1,r2
000050 4640 MOV r0,r8
000052 47b8 BLX r7
000054 eb040186 ADD r1,r4,r6,LSL #2
000058 1c76 ADDS r6,r6,#1 ;701
00005a 3554 ADDS r5,r5,#0x54 ;701
00005c 6488 STR r0,[r1,#0x48] ;701
|L5.94|
00005e f8d80024 LDR r0,[r8,#0x24] ;700
000062 42b0 CMP r0,r6 ;700
000064 dce2 BGT |L5.44|
;;;709 ((j_common_ptr) cinfo, JPOOL_IMAGE, TRUE,
;;;710 (JDIMENSION) jround_up((long) compptr->width_in_blocks,
;;;711 (long) compptr->h_samp_factor),
;;;712 (JDIMENSION) jround_up((long) compptr->height_in_blocks,
;;;713 (long) compptr->v_samp_factor),
;;;714 (JDIMENSION) access_rows);
;;;715 }
;;;716 coef->pub.consume_data = consume_data;
000066 4812 LDR r0,|L5.176|
;;;717 coef->pub.decompress_data = decompress_data;
000068 6060 STR r0,[r4,#4]
00006a 4812 LDR r0,|L5.180|
;;;718 coef->pub.coef_arrays = coef->whole_image; /* link to virtual arrays */
00006c 60e0 STR r0,[r4,#0xc]
00006e f1040048 ADD r0,r4,#0x48
;;;719 #else
;;;720 ERREXIT(cinfo, JERR_NOT_COMPILED);
;;;721 #endif
;;;722 } else {
000072 e016 B |L5.162|
|L5.116|
;;;723 /* We only need a single-MCU buffer. */
;;;724 JBLOCKROW buffer;
;;;725 int i;
;;;726
;;;727 buffer = (JBLOCKROW)
000074 f8d80004 LDR r0,[r8,#4]
000078 f44f62a0 MOV r2,#0x500
00007c 6843 LDR r3,[r0,#4]
00007e 2101 MOVS r1,#1
000080 4640 MOV r0,r8
000082 4798 BLX r3
000084 4601 MOV r1,r0
;;;728 (*cinfo->mem->alloc_large) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;729 D_MAX_BLOCKS_IN_MCU * SIZEOF(JBLOCK));
;;;730 for (i = 0; i < D_MAX_BLOCKS_IN_MCU; i++) {
000086 2000 MOVS r0,#0
|L5.136|
;;;731 coef->MCU_buffer[i] = buffer + i;
000088 eb0112c0 ADD r2,r1,r0,LSL #7
00008c eb040380 ADD r3,r4,r0,LSL #2
000090 1c40 ADDS r0,r0,#1 ;730
000092 621a STR r2,[r3,#0x20] ;730
000094 280a CMP r0,#0xa ;730
000096 dbf7 BLT |L5.136|
;;;732 }
;;;733 coef->pub.consume_data = dummy_consume_data;
000098 4807 LDR r0,|L5.184|
;;;734 coef->pub.decompress_data = decompress_onepass;
00009a 6060 STR r0,[r4,#4]
00009c 4807 LDR r0,|L5.188|
;;;735 coef->pub.coef_arrays = NULL; /* flag for no virtual arrays */
00009e 60e0 STR r0,[r4,#0xc]
0000a0 2000 MOVS r0,#0
|L5.162|
0000a2 6120 STR r0,[r4,#0x10] ;718
;;;736 }
;;;737 }
0000a4 e8bd87fc POP {r2-r10,pc}
ENDP
|L5.168|
DCD start_input_pass
|L5.172|
DCD start_output_pass
|L5.176|
DCD consume_data
|L5.180|
DCD decompress_data
|L5.184|
DCD dummy_consume_data
|L5.188|
DCD decompress_onepass
AREA ||i.start_iMCU_row||, CODE, READONLY, ALIGN=1
start_iMCU_row PROC
;;;78 LOCAL(void)
;;;79 start_iMCU_row (j_decompress_ptr cinfo)
000000 f8d02148 LDR r2,[r0,#0x148]
;;;80 /* Reset within-iMCU-row counters for a new row (input side) */
;;;81 {
;;;82 my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
;;;83
;;;84 /* In an interleaved scan, an MCU row is the same as an iMCU row.
;;;85 * In a noninterleaved scan, an iMCU row has v_samp_factor MCU rows.
;;;86 * But at the bottom of the image, process only what's left.
;;;87 */
;;;88 if (cinfo->comps_in_scan > 1) {
000004 f8d011ac LDR r1,[r0,#0x1ac]
000008 2a01 CMP r2,#1
00000a dd01 BLE |L6.16|
;;;89 coef->MCU_rows_per_iMCU_row = 1;
00000c 2001 MOVS r0,#1
00000e e00b B |L6.40|
|L6.16|
;;;90 } else {
;;;91 if (cinfo->input_iMCU_row < (cinfo->total_iMCU_rows-1))
000010 f8d02140 LDR r2,[r0,#0x140]
000014 f8d03094 LDR r3,[r0,#0x94]
000018 1e52 SUBS r2,r2,#1
;;;92 coef->MCU_rows_per_iMCU_row = cinfo->cur_comp_info[0]->v_samp_factor;
00001a f8d0014c LDR r0,[r0,#0x14c]
00001e 4293 CMP r3,r2 ;91
000020 d201 BCS |L6.38|
000022 68c0 LDR r0,[r0,#0xc]
000024 e000 B |L6.40|
|L6.38|
;;;93 else
;;;94 coef->MCU_rows_per_iMCU_row = cinfo->cur_comp_info[0]->last_row_height;
000026 6c80 LDR r0,[r0,#0x48]
|L6.40|
;;;95 }
;;;96
;;;97 coef->MCU_ctr = 0;
000028 61c8 STR r0,[r1,#0x1c]
00002a 2000 MOVS r0,#0
;;;98 coef->MCU_vert_offset = 0;
00002c 6148 STR r0,[r1,#0x14]
;;;99 }
00002e 6188 STR r0,[r1,#0x18]
000030 4770 BX lr
;;;100
ENDP
AREA ||i.start_input_pass||, CODE, READONLY, ALIGN=1
start_input_pass PROC
;;;106 METHODDEF(void)
;;;107 start_input_pass (j_decompress_ptr cinfo)
000000 2100 MOVS r1,#0
;;;108 {
;;;109 cinfo->input_iMCU_row = 0;
;;;110 start_iMCU_row(cinfo);
000002 f8c01094 STR r1,[r0,#0x94]
000006 f7ffbffe B.W start_iMCU_row
;;;111 }
;;;112
ENDP
AREA ||i.start_output_pass||, CODE, READONLY, ALIGN=1
start_output_pass PROC
;;;118 METHODDEF(void)
;;;119 start_output_pass (j_decompress_ptr cinfo)
000000 2100 MOVS r1,#0
;;;120 {
;;;121 #ifdef BLOCK_SMOOTHING_SUPPORTED
;;;122 my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
;;;123
;;;124 /* If multipass, check to see whether to use block smoothing on this pass */
;;;125 if (coef->pub.coef_arrays != NULL) {
;;;126 if (cinfo->do_block_smoothing && smoothing_ok(cinfo))
;;;127 coef->pub.decompress_data = decompress_smooth_data;
;;;128 else
;;;129 coef->pub.decompress_data = decompress_data;
;;;130 }
;;;131 #endif
;;;132 cinfo->output_iMCU_row = 0;
;;;133 }
000002 f8c0109c STR r1,[r0,#0x9c]
000006 4770 BX lr
;;;134
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -