Subversion Repositories Kolibri OS

Rev

Rev 4995 | Rev 5007 | Go to most recent revision | 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_tag_count equ 16 ;ᬥ饭¨¥ ª®«¨ç¥á⢠ ⥣®¢
  13. offs_tag_0     equ 18 ;ᬥ饭¨¥ 0-£® ⥣ 
  14. tag_size       equ 12 ;à §¬¥à áâàãªâãàë ⥣ 
  15. offs_tag_child_0 equ 2 ;ᬥ饭¨¥ 0-£® ¤®ç¥à­¥£® ⥣ 
  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_div db '/',0
  33.  
  34. ;
  35. align 4
  36. exif_tag_numbers:
  37.  
  38. db 0x00,0x01,'Interop index',0
  39. db 0x00,0x02,'Interop version',0
  40. db 0x00,0x0b,'Processing software',0
  41. db 0x00,0xfe,'Subfile type',0
  42. db 0x00,0xff,'OldSubfile type',0
  43. db 0x01,0x00,'Image width',0
  44. db 0x01,0x01,'Image height',0
  45. db 0x01,0x02,'Bits per sample',0
  46. db 0x01,0x03,'Compression',0
  47. db 0x01,0x06,'Photometric interpretation',0
  48. db 0x01,0x07,'Thresholding',0
  49. db 0x01,0x08,'Cell width',0
  50. db 0x01,0x09,'Cell length',0
  51. db 0x01,0x0a,'Fill order',0
  52. db 0x01,0x0d,'Document name',0
  53. db 0x01,0x0e,'Image description',0
  54. db 0x01,0x0f,'Manufacturer of digicam',0
  55. db 0x01,0x10,'Model',0
  56. db 0x01,0x11,'Strip offsets',0
  57. db 0x01,0x12,'Orientation',0
  58. db 0x01,0x15,'Samples per pixel',0
  59. db 0x01,0x16,'Rows per strip',0
  60. db 0x01,0x17,'Strip byte counts',0
  61. db 0x01,0x18,'Min sample value',0
  62. db 0x01,0x19,'Max sample value',0
  63. db 0x01,0x1a,'X resolution',0
  64. db 0x01,0x1b,'Y resolution',0
  65. db 0x01,0x1c,'Planar configuration',0
  66. db 0x01,0x1d,'Page name',0
  67. db 0x01,0x1e,'X position',0
  68. db 0x01,0x1f,'Y position',0
  69. db 0x01,0x20,'Free offsets',0
  70. db 0x01,0x21,'Free byte counts',0
  71. db 0x01,0x22,'Gray response unit',0
  72. db 0x01,0x23,'Gray response curve',0
  73. db 0x01,0x24,'T4 options',0
  74. db 0x01,0x25,'T6 options',0
  75. db 0x01,0x28,'Resolution unit',0
  76. db 0x01,0x29,'Page number',0
  77. db 0x01,0x2c,'Color response unit',0
  78. db 0x01,0x2d,'Transfer function',0
  79. db 0x01,0x31,'Software',0
  80. db 0x01,0x32,'Modify date',0
  81. db 0x01,0x3b,'Artist',0
  82. db 0x01,0x3c,'Host computer',0
  83. db 0x01,0x3d,'Predictor',0
  84. db 0x01,0x3e,'White point',0
  85. db 0x01,0x3f,'Primary chromaticities',0
  86. db 0x01,0x40,'Color map',0
  87. db 0x01,0x41,'Halftone hints',0
  88. db 0x01,0x42,'Tile width',0
  89. db 0x01,0x43,'Tile length',0
  90. db 0x01,0x44,'Tile offsets',0
  91. db 0x01,0x45,'Tile byte counts',0
  92. db 0x01,0x46,'Bad fax lines',0
  93. db 0x01,0x47,'Clean fax data',0
  94. db 0x01,0x48,'Consecutive bad fax lines',0
  95. db 0x01,0x4a,'Sub IFDs',0
  96. db 0x01,0x4c,'Ink set',0
  97. db 0x01,0x4d,'Ink names',0
  98. db 0x01,0x4e,'Numberof inks',0
  99. db 0x01,0x50,'Dot range',0
  100. db 0x01,0x51,'Target printer',0
  101. db 0x01,0x52,'Extra samples',0
  102. db 0x01,0x53,'Sample format',0
  103. db 0x01,0x54,'SMin sample value',0
  104. db 0x01,0x55,'SMax sample value',0
  105. db 0x01,0x56,'Transfer range',0
  106. db 0x01,0x57,'Clip path',0
  107. db 0x01,0x58,'X clip path units',0
  108. db 0x01,0x59,'Y clip path units',0
  109. db 0x01,0x5a,'Indexed',0
  110. db 0x01,0x5b,'JPEG tables',0
  111. db 0x01,0x5f,'OPIProxy',0
  112. db 0x01,0x90,'Global parameters IFD',0
  113. db 0x01,0x91,'Profile type',0
  114. db 0x01,0x92,'Fax profile',0
  115. db 0x01,0x93,'Coding methods',0
  116. db 0x01,0x94,'Version year',0
  117. db 0x01,0x95,'Mode number',0
  118. db 0x01,0xb1,'Decode',0
  119. db 0x01,0xb2,'Default image color',0
  120. db 0x01,0xb3,'T82 options',0
  121. db 0x01,0xb5,'JPEG tables',0 ;㦥 ¡ë«® ?
  122. db 0x02,0x00,'JPEG proc',0
  123. db 0x02,0x01,'Thumbnail offset',0
  124. db 0x02,0x02,'Thumbnail length',0
  125. db 0x02,0x03,'JPEG restart interval',0
  126. db 0x02,0x05,'JPEG lossless predictors',0
  127. db 0x02,0x06,'JPEG point transforms',0
  128. db 0x02,0x07,'JPEG QTables',0
  129. db 0x02,0x08,'JPEG DCTables',0
  130. db 0x02,0x09,'JPEG ACTables',0
  131. db 0x02,0x11,'YCbCrCoefficients',0
  132. db 0x02,0x12,'YCbCrSubSampling',0
  133. db 0x02,0x13,'YCbCrPositioning',0
  134. db 0x02,0x14,'Reference black white',0
  135. db 0x02,0x2f,'Strip row counts',0
  136. db 0x02,0xbc,'Application notes',0
  137. db 0x03,0xe7,'USPTO Miscellaneous',0
  138. db 0x10,0x00,'Related image file format',0
  139. db 0x10,0x01,'Related image width',0
  140. db 0x10,0x02,'Related image height',0
  141. db 0x47,0x46,'Rating',0
  142. db 0x47,0x47,'XP_DIP_XML',0
  143. db 0x47,0x48,'Stitch info',0
  144. db 0x47,0x49,'Rating percent',0
  145. db 0x80,0x0d,'Image ID',0
  146. db 0x80,0xa3,'Wang tag 1',0
  147. db 0x80,0xa4,'Wang annotation',0
  148. db 0x80,0xa5,'Wang tag 3',0
  149. db 0x80,0xa6,'Wang tag 4',0
  150. db 0x80,0xe3,'Matteing',0
  151. db 0x80,0xe4,'Data type',0
  152. db 0x80,0xe5,'Image depth',0
  153. db 0x80,0xe6,'Tile depth',0
  154. db 0x82,0x7d,'Model 2',0
  155. db 0x82,0x8d,'CFA repeat pattern dim',0
  156. db 0x82,0x8e,'CFA pattern 2',0
  157. db 0x82,0x8f,'Battery level',0
  158. db 0x82,0x90,'Kodak IFD',0
  159. db 0x82,0x98,'Copyright',0
  160. db 0x82,0x9a,'Exposure time',0
  161. db 0x82,0x9d,'F number',0
  162. db 0x82,0xa5,'MD file tag',0
  163. db 0x82,0xa6,'MD scale pixel',0
  164. db 0x82,0xa7,'MD color table',0
  165. db 0x82,0xa8,'MD lab name',0
  166. db 0x82,0xa9,'MD sample info',0
  167. db 0x82,0xaa,'MD prep date',0
  168. db 0x82,0xab,'MD prep time',0
  169. db 0x82,0xac,'MD file units',0
  170. db 0x83,0x0e,'Pixel scale',0
  171. db 0x83,0x35,'Advent scale',0
  172. db 0x83,0x36,'Advent revision',0
  173. db 0x83,0x5c,'UIC1 tag',0
  174. db 0x83,0x5d,'UIC2 tag',0
  175. db 0x83,0x5e,'UIC3 tag',0
  176. db 0x83,0x5f,'UIC4 tag',0
  177. db 0x83,0xbb,'IPTC-NAA',0
  178. db 0x84,0x7e,'Intergraph packet data',0
  179. db 0x84,0x7f,'Intergraph flag registers',0
  180. db 0x84,0x80,'Intergraph matrix',0
  181. db 0x84,0x81,'INGR reserved',0
  182. db 0x84,0x82,'Model tie point',0
  183. db 0x84,0xe0,'Site',0
  184. db 0x84,0xe1,'Color sequence',0
  185. db 0x84,0xe2,'IT8 header',0
  186. db 0x84,0xe3,'Raster padding',0
  187. db 0x84,0xe4,'Bits per run length',0
  188. db 0x84,0xe5,'Bits per extended run length',0
  189. db 0x84,0xe6,'Color table',0
  190. db 0x84,0xe7,'Image color indicator',0
  191. db 0x84,0xe8,'Background color indicator',0
  192. db 0x84,0xe9,'Image color value',0
  193. db 0x84,0xea,'Background color value',0
  194. db 0x84,0xeb,'Pixel intensity range',0
  195. db 0x84,0xec,'Transparency indicator',0
  196. db 0x84,0xed,'Color characterization',0
  197. db 0x84,0xee,'HCUsage',0
  198. db 0x84,0xef,'Trap indicator',0
  199. db 0x84,0xf0,'CMYK equivalent',0
  200. db 0x85,0x46,'SEM info',0
  201. db 0x85,0x68,'AFCP_IPTC',0
  202. db 0x85,0xb8,'Pixel magic JBIG options',0
  203. db 0x85,0xd8,'Model transform',0
  204. db 0x86,0x02,'WB_GRGB levels',0
  205. db 0x86,0x06,'Leaf data',0
  206. db 0x86,0x49,'Photoshop settings',0
  207. db 0x87,0x69,'Exif offset',0
  208. db 0x87,0x73,'ICC_Profile',0
  209. db 0x87,0x7f,'TIFF_FX extensions',0
  210. db 0x87,0x80,'Multi profiles',0
  211. db 0x87,0x81,'Shared data',0
  212. db 0x87,0x82,'T88 options',0
  213. db 0x87,0xac,'Image layer',0
  214. db 0x87,0xaf,'Geo tiff directory',0
  215. db 0x87,0xb0,'Geo tiff double params',0
  216. db 0x87,0xb1,'Geo tiff ascii params',0
  217. db 0x88,0x22,'Exposure program',0
  218. db 0x88,0x24,'Spectral sensitivity',0
  219. db 0x88,0x25,'GPS Info',0
  220. db 0x88,0x27,'ISO',0
  221. db 0x88,0x28,'Opto-Electric conv factor',0
  222. db 0x88,0x29,'Interlace',0
  223. db 0x88,0x2a,'Time zone offset',0
  224. db 0x88,0x2b,'Self timer mode',0
  225. db 0x88,0x30,'Sensitivity type',0
  226. db 0x88,0x31,'Standard output sensitivity',0
  227. db 0x88,0x32,'Recommended exposure index',0
  228. db 0x88,0x33,'ISO speed',0
  229. db 0x88,0x34,'ISO speed latitude yyy',0
  230. db 0x88,0x35,'ISO speed latitude zzz',0
  231. db 0x88,0x5c,'Fax recv params',0
  232. db 0x88,0x5d,'Fax sub address',0
  233. db 0x88,0x5e,'Fax recv time',0
  234. db 0x88,0x8a,'Leaf sub IFD',0
  235. db 0x90,0x00,'Exif version',0
  236. db 0x90,0x03,'Date time original',0
  237. db 0x90,0x04,'Create date',0
  238. db 0x91,0x01,'Components configuration',0
  239. db 0x91,0x02,'Compressed bits per pixel',0
  240. db 0x92,0x01,'Shutter speed value',0
  241. db 0x92,0x02,'Aperture value',0
  242. db 0x92,0x03,'Brightness value',0
  243. db 0x92,0x04,'Exposure compensation',0
  244. db 0x92,0x05,'Max aperture value',0
  245. db 0x92,0x06,'Subject distance',0
  246. db 0x92,0x07,'Metering mode',0
  247. db 0x92,0x08,'Light source',0
  248. db 0x92,0x09,'Flash',0
  249. db 0x92,0x0a,'Focal length',0
  250. db 0x92,0x0b,'Flash energy',0
  251. db 0x92,0x0c,'Spatial frequency response',0
  252. db 0x92,0x0d,'Noise',0
  253. db 0x92,0x0e,'Focal plane X resolution',0
  254. db 0x92,0x0f,'Focal plane Y resolution',0
  255. db 0x92,0x10,'Focal plane resolution unit',0
  256. db 0x92,0x11,'Image number',0
  257. db 0x92,0x12,'Security classification',0
  258. db 0x92,0x13,'Image history',0
  259. db 0x92,0x14,'Subject area',0
  260. db 0x92,0x15,'Exposure index',0
  261. db 0x92,0x16,'TIFF-EP standard ID',0
  262. db 0x92,0x17,'Sensing method',0
  263. db 0x92,0x3a,'CIP3 data file',0
  264. db 0x92,0x3b,'CIP3 sheet',0
  265. db 0x92,0x3c,'CIP3 side',0
  266. db 0x92,0x3f,'Sto nits',0
  267. db 0x92,0x7c,'Maker note',0
  268. db 0x92,0x86,'User comment',0
  269. db 0x92,0x90,'Sub sec time',0
  270. db 0x92,0x91,'Sub sec time original',0
  271. db 0x92,0x92,'Sub sec time digitized',0
  272. db 0x93,0x2f,'MS document text',0
  273. db 0x93,0x30,'MS property set storage',0
  274. db 0x93,0x31,'MS document text position',0
  275. db 0x93,0x5c,'Image source data',0
  276. db 0x9c,0x9b,'XP title',0
  277. db 0x9c,0x9c,'XP comment',0
  278. db 0x9c,0x9d,'XP author',0
  279. db 0x9c,0x9e,'XP keywords',0
  280. db 0x9c,0x9f,'XP subject',0
  281. db 0xa0,0x00,'Flashpix version',0
  282. db 0xa0,0x01,'Color space',0
  283. db 0xa0,0x02,'Exif image width',0
  284. db 0xa0,0x03,'Exif image height',0
  285. db 0xa0,0x04,'Related sound file',0
  286. db 0xa0,0x05,'Interop offset',0
  287. db 0xa2,0x0b,'Flash energy',0
  288. db 0xa2,0x0c,'Spatial frequency fesponse',0
  289. db 0xa2,0x0d,'Noise',0
  290. db 0xa2,0x0e,'Focal plane X resolution',0
  291. db 0xa2,0x0f,'Focal plane Y resolution',0
  292. db 0xa2,0x10,'Focal plane resolution unit',0
  293. db 0xa2,0x11,'Image number',0
  294. db 0xa2,0x12,'Security classification',0
  295. db 0xa2,0x13,'Image history',0
  296. db 0xa2,0x14,'Subject location',0
  297. db 0xa2,0x15,'Exposure index',0
  298. db 0xa2,0x16,'TIFF-EP standard ID',0
  299. db 0xa2,0x17,'Sensing method',0
  300. db 0xa3,0x00,'File source',0
  301. db 0xa3,0x01,'Scene type',0
  302. db 0xa3,0x02,'CFA pattern',0
  303. db 0xa4,0x01,'Custom rendered',0
  304. db 0xa4,0x02,'Exposure mode',0
  305. db 0xa4,0x03,'White balance',0
  306. db 0xa4,0x04,'Digital zoom ratio',0
  307. db 0xa4,0x05,'Focal length in 35mm format',0
  308. db 0xa4,0x06,'Scene capture type',0
  309. db 0xa4,0x07,'Gain control',0
  310. db 0xa4,0x08,'Contrast',0
  311. db 0xa4,0x09,'Saturation',0
  312. db 0xa4,0x0a,'Sharpness',0
  313. db 0xa4,0x0b,'Device setting description',0
  314. db 0xa4,0x0c,'Subject distance range',0
  315. db 0xa4,0x20,'Image unique ID',0
  316. db 0xa4,0x30,'Owner name',0
  317. db 0xa4,0x31,'Serial number',0
  318. db 0xa4,0x32,'Lens info',0
  319. db 0xa4,0x33,'Lens make',0
  320. db 0xa4,0x34,'Lens model',0
  321. db 0xa4,0x35,'Lens serial number',0
  322. db 0xa4,0x80,'GDAL metadata',0
  323. db 0xa4,0x81,'GDAL no data',0
  324. db 0xa5,0x00,'Gamma',0
  325. db 0xaf,0xc0,'Expand software',0
  326. db 0xaf,0xc1,'Expand lens',0
  327. db 0xaf,0xc2,'Expand film',0
  328. db 0xaf,0xc3,'Expand filterLens',0
  329. db 0xaf,0xc4,'Expand scanner',0
  330. db 0xaf,0xc5,'Expand flash lamp',0
  331. db 0xbc,0x01,'Pixel format',0
  332. db 0xbc,0x02,'Transformation',0
  333. db 0xbc,0x03,'Uncompressed',0
  334. db 0xbc,0x04,'Image type',0
  335. db 0xbc,0x80,'Image width',0
  336. db 0xbc,0x81,'Image height',0
  337. db 0xbc,0x82,'Width resolution',0
  338. db 0xbc,0x83,'Height resolution',0
  339. db 0xbc,0xc0,'Image offset',0
  340. db 0xbc,0xc1,'Image byte count',0
  341. db 0xbc,0xc2,'Alpha offset',0
  342. db 0xbc,0xc3,'Alpha byte count',0
  343. db 0xbc,0xc4,'Image data discard',0
  344. db 0xbc,0xc5,'Alpha data discard',0
  345. db 0xc4,0x27,'Oce scanjob desc',0
  346. db 0xc4,0x28,'Oce application selector',0
  347. db 0xc4,0x29,'Oce ID number',0
  348. db 0xc4,0x2a,'Oce image logic',0
  349. db 0xc4,0x4f,'Annotations',0
  350. db 0xc4,0xa5,'Print IM',0
  351. db 0xc5,0x73,'Original file name',0
  352. db 0xc5,0x80,'USPTO original content type',0
  353. db 0xc6,0x12,'DNG version',0
  354. db 0xc6,0x13,'DNG backward version',0
  355. db 0xc6,0x14,'Unique camera model',0
  356. db 0xc6,0x15,'Localized camera model',0
  357. db 0xc6,0x16,'CFA plane color',0
  358. db 0xc6,0x17,'CFA layout',0
  359. db 0xc6,0x18,'Linearization table',0
  360. db 0xc6,0x19,'Black level repeat dim',0
  361. db 0xc6,0x1a,'Black level',0
  362. db 0xc6,0x1b,'Black level delta H',0
  363. db 0xc6,0x1c,'Black level delta V',0
  364. db 0xc6,0x1d,'White level',0
  365. db 0xc6,0x1e,'Default scale',0
  366. db 0xc6,0x1f,'Default crop origin',0
  367. db 0xc6,0x20,'Default crop size',0
  368. db 0xc6,0x21,'Color matrix 1',0
  369. db 0xc6,0x22,'Color matrix 2',0
  370. db 0xc6,0x23,'Camera calibration 1',0
  371. db 0xc6,0x24,'Camera calibration 2',0
  372. db 0xc6,0x25,'Reduction matrix 1',0
  373. db 0xc6,0x26,'Reduction matrix 2',0
  374. db 0xc6,0x27,'Analog balance',0
  375. db 0xc6,0x28,'As shot neutral',0
  376. db 0xc6,0x29,'As shot white XY',0
  377. db 0xc6,0x2a,'BaselineExposure',0
  378. db 0xc6,0x2b,'BaselineNoise',0
  379. db 0xc6,0x2c,'BaselineSharpness',0
  380. db 0xc6,0x2d,'BayerGreenSplit',0
  381. db 0xc6,0x2e,'Linear response limit',0
  382. db 0xc6,0x2f,'Camera serial number',0
  383. db 0xc6,0x30,'DNG lens info',0
  384. db 0xc6,0x31,'Chroma blur radius',0
  385. db 0xc6,0x32,'Anti alias strength',0
  386. db 0xc6,0x33,'Shadow scale',0
  387. db 0xc6,0x34,'SR2 private',0
  388. db 0xc6,0x35,'Maker note safety',0
  389. db 0xc6,0x40,'Raw image segmentation',0
  390. db 0xc6,0x5a,'Calibration illuminant 1',0
  391. db 0xc6,0x5b,'Calibration illuminant 2',0
  392. db 0xc6,0x5c,'Best quality scale',0
  393. db 0xc6,0x5d,'Raw data unique ID',0
  394. db 0xc6,0x60,'Alias layer metadata',0
  395. db 0xc6,0x8b,'Original raw file name',0
  396. db 0xc6,0x8c,'Original raw file data',0
  397. db 0xc6,0x8d,'Active area',0
  398. db 0xc6,0x8e,'Masked areas',0
  399. db 0xc6,0x8f,'AsShot ICC profile',0
  400. db 0xc6,0x90,'AsShot pre profile matrix',0
  401. db 0xc6,0x91,'Current ICC profile',0
  402. db 0xc6,0x92,'Current pre profile matrix',0
  403. db 0xc6,0xbf,'Colorimetric reference',0
  404. db 0xc6,0xd2,'Panasonic title',0
  405. db 0xc6,0xd3,'Panasonic title 2',0
  406. db 0xc6,0xf3,'Camera calibration sig',0
  407. db 0xc6,0xf4,'Profile calibration sig',0
  408. db 0xc6,0xf5,'Profile IFD',0
  409. db 0xc6,0xf6,'AsShot profile name',0
  410. db 0xc6,0xf7,'Noise reduction applied',0
  411. db 0xc6,0xf8,'Profile name',0
  412. db 0xc6,0xf9,'Profile hue sat map dims',0
  413. db 0xc6,0xfa,'Profile hue sat map data 1',0
  414. db 0xc6,0xfb,'Profile hue sat map data 2',0
  415. db 0xc6,0xfc,'Profile tone curve',0
  416. db 0xc6,0xfd,'Profile embed policy',0
  417. db 0xc6,0xfe,'Profile copyright',0
  418. db 0xc7,0x14,'Forward matrix 1',0
  419. db 0xc7,0x15,'Forward matrix 2',0
  420. db 0xc7,0x16,'Preview application name',0
  421. db 0xc7,0x17,'Preview application version',0
  422. db 0xc7,0x18,'Preview settings name',0
  423. db 0xc7,0x19,'Preview settings digest',0
  424. db 0xc7,0x1a,'Preview color space',0
  425. db 0xc7,0x1b,'Preview date time',0
  426. db 0xc7,0x1c,'Raw image digest',0
  427. db 0xc7,0x1d,'Original raw file digest',0
  428. db 0xc7,0x1e,'Sub tile block size',0
  429. db 0xc7,0x1f,'Row interleave factor',0
  430. db 0xc7,0x25,'Profile look table dims',0
  431. db 0xc7,0x26,'Profile look table data',0
  432. db 0xc7,0x40,'Opcode list 1',0
  433. db 0xc7,0x41,'Opcode list 2',0
  434. db 0xc7,0x4e,'Opcode list 3',0
  435. db 0xc7,0x61,'Noise profile',0
  436. db 0xc7,0x63,'Time codes',0
  437. db 0xc7,0x64,'Frame rate',0
  438. db 0xc7,0x72,'TStop',0
  439. db 0xc7,0x89,'Reel name',0
  440. db 0xc7,0x91,'Original default final size',0
  441. db 0xc7,0x92,'Original best quality size',0
  442. db 0xc7,0x93,'Original default crop size',0
  443. db 0xc7,0xa1,'Camera label',0
  444. db 0xc7,0xa3,'Profile hue sat map encoding',0
  445. db 0xc7,0xa4,'Profile look table encoding',0
  446. db 0xc7,0xa5,'Baseline exposure offset',0
  447. db 0xc7,0xa6,'Default black render',0
  448. db 0xc7,0xa7,'New raw image digest',0
  449. db 0xc7,0xa8,'Raw to preview gain',0
  450. db 0xc7,0xb5,'Default user crop',0
  451. db 0xea,0x1c,'Padding',0
  452. db 0xea,0x1d,'Offset schema',0
  453. db 0xfd,0xe8,'Owner name',0
  454. db 0xfd,0xe9,'Serial number',0
  455. db 0xfd,0xea,'Lens',0
  456. db 0xfe,0x00,'KDC_IFD',0
  457. db 0xfe,0x4c,'Raw file',0
  458. db 0xfe,0x4d,'Converter',0
  459. db 0xfe,0x4e,'White balance',0
  460. db 0xfe,0x51,'Exposure',0
  461. db 0xfe,0x52,'Shadows',0
  462. db 0xfe,0x53,'Brightness',0
  463. db 0xfe,0x54,'Contrast',0
  464. db 0xfe,0x55,'Saturation',0
  465. db 0xfe,0x56,'Sharpness',0
  466. db 0xfe,0x57,'Smoothness',0
  467. db 0xfe,0x58,'Moire filter',0
  468.  
  469. dw 0
  470.  
  471. ;input:
  472. ; bof - 㪠§ â¥«ì ­  ­ ç «® ä ©« 
  473. ; app1 - 㪠§ â¥«ì ¤«ï § ¯®«­¥­¨ï exif.app1
  474. ;output:
  475. ; app1 - 㪠§ â¥«ì ­  ­ ç «® exif.app1 (¨«¨ 0 ¥á«¨ ­¥ ­ ©¤¥­® ¨«¨ ä®à¬ â ä ©«  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï)
  476. align 4
  477. proc exif_get_app1 uses eax ebx edi, bof:dword, app1:dword
  478.         mov eax,[bof]
  479.         mov edi,[app1]
  480.  
  481.         ;ä ©« ¢ ä®à¬ â¥ jpg?
  482.         cmp word[eax],0xd8ff
  483.         jne .no_exif
  484.         add eax,2
  485.  
  486.         ;ä ©« ᮤ¥à¦¨â exif.app0?
  487.         cmp word[eax],0xe0ff
  488.         jne @f
  489.                 add eax,2
  490.                 movzx ebx,word[eax]
  491.                 ror bx,8 ;¢á¥£¤  «¨ â ª ­ ¤®?
  492.                 add eax,ebx
  493.         @@:
  494.  
  495.         ;ä ©« ᮤ¥à¦¨â exif.app1?
  496.         cmp word[eax],0xe1ff
  497.         jne .no_exif
  498.  
  499.         add eax,2
  500.         mov [edi],eax
  501.  
  502.         jmp @f
  503.         .no_exif:
  504.                 mov dword[edi],0
  505.         @@:
  506.         ret
  507. endp
  508.  
  509. ;input:
  510. ; app1 - 㪠§ â¥«ì ­  ­ ç «® exif.app1
  511. ; num - ¯®à浪®¢ë© ­®¬¥à ⥣  (­ ç¨­ ¥âáï á 1)
  512. ; txt - 㪠§ â¥«ì ­  ⥪áâ, ªã¤  ¡ã¤¥â § ¯¨á ­® §­ ç¥­¨¥
  513. ; t_max - ¬ ªá¨¬ «ì­ë© à §¬¥à ⥪áâ 
  514. align 4
  515. proc exif_get_app1_tag, app1:dword, num:dword, txt:dword, t_max:dword
  516. pushad
  517.         mov eax,[app1]
  518.         mov edi,[txt]
  519.         mov ecx,[num]
  520.  
  521.         xor edx,edx
  522.         mov byte[edi],dl
  523.         cmp eax,edx
  524.         je .end_f ;¥á«¨ ­¥ ­ ©¤¥­ 㪠§ â¥«ì ­  ­ ç «® exif.app1
  525.         cmp ecx,edx
  526.         jle .end_f ;¥á«¨ ¯®à浪®¢ë© ­®¬¥à ⥣  <= 0
  527.  
  528.         cmp word[eax+offs_m_or_i],'II'
  529.         je @f
  530.                 inc edx ;if 'MM' edx=1
  531.         @@:
  532.  
  533.         ;¯à®¢¥à塞 ç¨á«® ⥣®¢
  534.         movzx ebx,word[eax+offs_tag_count]
  535.         bt edx,0
  536.         jnc @f
  537.                 ror bx,8
  538.         @@:
  539.         cmp ecx,ebx
  540.         jg .end_f ;¥á«¨ ­®¬¥à ⥣  ¡®«ìè¥ ç¥¬ ¨å ¥áâì ¢ ä ©«¥
  541.  
  542.         ;¯¥à¥å®¤¨¬ ­  § ¤ ­­ë© ⥣
  543.         dec ecx
  544.         imul ecx,tag_size
  545.         add eax,offs_tag_0
  546.         add eax,ecx
  547.  
  548.         stdcall read_tag_value,[app1],[t_max]
  549.  
  550.         .end_f:
  551. popad
  552.         ret
  553. endp
  554.  
  555. ;input:
  556. ; app1 - 㪠§ â¥«ì ­  exif.app1
  557. ; child - 㪠§ â¥«ì ¤«ï § ¯®«­¥­¨ï ­ ç «  ¤®ç¥à­¨å ⥣®¢ exif.app1.child
  558. ; c_tag - ⥣ ¤«ï ª®â®à®£® ¤¥« ¥âáï ¯®¨áª ¤®ç¥à­¨å
  559. ;output:
  560. ; child - 㪠§ â¥«ì ­  ­ ç «® ¤®ç¥à­¨å ⥣®¢
  561. align 4
  562. proc exif_get_app1_child, app1:dword, child:dword , c_tag:dword
  563. pushad
  564.         mov eax,[app1]
  565.         mov edi,[child]
  566.  
  567.         xor edx,edx
  568.         mov dword[edi],edx
  569.         cmp eax,edx
  570.         je .end_f ;¥á«¨ ­¥ ­ ©¤¥­ 㪠§ â¥«ì ­  ­ ç «® exif.app1
  571.  
  572.         cmp word[eax+offs_m_or_i],'II'
  573.         je @f
  574.                 inc edx ;if 'MM' edx=1
  575.         @@:
  576.  
  577.         ;­ ç «® ¯®¨áª 
  578.         mov ebx,[c_tag]
  579.         bt edx,0
  580.         jnc @f
  581.                 ror bx,8
  582.         @@:
  583.  
  584.         ;¯à®¢¥à塞 ç¨á«® ⥣®¢
  585.         movzx ecx,word[eax+offs_tag_count]
  586.         bt edx,0
  587.         jnc @f
  588.                 ror cx,8
  589.         @@:
  590.         cmp ecx,1
  591.         jl .end_f ;¥á«¨ ç¨á«® ⥣®¢ <1
  592.  
  593.         ;¯¥à¥å®¤¨¬ ­  1-© ⥣
  594.         add eax,offs_tag_0
  595.         @@:
  596.                 cmp word[eax],bx
  597.                 je @f
  598.                 add eax,tag_size
  599.                 loop @b
  600.         jmp .end_f ;¥á«¨ ­¥ ­ ©¤¥­®
  601.         @@: ;¥á«¨ ­ ©¤¥­®
  602.                 mov ebx,dword[eax+8]
  603.                 bt edx,0
  604.                 jnc @f
  605.                         ror bx,8
  606.                         ror ebx,16
  607.                         ror bx,8
  608.                 @@:
  609.                 add ebx,[app1]
  610.                 add ebx,offs_m_or_i
  611.                 mov dword[edi],ebx
  612.         .end_f:
  613. popad
  614.         ret
  615. endp
  616.  
  617. ;input:
  618. ; app1 - 㪠§ â¥«ì ­  ­ ç «® exif.app1
  619. ; child - 㪠§ â¥«ì ­  ­ ç «® ¤®ç¥à­¨å ⥣®¢ exif.app1.child
  620. ; num - ¯®à浪®¢ë© ­®¬¥à ⥣  (­ ç¨­ ¥âáï á 1)
  621. ; txt - 㪠§ â¥«ì ­  ⥪áâ, ªã¤  ¡ã¤¥â § ¯¨á ­® §­ ç¥­¨¥
  622. ; t_max - ¬ ªá¨¬ «ì­ë© à §¬¥à ⥪áâ 
  623. align 4
  624. proc exif_get_app1_child_tag, app1:dword, child:dword, num:dword, txt:dword, t_max:dword
  625. pushad
  626.         mov eax,[app1]
  627.         mov edi,[txt]
  628.         mov ecx,[num]
  629.  
  630.         xor edx,edx
  631.         mov byte[edi],dl
  632.         cmp eax,edx
  633.         je .end_f ;¥á«¨ ­¥ ­ ©¤¥­ 㪠§ â¥«ì ­  ­ ç «® exif.app1
  634.         cmp ecx,edx
  635.         jle .end_f ;¥á«¨ ¯®à浪®¢ë© ­®¬¥à ⥣  <= 0
  636.  
  637.         cmp word[eax+offs_m_or_i],'II'
  638.         je @f
  639.                 inc edx ;if 'MM' edx=1
  640.         @@:
  641.  
  642.         mov eax,[child]
  643.         cmp eax,0
  644.         je .end_f ;¥á«¨ ­¥ ­ ©¤¥­ 㪠§ â¥«ì ­  ­ ç «® exif.app1.child
  645.        
  646.         ;¯à®¢¥à塞 ç¨á«® ⥣®¢
  647.         movzx ebx,word[eax]
  648.         bt edx,0
  649.         jnc @f
  650.                 ror bx,8
  651.         @@:
  652.         cmp ecx,ebx
  653.         jg .end_f ;¥á«¨ ­®¬¥à ⥣  ¡®«ìè¥ ç¥¬ ¨å ¥áâì ¢ ä ©«¥
  654.  
  655.         ;¯¥à¥å®¤¨¬ ­  § ¤ ­­ë© ⥣
  656.         dec ecx
  657.         imul ecx,tag_size
  658.         add eax,offs_tag_child_0
  659.         add eax,ecx
  660.  
  661.         stdcall read_tag_value,[app1],[t_max]
  662.  
  663.         .end_f:
  664. popad
  665.         ret
  666. endp
  667.  
  668. ;description:
  669. ; ¢á¯®¬®£ â¥«ì­ ï äã­ªæ¨ï ¤«ï ç⥭¨ï ­ §­ ç¥­¨© ⥣®¢
  670. ;input:
  671. ; eax - 㪠§ â¥«ì ­ ç «  ⥣ 
  672. ; edi - 㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï § ¯¨á¨ ⥪á⮢®© áâப¨
  673. align 4
  674. proc read_tag_value, app1:dword, t_max:dword
  675.         push exif_tag_numbers
  676.         pop esi
  677.         .next_tag:
  678.         mov bx,word[esi]
  679.         cmp bx,0
  680.         je .tag_unknown ;⥣ ­¥ ®¯®§­ ­
  681.         bt edx,0
  682.         jc @f
  683.                 ror bx,8
  684.         @@:
  685.         cmp word[eax],bx
  686.         je .found
  687.         inc esi
  688.         @@:
  689.                 inc esi
  690.                 cmp byte[esi],0
  691.                 jne @b
  692.         inc esi
  693.         jmp .next_tag
  694.         .found:
  695.  
  696.         ;ª®¯¨à㥬 áâபã
  697.         add esi,2
  698.         stdcall str_n_cat,edi,esi,[t_max]
  699.  
  700.         jmp @f
  701.         .tag_unknown:
  702.                 mov dword[edi],'???'
  703.                 mov byte[edi+3],0
  704.         @@:
  705.  
  706.         ;ç¨â ¥¬ ¨­ä®à¬ æ¨î ¢ ⥣¥
  707.         mov bx,tag_format_text
  708.         bt edx,0
  709.         jnc @f
  710.                 ror bx,8
  711.         @@:
  712.         cmp word[eax+2],bx
  713.         jne .tag_02
  714.                 stdcall str_n_cat,edi,txt_dp,[t_max]
  715.                 call get_tag_data_size ;¯à®¢¥à塞 ¤«¨­­ã áâப¨
  716.                 cmp ebx,4
  717.                 jg @f
  718.                         ;¥á«¨ áâப  ¯®¬¥é ¥âáï ¢ 4 ᨬ¢®« 
  719.                         mov esi,eax
  720.                         add esi,8
  721.                         stdcall str_n_cat,edi,esi,[t_max]
  722.                         jmp .end_f
  723.                 ;¥á«¨ áâப  ­¥ ¯®¬¥é ¥âáï ¢ 4 ᨬ¢®« 
  724.                 @@:
  725.                 mov esi,dword[eax+8]
  726.                 bt edx,0
  727.                 jnc @f
  728.                         ror si,8
  729.                         ror esi,16
  730.                         ror si,8
  731.                 @@:
  732.                 add esi,offs_m_or_i
  733.                 add esi,[app1]
  734.                 stdcall str_n_cat,edi,esi,[t_max]
  735.                 jmp .end_f
  736.         .tag_02:
  737.  
  738.         mov bx,tag_format_ui2b
  739.         bt edx,0
  740.         jnc @f
  741.                 ror bx,8
  742.         @@:
  743.         cmp word[eax+2],bx
  744.         jne .tag_03
  745.                 stdcall str_n_cat,edi,txt_dp,[t_max]
  746.                 call get_tag_data_size
  747.                 cmp ebx,1
  748.                 jg .over4b_03
  749.                         ;¥á«¨ ®¤­® 2 ¡ ©â®¢®¥ ç¨á«®
  750.                         movzx ebx,word[eax+8]
  751.                         bt edx,0
  752.                         jnc @f
  753.                                 ror bx,8
  754.                         @@:
  755.                         stdcall str_len,edi
  756.                         add edi,eax
  757.                         mov eax,ebx
  758.                         call convert_int_to_str ;[t_max]
  759.                 .over4b_03:
  760.                         ;...
  761.                 jmp .end_f
  762.         .tag_03:
  763.  
  764.         mov bx,tag_format_ui4b
  765.         bt edx,0
  766.         jnc @f
  767.                 ror bx,8
  768.         @@:
  769.         cmp word[eax+2],bx
  770.         jne .tag_04
  771.                 stdcall str_n_cat,edi,txt_dp,[t_max]
  772.                 call get_tag_data_size
  773.                 cmp ebx,1
  774.                 jg .over4b_04
  775.                         ;¥á«¨ ®¤­® 4 ¡ ©â®¢®¥ ç¨á«®
  776.                         mov ebx,dword[eax+8]
  777.                         bt edx,0
  778.                         jnc @f
  779.                                 ror bx,8
  780.                                 ror ebx,16
  781.                                 ror bx,8
  782.                         @@:
  783.                         stdcall str_len,edi
  784.                         add edi,eax
  785.                         mov eax,ebx
  786.                         call convert_int_to_str ;[t_max]
  787.                 .over4b_04:
  788.                         ;...
  789.                 jmp .end_f
  790.         .tag_04:
  791.  
  792.         mov bx,tag_format_urb
  793.         bt edx,0
  794.         jnc @f
  795.                 ror bx,8
  796.         @@:
  797.         cmp word[eax+2],bx
  798.         jne .tag_05
  799.                 stdcall str_n_cat,edi,txt_dp,[t_max]
  800.                 ;call get_tag_data_size
  801.                 ;cmp ebx,1
  802.                 ;jg .over4b_05
  803.                         mov ebx,dword[eax+8]
  804.                         bt edx,0
  805.                         jnc @f
  806.                                 ror bx,8
  807.                                 ror ebx,16
  808.                                 ror bx,8
  809.                         @@:
  810.                         stdcall str_len,edi
  811.                         add edi,eax
  812.                         add ebx,offs_m_or_i
  813.                         add ebx,[app1]
  814.                         mov eax,[ebx]
  815.                         bt edx,0
  816.                         jnc @f
  817.                                 ror ax,8
  818.                                 ror eax,16
  819.                                 ror ax,8
  820.                         @@:
  821.                         call convert_int_to_str ;áâ ¢¨¬ 1-¥ ç¨á«®
  822.                         stdcall str_n_cat,edi,txt_div,[t_max] ;áâ ¢¨¬ §­ ª ¤¥«¥­¨ï
  823.                         stdcall str_len,edi
  824.                         add edi,eax
  825.                         mov eax,[ebx+4]
  826.                         bt edx,0
  827.                         jnc @f
  828.                                 ror ax,8
  829.                                 ror eax,16
  830.                                 ror ax,8
  831.                         @@:
  832.                         call convert_int_to_str ;áâ ¢¨¬ 2-¥ ç¨á«®
  833.                 ;.over4b_05:
  834.                         ;...
  835.                 ;jmp .end_f
  836.         .tag_05:
  837.  
  838.         .end_f:
  839.         ret
  840. endp
  841.  
  842. ;input:
  843. ; eax - tag pointer
  844. ; edx - 1 if 'MM', 0 if 'II'
  845. ;output:
  846. ; ebx - data size
  847. align 4
  848. get_tag_data_size:
  849.         mov ebx,dword[eax+4]
  850.         bt edx,0
  851.         jnc @f
  852.                 ror bx,8
  853.                 ror ebx,16
  854.                 ror bx,8
  855.         @@:
  856.         ret
  857.  
  858. align 4
  859. proc str_n_cat uses eax ecx edi esi, str1:dword, str2:dword, n:dword
  860.         mov esi,dword[str2]
  861.         mov ecx,dword[n]
  862.         mov edi,dword[str1]
  863.         stdcall str_len,edi
  864.         add edi,eax
  865.         cld
  866.         repne movsb
  867.         mov byte[edi],0
  868.         ret
  869. endp
  870.  
  871. ;output:
  872. ; eax = strlen
  873. align 4
  874. proc str_len, str1:dword
  875.         mov eax,[str1]
  876.         @@:
  877.                 cmp byte[eax],0
  878.                 je @f
  879.                 inc eax
  880.                 jmp @b
  881.         @@:
  882.         sub eax,[str1]
  883.         ret
  884. endp
  885.  
  886. ;input:
  887. ; eax = value
  888. ; edi = string buffer
  889. ;output:
  890. align 4
  891. convert_int_to_str:
  892.         pushad
  893.                 mov dword[edi+1],0
  894.                 mov dword[edi+5],0
  895.                 call .str
  896.         popad
  897.         ret
  898.  
  899. align 4
  900. .str:
  901.         mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
  902.     ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®©
  903.         cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
  904.         jb @f
  905.                 xor edx,edx  ;®ç¨áâ¨âì edx
  906.                 div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
  907.                 push edx     ;¯®«®¦¨âì ¢ á⥪
  908.                 ;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
  909.                 call .str ;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
  910.                 pop eax
  911.         @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
  912.         or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  ç¥¬ ¤¢¥ ¢ëè¥
  913.         stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
  914.         ret           ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
  915.  
  916.  
  917.  
  918. align 16
  919. EXPORTS:
  920.         dd sz_exif_get_app1, exif_get_app1
  921.         dd sz_exif_get_app1_tag, exif_get_app1_tag
  922.         dd sz_exif_get_app1_child, exif_get_app1_child
  923.         dd sz_exif_get_app1_child_tag, exif_get_app1_child_tag
  924.         dd 0,0
  925.         sz_exif_get_app1 db 'exif_get_app1',0
  926.         sz_exif_get_app1_tag db 'exif_get_app1_tag',0
  927.         sz_exif_get_app1_child db 'exif_get_app1_child',0
  928.         sz_exif_get_app1_child_tag db 'exif_get_app1_child_tag',0
  929.