📄 jdapimin.txt
字号:
;;;34 /* Guard against version mismatches between library and caller. */
;;;35 cinfo->mem = NULL; /* so jpeg_destroy knows mem mgr not called */
000004 2500 MOVS r5,#0
000006 4604 MOV r4,r0 ;31
000008 4616 MOV r6,r2 ;31
;;;36 if (version != JPEG_LIB_VERSION)
00000a 6045 STR r5,[r0,#4]
00000c 293e CMP r1,#0x3e
00000e d00b BEQ |L2.40|
;;;37 ERREXIT2(cinfo, JERR_BAD_LIB_VERSION, JPEG_LIB_VERSION, version);
000010 6822 LDR r2,[r4,#0]
000012 200c MOVS r0,#0xc
000014 6150 STR r0,[r2,#0x14]
000016 6822 LDR r2,[r4,#0]
000018 203e MOVS r0,#0x3e
00001a 6190 STR r0,[r2,#0x18]
00001c 6820 LDR r0,[r4,#0]
00001e 61c1 STR r1,[r0,#0x1c]
000020 6820 LDR r0,[r4,#0]
000022 6801 LDR r1,[r0,#0]
000024 4620 MOV r0,r4
000026 4788 BLX r1
|L2.40|
;;;38 if (structsize != SIZEOF(struct jpeg_decompress_struct))
000028 f44f78e8 MOV r8,#0x1d0
00002c 4546 CMP r6,r8
00002e d00b BEQ |L2.72|
;;;39 ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE,
000030 6821 LDR r1,[r4,#0]
000032 2015 MOVS r0,#0x15
000034 6148 STR r0,[r1,#0x14]
000036 6821 LDR r1,[r4,#0]
000038 f8c18018 STR r8,[r1,#0x18]
00003c 6820 LDR r0,[r4,#0]
00003e 61c6 STR r6,[r0,#0x1c]
000040 6820 LDR r0,[r4,#0]
000042 6801 LDR r1,[r0,#0]
000044 4620 MOV r0,r4
000046 4788 BLX r1
|L2.72|
;;;40 (int) SIZEOF(struct jpeg_decompress_struct), (int) structsize);
;;;41
;;;42 /* For debugging purposes, we zero the whole master structure.
;;;43 * But the application has already set the err pointer, and may have set
;;;44 * client_data, so we have to save and restore those fields.
;;;45 * Note: if application hasn't set client_data, tools like Purify may
;;;46 * complain here.
;;;47 */
;;;48 {
;;;49 struct jpeg_error_mgr * err = cinfo->err;
;;;50 void * client_data = cinfo->client_data; /* ignore Purify complaint here */
;;;51 MEMZERO(cinfo, SIZEOF(struct jpeg_decompress_struct));
000048 4641 MOV r1,r8
00004a 4620 MOV r0,r4
00004c 68e7 LDR r7,[r4,#0xc]
00004e 6826 LDR r6,[r4,#0]
000050 f7fffffe BL __aeabi_memclr4
;;;52 cinfo->err = err;
;;;53 cinfo->client_data = client_data;
;;;54 }
;;;55 cinfo->is_decompressor = TRUE;
000054 2001 MOVS r0,#1
;;;56
;;;57 /* Initialize a memory manager instance for this object */
;;;58 jinit_memory_mgr((j_common_ptr) cinfo);
000056 e9c47003 STRD r7,r0,[r4,#0xc]
00005a 6026 STR r6,[r4,#0]
00005c 4620 MOV r0,r4
00005e f7fffffe BL jinit_memory_mgr
;;;59
;;;60 /* Zero out pointers to permanent structures. */
;;;61 cinfo->progress = NULL;
;;;62 cinfo->src = NULL;
000062 60a5 STR r5,[r4,#8]
;;;63
;;;64 for (i = 0; i < NUM_QUANT_TBLS; i++)
000064 2000 MOVS r0,#0
000066 61a5 STR r5,[r4,#0x18]
|L2.104|
;;;65 cinfo->quant_tbl_ptrs[i] = NULL;
000068 eb040180 ADD r1,r4,r0,LSL #2
00006c 1c40 ADDS r0,r0,#1 ;64
00006e f8c150a4 STR r5,[r1,#0xa4] ;64
000072 2804 CMP r0,#4 ;64
000074 dbf8 BLT |L2.104|
;;;66
;;;67 for (i = 0; i < NUM_HUFF_TBLS; i++) {
000076 2000 MOVS r0,#0
|L2.120|
;;;68 cinfo->dc_huff_tbl_ptrs[i] = NULL;
000078 eb040180 ADD r1,r4,r0,LSL #2
00007c f8415fb4 STR r5,[r1,#0xb4]!
000080 1c40 ADDS r0,r0,#1 ;67
000082 610d STR r5,[r1,#0x10] ;67
000084 2804 CMP r0,#4 ;67
000086 dbf7 BLT |L2.120|
;;;69 cinfo->ac_huff_tbl_ptrs[i] = NULL;
;;;70 }
;;;71
;;;72 /* Initialize marker processor so application can override methods
;;;73 * for COM, APPn markers before calling jpeg_read_header.
;;;74 */
;;;75 cinfo->marker_list = NULL;
;;;76 jinit_marker_reader(cinfo);
000088 4620 MOV r0,r4
00008a f8c45130 STR r5,[r4,#0x130]
00008e f7fffffe BL jinit_marker_reader
;;;77
;;;78 /* And initialize the overall input controller. */
;;;79 jinit_input_controller(cinfo);
000092 4620 MOV r0,r4
000094 f7fffffe BL jinit_input_controller
;;;80
;;;81 /* OK, I'm ready */
;;;82 cinfo->global_state = DSTATE_START;
000098 20c8 MOVS r0,#0xc8
;;;83 }
00009a 6160 STR r0,[r4,#0x14]
00009c e8bd81f0 POP {r4-r8,pc}
;;;84
ENDP
AREA ||i.jpeg_abort_decompress||, CODE, READONLY, ALIGN=1
jpeg_abort_decompress PROC
;;;102 GLOBAL(void)
;;;103 jpeg_abort_decompress (j_decompress_ptr cinfo)
000000 f7ffbffe B.W jpeg_abort
;;;104 {
;;;105 jpeg_abort((j_common_ptr) cinfo); /* use common routine */
;;;106 }
;;;107
ENDP
AREA ||i.jpeg_consume_input||, CODE, READONLY, ALIGN=1
jpeg_consume_input PROC
;;;286 GLOBAL(int)
;;;287 jpeg_consume_input (j_decompress_ptr cinfo)
000000 b570 PUSH {r4-r6,lr}
;;;288 {
000002 4604 MOV r4,r0
;;;289 int retcode = JPEG_SUSPENDED;
;;;290
;;;291 /* NB: every possible DSTATE value should be listed in this switch */
;;;292 switch (cinfo->global_state) {
000004 6940 LDR r0,[r0,#0x14]
000006 2500 MOVS r5,#0 ;289
000008 38c8 SUBS r0,r0,#0xc8
00000a 280b CMP r0,#0xb
00000c d229 BCS |L4.98|
00000e e8dff000 TBB [pc,r0]
000012 0611 DCB 0x06,0x11
000014 1f212121 DCB 0x1f,0x21,0x21,0x21
000018 21212128 DCB 0x21,0x21,0x21,0x28
00001c 2100 DCB 0x21,0x00
;;;293 case DSTATE_START:
;;;294 /* Start-of-datastream actions: reset appropriate modules */
;;;295 (*cinfo->inputctl->reset_input_controller) (cinfo);
00001e f8d401b4 LDR r0,[r4,#0x1b4]
000022 6841 LDR r1,[r0,#4]
000024 4620 MOV r0,r4
000026 4788 BLX r1
;;;296 /* Initialize application's data source module */
;;;297 (*cinfo->src->init_source) (cinfo);
000028 69a0 LDR r0,[r4,#0x18]
00002a 6881 LDR r1,[r0,#8]
00002c 4620 MOV r0,r4
00002e 4788 BLX r1
;;;298 cinfo->global_state = DSTATE_INHEADER;
000030 20c9 MOVS r0,#0xc9
000032 6160 STR r0,[r4,#0x14]
;;;299 /*FALLTHROUGH*/
;;;300 case DSTATE_INHEADER:
;;;301 retcode = (*cinfo->inputctl->consume_input) (cinfo);
000034 f8d401b4 LDR r0,[r4,#0x1b4]
000038 6801 LDR r1,[r0,#0]
00003a 4620 MOV r0,r4
00003c 4788 BLX r1
00003e 4605 MOV r5,r0
;;;302 if (retcode == JPEG_REACHED_SOS) { /* Found SOS, prepare to decompress */
000040 2801 CMP r0,#1
000042 d118 BNE |L4.118|
;;;303 /* Set up default parameters based on header data */
;;;304 default_decompress_parms(cinfo);
000044 4620 MOV r0,r4
000046 f7fffffe BL default_decompress_parms
;;;305 /* Set global state: ready for start_decompress */
;;;306 cinfo->global_state = DSTATE_READY;
00004a 20ca MOVS r0,#0xca
00004c 6160 STR r0,[r4,#0x14]
00004e e012 B |L4.118|
;;;307 }
;;;308 break;
;;;309 case DSTATE_READY:
;;;310 /* Can't advance past first SOS until start_decompress is called */
;;;311 retcode = JPEG_REACHED_SOS;
000050 2501 MOVS r5,#1
;;;312 break;
000052 e010 B |L4.118|
;;;313 case DSTATE_PRELOAD:
;;;314 case DSTATE_PRESCAN:
;;;315 case DSTATE_SCANNING:
;;;316 case DSTATE_RAW_OK:
;;;317 case DSTATE_BUFIMAGE:
;;;318 case DSTATE_BUFPOST:
;;;319 case DSTATE_STOPPING:
;;;320 retcode = (*cinfo->inputctl->consume_input) (cinfo);
000054 f8d401b4 LDR r0,[r4,#0x1b4]
000058 6801 LDR r1,[r0,#0]
00005a 4620 MOV r0,r4
00005c 4788 BLX r1
00005e 4605 MOV r5,r0
;;;321 break;
000060 e009 B |L4.118|
|L4.98|
;;;322 default:
;;;323 ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
000062 6821 LDR r1,[r4,#0]
000064 2014 MOVS r0,#0x14
000066 6148 STR r0,[r1,#0x14]
000068 6821 LDR r1,[r4,#0]
00006a 6960 LDR r0,[r4,#0x14]
00006c 6188 STR r0,[r1,#0x18]
00006e 6820 LDR r0,[r4,#0]
000070 6801 LDR r1,[r0,#0]
000072 4620 MOV r0,r4
000074 4788 BLX r1
|L4.118|
;;;324 }
;;;325 return retcode;
000076 4628 MOV r0,r5
;;;326 }
000078 bd70 POP {r4-r6,pc}
;;;327
ENDP
AREA ||i.jpeg_destroy_decompress||, CODE, READONLY, ALIGN=1
jpeg_destroy_decompress PROC
;;;90 GLOBAL(void)
;;;91 jpeg_destroy_decompress (j_decompress_ptr cinfo)
000000 f7ffbffe B.W jpeg_destroy
;;;92 {
;;;93 jpeg_destroy((j_common_ptr) cinfo); /* use common routine */
;;;94 }
;;;95
ENDP
AREA ||i.jpeg_finish_decompress||, CODE, READONLY, ALIGN=1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -