Subversion Repositories Kolibri OS

Rev

Rev 6315 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. format MS COFF
  2. public EXPORTS
  3. section '.flat' code readable align 16
  4.  
  5. include '../../../../macros.inc'
  6. include '../../../../proc32.inc'
  7.  
  8.  
  9.  
  10. ;---------
  11. offs_m_or_i    equ  8 ;ᬥ饭¨¥ ¯ à ¬¥âà  'MM' ¨«¨ 'II' (Motorola, Intel)
  12. offs_id_gr     equ 10 ;ᬥ饭¨¥ id group
  13. offs_id_gr_mak equ 12 ;ᬥ饭¨¥ id group ¯à®¨§¢®¤¨â¥«ï
  14. offs_tag_0     equ  2 ;ᬥ饭¨¥ 0-£® ⥣ 
  15. tag_size       equ 12 ;à §¬¥à áâàãªâãàë ⥣ 
  16. ;ä®à¬ âë ¤ ­­ëå
  17. tag_format_ui1b  equ  1 ;unsigned integer 1 byte
  18. tag_format_text  equ  2 ;ascii string
  19. tag_format_ui2b  equ  3 ;unsigned integer 2 byte
  20. tag_format_ui4b  equ  4 ;unsigned integer 4 byte
  21. tag_format_urb   equ  5 ;unsigned integer 4/4 byte
  22. tag_format_si1b  equ  6 ;signed integer 1 byte
  23. tag_format_undef equ  7 ;undefined
  24. tag_format_si2b  equ  8 ;signed integer 2 byte
  25. tag_format_si4b  equ  9 ;signed integer 4 byte
  26. tag_format_srb   equ 10 ;signed integer 4/4 byte
  27. tag_format_f4b   equ 11 ;float 4 byte
  28. tag_format_f8b   equ 12 ;float 8 byte
  29.  
  30. align 4
  31. txt_dp db ': ',0
  32. txt_zap db ', ',0
  33. txt_div db '/',0
  34.  
  35. ;§ £®«®¢®ª â ¡«¨æ á £à㯯 ¬¨ ⥣®¢
  36. align 4
  37. exif_tag_numbers:
  38. dd 0,      gr_0    ;£à㯯  app1
  39. dd 0x8769, gr_8769 ;Exif offset
  40. dd 0xa005, gr_a005 ;Interop offset
  41. dd 0x8825, gr_8825 ;GPS info
  42.  
  43. ;£àã¯ë app2 (§¤¥áì ã ª ¦¤®£® ¯à®¨§¢®¤¨â¥«ï ª ¬¥à ᢮© ä®à¬ â ⥣®¢)
  44. dw 0x927c ;app2 ¤«ï Nikon
  45. db 'Ni'
  46. dd gr_927c_Ni
  47.  
  48. dw 0x927c ;app2 ¤«ï Panasonic
  49. db 'Pa'
  50. dd gr_927c_Pa
  51.  
  52. dw 0x927c ;app2 ¤«ï Canon
  53. db 'Ca'
  54. dd gr_927c_Ca
  55.  
  56. dw 0x927c ;app2 ¤«ï Samsung
  57. db 'Sa'
  58. dd gr_927c_Sa
  59. .end:
  60.  
  61. align 4
  62. gr_0:
  63. db 0x00,0x0b,'Processing software',0
  64. db 0x00,0xfe,'Subfile type',0
  65. db 0x00,0xff,'OldSubfile type',0
  66. db 0x01,0x00,'Image width',0
  67. db 0x01,0x01,'Image height',0
  68. db 0x01,0x02,'Bits per sample',0
  69. db 0x01,0x03,'Compression',0
  70. db 0x01,0x06,'Photometric interpretation',0
  71. db 0x01,0x07,'Thresholding',0
  72. db 0x01,0x08,'Cell width',0
  73. db 0x01,0x09,'Cell length',0
  74. db 0x01,0x0a,'Fill order',0
  75. db 0x01,0x0d,'Document name',0
  76. db 0x01,0x0e,'Image description',0
  77. db 0x01,0x0f,'Manufacturer of digicam',0
  78. db 0x01,0x10,'Model',0
  79. db 0x01,0x11,'Strip offsets',0
  80. db 0x01,0x12,'Orientation',0
  81. db 0x01,0x15,'Samples per pixel',0
  82. db 0x01,0x16,'Rows per strip',0
  83. db 0x01,0x17,'Strip byte counts',0
  84. db 0x01,0x18,'Min sample value',0
  85. db 0x01,0x19,'Max sample value',0
  86. db 0x01,0x1a,'X resolution',0
  87. db 0x01,0x1b,'Y resolution',0
  88. db 0x01,0x1c,'Planar configuration',0
  89. db 0x01,0x1d,'Page name',0
  90. db 0x01,0x1e,'X position',0
  91. db 0x01,0x1f,'Y position',0
  92. db 0x01,0x20,'Free offsets',0
  93. db 0x01,0x21,'Free byte counts',0
  94. db 0x01,0x22,'Gray response unit',0
  95. db 0x01,0x23,'Gray response curve',0
  96. db 0x01,0x24,'T4 options',0
  97. db 0x01,0x25,'T6 options',0
  98. db 0x01,0x28,'Resolution unit',0
  99. db 0x01,0x29,'Page number',0
  100. db 0x01,0x2c,'Color response unit',0
  101. db 0x01,0x2d,'Transfer function',0
  102. db 0x01,0x31,'Software',0
  103. db 0x01,0x32,'Modify date',0
  104. db 0x01,0x3b,'Artist',0
  105. db 0x01,0x3c,'Host computer',0
  106. db 0x01,0x3d,'Predictor',0
  107. db 0x01,0x3e,'White point',0
  108. db 0x01,0x3f,'Primary chromaticities',0
  109. db 0x01,0x40,'Color map',0
  110. db 0x01,0x41,'Halftone hints',0
  111. db 0x01,0x42,'Tile width',0
  112. db 0x01,0x43,'Tile length',0
  113. db 0x01,0x44,'Tile offsets',0
  114. db 0x01,0x45,'Tile byte counts',0
  115. db 0x01,0x46,'Bad fax lines',0
  116. db 0x01,0x47,'Clean fax data',0
  117. db 0x01,0x48,'Consecutive bad fax lines',0
  118. db 0x01,0x4a,'Sub IFDs',0
  119. db 0x01,0x4c,'Ink set',0
  120. db 0x01,0x4d,'Ink names',0
  121. db 0x01,0x4e,'Numberof inks',0
  122. db 0x01,0x50,'Dot range',0
  123. db 0x01,0x51,'Target printer',0
  124. db 0x01,0x52,'Extra samples',0
  125. db 0x01,0x53,'Sample format',0
  126. db 0x01,0x54,'SMin sample value',0
  127. db 0x01,0x55,'SMax sample value',0
  128. db 0x01,0x56,'Transfer range',0
  129. db 0x01,0x57,'Clip path',0
  130. db 0x01,0x58,'X clip path units',0
  131. db 0x01,0x59,'Y clip path units',0
  132. db 0x01,0x5a,'Indexed',0
  133. db 0x01,0x5b,'JPEG tables',0
  134. db 0x01,0x5f,'OPIProxy',0
  135. db 0x01,0x90,'Global parameters IFD',0
  136. db 0x01,0x91,'Profile type',0
  137. db 0x01,0x92,'Fax profile',0
  138. db 0x01,0x93,'Coding methods',0
  139. db 0x01,0x94,'Version year',0
  140. db 0x01,0x95,'Mode number',0
  141. db 0x01,0xb1,'Decode',0
  142. db 0x01,0xb2,'Default image color',0
  143. db 0x01,0xb3,'T82 options',0
  144. db 0x01,0xb5,'JPEG tables',0 ;㦥 ¡ë«® ?
  145. db 0x02,0x00,'JPEG proc',0
  146. db 0x02,0x01,'Thumbnail offset',0
  147. db 0x02,0x02,'Thumbnail length',0
  148. db 0x02,0x03,'JPEG restart interval',0
  149. db 0x02,0x05,'JPEG lossless predictors',0
  150. db 0x02,0x06,'JPEG point transforms',0
  151. db 0x02,0x07,'JPEG QTables',0
  152. db 0x02,0x08,'JPEG DCTables',0
  153. db 0x02,0x09,'JPEG ACTables',0
  154. db 0x02,0x11,'YCbCrCoefficients',0
  155. db 0x02,0x12,'YCbCrSubSampling',0
  156. db 0x02,0x13,'YCbCrPositioning',0
  157. db 0x02,0x14,'Reference black white',0
  158. db 0x02,0x2f,'Strip row counts',0
  159. db 0x03,0xe7,'USPTO Miscellaneous',0
  160. db 0x47,0x46,'Rating',0
  161. db 0x47,0x47,'XP_DIP_XML',0
  162. db 0x47,0x48,'Stitch info',0
  163. db 0x47,0x49,'Rating percent',0
  164. db 0x80,0x0d,'Image ID',0
  165. db 0x80,0xa3,'Wang tag 1',0
  166. db 0x80,0xa4,'Wang annotation',0
  167. db 0x80,0xa5,'Wang tag 3',0
  168. db 0x80,0xa6,'Wang tag 4',0
  169. db 0x80,0xe3,'Matteing',0
  170. db 0x80,0xe4,'Data type',0
  171. db 0x80,0xe5,'Image depth',0
  172. db 0x80,0xe6,'Tile depth',0
  173. db 0x82,0x7d,'Model 2',0
  174. db 0x82,0x8d,'CFA repeat pattern dim',0
  175. db 0x82,0x8e,'CFA pattern 2',0
  176. db 0x82,0x8f,'Battery level',0
  177. db 0x82,0x90,'Kodak IFD',0
  178. db 0x82,0x98,'Copyright',0
  179. db 0x82,0xa5,'MD file tag',0
  180. db 0x82,0xa6,'MD scale pixel',0
  181. db 0x82,0xa7,'MD color table',0
  182. db 0x82,0xa8,'MD lab name',0
  183. db 0x82,0xa9,'MD sample info',0
  184. db 0x82,0xaa,'MD prep date',0
  185. db 0x82,0xab,'MD prep time',0
  186. db 0x82,0xac,'MD file units',0
  187. db 0x83,0x0e,'Pixel scale',0
  188. db 0x83,0x35,'Advent scale',0
  189. db 0x83,0x36,'Advent revision',0
  190. db 0x83,0x5c,'UIC1 tag',0
  191. db 0x83,0x5d,'UIC2 tag',0
  192. db 0x83,0x5e,'UIC3 tag',0
  193. db 0x83,0x5f,'UIC4 tag',0
  194. db 0x83,0xbb,'IPTC-NAA',0
  195. db 0x84,0x7e,'Intergraph packet data',0
  196. db 0x84,0x7f,'Intergraph flag registers',0
  197. db 0x84,0x80,'Intergraph matrix',0
  198. db 0x84,0x81,'INGR reserved',0
  199. db 0x84,0x82,'Model tie point',0
  200. db 0x84,0xe0,'Site',0
  201. db 0x84,0xe1,'Color sequence',0
  202. db 0x84,0xe2,'IT8 header',0
  203. db 0x84,0xe3,'Raster padding',0
  204. db 0x84,0xe4,'Bits per run length',0
  205. db 0x84,0xe5,'Bits per extended run length',0
  206. db 0x84,0xe6,'Color table',0
  207. db 0x84,0xe7,'Image color indicator',0
  208. db 0x84,0xe8,'Background color indicator',0
  209. db 0x84,0xe9,'Image color value',0
  210. db 0x84,0xea,'Background color value',0
  211. db 0x84,0xeb,'Pixel intensity range',0
  212. db 0x84,0xec,'Transparency indicator',0
  213. db 0x84,0xed,'Color characterization',0
  214. db 0x84,0xee,'HCUsage',0
  215. db 0x84,0xef,'Trap indicator',0
  216. db 0x84,0xf0,'CMYK equivalent',0
  217. db 0x85,0x46,'SEM info',0
  218. db 0x85,0x68,'AFCP_IPTC',0
  219. db 0x85,0xb8,'Pixel magic JBIG options',0
  220. db 0x85,0xd8,'Model transform',0
  221. db 0x86,0x02,'WB_GRGB levels',0
  222. db 0x86,0x06,'Leaf data',0
  223. db 0x86,0x49,'Photoshop settings',0
  224. db 0x87,0x69,'Exif offset',0
  225. db 0x87,0x73,'ICC_Profile',0
  226. db 0x87,0x7f,'TIFF_FX extensions',0
  227. db 0x87,0x80,'Multi profiles',0
  228. db 0x87,0x81,'Shared data',0
  229. db 0x87,0x82,'T88 options',0
  230. db 0x87,0xac,'Image layer',0
  231. db 0x87,0xaf,'Geo tiff directory',0
  232. db 0x87,0xb0,'Geo tiff double params',0
  233. db 0x87,0xb1,'Geo tiff ascii params',0
  234. db 0x88,0x25,'GPS info',0
  235. db 0x88,0x28,'Opto-Electric conv factor',0
  236. db 0x88,0x29,'Interlace',0
  237. db 0x88,0x5c,'Fax recv params',0
  238. db 0x88,0x5d,'Fax sub address',0
  239. db 0x88,0x5e,'Fax recv time',0
  240. db 0x88,0x8a,'Leaf sub IFD',0
  241. db 0x92,0x0b,'Flash energy',0
  242. db 0x92,0x0c,'Spatial frequency response',0
  243. db 0x92,0x0d,'Noise',0
  244. db 0x92,0x0e,'Focal plane X resolution',0
  245. db 0x92,0x0f,'Focal plane Y resolution',0
  246. db 0x92,0x10,'Focal plane resolution unit',0
  247. db 0x92,0x15,'Exposure index',0
  248. db 0x92,0x16,'TIFF-EP standard ID',0
  249. db 0x92,0x17,'Sensing method',0
  250. db 0x92,0x3a,'CIP3 data file',0
  251. db 0x92,0x3b,'CIP3 sheet',0
  252. db 0x92,0x3c,'CIP3 side',0
  253. db 0x92,0x3f,'Sto nits',0
  254. db 0x93,0x2f,'MS document text',0
  255. db 0x93,0x30,'MS property set storage',0
  256. db 0x93,0x31,'MS document text position',0
  257. db 0x93,0x5c,'Image source data',0
  258. db 0x9c,0x9b,'XP title',0
  259. db 0x9c,0x9c,'XP comment',0
  260. db 0x9c,0x9d,'XP author',0
  261. db 0x9c,0x9e,'XP keywords',0
  262. db 0x9c,0x9f,'XP subject',0
  263. db 0xa2,0x0c,'Spatial frequency fesponse',0
  264. db 0xa2,0x0d,'Noise',0
  265. db 0xa2,0x11,'Image number',0
  266. db 0xa2,0x12,'Security classification',0
  267. db 0xa2,0x13,'Image history',0
  268. db 0xa2,0x16,'TIFF-EP standard ID',0
  269. db 0xa4,0x80,'GDAL metadata',0
  270. db 0xa4,0x81,'GDAL no data',0
  271. db 0xaf,0xc0,'Expand software',0
  272. db 0xaf,0xc1,'Expand lens',0
  273. db 0xaf,0xc2,'Expand film',0
  274. db 0xaf,0xc3,'Expand filterLens',0
  275. db 0xaf,0xc4,'Expand scanner',0
  276. db 0xaf,0xc5,'Expand flash lamp',0
  277. db 0xbc,0x01,'Pixel format',0
  278. db 0xbc,0x02,'Transformation',0
  279. db 0xbc,0x03,'Uncompressed',0
  280. db 0xbc,0x04,'Image type',0
  281. db 0xbc,0x80,'Image width',0
  282. db 0xbc,0x81,'Image height',0
  283. db 0xbc,0x82,'Width resolution',0
  284. db 0xbc,0x83,'Height resolution',0
  285. db 0xbc,0xc0,'Image offset',0
  286. db 0xbc,0xc1,'Image byte count',0
  287. db 0xbc,0xc2,'Alpha offset',0
  288. db 0xbc,0xc3,'Alpha byte count',0
  289. db 0xbc,0xc4,'Image data discard',0
  290. db 0xbc,0xc5,'Alpha data discard',0
  291. db 0xc4,0x27,'Oce scanjob desc',0
  292. db 0xc4,0x28,'Oce application selector',0
  293. db 0xc4,0x29,'Oce ID number',0
  294. db 0xc4,0x2a,'Oce image logic',0
  295. db 0xc4,0x4f,'Annotations',0
  296. db 0xc4,0xa5,'Print IM',0
  297. db 0xc5,0x73,'Original file name',0
  298. db 0xc5,0x80,'USPTO original content type',0
  299. db 0xc6,0x12,'DNG version',0
  300. db 0xc6,0x13,'DNG backward version',0
  301. db 0xc6,0x14,'Unique camera model',0
  302. db 0xc6,0x15,'Localized camera model',0
  303. db 0xc6,0x16,'CFA plane color',0
  304. db 0xc6,0x17,'CFA layout',0
  305. db 0xc6,0x18,'Linearization table',0
  306. db 0xc6,0x19,'Black level repeat dim',0
  307. db 0xc6,0x1a,'Black level',0
  308. db 0xc6,0x1b,'Black level delta H',0
  309. db 0xc6,0x1c,'Black level delta V',0
  310. db 0xc6,0x1d,'White level',0
  311. db 0xc6,0x1e,'Default scale',0
  312. db 0xc6,0x1f,'Default crop origin',0
  313. db 0xc6,0x20,'Default crop size',0
  314. db 0xc6,0x21,'Color matrix 1',0
  315. db 0xc6,0x22,'Color matrix 2',0
  316. db 0xc6,0x23,'Camera calibration 1',0
  317. db 0xc6,0x24,'Camera calibration 2',0
  318. db 0xc6,0x25,'Reduction matrix 1',0
  319. db 0xc6,0x26,'Reduction matrix 2',0
  320. db 0xc6,0x27,'Analog balance',0
  321. db 0xc6,0x28,'As shot neutral',0
  322. db 0xc6,0x29,'As shot white XY',0
  323. db 0xc6,0x2a,'BaselineExposure',0
  324. db 0xc6,0x2b,'BaselineNoise',0
  325. db 0xc6,0x2c,'BaselineSharpness',0
  326. db 0xc6,0x2d,'BayerGreenSplit',0
  327. db 0xc6,0x2e,'Linear response limit',0
  328. db 0xc6,0x2f,'Camera serial number',0
  329. db 0xc6,0x30,'DNG lens info',0
  330. db 0xc6,0x31,'Chroma blur radius',0
  331. db 0xc6,0x32,'Anti alias strength',0
  332. db 0xc6,0x33,'Shadow scale',0
  333. db 0xc6,0x34,'SR2 private',0
  334. db 0xc6,0x35,'Maker note safety',0
  335. db 0xc6,0x40,'Raw image segmentation',0
  336. db 0xc6,0x5a,'Calibration illuminant 1',0
  337. db 0xc6,0x5b,'Calibration illuminant 2',0
  338. db 0xc6,0x5c,'Best quality scale',0
  339. db 0xc6,0x5d,'Raw data unique ID',0
  340. db 0xc6,0x60,'Alias layer metadata',0
  341. db 0xc6,0x8b,'Original raw file name',0
  342. db 0xc6,0x8c,'Original raw file data',0
  343. db 0xc6,0x8d,'Active area',0
  344. db 0xc6,0x8e,'Masked areas',0
  345. db 0xc6,0x8f,'AsShot ICC profile',0
  346. db 0xc6,0x90,'AsShot pre profile matrix',0
  347. db 0xc6,0x91,'Current ICC profile',0
  348. db 0xc6,0x92,'Current pre profile matrix',0
  349. db 0xc6,0xbf,'Colorimetric reference',0
  350. db 0xc6,0xd2,'Panasonic title',0
  351. db 0xc6,0xd3,'Panasonic title 2',0
  352. db 0xc6,0xf3,'Camera calibration sig',0
  353. db 0xc6,0xf4,'Profile calibration sig',0
  354. db 0xc6,0xf5,'Profile IFD',0
  355. db 0xc6,0xf6,'AsShot profile name',0
  356. db 0xc6,0xf7,'Noise reduction applied',0
  357. db 0xc6,0xf8,'Profile name',0
  358. db 0xc6,0xf9,'Profile hue sat map dims',0
  359. db 0xc6,0xfa,'Profile hue sat map data 1',0
  360. db 0xc6,0xfb,'Profile hue sat map data 2',0
  361. db 0xc6,0xfc,'Profile tone curve',0
  362. db 0xc6,0xfd,'Profile embed policy',0
  363. db 0xc6,0xfe,'Profile copyright',0
  364. db 0xc7,0x14,'Forward matrix 1',0
  365. db 0xc7,0x15,'Forward matrix 2',0
  366. db 0xc7,0x16,'Preview application name',0
  367. db 0xc7,0x17,'Preview application version',0
  368. db 0xc7,0x18,'Preview settings name',0
  369. db 0xc7,0x19,'Preview settings digest',0
  370. db 0xc7,0x1a,'Preview color space',0
  371. db 0xc7,0x1b,'Preview date time',0
  372. db 0xc7,0x1c,'Raw image digest',0
  373. db 0xc7,0x1d,'Original raw file digest',0
  374. db 0xc7,0x1e,'Sub tile block size',0
  375. db 0xc7,0x1f,'Row interleave factor',0
  376. db 0xc7,0x25,'Profile look table dims',0
  377. db 0xc7,0x26,'Profile look table data',0
  378. db 0xc7,0x40,'Opcode list 1',0
  379. db 0xc7,0x41,'Opcode list 2',0
  380. db 0xc7,0x4e,'Opcode list 3',0
  381. db 0xc7,0x61,'Noise profile',0
  382. db 0xc7,0x63,'Time codes',0
  383. db 0xc7,0x64,'Frame rate',0
  384. db 0xc7,0x72,'TStop',0
  385. db 0xc7,0x89,'Reel name',0
  386. db 0xc7,0x91,'Original default final size',0
  387. db 0xc7,0x92,'Original best quality size',0
  388. db 0xc7,0x93,'Original default crop size',0
  389. db 0xc7,0xa1,'Camera label',0
  390. db 0xc7,0xa3,'Profile hue sat map encoding',0
  391. db 0xc7,0xa4,'Profile look table encoding',0
  392. db 0xc7,0xa5,'Baseline exposure offset',0
  393. db 0xc7,0xa6,'Default black render',0
  394. db 0xc7,0xa7,'New raw image digest',0
  395. db 0xc7,0xa8,'Raw to preview gain',0
  396. db 0xc7,0xb5,'Default user crop',0
  397. db 0xfe,0x00,'KDC_IFD',0
  398.  
  399. dd 0
  400.  
  401. align 4
  402. gr_8769:
  403. db 0x02,0xbc,'Application notes',0
  404. db 0x82,0x9a,'Exposure time',0
  405. db 0x82,0x9d,'F number',0
  406. db 0x88,0x22,'Exposure program',0
  407. db 0x88,0x24,'Spectral sensitivity',0
  408. db 0x88,0x27,'ISO',0
  409. db 0x88,0x2a,'Time zone offset',0
  410. db 0x88,0x2b,'Self timer mode',0
  411. db 0x88,0x30,'Sensitivity type',0
  412. db 0x88,0x31,'Standard output sensitivity',0
  413. db 0x88,0x32,'Recommended exposure index',0
  414. db 0x88,0x33,'ISO speed',0
  415. db 0x88,0x34,'ISO speed latitude yyy',0
  416. db 0x88,0x35,'ISO speed latitude zzz',0
  417. db 0x90,0x00,'Exif version',0
  418. db 0x90,0x03,'Date time original',0
  419. db 0x90,0x04,'Create date',0
  420. db 0x91,0x01,'Components configuration',0
  421. db 0x91,0x02,'Compressed bits per pixel',0
  422. db 0x92,0x01,'Shutter speed value',0
  423. db 0x92,0x02,'Aperture value',0
  424. db 0x92,0x03,'Brightness value',0
  425. db 0x92,0x04,'Exposure compensation',0
  426. db 0x92,0x05,'Max aperture value',0
  427. db 0x92,0x06,'Subject distance',0
  428. db 0x92,0x07,'Metering mode',0
  429. db 0x92,0x08,'Light source',0
  430. db 0x92,0x09,'Flash',0
  431. db 0x92,0x0a,'Focal length',0
  432. db 0x92,0x11,'Image number',0
  433. db 0x92,0x12,'Security classification',0
  434. db 0x92,0x13,'Image history',0
  435. db 0x92,0x14,'Subject area',0
  436. db 0x92,0x7c,'Maker note',0
  437. db 0x92,0x86,'User comment',0
  438. db 0x92,0x90,'Sub sec time',0
  439. db 0x92,0x91,'Sub sec time original',0
  440. db 0x92,0x92,'Sub sec time digitized',0
  441. db 0xa0,0x00,'Flashpix version',0
  442. db 0xa0,0x01,'Color space',0
  443. db 0xa0,0x02,'Exif image width',0
  444. db 0xa0,0x03,'Exif image height',0
  445. db 0xa0,0x04,'Related sound file',0
  446. db 0xa0,0x05,'Interop offset',0
  447. db 0xa2,0x0b,'Flash energy',0
  448. db 0xa2,0x0e,'Focal plane X resolution',0
  449. db 0xa2,0x0f,'Focal plane Y resolution',0
  450. db 0xa2,0x10,'Focal plane resolution unit',0
  451. db 0xa2,0x14,'Subject location',0
  452. db 0xa2,0x15,'Exposure index',0
  453. db 0xa2,0x17,'Sensing method',0
  454. db 0xa3,0x00,'File source',0
  455. db 0xa3,0x01,'Scene type',0
  456. db 0xa3,0x02,'CFA pattern',0
  457. db 0xa4,0x01,'Custom rendered',0
  458. db 0xa4,0x02,'Exposure mode',0
  459. db 0xa4,0x03,'White balance',0
  460. db 0xa4,0x04,'Digital zoom ratio',0
  461. db 0xa4,0x05,'Focal length in 35mm format',0
  462. db 0xa4,0x06,'Scene capture type',0
  463. db 0xa4,0x07,'Gain control',0
  464. db 0xa4,0x08,'Contrast',0
  465. db 0xa4,0x09,'Saturation',0
  466. db 0xa4,0x0a,'Sharpness',0
  467. db 0xa4,0x0b,'Device setting description',0
  468. db 0xa4,0x0c,'Subject distance range',0
  469. db 0xa4,0x20,'Image unique ID',0
  470. db 0xa4,0x30,'Owner name',0
  471. db 0xa4,0x31,'Serial number',0
  472. db 0xa4,0x32,'Lens info',0
  473. db 0xa4,0x33,'Lens make',0
  474. db 0xa4,0x34,'Lens model',0
  475. db 0xa4,0x35,'Lens serial number',0
  476. db 0xa5,0x00,'Gamma',0
  477. db 0xea,0x1c,'Padding',0
  478. db 0xea,0x1d,'Offset schema',0
  479. db 0xfd,0xe8,'Owner name',0
  480. db 0xfd,0xe9,'Serial number',0
  481. db 0xfd,0xea,'Lens',0
  482. db 0xfe,0x4c,'Raw file',0
  483. db 0xfe,0x4d,'Converter',0
  484. db 0xfe,0x4e,'White balance',0
  485. db 0xfe,0x51,'Exposure',0
  486. db 0xfe,0x52,'Shadows',0
  487. db 0xfe,0x53,'Brightness',0
  488. db 0xfe,0x54,'Contrast',0
  489. db 0xfe,0x55,'Saturation',0
  490. db 0xfe,0x56,'Sharpness',0
  491. db 0xfe,0x57,'Smoothness',0
  492. db 0xfe,0x58,'Moire filter',0
  493.  
  494. dd 0
  495.  
  496. align 4
  497. gr_a005:
  498. db 0x00,0x01,'Interop index',0
  499. db 0x00,0x02,'Interop version',0
  500. db 0x10,0x00,'Related image file format',0
  501. db 0x10,0x01,'Related image width',0
  502. db 0x10,0x02,'Related image height',0
  503. dd 0
  504.  
  505. align 4
  506. gr_8825:
  507. db 0x00,0x00,'GPS version ID',0
  508. db 0x00,0x01,'GPS latitude ref',0
  509. db 0x00,0x02,'GPS latitude',0
  510. db 0x00,0x03,'GPS longitude ref',0
  511. db 0x00,0x04,'GPS longitude',0
  512. db 0x00,0x05,'GPS altitude ref',0
  513. db 0x00,0x06,'GPS altitude',0
  514. db 0x00,0x07,'GPS time stamp',0
  515. db 0x00,0x08,'GPS satellites',0
  516. db 0x00,0x09,'GPS status',0
  517. db 0x00,0x0a,'GPS measuremode',0
  518. db 0x00,0x0b,'GPS dop',0
  519. db 0x00,0x0c,'GPS speed ref',0
  520. db 0x00,0x0d,'GPS speed',0
  521. db 0x00,0x0e,'GPS track ref',0
  522. db 0x00,0x0f,'GPS track',0
  523. db 0x00,0x10,'GPS img direction ref',0
  524. db 0x00,0x11,'GPS img direction',0
  525. db 0x00,0x12,'GPS map datum',0
  526. db 0x00,0x13,'GPS dest latitude ref',0
  527. db 0x00,0x14,'GPS dest latitude',0
  528. db 0x00,0x15,'GPS dest longitude ref',0
  529. db 0x00,0x16,'GPS dest longitude',0
  530. db 0x00,0x17,'GPS dest bearing ref',0
  531. db 0x00,0x18,'GPS dest bearing',0
  532. db 0x00,0x19,'GPS dest distance ref',0
  533. db 0x00,0x1a,'GPS dest distance',0
  534. db 0x00,0x1b,'GPS processing method',0
  535. db 0x00,0x1c,'GPS area information',0
  536. db 0x00,0x1d,'GPS date stamp',0
  537. db 0x00,0x1e,'GPS differential',0
  538. db 0x00,0x1f,'GPS h positioning error',0
  539.  
  540. dd 0
  541.  
  542. ;¤ ­­ë¥ app2 ¤«ï Nikon
  543. align 4
  544. gr_927c_Ni:
  545. db 0x00,0x01,'MakerNoteVersion',0
  546. db 0x00,0x02,'ISO',0
  547. db 0x00,0x03,'ColorMode',0
  548. db 0x00,0x04,'Quality',0
  549. db 0x00,0x05,'WhiteBalance',0
  550. db 0x00,0x06,'Sharpness',0
  551. db 0x00,0x07,'FocusMode',0
  552. db 0x00,0x08,'FlashSetting',0
  553. db 0x00,0x09,'FlashType',0
  554. db 0x00,0x0b,'WhiteBalanceFineTune',0
  555. db 0x00,0x0c,'WB_RBLevels',0
  556. db 0x00,0x0d,'ProgramShift',0
  557. db 0x00,0x0e,'ExposureDifference',0
  558. db 0x00,0x0f,'ISOSelection',0
  559. db 0x00,0x10,'DataDump',0
  560. db 0x00,0x11,'PreviewIFD',0
  561. db 0x00,0x12,'FlashExposureComp',0
  562. db 0x00,0x13,'ISOSetting',0
  563. db 0x00,0x14,'ColorBalanceA ',0
  564. db 0x00,0x16,'ImageBoundary',0
  565. db 0x00,0x17,'ExternalFlashExposureComp',0
  566. db 0x00,0x18,'FlashExposureBracketValue',0
  567. db 0x00,0x19,'ExposureBracketValue',0
  568. db 0x00,0x1a,'ImageProcessing',0
  569. db 0x00,0x1b,'CropHiSpeed',0
  570. db 0x00,0x1c,'ExposureTuning',0
  571. db 0x00,0x1d,'SerialNumber',0
  572. db 0x00,0x1e,'ColorSpace',0
  573. db 0x00,0x1f,'VRInfo',0
  574. db 0x00,0x20,'ImageAuthentication',0
  575. db 0x00,0x21,'FaceDetect',0
  576. db 0x00,0x22,'ActiveD-Lighting',0
  577. db 0x00,0x23,'PictureControlData',0
  578. db 0x00,0x24,'WorldTime',0
  579. db 0x00,0x25,'ISOInfo',0
  580. db 0x00,0x2a,'VignetteControl',0
  581. db 0x00,0x2b,'DistortInfo',0
  582. db 0x00,0x2c,'UnknownInfo',0
  583. db 0x00,0x32,'UnknownInfo2',0
  584. db 0x00,0x35,'HDRInfo',0
  585. db 0x00,0x39,'LocationInfo',0
  586. db 0x00,0x3d,'BlackLevel',0
  587. db 0x00,0x80,'ImageAdjustment',0
  588. db 0x00,0x81,'ToneComp',0
  589. db 0x00,0x82,'AuxiliaryLens',0
  590. db 0x00,0x83,'LensType',0
  591. db 0x00,0x84,'Lens',0
  592. db 0x00,0x85,'ManualFocusDistance',0
  593. db 0x00,0x86,'DigitalZoom',0
  594. db 0x00,0x87,'FlashMode',0
  595. db 0x00,0x88,'AFInfo',0
  596. db 0x00,0x89,'ShootingMode',0
  597. db 0x00,0x8b,'LensFStops',0
  598. db 0x00,0x8c,'ContrastCurve',0
  599. db 0x00,0x8d,'ColorHue',0
  600. db 0x00,0x8f,'SceneMode',0
  601. db 0x00,0x90,'LightSource',0
  602. db 0x00,0x91,'ShotInfo',0
  603. db 0x00,0x92,'HueAdjustment',0
  604. db 0x00,0x93,'NEFCompression',0
  605. db 0x00,0x94,'Saturation',0
  606. db 0x00,0x95,'NoiseReduction',0
  607. db 0x00,0x96,'NEFLinearizationTable',0
  608. db 0x00,0x97,'ColorBalance',0
  609. db 0x00,0x98,'LensData',0
  610. db 0x00,0x99,'RawImageCenter',0
  611. db 0x00,0x9a,'SensorPixelSize',0
  612. db 0x00,0x9c,'SceneAssist',0
  613. db 0x00,0x9e,'RetouchHistory',0
  614. db 0x00,0xa0,'SerialNumber',0
  615. db 0x00,0xa2,'ImageDataSize',0
  616. db 0x00,0xa5,'ImageCount',0
  617. db 0x00,0xa6,'DeletedImageCount',0
  618. db 0x00,0xa7,'ShutterCount',0
  619. db 0x00,0xa8,'FlashInfo',0
  620. db 0x00,0xa9,'ImageOptimization',0
  621. db 0x00,0xaa,'Saturation',0
  622. db 0x00,0xab,'VariProgram',0
  623. db 0x00,0xac,'ImageStabilization',0
  624. db 0x00,0xad,'AFResponse',0
  625. db 0x00,0xb0,'MultiExposure',0
  626. db 0x00,0xb1,'HighISONoiseReduction',0
  627. db 0x00,0xb3,'ToningEffect',0
  628. db 0x00,0xb6,'PowerUpTime',0
  629. db 0x00,0xb7,'AFInfo2',0
  630. db 0x00,0xb8,'FileInfo',0
  631. db 0x00,0xb9,'AFTune',0
  632. db 0x00,0xbd,'PictureControlData',0
  633. db 0x00,0xc3,'BarometerInfo',0
  634. db 0x0e,0x00,'PrintIM',0
  635. db 0x0e,0x01,'NikonCaptureData',0
  636. db 0x0e,0x09,'NikonCaptureVersion',0
  637. db 0x0e,0x0e,'NikonCaptureOffsets',0
  638. db 0x0e,0x10,'NikonScanIFD',0
  639. db 0x0e,0x13,'NikonCaptureEditVersions ',0
  640. db 0x0e,0x1d,'NikonICCProfile',0
  641. db 0x0e,0x1e,'NikonCaptureOutput',0
  642. db 0x0e,0x22,'NEFBitDepth',0
  643.  
  644. dd 0
  645.  
  646. ;¤ ­­ë¥ app2 ¤«ï Panasonic
  647. align 4
  648. gr_927c_Pa:
  649. db 0x00,0x01,'ImageQuality',0
  650. db 0x00,0x02,'FirmwareVersion',0
  651. db 0x00,0x03,'WhiteBalance',0
  652. db 0x00,0x07,'FocusMode',0
  653. db 0x00,0x0f,'AFAreaMode',0
  654. db 0x00,0x1a,'ImageStabilization',0
  655. db 0x00,0x1c,'MacroMode',0
  656. db 0x00,0x1f,'ShootingMode',0
  657. db 0x00,0x20,'Audio',0
  658. db 0x00,0x21,'DataDump',0
  659. db 0x00,0x23,'WhiteBalanceBias',0
  660. db 0x00,0x24,'FlashBias',0
  661. db 0x00,0x25,'InternalSerialNumber',0
  662. db 0x00,0x26,'PanasonicExifVersion',0
  663. db 0x00,0x28,'ColorEffect',0
  664. db 0x00,0x29,'TimeSincePowerOn',0
  665. db 0x00,0x2a,'BurstMode',0
  666. db 0x00,0x2b,'SequenceNumber',0
  667. db 0x00,0x2c,'ContrastMode',0
  668. db 0x00,0x2d,'NoiseReduction',0
  669. db 0x00,0x2e,'SelfTimer',0
  670. db 0x00,0x30,'Rotation',0
  671. db 0x00,0x31,'AFAssistLamp',0
  672. db 0x00,0x32,'ColorMode',0
  673. db 0x00,0x33,'BabyAge',0
  674. db 0x00,0x34,'OpticalZoomMode',0
  675. db 0x00,0x35,'ConversionLens',0
  676. db 0x00,0x36,'TravelDay',0
  677. db 0x00,0x39,'Contrast',0
  678. db 0x00,0x3a,'WorldTimeLocation',0
  679. db 0x00,0x3b,'TextStamp',0
  680. db 0x00,0x3c,'ProgramISO',0
  681. db 0x00,0x3d,'AdvancedSceneType',0
  682. db 0x00,0x3f,'FacesDetected',0
  683. db 0x00,0x40,'Saturation',0
  684. db 0x00,0x41,'Sharpness',0
  685. db 0x00,0x42,'FilmMode',0
  686. db 0x00,0x44,'ColorTempKelvin',0
  687. db 0x00,0x45,'BracketSettings',0
  688. db 0x00,0x46,'WBShiftAB',0
  689. db 0x00,0x47,'WBShiftGM',0
  690. db 0x00,0x48,'FlashCurtain',0
  691. db 0x00,0x49,'LongExposureNoiseReduction',0
  692. db 0x00,0x4b,'PanasonicImageWidth',0
  693. db 0x00,0x4c,'PanasonicImageHeight',0
  694. db 0x00,0x4d,'AFPointPosition',0
  695. db 0x00,0x51,'LensType',0
  696. db 0x00,0x52,'LensSerialNumber',0
  697. db 0x00,0x53,'AccessoryType',0
  698. db 0x00,0x54,'AccessorySerialNumber',0
  699. db 0x00,0x59,'Transform',0
  700. db 0x00,0x5d,'IntelligentExposure',0
  701. db 0x00,0x60,'LensFirmwareVersion',0
  702. db 0x00,0x61,'FaceRecInfo',0
  703. db 0x00,0x62,'FlashWarning',0
  704. db 0x00,0x63,'RecognizedFaceFlags',0
  705. db 0x00,0x65,'Title',0
  706. db 0x00,0x66,'BabyName',0
  707. db 0x00,0x67,'Location',0
  708. db 0x00,0x69,'Country',0
  709. db 0x00,0x6b,'State',0
  710. db 0x00,0x6d,'City',0
  711. db 0x00,0x6f,'Landmark',0
  712. db 0x00,0x70,'IntelligentResolution',0
  713. db 0x00,0x77,'BurstSpeed',0
  714. db 0x00,0x79,'IntelligentD-Range',0
  715. db 0x00,0x7c,'ClearRetouch',0
  716. db 0x00,0x86,'ManometerPressure',0
  717. db 0x00,0x89,'PhotoStyle',0
  718. db 0x00,0x8a,'ShadingCompensation',0
  719. db 0x00,0x8c,'AccelerometerZ',0
  720. db 0x00,0x8d,'AccelerometerX',0
  721. db 0x00,0x8e,'AccelerometerY',0
  722. db 0x00,0x8f,'CameraOrientation',0
  723. db 0x00,0x90,'RollAngle',0
  724. db 0x00,0x91,'PitchAngle',0
  725. db 0x00,0x93,'SweepPanoramaDirection',0
  726. db 0x00,0x94,'SweepPanoramaFieldOfView',0
  727. db 0x00,0x96,'TimerRecording',0
  728. db 0x00,0x9d,'InternalNDFilter',0
  729. db 0x00,0x9e,'HDR',0
  730. db 0x00,0x9f,'ShutterType',0
  731. db 0x00,0xa3,'ClearRetouchValue',0
  732. db 0x00,0xab,'TouchAE',0
  733. db 0x0e,0x00,'PrintIM',0
  734. db 0x80,0x00,'MakerNoteVersion',0
  735. db 0x80,0x01,'SceneMode',0
  736. db 0x80,0x04,'WBRedLevel',0
  737. db 0x80,0x05,'WBGreenLevel',0
  738. db 0x80,0x06,'WBBlueLevel',0
  739. db 0x80,0x07,'FlashFired',0
  740. db 0x80,0x08,'TextStamp',0
  741. db 0x80,0x09,'TextStamp',0
  742. db 0x80,0x10,'BabyAge',0
  743. db 0x80,0x12,'Transform',0
  744.  
  745. dd 0
  746.  
  747. ;¤ ­­ë¥ app2 ¤«ï Canon
  748. align 4
  749. gr_927c_Ca:
  750. db 0x00,0x01,'CanonCameraSettings',0
  751. db 0x00,0x02,'CanonFocalLength',0
  752. db 0x00,0x03,'CanonFlashInfo?',0
  753. db 0x00,0x04,'CanonShotInfo',0
  754. db 0x00,0x05,'CanonPanorama',0
  755. db 0x00,0x06,'CanonImageType',0
  756. db 0x00,0x07,'CanonFirmwareVersion',0
  757. db 0x00,0x08,'FileNumber',0
  758. db 0x00,0x09,'OwnerName',0
  759. db 0x00,0x0a,'UnknownD30',0
  760. db 0x00,0x0c,'SerialNumber',0
  761. db 0x00,0x0d,'CanonCameraInfo',0
  762. db 0x00,0x0e,'CanonFileLength',0
  763. db 0x00,0x0f,'CustomFunctions',0
  764. db 0x00,0x10,'CanonModelID',0
  765. db 0x00,0x11,'MovieInfo',0
  766. db 0x00,0x12,'CanonAFInfo',0
  767. db 0x00,0x13,'ThumbnailImageValidArea',0
  768. db 0x00,0x15,'SerialNumberFormat',0
  769. db 0x00,0x1a,'SuperMacro',0
  770. db 0x00,0x1c,'DateStampMode',0
  771. db 0x00,0x1d,'MyColors',0
  772. db 0x00,0x1e,'FirmwareRevision',0
  773. db 0x00,0x23,'Categories',0
  774. db 0x00,0x24,'FaceDetect1',0
  775. db 0x00,0x25,'FaceDetect2',0
  776. db 0x00,0x26,'CanonAFInfo2',0
  777. db 0x00,0x27,'ContrastInfo',0
  778. db 0x00,0x28,'ImageUniqueID',0
  779. db 0x00,0x2f,'FaceDetect3',0
  780. db 0x00,0x35,'TimeInfo',0
  781. db 0x00,0x81,'RawDataOffset',0
  782. db 0x00,0x83,'OriginalDecisionDataOffset',0
  783. db 0x00,0x90,'CustomFunctions1D',0
  784. db 0x00,0x91,'PersonalFunctions',0
  785. db 0x00,0x92,'PersonalFunctionValues',0
  786. db 0x00,0x93,'CanonFileInfo',0
  787. db 0x00,0x94,'AFPointsInFocus1D',0
  788. db 0x00,0x95,'LensModel',0
  789. db 0x00,0x96,'SerialInfo ',0
  790. db 0x00,0x97,'DustRemovalData',0
  791. db 0x00,0x98,'CropInfo',0
  792. db 0x00,0x99,'CustomFunctions2',0
  793. db 0x00,0x9a,'AspectInfo',0
  794. db 0x00,0xa0,'ProcessingInfo',0
  795. db 0x00,0xa1,'ToneCurveTable',0
  796. db 0x00,0xa2,'SharpnessTable',0
  797. db 0x00,0xa3,'SharpnessFreqTable',0
  798. db 0x00,0xa4,'WhiteBalanceTable',0
  799. db 0x00,0xa9,'ColorBalance',0
  800. db 0x00,0xaa,'MeasuredColor',0
  801. db 0x00,0xae,'ColorTemperature',0
  802. db 0x00,0xb0,'CanonFlags',0
  803. db 0x00,0xb1,'ModifiedInfo',0
  804. db 0x00,0xb2,'ToneCurveMatching',0
  805. db 0x00,0xb3,'WhiteBalanceMatching',0
  806. db 0x00,0xb4,'ColorSpace',0
  807. db 0x00,0xb6,'PreviewImageInfo',0
  808. db 0x00,0xd0,'VRDOffset',0
  809. db 0x00,0xe0,'SensorInfo',0
  810. db 0x40,0x01,'ColorData',0
  811. db 0x40,0x02,'CRWParam?',0
  812. db 0x40,0x03,'ColorInfo',0
  813. db 0x40,0x05,'Flavor?',0
  814. db 0x40,0x08,'BlackLevel?',0
  815. db 0x40,0x10,'CustomPictureStyleFileName',0
  816. db 0x40,0x13,'AFMicroAdj',0
  817. db 0x40,0x15,'VignettingCorr ',0
  818. db 0x40,0x16,'VignettingCorr2',0
  819. db 0x40,0x18,'LightingOpt',0
  820. db 0x40,0x19,'LensInfo',0
  821. db 0x40,0x20,'AmbienceInfo',0
  822. db 0x40,0x24,'FilterInfo',0
  823.  
  824. dd 0
  825.  
  826. ;¤ ­­ë¥ app2 ¤«ï Samsung
  827. align 4
  828. gr_927c_Sa:
  829. db 0x00,0x01,'MakerNoteVersion',0        
  830. db 0x00,0x02,'DeviceType',0
  831. db 0x00,0x03,'SamsungModelID',0
  832. db 0x00,0x21,'PictureWizard',0
  833. db 0x00,0x30,'LocalLocationName',0
  834. db 0x00,0x31,'LocationName',0
  835. db 0x00,0x35,'PreviewIFD',0
  836. db 0x00,0x43,'CameraTemperature',0
  837. db 0x00,0x45,'RawCompressionMode',0
  838. db 0x01,0x00,'FaceDetect',0
  839. db 0x01,0x20,'FaceRecognition',0
  840. db 0x01,0x23,'FaceName',0
  841. db 0xa0,0x01,'FirmwareName',0
  842. db 0xa0,0x03,'LensType',0
  843. db 0xa0,0x04,'LensFirmware',0
  844. db 0xa0,0x05,'InternalLensSerialNumber',0
  845. db 0xa0,0x10,'SensorAreas',0
  846. db 0xa0,0x11,'ColorSpace',0
  847. db 0xa0,0x12,'SmartRange',0
  848. db 0xa0,0x13,'ExposureCompensation',0
  849. db 0xa0,0x14,'ISO',0
  850. db 0xa0,0x18,'ExposureTime',0
  851. db 0xa0,0x19,'FNumber',0
  852. db 0xa0,0x1a,'FocalLengthIn35mmFormat',0
  853. db 0xa0,0x20,'EncryptionKey',0
  854. db 0xa0,0x21,'WB_RGGBLevelsUncorrected',0
  855. db 0xa0,0x22,'WB_RGGBLevelsAuto',0
  856. db 0xa0,0x23,'WB_RGGBLevelsIlluminator1',0
  857. db 0xa0,0x24,'WB_RGGBLevelsIlluminator2',0
  858. db 0xa0,0x28,'WB_RGGBLevelsBlack',0
  859. db 0xa0,0x30,'ColorMatrix',0
  860. db 0xa0,0x31,'ColorMatrixSRGB',0
  861. db 0xa0,0x32,'ColorMatrixAdobeRGB',0
  862. db 0xa0,0x33,'CbCrMatrixDefault',0
  863. db 0xa0,0x34,'CbCrMatrix',0
  864. db 0xa0,0x35,'CbCrGainDefault',0
  865. db 0xa0,0x36,'CbCrGain',0
  866. db 0xa0,0x40,'ToneCurveSRGBDefault',0
  867. db 0xa0,0x41,'ToneCurveAdobeRGBDefault',0
  868. db 0xa0,0x42,'ToneCurveSRGB',0
  869. db 0xa0,0x43,'ToneCurveAdobeRGB',0
  870. db 0xa0,0x48,'RawData?',0
  871. db 0xa0,0x50,'Distortion?',0
  872. db 0xa0,0x51,'ChromaticAberration?',0
  873. db 0xa0,0x52,'Vignetting?',0
  874. db 0xa0,0x53,'VignettingCorrection?',0
  875. db 0xa0,0x54,'VignettingSetting?',0
  876.  
  877. dd 0
  878.  
  879. ;input:
  880. ; bof - 㪠§ â¥«ì ­  ­ ç «® ä ©« 
  881. ; app1 - 㪠§ â¥«ì ¤«ï § ¯®«­¥­¨ï exif.app1
  882. ;output:
  883. ; app1 - 㪠§ â¥«ì ­  ­ ç «® exif.app1 (¨«¨ 0 ¥á«¨ ­¥ ­ ©¤¥­® ¨«¨ ä®à¬ â ä ©«  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï)
  884. align 4
  885. proc exif_get_app1 uses eax ebx edi, bof:dword, app1:dword
  886.         mov eax,[bof]
  887.         mov edi,[app1]
  888.  
  889.         ;ä ©« ¢ ä®à¬ â¥ jpg?
  890.         cmp word[eax],0xd8ff
  891.         jne .no_exif
  892.         add eax,2
  893.  
  894.         ;ä ©« ᮤ¥à¦¨â exif.app0?
  895.         cmp word[eax],0xe0ff
  896.         jne @f
  897.                 add eax,2
  898.                 movzx ebx,word[eax]
  899.                 ror bx,8 ;¢á¥£¤  «¨ â ª ­ ¤®?
  900.                 add eax,ebx
  901.         @@:
  902.  
  903.         ;ä ©« ᮤ¥à¦¨â exif.app1?
  904.         cmp word[eax],0xe1ff
  905.         jne .no_exif
  906.  
  907.         xor ebx,ebx
  908.         cmp word[eax+10],'II'
  909.         je @f
  910.                 inc ebx ;if 'MM' edx=1
  911.         @@:
  912.         mov word[edi+offs_m_or_i],bx ;ᯮᮡ ¢ëà ¢­¨¢ ­¨ï ç¨á¥«
  913.         mov dword[edi+offs_id_gr],0 ;id £àã¯ë ¨ ¯à®¨§¢®¤¨â¥«ï, ª®â®àë© ¢á¥£¤  0 ¤«ï app1
  914.         add eax,18
  915.         mov [edi],eax
  916.         sub eax,8
  917.         mov [edi+4],eax
  918.  
  919.         jmp @f
  920.         .no_exif:
  921.                 mov dword[edi],0
  922.         @@:
  923.         ret
  924. endp
  925.  
  926. ;input:
  927. ; app1 - 㪠§ â¥«ì ­  ­ ç «® exif.app1
  928. ; num - ¯®à浪®¢ë© ­®¬¥à ⥣  (­ ç¨­ ¥âáï á 1)
  929. ; txt - 㪠§ â¥«ì ­  ⥪áâ, ªã¤  ¡ã¤¥â § ¯¨á ­® §­ ç¥­¨¥
  930. ; t_max - ¬ ªá¨¬ «ì­ë© à §¬¥à ⥪áâ 
  931. ;output:
  932. ; txt - § ¯®«­ï¥âáï ⥪á⮬ ¢ ¢¨¤¥ "¯ à ¬¥âà: §­ ç¥­¨¥", ¥á«¨ ­¥ ­ ©¤¥­® â® ¯ãáâ ï áâப 
  933. align 4
  934. proc exif_get_tag, app1:dword, num:dword, txt:dword, t_max:dword
  935. pushad
  936.         mov eax,[app1]
  937.         mov edi,[txt]
  938.         mov ecx,[num]
  939.  
  940.         xor edx,edx
  941.         mov byte[edi],dl
  942.         cmp [eax],edx
  943.         je .end_f ;¥á«¨ ­¥ ­ ©¤¥­ 㪠§ â¥«ì ­  ­ ç «® exif.app1
  944.         cmp ecx,edx
  945.         jle .end_f ;¥á«¨ ¯®à浪®¢ë© ­®¬¥à ⥣  <= 0
  946.  
  947.         movzx edx,word[eax+offs_m_or_i] ;if 'MM' edx=1
  948.  
  949.         ;¯à®¢¥à塞 ç¨á«® ⥣®¢
  950.         mov eax,[eax]
  951.         movzx ebx,word[eax]
  952.         bt edx,0
  953.         jnc @f
  954.                 ror bx,8
  955.         @@:
  956.         cmp ecx,ebx
  957.         jg .end_f ;¥á«¨ ­®¬¥à ⥣  ¡®«ìè¥ ç¥¬ ¨å ¥áâì ¢ ä ©«¥
  958.  
  959.         ;¯¥à¥å®¤¨¬ ­  § ¤ ­­ë© ⥣
  960.         dec ecx
  961.         imul ecx,tag_size
  962.         add eax,offs_tag_0
  963.         add eax,ecx
  964.  
  965.         stdcall read_tag_value,[app1],[t_max]
  966.  
  967.         .end_f:
  968. popad
  969.         ret
  970. endp
  971.  
  972. ;input:
  973. ; app1 - 㪠§ â¥«ì ­  ­ ç «® exif.app1
  974. ; id - ¨¤¥­â¨ä¨ª â®à ⥣  §­ ç¥­¨¥ ª®â®à®£® ­ã¦­® ­ ©â¨
  975. ; txt - 㪠§ â¥«ì ­  ⥪áâ, ªã¤  ¡ã¤¥â § ¯¨á ­® §­ ç¥­¨¥
  976. ; t_max - ¬ ªá¨¬ «ì­ë© à §¬¥à ⥪áâ 
  977. ;output:
  978. ; txt - § ¯®«­ï¥âáï ⥪á⮬ ¢ ¢¨¤¥ "¯ à ¬¥âà: §­ ç¥­¨¥", ¥á«¨ ­¥ ­ ©¤¥­® â® ¯ãáâ ï áâப 
  979. align 4
  980. proc exif_get_tag_id, app1:dword, id:dword, txt:dword, t_max:dword
  981. pushad
  982.         mov eax,[app1]
  983.         mov edi,[txt]
  984.  
  985.         xor edx,edx
  986.         mov byte[edi],dl
  987.         cmp [eax],edx
  988.         je .end_f ;¥á«¨ ­¥ ­ ©¤¥­ 㪠§ â¥«ì ­  ­ ç «® exif.app1
  989.  
  990.         mov ebx,[id]
  991.         movzx edx,word[eax+offs_m_or_i] ;if 'MM' edx=1
  992.         bt edx,0
  993.         jnc @f
  994.                 ror bx,8
  995.         @@:
  996.  
  997.         ;¡¥à¥¬ ç¨á«® ⥣®¢
  998.         mov eax,[eax]
  999.         movzx ecx,word[eax]
  1000.         bt edx,0
  1001.         jnc @f
  1002.                 ror cx,8
  1003.         @@:
  1004.         ;¢ ecx - ç¨á«® ⥣®¢
  1005.  
  1006.         ;¨é¥¬ § ¤ ­­ë© ⥣
  1007.         add eax,offs_tag_0
  1008.         .cycle_0:
  1009.                 cmp word[eax],bx ;word[eax+0] - ª®¤ ⥣ 
  1010.                 je @f
  1011.                 add eax,tag_size
  1012.                 loop .cycle_0
  1013.         jmp .end_f
  1014.         @@:
  1015.                 stdcall read_tag_value,[app1],[t_max]
  1016.         .end_f:
  1017. popad
  1018.         ret
  1019. endp
  1020.  
  1021. ;input:
  1022. ; app1 - 㪠§ â¥«ì ­  exif.app1 ¨«¨ ­  exif.app1.child
  1023. ; child - 㪠§ â¥«ì ¤«ï § ¯®«­¥­¨ï ­ ç «  ¤®ç¥à­¨å ⥣®¢ exif.app1.child
  1024. ; c_tag - ⥣ ¤«ï ª®â®à®£® ¤¥« ¥âáï ¯®¨áª ¤®ç¥à­¨å
  1025. ;output:
  1026. ; child - 㪠§ â¥«ì ­  ­ ç «® ¤®ç¥à­¨å ⥣®¢
  1027. align 4
  1028. proc exif_get_child, app1:dword, child:dword , c_tag:dword
  1029. pushad
  1030.         mov eax,[app1]
  1031.         mov edi,[child]
  1032.  
  1033.         xor edx,edx
  1034.         cmp [eax],edx
  1035.         je .no_found ;¥á«¨ ­¥ ­ ©¤¥­ 㪠§ â¥«ì ­  ­ ç «® exif.app1
  1036.  
  1037.         movzx edx,word[eax+offs_m_or_i] ;if 'MM' edx=1
  1038.  
  1039.         ;­ ç «® ¯®¨áª 
  1040.         mov ebx,[c_tag]
  1041.         bt edx,0
  1042.         jnc @f
  1043.                 ror bx,8
  1044.         @@:
  1045.  
  1046.         ;¯à®¢¥à塞 ç¨á«® ⥣®¢
  1047.         mov eax,[eax]
  1048.         movzx ecx,word[eax]
  1049.         bt edx,0
  1050.         jnc @f
  1051.                 ror cx,8
  1052.         @@:
  1053.         cmp ecx,1
  1054.         jl .no_found ;¥á«¨ ç¨á«® ⥣®¢ <1
  1055.  
  1056.         ;¯¥à¥å®¤¨¬ ­  1-© ⥣
  1057.         add eax,offs_tag_0
  1058.         @@:
  1059.                 cmp word[eax],bx
  1060.                 je @f
  1061.                 add eax,tag_size
  1062.                 loop @b
  1063.         jmp .no_found ;¥á«¨ ­¥ ­ ©¤¥­®
  1064.         @@: ;¥á«¨ ­ ©¤¥­®
  1065.                 mov ebx,dword[eax+8]
  1066.                 bt edx,0
  1067.                 jnc @f
  1068.                         bswap ebx
  1069.                 @@:
  1070.                 mov eax,[app1]
  1071.                 add ebx,[eax+4]
  1072.                 mov dword[edi],ebx
  1073.                 m2m dword[edi+4],dword[eax+4]
  1074.                 ror edx,16
  1075.                 mov dx,word[c_tag]
  1076.                 ror edx,16
  1077.                 mov dword[edi+offs_m_or_i],edx
  1078.                 m2m word[edi+offs_id_gr_mak],word[eax+offs_id_gr_mak]
  1079.  
  1080.         jmp .end_f
  1081.         .no_found:
  1082.                 mov dword[edi],0
  1083.         .end_f:
  1084. popad
  1085.         ret
  1086. endp
  1087.  
  1088. ;output:
  1089. ; app2 - 㪠§ â¥«ì ­  ­ ç «® exif.app2 (¨«¨ 0 ¥á«¨ ­¥ ­ ©¤¥­® ¨«¨ ä®à¬ â ä ©«  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï)
  1090. align 4
  1091. proc exif_get_app2, app1:dword, app2:dword
  1092. pushad
  1093.         mov edi,[app2]
  1094.         mov eax,[app1]
  1095.         xor edx,edx
  1096.         cmp [eax],edx
  1097.         je .no_suport ;¥á«¨ ­¥ ­ ©¤¥­ 㪠§ â¥«ì ­  ­ ç «® exif.app1
  1098.  
  1099.         movzx edx,word[eax+offs_m_or_i] ;if 'MM' edx=1
  1100.  
  1101.         ;­ ç «® ¯®¨áª  ¯à®¨§¢®¤¨â¥«ï ª ¬¥àë
  1102.         mov ebx,0x010f
  1103.         bt edx,0
  1104.         jnc @f
  1105.                 ror bx,8
  1106.         @@:
  1107.  
  1108.         ;¯à®¢¥à塞 ç¨á«® ⥣®¢
  1109.         mov eax,[eax]
  1110.         movzx ecx,word[eax]
  1111.         bt edx,0
  1112.         jnc @f
  1113.                 ror cx,8
  1114.         @@:
  1115.         cmp ecx,1
  1116.         jl .no_suport ;¥á«¨ ç¨á«® ⥣®¢ <1
  1117.  
  1118.         ;¯¥à¥å®¤¨¬ ­  1-© ⥣
  1119.         add eax,offs_tag_0
  1120.         @@:
  1121.                 cmp word[eax],bx
  1122.                 je @f
  1123.                 add eax,tag_size
  1124.                 loop @b
  1125.         jmp .no_suport ;¥á«¨ ­¥ ­ ©¤¥­®
  1126.         @@: ;¥á«¨ ­ ©¤¥­®      
  1127.                 mov ebx,dword[eax+4]
  1128.                 bt edx,0
  1129.                 jnc @f
  1130.                         bswap ebx
  1131.                 @@:
  1132.                 cmp ebx,4
  1133.                 jle .no_suport ;­ §¢ ­¨¥ ¯à®¨§¢®¤¨â¥«ï ¬¥­ìè¥ 4 ᨬ¢®«®¢, ­¥ ¯®¤¤¥à¦¨ ¢ ¥âáï
  1134.  
  1135.                 mov ebx,dword[eax+8]
  1136.                 bt edx,0
  1137.                 jnc @f
  1138.                         bswap ebx
  1139.                 @@:
  1140.        
  1141.         ;¯à®¢¥àª  ¯®¤¤¥à¦¨¢ ¥¬ëå ¯à®¨§¢®¤¨â¥«¥©
  1142.         mov eax,[app1]
  1143.         add ebx,[eax+4]
  1144.         cmp dword[ebx],'Cano'
  1145.         je .suport
  1146.         cmp dword[ebx],'NIKO'
  1147.         je .suport
  1148.         cmp dword[ebx],'Pana'
  1149.         je .suport
  1150.         cmp dword[ebx],'SAMS'
  1151.         je .suport
  1152.         cmp dword[ebx],'sams'
  1153.         je .suport
  1154.  
  1155.         ;¢á¥ ®áâ «ì­ë¥ ­¥ ¯®¤¤¥à¦¨¢ îâáï
  1156.         jmp .no_suport
  1157.  
  1158.         .suport:
  1159.         ;­ å®¤¨¬ ⥣ 0x8769 (à áè¨à¥­­ë¥ ¤ ­­ë¥ ¯® Exif)
  1160.         stdcall exif_get_child, eax,edi,0x8769
  1161.         cmp dword[edi],0
  1162.         je .no_suport
  1163.         ;­ å®¤¨¬ ⥣ 0x927c (¤ ­­ë¥ Maker ¯® ª ¬¥à¥)
  1164.         stdcall exif_get_child, edi,edi, 0x927c
  1165.         cmp dword[edi],0
  1166.         je .no_suport
  1167.  
  1168.         cmp dword[ebx],'NIKO'
  1169.         jne @f
  1170.                 ;for Nikon
  1171.                 add dword[edi],18
  1172.                 mov eax,dword[edi]
  1173.                 sub eax,8
  1174.                 mov dword[edi+4],eax
  1175.                 mov word[edi+offs_id_gr_mak],'Ni'
  1176.                 jmp .end_f
  1177.         @@:
  1178.         cmp dword[ebx],'Pana'
  1179.         jne @f
  1180.                 ;for Panasonic
  1181.                 add dword[edi],12
  1182.                 mov word[edi+offs_id_gr_mak],'Pa'
  1183.                 jmp .end_f
  1184.         @@:
  1185.         cmp dword[ebx],'Cano'
  1186.         jne @f
  1187.                 ;for Canon
  1188.                 mov word[edi+offs_id_gr_mak],'Ca'
  1189.                 jmp .end_f
  1190.         @@:
  1191.  
  1192.         cmp dword[ebx],'SAMS'
  1193.         je @f
  1194.         cmp dword[ebx],'sams'
  1195.         je @f
  1196.                 jmp .end_f
  1197.         @@:
  1198.                 ;for Samsung
  1199.                 mov word[edi+offs_id_gr_mak],'Sa'
  1200.                 jmp .end_f
  1201.         @@:
  1202.  
  1203.         .no_suport:
  1204.                 mov dword[edi],0
  1205.         .end_f:
  1206. popad
  1207.         ret
  1208. endp
  1209.  
  1210. ;description:
  1211. ; ¢á¯®¬®£ â¥«ì­ ï äã­ªæ¨ï ¤«ï ç⥭¨ï ­ §­ ç¥­¨© ⥣®¢
  1212. ;input:
  1213. ; eax - 㪠§ â¥«ì ­ ç «  ⥣ 
  1214. ; edi - 㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï § ¯¨á¨ ⥪á⮢®© áâப¨
  1215. align 4
  1216. proc read_tag_value, app1:dword, t_max:dword
  1217.         push exif_tag_numbers
  1218.         pop esi
  1219.  
  1220.         ;¯®¨áª â ¡«¨æë ¤«ï £à㯯ë ⥣®¢
  1221.         mov ebx,[app1]
  1222.         mov ebx,dword[ebx+offs_id_gr] ;¡¥à¥¬ ¨¤¥­â¨ä¨ª â®à £à㯯ë ⥣®¢
  1223.         @@:
  1224.                 cmp dword[esi],ebx
  1225.                 je .set_table
  1226.                 add esi,8
  1227.                 cmp esi,exif_tag_numbers.end
  1228.                 jge .tag_unknown ;⥣ ­¥ ®¯®§­ ­ (­¥ ­ ©¤¥­  â ¡«¨æ  £à㯯ë ⥣®¢)
  1229.                 jmp @b
  1230.         .set_table:
  1231.                 mov esi,dword[esi+4] ;ãáâ ­®¢ª   ¤à¥á  â ¡«¨æë ¢ esi
  1232.  
  1233.         ;¯®¨áª ­ §¢ ­¨ï ⥣  ¢ â ¡«¨æ¥
  1234.         .next_tag:
  1235.         mov bx,word[esi]
  1236.         cmp bx,0
  1237.         jne @f
  1238.                 cmp dword[esi],0
  1239.                 jne @f
  1240.                 jmp .tag_unknown ;⥣ ­¥ ®¯®§­ ­ (¢ £à㯯¥ ­¥ ­ ©¤¥­ ⥣)
  1241.         @@:
  1242.         bt edx,0
  1243.         jc @f
  1244.                 ror bx,8
  1245.         @@:
  1246.         cmp word[eax],bx
  1247.         je .found
  1248.         inc esi
  1249.         @@:
  1250.                 inc esi
  1251.                 cmp byte[esi],0
  1252.                 jne @b
  1253.         inc esi
  1254.         jmp .next_tag
  1255.         .found:
  1256.  
  1257.         ;ª®¯¨à㥬 áâபã á ­ §¢ ­¨¥¬ ⥣ 
  1258.         add esi,2
  1259.         stdcall str_n_cat,edi,esi,[t_max]
  1260.  
  1261.         jmp .start_read
  1262.         .tag_unknown:
  1263.                 ;¥á«¨ ⥣ ­¥ ­ ©¤¥­ áâ ¢¨¬ ¥£® ª®¤ ¢¬¥áâ® ­ §¢ ­¨ï
  1264.                 movzx ebx,word[eax]
  1265.                 bt edx,0
  1266.                 jnc @f
  1267.                         ror bx,8
  1268.                 @@:
  1269.                 stdcall hex_in_str, edi, ebx,4
  1270.                 mov byte[edi+4],0
  1271.         .start_read:
  1272.  
  1273.         ;ç¨â ¥¬ ¨­ä®à¬ æ¨î ¢ ⥣¥
  1274.         mov bx,tag_format_ui1b
  1275.         bt edx,0
  1276.         jnc @f
  1277.                 ror bx,8
  1278.         @@:
  1279.         cmp word[eax+2],bx
  1280.         jne .tag_01
  1281.                 stdcall str_n_cat,edi,txt_dp,[t_max]
  1282.                 call get_tag_data_size
  1283.                 cmp ebx,4
  1284.                 jg .over4b_01
  1285.                 cmp ebx,1
  1286.                 je @f
  1287.                         or edx,2 ;array data
  1288.                         mov ecx,dword[eax+8]
  1289.                         mov dh,bl
  1290.                 @@:
  1291.                         ;¥á«¨ 1 ®¤­® ¡ ©â®¢®¥ ç¨á«®
  1292.                         movzx ebx,byte[eax+8]
  1293.                         stdcall str_len,edi
  1294.                         add edi,eax
  1295.                         mov eax,ebx
  1296.                         stdcall convert_int_to_str, [t_max]
  1297.                         bt edx,1
  1298.                         jnc .end_f
  1299.                         @@:
  1300.                                 ;¥á«¨ ®â 2 ¤® 4 ®¤­® ¡ ©â®¢ëå ç¨á¥«
  1301.                                 dec dh
  1302.                                 cmp dh,0
  1303.                                 je .end_f
  1304.                                 shr ecx,8
  1305.                                 stdcall str_n_cat,edi,txt_zap,[t_max]
  1306.                                 stdcall str_len,edi
  1307.                                 add edi,eax
  1308.                                 movzx eax,cl
  1309.                                 stdcall convert_int_to_str, [t_max]
  1310.                                 jmp @b
  1311.                 .over4b_01:
  1312.                         ;...
  1313.                 jmp .end_f
  1314.         .tag_01:
  1315.  
  1316.         mov bx,tag_format_text
  1317.         bt edx,0
  1318.         jnc @f
  1319.                 ror bx,8
  1320.         @@:
  1321.         cmp word[eax+2],bx
  1322.         jne .tag_02
  1323.                 stdcall str_n_cat,edi,txt_dp,[t_max]
  1324.                 call get_tag_data_size ;¯à®¢¥à塞 ¤«¨­­ã áâப¨
  1325.                 cmp ebx,4
  1326.                 jg @f
  1327.                         ;¥á«¨ áâப  ¯®¬¥é ¥âáï ¢ 4 ᨬ¢®« 
  1328.                         mov esi,eax
  1329.                         add esi,8
  1330.                         stdcall str_n_cat,edi,esi,[t_max]
  1331.                         jmp .end_f
  1332.                 ;¥á«¨ áâப  ­¥ ¯®¬¥é ¥âáï ¢ 4 ᨬ¢®« 
  1333.                 @@:
  1334.                 mov esi,dword[eax+8]
  1335.                 bt edx,0
  1336.                 jnc @f
  1337.                         bswap esi
  1338.                 @@:
  1339.                 mov eax,[app1]
  1340.                 mov eax,[eax+4]
  1341.                 add esi,eax
  1342.                 stdcall str_n_cat,edi,esi,[t_max]
  1343.                 jmp .end_f
  1344.         .tag_02:
  1345.  
  1346.         mov bx,tag_format_ui2b
  1347.         bt edx,0
  1348.         jnc @f
  1349.                 ror bx,8
  1350.         @@:
  1351.         cmp word[eax+2],bx
  1352.         jne .tag_03
  1353.                 stdcall str_n_cat,edi,txt_dp,[t_max]
  1354.                 call get_tag_data_size
  1355.                 cmp ebx,2
  1356.                 jg .over4b_03
  1357.                 jne @f
  1358.                         ;¥á«¨ ¤¢  2 ¡ ©â®¢ëå ç¨á« 
  1359.                         or edx,2 ;array data
  1360.                         movzx ecx,word[eax+10]
  1361.                         bt edx,0
  1362.                         jnc @f
  1363.                                 ror cx,8
  1364.                         @@:
  1365.                         ;¥á«¨ ®¤­® 2 ¡ ©â®¢®¥ ç¨á«®
  1366.                         movzx ebx,word[eax+8]
  1367.                         bt edx,0
  1368.                         jnc @f
  1369.                                 ror bx,8
  1370.                         @@:
  1371.                         stdcall str_len,edi
  1372.                         add edi,eax
  1373.                         mov eax,ebx
  1374.                         stdcall convert_int_to_str, [t_max]
  1375.                         bt edx,1 ;array ?
  1376.                         jnc .end_f
  1377.                         ;¤®¡ ¢«ï¥¬ 2-¥ ç¨á«®
  1378.                         stdcall str_n_cat,edi,txt_zap,[t_max]
  1379.                         stdcall str_len,edi
  1380.                         add edi,eax
  1381.                         mov eax,ecx
  1382.                         stdcall convert_int_to_str, [t_max]
  1383.                         jmp .end_f
  1384.                 .over4b_03:
  1385.                         mov ecx,[t_max]
  1386.                         mov esi,dword[eax+8]
  1387.                         bt edx,0
  1388.                         jnc @f
  1389.                                 bswap esi
  1390.                         @@:
  1391.                         mov eax,[app1]
  1392.                         mov eax,[eax+4]
  1393.                         add esi,eax
  1394.                        
  1395.                         ;¡¥à¥¬ ç¨á«®
  1396.                         .array_03:
  1397.                         stdcall str_len,edi
  1398.                         cmp ecx,eax
  1399.                         jle .end_f ;¥á«¨ ­¥ 墠⨫® áâப¨
  1400.                         add edi,eax
  1401.                         sub ecx,eax
  1402.                         movzx eax,word[esi]
  1403.                         bt edx,0
  1404.                         jnc @f
  1405.                                 ror ax,8
  1406.                         @@:
  1407.                         stdcall convert_int_to_str,ecx
  1408.  
  1409.                         dec ebx
  1410.                         cmp ebx,0
  1411.                         je .end_f
  1412.  
  1413.                         ;¤®¡ ¢«ï¥¬ § ¯ïâãî
  1414.                         stdcall str_n_cat,edi,txt_zap,ecx
  1415.                         add esi,2
  1416.                         jmp .array_03
  1417.         .tag_03:
  1418.  
  1419.         mov bx,tag_format_ui4b
  1420.         bt edx,0
  1421.         jnc @f
  1422.                 ror bx,8
  1423.         @@:
  1424.         cmp word[eax+2],bx
  1425.         jne .tag_04
  1426.                 stdcall str_n_cat,edi,txt_dp,[t_max]
  1427.                 call get_tag_data_size
  1428.                 cmp ebx,1
  1429.                 jg .over4b_04
  1430.                         ;¥á«¨ ®¤­® 4 ¡ ©â®¢®¥ ç¨á«®
  1431.                         mov ebx,dword[eax+8]
  1432.                         bt edx,0
  1433.                         jnc @f
  1434.                                 bswap ebx
  1435.                         @@:
  1436.                         stdcall str_len,edi
  1437.                         add edi,eax
  1438.                         mov eax,ebx
  1439.                         stdcall convert_int_to_str, [t_max]
  1440.                 .over4b_04:
  1441.                         ;...
  1442.                 jmp .end_f
  1443.         .tag_04:
  1444.  
  1445.         mov bx,tag_format_urb
  1446.         bt edx,0
  1447.         jnc @f
  1448.                 ror bx,8
  1449.         @@:
  1450.         cmp word[eax+2],bx
  1451.         jne .tag_05
  1452.                 stdcall str_n_cat,edi,txt_dp,[t_max]
  1453.                 ;call get_tag_data_size
  1454.                 ;cmp ebx,1
  1455.                 ;jg .over4b_05
  1456.                         mov ebx,dword[eax+8]
  1457.                         bt edx,0
  1458.                         jnc @f
  1459.                                 bswap ebx
  1460.                         @@:
  1461.                         stdcall str_len,edi
  1462.                         add edi,eax
  1463.                         mov eax,[app1]
  1464.                         mov eax,[eax+4]
  1465.                         add ebx,eax
  1466.                         mov eax,[ebx]
  1467.                         bt edx,0
  1468.                         jnc @f
  1469.                                 bswap eax
  1470.                         @@:
  1471.                         stdcall convert_int_to_str, [t_max] ;áâ ¢¨¬ 1-¥ ç¨á«®
  1472.                         stdcall str_n_cat,edi,txt_div,[t_max] ;áâ ¢¨¬ §­ ª ¤¥«¥­¨ï
  1473.                         stdcall str_len,edi
  1474.                         add edi,eax
  1475.                         mov eax,[ebx+4]
  1476.                         bt edx,0
  1477.                         jnc @f
  1478.                                 bswap eax
  1479.                         @@:
  1480.                         stdcall convert_int_to_str, [t_max] ;áâ ¢¨¬ 2-¥ ç¨á«®
  1481.                 ;.over4b_05:
  1482.                         ;...
  1483.                 jmp .end_f
  1484.         .tag_05:
  1485.  
  1486.         mov bx,tag_format_si2b
  1487.         bt edx,0
  1488.         jnc @f
  1489.                 ror bx,8
  1490.         @@:
  1491.         cmp word[eax+2],bx
  1492.         jne .tag_08
  1493.                 stdcall str_n_cat,edi,txt_dp,[t_max]
  1494.                 call get_tag_data_size
  1495.                 cmp ebx,2
  1496.                 jg .over4b_08
  1497.                 jne @f
  1498.                         ;¥á«¨ ¤¢  2 ¡ ©â®¢ëå ç¨á« 
  1499.                         or edx,2 ;array data
  1500.                         movzx ecx,word[eax+10]
  1501.                         bt edx,0
  1502.                         jnc @f
  1503.                                 ror cx,8
  1504.                         @@:            
  1505.                         ;¥á«¨ ®¤­® 2 ¡ ©â®¢®¥ ç¨á«®
  1506.                         movzx ebx,word[eax+8]
  1507.                         bt edx,0
  1508.                         jnc @f
  1509.                                 ror bx,8
  1510.                         @@:
  1511.                         stdcall str_len,edi
  1512.                         add edi,eax
  1513.                         bt bx,15
  1514.                         jnc @f
  1515.                                 mov byte[edi],'-'
  1516.                                 inc edi
  1517.                                 neg bx
  1518.                                 inc bx
  1519.                         @@:
  1520.                         mov eax,ebx
  1521.                         stdcall convert_int_to_str, [t_max]
  1522.                         bt edx,1 ;array ?
  1523.                         jnc .end_f
  1524.                         ;¤®¡ ¢«ï¥¬ 2-¥ ç¨á«®
  1525.                         stdcall str_n_cat,edi,txt_zap,[t_max]
  1526.                         stdcall str_len,edi
  1527.                         add edi,eax
  1528.                         bt bx,15
  1529.                         jnc @f
  1530.                                 mov byte[edi],'-'
  1531.                                 inc edi
  1532.                                 neg bx
  1533.                                 inc bx
  1534.                         @@:
  1535.                         mov eax,ecx
  1536.                         stdcall convert_int_to_str, [t_max]
  1537.                         jmp .end_f
  1538.                 .over4b_08:
  1539.                         mov ecx,[t_max]
  1540.                         mov esi,dword[eax+8]
  1541.                         bt edx,0
  1542.                         jnc @f
  1543.                                 bswap esi
  1544.                         @@:
  1545.                         mov eax,[app1]
  1546.                         mov eax,[eax+4]
  1547.                         add esi,eax
  1548.                        
  1549.                         ;¡¥à¥¬ ç¨á«®
  1550.                         .array_08:
  1551.                         stdcall str_len,edi
  1552.                         cmp ecx,eax
  1553.                         jle .end_f ;¥á«¨ ­¥ 墠⨫® áâப¨
  1554.                         add edi,eax
  1555.                         sub ecx,eax
  1556.                         movzx eax,word[esi]
  1557.                         bt edx,0
  1558.                         jnc @f
  1559.                                 ror ax,8
  1560.                         @@:
  1561.                         ;ᬮâਬ ­  §­ ª +|-
  1562.                         bt ax,15
  1563.                         jnc @f
  1564.                                 mov byte[edi],'-'
  1565.                                 inc edi
  1566.                                 neg ax
  1567.                                 inc ax
  1568.                         @@:
  1569.                         stdcall convert_int_to_str,ecx
  1570.  
  1571.                         dec ebx
  1572.                         cmp ebx,0
  1573.                         je .end_f
  1574.  
  1575.                         ;¤®¡ ¢«ï¥¬ § ¯ïâãî
  1576.                         stdcall str_n_cat,edi,txt_zap,ecx
  1577.                         add esi,2
  1578.                         jmp .array_08
  1579.         .tag_08:
  1580.  
  1581.         mov bx,tag_format_si4b
  1582.         bt edx,0
  1583.         jnc @f
  1584.                 ror bx,8
  1585.         @@:
  1586.         cmp word[eax+2],bx
  1587.         jne .tag_09
  1588.                 stdcall str_n_cat,edi,txt_dp,[t_max]
  1589.                 call get_tag_data_size
  1590.                 cmp ebx,1
  1591.                 jg .over4b_09
  1592.                         ;¥á«¨ ®¤­® 4 ¡ ©â®¢®¥ ç¨á«®
  1593.                         mov ebx,dword[eax+8]
  1594.                         bt edx,0
  1595.                         jnc @f
  1596.                                 bswap ebx
  1597.                         @@:
  1598.                         stdcall str_len,edi
  1599.                         add edi,eax
  1600.                         bt ebx,31
  1601.                         jnc @f
  1602.                                 mov byte[edi],'-'
  1603.                                 inc edi
  1604.                                 neg ebx
  1605.                                 inc ebx
  1606.                         @@:
  1607.                         mov eax,ebx
  1608.                         stdcall convert_int_to_str, [t_max]
  1609.                 .over4b_09:
  1610.                         ;...
  1611.                 jmp .end_f
  1612.         .tag_09:
  1613.  
  1614.         .end_f:
  1615.         ret
  1616. endp
  1617.  
  1618. ;input:
  1619. ; eax - tag pointer
  1620. ; edx - 1 if 'MM', 0 if 'II'
  1621. ;output:
  1622. ; ebx - data size
  1623. align 4
  1624. get_tag_data_size:
  1625.         mov ebx,dword[eax+4]
  1626.         bt edx,0
  1627.         jnc @f
  1628.                 bswap ebx
  1629.         @@:
  1630.         ret
  1631.  
  1632. align 4
  1633. proc str_n_cat uses eax ecx edi esi, str1:dword, str2:dword, n:dword
  1634.         mov esi,dword[str2]
  1635.         mov ecx,dword[n]
  1636.         mov edi,dword[str1]
  1637.         stdcall str_len,edi
  1638.         add edi,eax
  1639.         cld
  1640.         repne movsb
  1641.         mov byte[edi],0
  1642.         ret
  1643. endp
  1644.  
  1645. ;output:
  1646. ; eax = strlen
  1647. align 4
  1648. proc str_len, str1:dword
  1649.         mov eax,[str1]
  1650.         @@:
  1651.                 cmp byte[eax],0
  1652.                 je @f
  1653.                 inc eax
  1654.                 jmp @b
  1655.         @@:
  1656.         sub eax,[str1]
  1657.         ret
  1658. endp
  1659.  
  1660. align 4
  1661. proc hex_in_str, buf:dword,val:dword,zif:dword
  1662.         pushad
  1663.                 mov edi,dword[buf]
  1664.                 mov ecx,dword[zif]
  1665.                 add edi,ecx
  1666.                 dec edi
  1667.                 mov ebx,dword[val]
  1668.  
  1669.                 .cycle:
  1670.                         mov al,bl
  1671.                         and al,0xf
  1672.                         cmp al,10
  1673.                         jl @f
  1674.                                 add al,'a'-'0'-10
  1675.                         @@:
  1676.                         add al,'0'
  1677.                         mov byte[edi],al
  1678.                         dec edi
  1679.                         shr ebx,4
  1680.                 loop .cycle
  1681.  
  1682.         popad
  1683.         ret
  1684. endp
  1685.  
  1686. ;input:
  1687. ; eax - ç¨á«®
  1688. ; edi - ¡ãä¥à ¤«ï áâப¨
  1689. ; len - ¤«¨­­  ¡ãä¥à 
  1690. ;output:
  1691. align 4
  1692. proc convert_int_to_str, len:dword
  1693. pushad
  1694.         mov esi,[len]
  1695.         add esi,edi
  1696.         dec esi
  1697.         call .str
  1698. popad
  1699.         ret
  1700. endp
  1701.  
  1702. align 4
  1703. .str:
  1704.         mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
  1705.         ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®©
  1706.         cmp eax,ecx ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
  1707.         jb @f
  1708.                 xor edx,edx ;®ç¨áâ¨âì edx
  1709.                 div ecx   ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
  1710.                 push edx  ;¯®«®¦¨âì ¢ á⥪
  1711.                 call .str ;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
  1712.                 pop eax
  1713.         @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
  1714.         cmp edi,esi
  1715.         jge @f
  1716.                 or al,0x30 ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥
  1717.                 stosb      ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
  1718.                 mov byte[edi],0 ;¢ ª®­¥æ áâப¨ áâ ¢¨¬ 0, çâ®-¡ë ­¥ ¢ë« §¨« ¬ãá®à
  1719.         @@:
  1720.         ret        ;¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
  1721.  
  1722.  
  1723.  
  1724. align 16
  1725. EXPORTS:
  1726.         dd sz_exif_get_app1, exif_get_app1
  1727.         dd sz_exif_get_app2, exif_get_app2
  1728.         dd sz_exif_get_tag, exif_get_tag
  1729.         dd sz_exif_get_tag_id, exif_get_tag_id
  1730.         dd sz_exif_get_child, exif_get_child
  1731.         dd 0,0
  1732.         sz_exif_get_app1 db 'exif_get_app1',0
  1733.         sz_exif_get_app2 db 'exif_get_app2',0
  1734.         sz_exif_get_tag db 'exif_get_tag',0
  1735.         sz_exif_get_tag_id db 'exif_get_tag_id',0
  1736.         sz_exif_get_child db 'exif_get_child',0
  1737.  
  1738.