928,8 → 928,10 |
; num - ¯®à浪®¢ë© ®¬¥à ⥣ ( ç¨ ¥âáï á 1) |
; txt - 㪠§ ⥫ì ⥪áâ, ªã¤ ¡ã¤¥â § ¯¨á ® § 票¥ |
; t_max - ¬ ªá¨¬ «ìë© à §¬¥à ⥪áâ |
;output: |
; txt - § ¯®«ï¥âáï ⥪á⮬ ¢ ¢¨¤¥ "¯ à ¬¥âà: § 票¥", ¥á«¨ ¥ ©¤¥® â® ¯ãáâ ï áâப |
align 4 |
proc exif_get_app1_tag, app1:dword, num:dword, txt:dword, t_max:dword |
proc exif_get_tag, app1:dword, num:dword, txt:dword, t_max:dword |
pushad |
mov eax,[app1] |
mov edi,[txt] |
968,6 → 970,55 |
endp |
|
;input: |
; app1 - 㪠§ ⥫ì ç «® exif.app1 |
; id - ¨¤¥â¨ä¨ª â®à ⥣ § 票¥ ª®â®à®£® 㦮 ©â¨ |
; txt - 㪠§ ⥫ì ⥪áâ, ªã¤ ¡ã¤¥â § ¯¨á ® § 票¥ |
; t_max - ¬ ªá¨¬ «ìë© à §¬¥à ⥪áâ |
;output: |
; txt - § ¯®«ï¥âáï ⥪á⮬ ¢ ¢¨¤¥ "¯ à ¬¥âà: § 票¥", ¥á«¨ ¥ ©¤¥® â® ¯ãáâ ï áâப |
align 4 |
proc exif_get_tag_id, app1:dword, id:dword, txt:dword, t_max:dword |
pushad |
mov eax,[app1] |
mov edi,[txt] |
|
xor edx,edx |
mov byte[edi],dl |
cmp [eax],edx |
je .end_f ;¥á«¨ ¥ ©¤¥ 㪠§ ⥫ì ç «® exif.app1 |
|
mov ebx,[id] |
movzx edx,word[eax+offs_m_or_i] ;if 'MM' edx=1 |
bt edx,0 |
jnc @f |
ror bx,8 |
@@: |
|
;¡¥à¥¬ ç¨á«® ⥣®¢ |
mov eax,[eax] |
movzx ecx,word[eax] |
bt edx,0 |
jnc @f |
ror cx,8 |
@@: |
;¢ ecx - ç¨á«® ⥣®¢ |
|
;¨é¥¬ § ¤ ë© â¥£ |
add eax,offs_tag_0 |
.cycle_0: |
cmp word[eax],bx ;word[eax+0] - ª®¤ ⥣ |
je @f |
add eax,tag_size |
loop .cycle_0 |
jmp .end_f |
@@: |
stdcall read_tag_value,[app1],[t_max] |
.end_f: |
popad |
ret |
endp |
|
;input: |
; app1 - 㪠§ ⥫ì exif.app1 ¨«¨ exif.app1.child |
; child - 㪠§ â¥«ì ¤«ï § ¯®«¥¨ï ç « ¤®ç¥à¨å ⥣®¢ exif.app1.child |
; c_tag - ⥣ ¤«ï ª®â®à®£® ¤¥« ¥âáï ¯®¨áª ¤®ç¥à¨å |
974,7 → 1025,7 |
;output: |
; child - 㪠§ ⥫ì ç «® ¤®ç¥à¨å ⥣®¢ |
align 4 |
proc exif_get_app1_child, app1:dword, child:dword , c_tag:dword |
proc exif_get_child, app1:dword, child:dword , c_tag:dword |
pushad |
mov eax,[app1] |
mov edi,[child] |
1106,11 → 1157,11 |
|
.suport: |
; 室¨¬ ⥣ 0x8769 (à áè¨à¥ë¥ ¤ ë¥ ¯® Exif) |
stdcall exif_get_app1_child, eax,edi,0x8769 |
stdcall exif_get_child, eax,edi,0x8769 |
cmp dword[edi],0 |
je .no_suport |
; 室¨¬ ⥣ 0x927c (¤ ë¥ Maker ¯® ª ¬¥à¥) |
stdcall exif_get_app1_child, edi,edi, 0x927c |
stdcall exif_get_child, edi,edi, 0x927c |
cmp dword[edi],0 |
je .no_suport |
|
1673,11 → 1724,14 |
align 16 |
EXPORTS: |
dd sz_exif_get_app1, exif_get_app1 |
dd sz_exif_get_app1_tag, exif_get_app1_tag |
dd sz_exif_get_app1_child, exif_get_app1_child |
dd sz_exif_get_app2, exif_get_app2 |
dd sz_exif_get_tag, exif_get_tag |
dd sz_exif_get_tag_id, exif_get_tag_id |
dd sz_exif_get_child, exif_get_child |
dd 0,0 |
sz_exif_get_app1 db 'exif_get_app1',0 |
sz_exif_get_app1_tag db 'exif_get_app1_tag',0 |
sz_exif_get_app1_child db 'exif_get_app1_child',0 |
sz_exif_get_app2 db 'exif_get_app2',0 |
sz_exif_get_tag db 'exif_get_tag',0 |
sz_exif_get_tag_id db 'exif_get_tag_id',0 |
sz_exif_get_child db 'exif_get_child',0 |
|