📄 jdapimin.txt
字号:
jpeg_finish_decompress PROC
;;;368 GLOBAL(boolean)
;;;369 jpeg_finish_decompress (j_decompress_ptr cinfo)
000000 b570 PUSH {r4-r6,lr}
;;;370 {
000002 4604 MOV r4,r0
;;;371 if ((cinfo->global_state == DSTATE_SCANNING ||
000004 6940 LDR r0,[r0,#0x14]
;;;372 cinfo->global_state == DSTATE_RAW_OK) && ! cinfo->buffered_image) {
;;;373 /* Terminate final pass of non-buffered mode */
;;;374 if (cinfo->output_scanline < cinfo->output_height)
;;;375 ERREXIT(cinfo, JERR_TOO_LITTLE_DATA);
;;;376 (*cinfo->master->finish_output_pass) (cinfo);
;;;377 cinfo->global_state = DSTATE_STOPPING;
000006 25d2 MOVS r5,#0xd2
000008 28cd CMP r0,#0xcd ;371
00000a d001 BEQ |L6.16|
00000c 28ce CMP r0,#0xce ;372
00000e d113 BNE |L6.56|
|L6.16|
000010 6c21 LDR r1,[r4,#0x40] ;372
000012 b989 CBNZ r1,|L6.56|
000014 6f61 LDR r1,[r4,#0x74] ;374
000016 f8d4008c LDR r0,[r4,#0x8c] ;374
00001a 4288 CMP r0,r1 ;374
00001c d206 BCS |L6.44|
00001e 6821 LDR r1,[r4,#0] ;375
000020 2043 MOVS r0,#0x43 ;375
000022 6148 STR r0,[r1,#0x14] ;375
000024 6820 LDR r0,[r4,#0] ;375
000026 6801 LDR r1,[r0,#0] ;375
000028 4620 MOV r0,r4 ;375
00002a 4788 BLX r1 ;375
|L6.44|
00002c f8d401a4 LDR r0,[r4,#0x1a4] ;376
000030 6841 LDR r1,[r0,#4] ;376
000032 4620 MOV r0,r4 ;376
000034 4788 BLX r1 ;376
000036 e001 B |L6.60|
|L6.56|
;;;378 } else if (cinfo->global_state == DSTATE_BUFIMAGE) {
000038 28cf CMP r0,#0xcf
00003a d101 BNE |L6.64|
|L6.60|
;;;379 /* Finishing after a buffered-image operation */
;;;380 cinfo->global_state = DSTATE_STOPPING;
00003c 6165 STR r5,[r4,#0x14]
00003e e011 B |L6.100|
|L6.64|
;;;381 } else if (cinfo->global_state != DSTATE_STOPPING) {
000040 28d2 CMP r0,#0xd2
000042 d00f BEQ |L6.100|
;;;382 /* STOPPING = repeat call after a suspension, anything else is error */
;;;383 ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
000044 6821 LDR r1,[r4,#0]
000046 2014 MOVS r0,#0x14
000048 6148 STR r0,[r1,#0x14]
00004a 6821 LDR r1,[r4,#0]
00004c 6960 LDR r0,[r4,#0x14]
00004e 6188 STR r0,[r1,#0x18]
000050 6820 LDR r0,[r4,#0]
000052 6801 LDR r1,[r0,#0]
000054 4620 MOV r0,r4
000056 4788 BLX r1
000058 e004 B |L6.100|
|L6.90|
;;;384 }
;;;385 /* Read until EOI */
;;;386 while (! cinfo->inputctl->eoi_reached) {
;;;387 if ((*cinfo->inputctl->consume_input) (cinfo) == JPEG_SUSPENDED)
00005a 6801 LDR r1,[r0,#0]
00005c 4620 MOV r0,r4
00005e 4788 BLX r1
000060 2800 CMP r0,#0
000062 d00c BEQ |L6.126|
|L6.100|
000064 f8d401b4 LDR r0,[r4,#0x1b4] ;386
000068 6941 LDR r1,[r0,#0x14] ;386
00006a 2900 CMP r1,#0 ;386
00006c d0f5 BEQ |L6.90|
;;;388 return FALSE; /* Suspend, come back later */
;;;389 }
;;;390 /* Do final cleanup */
;;;391 (*cinfo->src->term_source) (cinfo);
00006e 69a0 LDR r0,[r4,#0x18]
000070 6981 LDR r1,[r0,#0x18]
000072 4620 MOV r0,r4
000074 4788 BLX r1
;;;392 /* We can use jpeg_abort to release memory and reset global_state */
;;;393 jpeg_abort((j_common_ptr) cinfo);
000076 4620 MOV r0,r4
000078 f7fffffe BL jpeg_abort
;;;394 return TRUE;
00007c 2001 MOVS r0,#1
|L6.126|
;;;395 }
00007e bd70 POP {r4-r6,pc}
ENDP
AREA ||i.jpeg_has_multiple_scans||, CODE, READONLY, ALIGN=1
jpeg_has_multiple_scans PROC
;;;348 GLOBAL(boolean)
;;;349 jpeg_has_multiple_scans (j_decompress_ptr cinfo)
000000 b510 PUSH {r4,lr}
;;;350 {
000002 4604 MOV r4,r0
;;;351 /* Only valid after jpeg_read_header completes */
;;;352 if (cinfo->global_state < DSTATE_READY ||
000004 6940 LDR r0,[r0,#0x14]
000006 38ca SUBS r0,r0,#0xca
000008 2809 CMP r0,#9
00000a d309 BCC |L7.32|
;;;353 cinfo->global_state > DSTATE_STOPPING)
;;;354 ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
00000c 6821 LDR r1,[r4,#0]
00000e 2014 MOVS r0,#0x14
000010 6148 STR r0,[r1,#0x14]
000012 6821 LDR r1,[r4,#0]
000014 6960 LDR r0,[r4,#0x14]
000016 6188 STR r0,[r1,#0x18]
000018 6820 LDR r0,[r4,#0]
00001a 6801 LDR r1,[r0,#0]
00001c 4620 MOV r0,r4
00001e 4788 BLX r1
|L7.32|
;;;355 return cinfo->inputctl->has_multiple_scans;
000020 f8d401b4 LDR r0,[r4,#0x1b4]
000024 6900 LDR r0,[r0,#0x10]
;;;356 }
000026 bd10 POP {r4,pc}
;;;357
ENDP
AREA ||i.jpeg_input_complete||, CODE, READONLY, ALIGN=1
jpeg_input_complete PROC
;;;333 GLOBAL(boolean)
;;;334 jpeg_input_complete (j_decompress_ptr cinfo)
000000 b510 PUSH {r4,lr}
;;;335 {
000002 4604 MOV r4,r0
;;;336 /* Check for valid jpeg object */
;;;337 if (cinfo->global_state < DSTATE_START ||
000004 6940 LDR r0,[r0,#0x14]
000006 38c8 SUBS r0,r0,#0xc8
000008 280b CMP r0,#0xb
00000a d309 BCC |L8.32|
;;;338 cinfo->global_state > DSTATE_STOPPING)
;;;339 ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
00000c 6821 LDR r1,[r4,#0]
00000e 2014 MOVS r0,#0x14
000010 6148 STR r0,[r1,#0x14]
000012 6821 LDR r1,[r4,#0]
000014 6960 LDR r0,[r4,#0x14]
000016 6188 STR r0,[r1,#0x18]
000018 6820 LDR r0,[r4,#0]
00001a 6801 LDR r1,[r0,#0]
00001c 4620 MOV r0,r4
00001e 4788 BLX r1
|L8.32|
;;;340 return cinfo->inputctl->eoi_reached;
000020 f8d401b4 LDR r0,[r4,#0x1b4]
000024 6940 LDR r0,[r0,#0x14]
;;;341 }
000026 bd10 POP {r4,pc}
;;;342
ENDP
AREA ||i.jpeg_read_header||, CODE, READONLY, ALIGN=1
jpeg_read_header PROC
;;;240 GLOBAL(int)
;;;241 jpeg_read_header (j_decompress_ptr cinfo, boolean require_image)
000000 b570 PUSH {r4-r6,lr}
;;;242 {
000002 4604 MOV r4,r0
;;;243 int retcode;
;;;244
;;;245 if (cinfo->global_state != DSTATE_START &&
000004 6940 LDR r0,[r0,#0x14]
000006 460d MOV r5,r1 ;242
000008 28c8 CMP r0,#0xc8
00000a d00b BEQ |L9.36|
;;;246 cinfo->global_state != DSTATE_INHEADER)
00000c 28c9 CMP r0,#0xc9
00000e d009 BEQ |L9.36|
;;;247 ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
000010 6821 LDR r1,[r4,#0]
000012 2014 MOVS r0,#0x14
000014 6148 STR r0,[r1,#0x14]
000016 6821 LDR r1,[r4,#0]
000018 6960 LDR r0,[r4,#0x14]
00001a 6188 STR r0,[r1,#0x18]
00001c 6820 LDR r0,[r4,#0]
00001e 6801 LDR r1,[r0,#0]
000020 4620 MOV r0,r4
000022 4788 BLX r1
|L9.36|
;;;248
;;;249 retcode = jpeg_consume_input(cinfo);
000024 4620 MOV r0,r4
000026 f7fffffe BL jpeg_consume_input
00002a 0006 MOVS r6,r0
;;;250
;;;251 switch (retcode) {
00002c d00e BEQ |L9.76|
00002e 2801 CMP r0,#1
000030 d00c BEQ |L9.76|
000032 2802 CMP r0,#2
000034 d10a BNE |L9.76|
;;;252 case JPEG_REACHED_SOS:
;;;253 retcode = JPEG_HEADER_OK;
;;;254 break;
;;;255 case JPEG_REACHED_EOI:
;;;256 if (require_image) /* Complain if application wanted an image */
000036 b135 CBZ r5,|L9.70|
;;;257 ERREXIT(cinfo, JERR_NO_IMAGE);
000038 6821 LDR r1,[r4,#0]
00003a 2033 MOVS r0,#0x33
00003c 6148 STR r0,[r1,#0x14]
00003e 6820 LDR r0,[r4,#0]
000040 6801 LDR r1,[r0,#0]
000042 4620 MOV r0,r4
000044 4788 BLX r1
|L9.70|
;;;258 /* Reset to start state; it would be safer to require the application to
;;;259 * call jpeg_abort, but we can't change it now for compatibility reasons.
;;;260 * A side effect is to free any temporary memory (there shouldn't be any).
;;;261 */
;;;262 jpeg_abort((j_common_ptr) cinfo); /* sets state = DSTATE_START */
000046 4620 MOV r0,r4
000048 f7fffffe BL jpeg_abort
|L9.76|
;;;263 retcode = JPEG_HEADER_TABLES_ONLY;
;;;264 break;
;;;265 case JPEG_SUSPENDED:
;;;266 /* no work */
;;;267 break;
;;;268 }
;;;269
;;;270 return retcode;
00004c 4630 MOV r0,r6
;;;271 }
00004e bd70 POP {r4-r6,pc}
;;;272
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -