📄 jdmarker.txt
字号:
;;;711 length -= numtoread;
;;;712
;;;713 /* process it */
;;;714 switch (cinfo->unread_marker) {
;;;715 case M_APP0:
;;;716 examine_app0(cinfo, (JOCTET FAR *) b, numtoread, length);
;;;717 break;
;;;718 case M_APP14:
;;;719 examine_app14(cinfo, (JOCTET FAR *) b, numtoread, length);
;;;720 break;
;;;721 default:
;;;722 /* can't get here unless jpeg_save_markers chooses wrong processor */
;;;723 ERREXIT1(cinfo, JERR_UNKNOWN_MARKER, cinfo->unread_marker);
;;;724 break;
;;;725 }
;;;726
;;;727 /* skip any remaining data -- could be lots */
;;;728 INPUT_SYNC(cinfo);
;;;729 if (length > 0)
;;;730 (*cinfo->src->skip_input_data) (cinfo, (long) length);
;;;731
;;;732 return TRUE;
;;;733 }
000068 b004 ADD sp,sp,#0x10
00006a e8bd9ff0 POP {r4-r12,pc}
|L7.110|
00006e e9d45600 LDRD r5,r6,[r4,#0] ;710
|L7.114|
000072 f8150b01 LDRB r0,[r5],#1 ;710
000076 1e76 SUBS r6,r6,#1 ;710
000078 f80b0007 STRB r0,[r11,r7] ;710
00007c 1c7f ADDS r7,r7,#1 ;709
|L7.126|
00007e 454f CMP r7,r9 ;709
000080 d3ec BCC |L7.92|
000082 f8d801a0 LDR r0,[r8,#0x1a0] ;714
000086 ebaa0709 SUB r7,r10,r9 ;711
00008a 28e0 CMP r0,#0xe0 ;714
00008c d008 BEQ |L7.160|
00008e 28ee CMP r0,#0xee ;714
000090 d10d BNE |L7.174|
000092 463b MOV r3,r7 ;719
000094 464a MOV r2,r9 ;719
000096 4669 MOV r1,sp ;719
000098 4640 MOV r0,r8 ;719
00009a f7fffffe BL examine_app14
00009e e014 B |L7.202|
|L7.160|
0000a0 463b MOV r3,r7 ;716
0000a2 464a MOV r2,r9 ;716
0000a4 4669 MOV r1,sp ;716
0000a6 4640 MOV r0,r8 ;716
0000a8 f7fffffe BL examine_app0
0000ac e00d B |L7.202|
|L7.174|
0000ae f8d80000 LDR r0,[r8,#0] ;723
0000b2 2144 MOVS r1,#0x44 ;723
0000b4 6141 STR r1,[r0,#0x14] ;723
0000b6 f8d80000 LDR r0,[r8,#0] ;723
0000ba f8d811a0 LDR r1,[r8,#0x1a0] ;723
0000be 6181 STR r1,[r0,#0x18] ;723
0000c0 f8d80000 LDR r0,[r8,#0] ;723
0000c4 6801 LDR r1,[r0,#0] ;723
0000c6 4640 MOV r0,r8 ;723
0000c8 4788 BLX r1 ;723
|L7.202|
0000ca c460 STM r4!,{r5,r6} ;729
0000cc 2f00 CMP r7,#0 ;729
0000ce dd05 BLE |L7.220|
0000d0 f8d80018 LDR r0,[r8,#0x18] ;730
0000d4 4639 MOV r1,r7 ;730
0000d6 6902 LDR r2,[r0,#0x10] ;730
0000d8 4640 MOV r0,r8 ;730
0000da 4790 BLX r2 ;730
|L7.220|
0000dc 2001 MOVS r0,#1 ;732
0000de e7c3 B |L7.104|
;;;734
ENDP
AREA ||i.get_sof||, CODE, READONLY, ALIGN=2
get_sof PROC
;;;236 LOCAL(boolean)
;;;237 get_sof (j_decompress_ptr cinfo, boolean is_prog, boolean is_arith)
000000 e92d47f0 PUSH {r4-r10,lr}
;;;238 /* Process a SOFn marker */
;;;239 {
;;;240 INT32 length;
;;;241 int c, ci;
;;;242 jpeg_component_info * compptr;
;;;243 INPUT_VARS(cinfo);
000004 6984 LDR r4,[r0,#0x18]
000006 4605 MOV r5,r0 ;239
;;;244
;;;245 cinfo->progressive_mode = is_prog;
000008 e9d46000 LDRD r6,r0,[r4,#0]
;;;246 cinfo->arith_code = is_arith;
;;;247
;;;248 INPUT_2BYTES(cinfo, length, return FALSE);
00000c e9c51237 STRD r1,r2,[r5,#0xdc]
000010 b930 CBNZ r0,|L8.32|
000012 68e1 LDR r1,[r4,#0xc]
000014 4628 MOV r0,r5
000016 4788 BLX r1
000018 2800 CMP r0,#0
|L8.26|
00001a d07e BEQ |L8.282|
00001c e9d46000 LDRD r6,r0,[r4,#0]
|L8.32|
000020 f8161b01 LDRB r1,[r6],#1
000024 1e40 SUBS r0,r0,#1
000026 ea4f2701 LSL r7,r1,#8
00002a d106 BNE |L8.58|
00002c 68e1 LDR r1,[r4,#0xc]
00002e 4628 MOV r0,r5
000030 4788 BLX r1
000032 2800 CMP r0,#0
000034 d0f1 BEQ |L8.26|
000036 e9d46000 LDRD r6,r0,[r4,#0]
|L8.58|
00003a f8161b01 LDRB r1,[r6],#1
00003e 1e40 SUBS r0,r0,#1
000040 440f ADD r7,r7,r1
;;;249
;;;250 INPUT_BYTE(cinfo, cinfo->data_precision, return FALSE);
000042 d106 BNE |L8.82|
000044 68e1 LDR r1,[r4,#0xc]
000046 4628 MOV r0,r5
000048 4788 BLX r1
00004a 2800 CMP r0,#0
00004c d0e5 BEQ |L8.26|
00004e e9d46000 LDRD r6,r0,[r4,#0]
|L8.82|
000052 f8161b01 LDRB r1,[r6],#1
000056 1e40 SUBS r0,r0,#1
;;;251 INPUT_2BYTES(cinfo, cinfo->image_height, return FALSE);
000058 f8c510d4 STR r1,[r5,#0xd4]
00005c d106 BNE |L8.108|
00005e 68e1 LDR r1,[r4,#0xc]
000060 4628 MOV r0,r5
000062 4788 BLX r1
000064 2800 CMP r0,#0
000066 d0d8 BEQ |L8.26|
000068 e9d46000 LDRD r6,r0,[r4,#0]
|L8.108|
00006c f8161b01 LDRB r1,[r6],#1
000070 1e40 SUBS r0,r0,#1
000072 ea4f2101 LSL r1,r1,#8
000076 6229 STR r1,[r5,#0x20]
000078 d106 BNE |L8.136|
00007a 68e1 LDR r1,[r4,#0xc]
00007c 4628 MOV r0,r5
00007e 4788 BLX r1
000080 2800 CMP r0,#0
000082 d0ca BEQ |L8.26|
000084 e9d46000 LDRD r6,r0,[r4,#0]
|L8.136|
000088 6a29 LDR r1,[r5,#0x20]
00008a f8162b01 LDRB r2,[r6],#1
00008e 1e40 SUBS r0,r0,#1
000090 4411 ADD r1,r1,r2
;;;252 INPUT_2BYTES(cinfo, cinfo->image_width, return FALSE);
000092 6229 STR r1,[r5,#0x20]
000094 d106 BNE |L8.164|
000096 68e1 LDR r1,[r4,#0xc]
000098 4628 MOV r0,r5
00009a 4788 BLX r1
00009c 2800 CMP r0,#0
00009e d0bc BEQ |L8.26|
0000a0 e9d46000 LDRD r6,r0,[r4,#0]
|L8.164|
0000a4 f8161b01 LDRB r1,[r6],#1
0000a8 1e40 SUBS r0,r0,#1
0000aa ea4f2101 LSL r1,r1,#8
0000ae 61e9 STR r1,[r5,#0x1c]
0000b0 d106 BNE |L8.192|
0000b2 68e1 LDR r1,[r4,#0xc]
0000b4 4628 MOV r0,r5
0000b6 4788 BLX r1
0000b8 2800 CMP r0,#0
0000ba d0ae BEQ |L8.26|
0000bc e9d46000 LDRD r6,r0,[r4,#0]
|L8.192|
0000c0 69e9 LDR r1,[r5,#0x1c]
0000c2 f8162b01 LDRB r2,[r6],#1
0000c6 1e40 SUBS r0,r0,#1
0000c8 4411 ADD r1,r1,r2
;;;253 INPUT_BYTE(cinfo, cinfo->num_components, return FALSE);
0000ca 61e9 STR r1,[r5,#0x1c]
0000cc d106 BNE |L8.220|
0000ce 68e1 LDR r1,[r4,#0xc]
0000d0 4628 MOV r0,r5
0000d2 4788 BLX r1
0000d4 2800 CMP r0,#0
0000d6 d078 BEQ |L8.458|
0000d8 e9d46000 LDRD r6,r0,[r4,#0]
|L8.220|
0000dc f1a00801 SUB r8,r0,#1
0000e0 f8160b01 LDRB r0,[r6],#1
;;;254
;;;255 length -= 8;
;;;256
;;;257 TRACEMS4(cinfo, 1, JTRC_SOF, cinfo->unread_marker,
0000e4 6268 STR r0,[r5,#0x24]
0000e6 6828 LDR r0,[r5,#0]
0000e8 f8d511a0 LDR r1,[r5,#0x1a0]
0000ec 6181 STR r1,[r0,#0x18]
0000ee 69e9 LDR r1,[r5,#0x1c]
0000f0 61c1 STR r1,[r0,#0x1c]
0000f2 6a29 LDR r1,[r5,#0x20]
0000f4 6201 STR r1,[r0,#0x20]
0000f6 6a69 LDR r1,[r5,#0x24]
0000f8 6241 STR r1,[r0,#0x24]
0000fa 6829 LDR r1,[r5,#0]
0000fc 2064 MOVS r0,#0x64
0000fe 6148 STR r0,[r1,#0x14]
000100 6828 LDR r0,[r5,#0]
000102 3f08 SUBS r7,r7,#8 ;255
000104 6842 LDR r2,[r0,#4]
000106 2101 MOVS r1,#1
000108 4628 MOV r0,r5
00010a 4790 BLX r2
;;;258 (int) cinfo->image_width, (int) cinfo->image_height,
;;;259 cinfo->num_components);
;;;260
;;;261 if (cinfo->marker->saw_SOF)
00010c f8d501b8 LDR r0,[r5,#0x1b8]
000110 6900 LDR r0,[r0,#0x10]
000112 b140 CBZ r0,|L8.294|
;;;262 ERREXIT(cinfo, JERR_SOF_DUPLICATE);
000114 203a MOVS r0,#0x3a
000116 6829 LDR r1,[r5,#0]
000118 e000 B |L8.284|
|L8.282|
00011a e056 B |L8.458|
|L8.284|
00011c 6148 STR r0,[r1,#0x14]
00011e 6828 LDR r0,[r5,#0]
000120 6801 LDR r1,[r0,#0]
000122 4628 MOV r0,r5
000124 4788 BLX r1
|L8.294|
;;;263
;;;264 /* We don't support files in which the image height is initially specified */
;;;265 /* as 0 and is later redefined by DNL. As long as we have to check that, */
;;;266 /* might as well have a general sanity check. */
;;;267 if (cinfo->image_height <= 0 || cinfo->image_width <= 0
000126 6a28 LDR r0,[r5,#0x20]
000128 b120 CBZ r0,|L8.308|
00012a 69e8 LDR r0,[r5,#0x1c]
00012c b110 CBZ r0,|L8.308|
;;;268 || cinfo->num_components <= 0)
00012e 6a68 LDR r0,[r5,#0x24]
000130 2800 CMP r0,#0
000132 dc06 BGT |L8.322|
|L8.308|
;;;269 ERREXIT(cinfo, JERR_EMPTY_IMAGE);
000134 6829 LDR r1,[r5,#0]
000136 2020 MOVS r0,#0x20
000138 6148 STR r0,[r1,#0x14]
00013a 6828 LDR r0,[r5,#0]
00013c 6801 LDR r1,[r0,#0]
00013e 4628 MOV r0,r5
000140 4788 BLX r1
|L8.322|
;;;270
;;;271 if (length != (cinfo->num_components * 3))
000142 6a68 LDR r0,[r5,#0x24]
000144 eb000040 ADD r0,r0,r0,LSL #1
000148 42b8 CMP r0,r7
00014a d006 BEQ |L8.346|
;;;272 ERREXIT(cinfo, JERR_BAD_LENGTH);
00014c 6829 LDR r1,[r5,#0]
00014e 200b MOVS r0,#0xb
000150 6148 STR r0,[r1,#0x14]
000152 6828 LDR r0,[r5,#0]
000154 6801 LDR r1,[r0,#0]
000156 4628 MOV r0,r5
000158 4788 BLX r1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -