Rev 4994 | Rev 5002 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4994 | Rev 4995 | ||
---|---|---|---|
Line 15... | Line 15... | ||
15 | ;ä®à¬ âë ¤ ëå |
15 | ;ä®à¬ âë ¤ ëå |
16 | tag_format_ui1b equ 1 ;unsigned integer 1 byte |
16 | tag_format_ui1b equ 1 ;unsigned integer 1 byte |
17 | tag_format_text equ 2 ;ascii string |
17 | tag_format_text equ 2 ;ascii string |
18 | tag_format_ui2b equ 3 ;unsigned integer 2 byte |
18 | tag_format_ui2b equ 3 ;unsigned integer 2 byte |
19 | tag_format_ui4b equ 4 ;unsigned integer 4 byte |
19 | tag_format_ui4b equ 4 ;unsigned integer 4 byte |
20 | tag_format_ui8b equ 5 ;unsigned integer 8 byte |
20 | tag_format_urb equ 5 ;unsigned integer 4/4 byte |
21 | tag_format_si1b equ 6 ;signed integer 1 byte |
21 | tag_format_si1b equ 6 ;signed integer 1 byte |
22 | tag_format_undef equ 7 ;undefined |
22 | tag_format_undef equ 7 ;undefined |
23 | tag_format_si2b equ 8 ;signed integer 2 byte |
23 | tag_format_si2b equ 8 ;signed integer 2 byte |
24 | tag_format_si4b equ 9 ;signed integer 4 byte |
24 | tag_format_si4b equ 9 ;signed integer 4 byte |
25 | tag_format_si8b equ 10 ;signed integer 8 byte |
25 | tag_format_srb equ 10 ;signed integer 4/4 byte |
26 | tag_format_f4b equ 11 ;float 4 byte |
26 | tag_format_f4b equ 11 ;float 4 byte |
27 | tag_format_f8b equ 12 ;float 8 byte |
27 | tag_format_f8b equ 12 ;float 8 byte |
Line 28... | Line 28... | ||
28 | 28 | ||
29 | align 4 |
29 | align 4 |
- | 30 | txt_dp db ': ',0 |
|
Line 30... | Line 31... | ||
30 | txt_dp db ': ',0 |
31 | txt_div db '/',0 |
31 | 32 | ||
32 | ; |
33 | ; |
Line 50... | Line 51... | ||
50 | db 0x82,0x98,'Copyright',0 |
51 | db 0x82,0x98,'Copyright',0 |
51 | db 0x87,0x69,'Exif offset',0 |
52 | db 0x87,0x69,'Exif offset',0 |
Line 52... | Line 53... | ||
52 | 53 | ||
Line -... | Line 54... | ||
- | 54 | db 0x88,0x25,'GPS Info',0 |
|
- | 55 | ||
- | 56 | db 0xa4,0x01,'Custom rendered',0 |
|
- | 57 | db 0xa4,0x02,'Exposure mode',0 |
|
- | 58 | db 0xa4,0x03,'White balance',0 |
|
- | 59 | db 0xa4,0x04,'Digital zoom ratio',0 |
|
- | 60 | db 0xa4,0x05,'Focal length in 35mm format',0 |
|
- | 61 | db 0xa4,0x06,'Scene capture type',0 |
|
- | 62 | db 0xa4,0x07,'Gain control',0 |
|
- | 63 | db 0xa4,0x08,'Contrast',0 |
|
- | 64 | db 0xa4,0x09,'Saturation',0 |
|
- | 65 | db 0xa4,0x0a,'Sharpness',0 |
|
- | 66 | db 0xa4,0x0b,'Device setting description',0 |
|
- | 67 | db 0xa4,0x0c,'Subject distance range',0 |
|
- | 68 | db 0xa4,0x20,'Image unique ID',0 |
|
- | 69 | db 0xa4,0x30,'Owner name',0 |
|
- | 70 | db 0xa4,0x31,'Serial number',0 |
|
- | 71 | db 0xa4,0x32,'Lens info',0 |
|
- | 72 | db 0xa4,0x33,'Lens make',0 |
|
- | 73 | db 0xa4,0x34,'Lens model',0 |
|
- | 74 | db 0xa4,0x35,'Lens serial number',0 |
|
- | 75 | db 0xa4,0x80,'GDAL metadata',0 |
|
- | 76 | db 0xa4,0x81,'GDAL no data',0 |
|
- | 77 | db 0xa5,0x00,'Gamma',0 |
|
- | 78 | db 0xaf,0xc0,'Expand software',0 |
|
- | 79 | db 0xaf,0xc1,'Expand lens',0 |
|
- | 80 | db 0xaf,0xc2,'Expand film',0 |
|
- | 81 | db 0xaf,0xc3,'Expand filterLens',0 |
|
- | 82 | db 0xaf,0xc4,'Expand scanner',0 |
|
- | 83 | db 0xaf,0xc5,'Expand flash lamp',0 |
|
53 | db 0x88,0x25,'GPS Info',0 |
84 | |
Line 54... | Line 85... | ||
54 | 85 | db 0xea,0x1c,'Padding',0 |
|
55 | dw 0 |
86 | dw 0 |
Line 156... | Line 187... | ||
156 | 187 | ||
157 | ;ª®¯¨à㥬 áâபã |
188 | ;ª®¯¨à㥬 áâபã |
158 | add esi,2 |
189 | add esi,2 |
Line -... | Line 190... | ||
- | 190 | stdcall str_n_cat,edi,esi,[t_max] |
|
- | 191 | ||
- | 192 | jmp @f |
|
- | 193 | .tag_unknown: |
|
- | 194 | mov dword[edi],'???' |
|
- | 195 | mov byte[edi+3],0 |
|
159 | stdcall str_n_cat,edi,esi,[t_max] |
196 | @@: |
160 | 197 | ||
161 | ;ç¨â ¥¬ ¨ä®à¬ æ¨î ¢ ⥣¥ |
198 | ;ç¨â ¥¬ ¨ä®à¬ æ¨î ¢ ⥣¥ |
162 | mov bx,tag_format_text |
199 | mov bx,tag_format_text |
163 | bt edx,0 |
200 | bt edx,0 |
164 | jnc @f |
201 | jnc @f |
165 | ror bx,8 |
202 | ror bx,8 |
166 | @@: |
203 | @@: |
167 | cmp word[eax+2],bx |
204 | cmp word[eax+2],bx |
168 | jne .tag_02 |
205 | jne .tag_02 |
169 | stdcall str_n_cat,edi,txt_dp,[t_max] |
- | |
170 | ;¯à®¢¥à塞 ¤«¨ã áâப¨ |
- | |
171 | mov ebx,dword[eax+4] |
- | |
172 | bt edx,0 |
- | |
173 | jnc @f |
- | |
174 | ror bx,8 |
- | |
175 | ror ebx,16 |
- | |
176 | ror bx,8 |
206 | stdcall str_n_cat,edi,txt_dp,[t_max] |
177 | @@: |
207 | call get_tag_data_size ;¯à®¢¥à塞 ¤«¨ã áâப¨ |
178 | cmp ebx,4 |
208 | cmp ebx,4 |
179 | jg @f |
209 | jg @f |
180 | ;¥á«¨ áâப ¯®¬¥é ¥âáï ¢ 4 ᨬ¢®« |
210 | ;¥á«¨ áâப ¯®¬¥é ¥âáï ¢ 4 ᨬ¢®« |
Line 192... | Line 222... | ||
192 | ror si,8 |
222 | ror si,8 |
193 | @@: |
223 | @@: |
194 | add esi,offs_m_or_i |
224 | add esi,offs_m_or_i |
195 | add esi,[app1] |
225 | add esi,[app1] |
196 | stdcall str_n_cat,edi,esi,[t_max] |
226 | stdcall str_n_cat,edi,esi,[t_max] |
197 | ;;;jmp .end_f |
227 | jmp .end_f |
198 | .tag_02: |
228 | .tag_02: |
Line -... | Line 229... | ||
- | 229 | ||
- | 230 | mov bx,tag_format_ui2b |
|
- | 231 | bt edx,0 |
|
- | 232 | jnc @f |
|
- | 233 | ror bx,8 |
|
- | 234 | @@: |
|
- | 235 | cmp word[eax+2],bx |
|
- | 236 | jne .tag_03 |
|
- | 237 | stdcall str_n_cat,edi,txt_dp,[t_max] |
|
- | 238 | call get_tag_data_size |
|
- | 239 | cmp ebx,1 |
|
- | 240 | jg .over4b_03 |
|
- | 241 | ;¥á«¨ ®¤® 2 ¡ ©â®¢®¥ ç¨á«® |
|
- | 242 | movzx ebx,word[eax+8] |
|
- | 243 | bt edx,0 |
|
- | 244 | jnc @f |
|
- | 245 | ror bx,8 |
|
- | 246 | @@: |
|
- | 247 | stdcall str_len,edi |
|
- | 248 | add edi,eax |
|
- | 249 | mov eax,ebx |
|
- | 250 | call convert_int_to_str ;[t_max] |
|
- | 251 | .over4b_03: |
|
199 | 252 | ;... |
|
200 | jmp .end_f |
253 | jmp .end_f |
- | 254 | .tag_03: |
|
- | 255 | ||
- | 256 | mov bx,tag_format_ui4b |
|
- | 257 | bt edx,0 |
|
- | 258 | jnc @f |
|
- | 259 | ror bx,8 |
|
- | 260 | @@: |
|
- | 261 | cmp word[eax+2],bx |
|
- | 262 | jne .tag_04 |
|
- | 263 | stdcall str_n_cat,edi,txt_dp,[t_max] |
|
- | 264 | call get_tag_data_size |
|
- | 265 | cmp ebx,1 |
|
- | 266 | jg .over4b_04 |
|
- | 267 | ;¥á«¨ ®¤® 4 ¡ ©â®¢®¥ ç¨á«® |
|
- | 268 | mov ebx,dword[eax+8] |
|
- | 269 | bt edx,0 |
|
- | 270 | jnc @f |
|
- | 271 | ror bx,8 |
|
- | 272 | ror ebx,16 |
|
- | 273 | ror bx,8 |
|
- | 274 | @@: |
|
- | 275 | stdcall str_len,edi |
|
- | 276 | add edi,eax |
|
- | 277 | mov eax,ebx |
|
- | 278 | call convert_int_to_str ;[t_max] |
|
- | 279 | .over4b_04: |
|
- | 280 | ;... |
|
- | 281 | jmp .end_f |
|
- | 282 | .tag_04: |
|
- | 283 | ||
- | 284 | mov bx,tag_format_urb |
|
- | 285 | bt edx,0 |
|
- | 286 | jnc @f |
|
- | 287 | ror bx,8 |
|
- | 288 | @@: |
|
- | 289 | cmp word[eax+2],bx |
|
- | 290 | jne .tag_05 |
|
- | 291 | stdcall str_n_cat,edi,txt_dp,[t_max] |
|
- | 292 | ;call get_tag_data_size |
|
- | 293 | ;cmp ebx,1 |
|
201 | .tag_unknown: |
294 | ;jg .over4b_05 |
- | 295 | mov ebx,dword[eax+8] |
|
- | 296 | bt edx,0 |
|
- | 297 | jnc @f |
|
- | 298 | ror bx,8 |
|
- | 299 | ror ebx,16 |
|
- | 300 | ror bx,8 |
|
- | 301 | @@: |
|
- | 302 | stdcall str_len,edi |
|
- | 303 | add edi,eax |
|
- | 304 | add ebx,offs_m_or_i |
|
- | 305 | add ebx,[app1] |
|
- | 306 | mov eax,[ebx] |
|
- | 307 | bt edx,0 |
|
- | 308 | jnc @f |
|
- | 309 | ror ax,8 |
|
- | 310 | ror eax,16 |
|
- | 311 | ror ax,8 |
|
- | 312 | @@: |
|
- | 313 | call convert_int_to_str ;áâ ¢¨¬ 1-¥ ç¨á«® |
|
- | 314 | stdcall str_n_cat,edi,txt_div,[t_max] ;áâ ¢¨¬ § ª ¤¥«¥¨ï |
|
- | 315 | stdcall str_len,edi |
|
202 | mov dword[edi],'???' |
316 | add edi,eax |
- | 317 | mov eax,[ebx+4] |
|
- | 318 | bt edx,0 |
|
- | 319 | jnc @f |
|
- | 320 | ror ax,8 |
|
- | 321 | ror eax,16 |
|
- | 322 | ror ax,8 |
|
- | 323 | @@: |
|
- | 324 | call convert_int_to_str ;áâ ¢¨¬ 2-¥ ç¨á«® |
|
- | 325 | ;.over4b_05: |
|
- | 326 | ;... |
|
- | 327 | ;jmp .end_f |
|
- | 328 | .tag_05: |
|
203 | mov byte[edi+3],0 |
329 | |
204 | .end_f: |
330 | .end_f: |
205 | popad |
331 | popad |
206 | ret |
332 | ret |
Line -... | Line 333... | ||
- | 333 | endp |
|
- | 334 | ||
- | 335 | ;input: |
|
- | 336 | ; eax - tag pointer |
|
- | 337 | ; edx - 1 if 'MM', 0 if 'II' |
|
207 | endp |
338 | ;output: |
208 | 339 | ; ebx - data size |
|
209 | align 4 |
340 | align 4 |
- | 341 | get_tag_data_size: |
|
- | 342 | mov ebx,dword[eax+4] |
|
- | 343 | bt edx,0 |
|
- | 344 | jnc @f |
|
- | 345 | ror bx,8 |
|
210 | proc exif_get_image_160_120 uses edi, app1:dword |
346 | ror ebx,16 |
211 | mov edi,[app1] |
347 | ror bx,8 |
212 | - | ||
Line 213... | Line 348... | ||
213 | ret |
348 | @@: |
214 | endp |
349 | ret |
215 | 350 | ||
216 | align 4 |
351 | align 4 |
Line 239... | Line 374... | ||
239 | @@: |
374 | @@: |
240 | sub eax,[str1] |
375 | sub eax,[str1] |
241 | ret |
376 | ret |
242 | endp |
377 | endp |
Line -... | Line 378... | ||
- | 378 | ||
- | 379 | ;input: |
|
- | 380 | ; eax = value |
|
- | 381 | ; edi = string buffer |
|
- | 382 | ;output: |
|
- | 383 | align 4 |
|
- | 384 | convert_int_to_str: |
|
- | 385 | pushad |
|
- | 386 | mov dword[edi+1],0 |
|
- | 387 | mov dword[edi+5],0 |
|
- | 388 | call .str |
|
- | 389 | popad |
|
- | 390 | ret |
|
- | 391 | ||
- | 392 | align 4 |
|
- | 393 | .str: |
|
- | 394 | mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«® |
|
- | 395 | ;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®© |
|
- | 396 | cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax |
|
- | 397 | jb @f |
|
- | 398 | xor edx,edx ;®ç¨áâ¨âì edx |
|
- | 399 | div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
|
- | 400 | push edx ;¯®«®¦¨âì ¢ á⥪ |
|
- | 401 | ;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨ |
|
- | 402 | call .str ;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
|
- | 403 | pop eax |
|
- | 404 | @@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
|
- | 405 | or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥ |
|
- | 406 | stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi |
|
- | 407 | ret ;¢¥àãâìáï ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
|
- | 408 | ||
- | 409 | ||
243 | 410 | ||
244 | align 16 |
411 | align 16 |
245 | EXPORTS: |
412 | EXPORTS: |
246 | dd sz_exif_get_app1, exif_get_app1 |
413 | dd sz_exif_get_app1, exif_get_app1 |
247 | dd sz_exif_get_app1_tag, exif_get_app1_tag |
- | |
248 | ;dd sz_exif_get_image_160_120, exif_get_image_160_120 |
414 | dd sz_exif_get_app1_tag, exif_get_app1_tag |
249 | dd 0,0 |
415 | dd 0,0 |
250 | sz_exif_get_app1 db 'exif_get_app1',0 |
416 | sz_exif_get_app1 db 'exif_get_app1',0 |
251 | sz_exif_get_app1_tag db 'exif_get_app1_tag',0 |
- | |
252 | ;sz_exif_get_image_160_120 db 'exif_get_image_160_120',0=> |
- |