Qualcomm.pm 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344
  1. #------------------------------------------------------------------------------
  2. # File: Qualcomm.pm
  3. #
  4. # Description: Read Qualcomm APP7 meta information
  5. #
  6. # Revisions: 2012/02/14 - P. Harvey Created
  7. #------------------------------------------------------------------------------
  8. package Image::ExifTool::Qualcomm;
  9. use strict;
  10. use vars qw($VERSION);
  11. use Image::ExifTool qw(:DataAccess :Utils);
  12. $VERSION = '1.01';
  13. sub ProcessQualcomm($$$);
  14. sub MakeNameAndDesc($$);
  15. # Qualcomm format codes (ref PH (NC))
  16. my @qualcommFormat = (
  17. 'int8u', 'int8s', 'int16u', 'int16s',
  18. 'int32u', 'int32s', 'float', 'double',
  19. );
  20. # information found in JPEG APP7 Qualcomm Camera Attributes segment
  21. %Image::ExifTool::Qualcomm::Main = (
  22. PROCESS_PROC => \&ProcessQualcomm,
  23. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  24. VARS => { NO_ID => 1, NO_LOOKUP => 1 }, # too long, too many, and too obscure
  25. NOTES => q{
  26. The tags below have been observed in the JPEG APP7 "Qualcomm Camera
  27. Attributes" segment written by some cameras such as the HP iPAQ Voice
  28. Messenger. ExifTool will extract any information found from this segment,
  29. even if it is not listed in this table.
  30. },
  31. 'aec_current_sensor_luma' => { },
  32. 'af_position' => { },
  33. 'aec_current_exp_index' => { },
  34. 'awb_sample_decision' => { },
  35. 'asf5_enable' => { },
  36. 'asf5_filter_mode' => { },
  37. 'asf5_exposure_index_1' => { },
  38. 'asf5_exposure_index_2' => { },
  39. 'asf5_max_exposure_index' => { },
  40. 'asf5_luma_filter[0]' => { },
  41. 'asf5_luma_filter[1]' => { },
  42. 'asf5_luma_filter[2]' => { },
  43. 'asf5_luma_filter[3]' => { },
  44. 'asf5_luma_filter[4]' => { },
  45. 'asf5_luma_filter[5]' => { },
  46. 'asf5_luma_filter[6]' => { },
  47. 'asf5_luma_filter[7]' => { },
  48. 'asf5_luma_filter[8]' => { },
  49. 'asf5_filter1_a11' => { },
  50. 'asf5_filter1_a12' => { },
  51. 'asf5_filter1_a13' => { },
  52. 'asf5_filter1_a14' => { },
  53. 'asf5_filter1_a15' => { },
  54. 'asf5_filter1_a21' => { },
  55. 'asf5_filter1_a22' => { },
  56. 'asf5_filter1_a23' => { },
  57. 'asf5_filter1_a24' => { },
  58. 'asf5_filter1_a25' => { },
  59. 'asf5_filter1_a31' => { },
  60. 'asf5_filter1_a32' => { },
  61. 'asf5_filter1_a33' => { },
  62. 'asf5_filter1_a34' => { },
  63. 'asf5_filter1_a35' => { },
  64. 'asf5_filter1_a41' => { },
  65. 'asf5_filter1_a42' => { },
  66. 'asf5_filter1_a43' => { },
  67. 'asf5_filter1_a44' => { },
  68. 'asf5_filter1_a45' => { },
  69. 'asf5_filter1_a51' => { },
  70. 'asf5_filter1_a52' => { },
  71. 'asf5_filter1_a53' => { },
  72. 'asf5_filter1_a54' => { },
  73. 'asf5_filter1_a55' => { },
  74. 'asf5_filter2_a11' => { },
  75. 'asf5_filter2_a12' => { },
  76. 'asf5_filter2_a13' => { },
  77. 'asf5_filter2_a14' => { },
  78. 'asf5_filter2_a15' => { },
  79. 'asf5_filter2_a21' => { },
  80. 'asf5_filter2_a22' => { },
  81. 'asf5_filter2_a23' => { },
  82. 'asf5_filter2_a24' => { },
  83. 'asf5_filter2_a25' => { },
  84. 'asf5_filter2_a31' => { },
  85. 'asf5_filter2_a32' => { },
  86. 'asf5_filter2_a33' => { },
  87. 'asf5_filter2_a34' => { },
  88. 'asf5_filter2_a35' => { },
  89. 'asf5_filter2_a41' => { },
  90. 'asf5_filter2_a42' => { },
  91. 'asf5_filter2_a43' => { },
  92. 'asf5_filter2_a44' => { },
  93. 'asf5_filter2_a45' => { },
  94. 'asf5_filter2_a51' => { },
  95. 'asf5_filter2_a52' => { },
  96. 'asf5_filter2_a53' => { },
  97. 'asf5_filter2_a54' => { },
  98. 'asf5_filter2_a55' => { },
  99. 'asf5_nrmize_factor1' => { },
  100. 'asf5_nrmize_factor2' => { },
  101. 'asf5_low_lo_thres' => { },
  102. 'asf5_low_up_thres' => { },
  103. 'asf5_low_shrp_deg_f1' => { },
  104. 'asf5_low_shrp_deg_f2' => { },
  105. 'asf5_low_smth_prcnt' => { },
  106. 'asf5_nrm_lo_thres' => { },
  107. 'asf5_nrm_up_thres' => { },
  108. 'asf5_nrm_shrp_deg_f1' => { },
  109. 'asf5_nrm_shrp_deg_f2' => { },
  110. 'asf5_nrm_smth_prcnt' => { },
  111. 'asf5_brt_lo_thres' => { },
  112. 'asf5_brt_up_thres' => { },
  113. 'asf5_brt_shrp_deg_f1' => { },
  114. 'asf5_brt_shrp_deg_f2' => { },
  115. 'asf5_brt_smth_percent' => { },
  116. 'asf3_enable' => { },
  117. 'asf3_edge_filter_a11' => { },
  118. 'asf3_edge_filter_a12' => { },
  119. 'asf3_edge_filter_a13' => { },
  120. 'asf3_edge_filter_a21' => { },
  121. 'asf3_edge_filter_a22' => { },
  122. 'asf3_edge_filter_a23' => { },
  123. 'asf3_edge_filter_a31' => { },
  124. 'asf3_edge_filter_a32' => { },
  125. 'asf3_edge_filter_a33' => { },
  126. 'asf3_noise_filter_a11' => { },
  127. 'asf3_noise_filter_a12' => { },
  128. 'asf3_noise_filter_a13' => { },
  129. 'asf3_noise_filter_a21' => { },
  130. 'asf3_noise_filter_a22' => { },
  131. 'asf3_noise_filter_a23' => { },
  132. 'asf3_noise_filter_a31' => { },
  133. 'asf3_noise_filter_a32' => { },
  134. 'asf3_noise_filter_a33' => { },
  135. 'asf3_lower_threshold' => { },
  136. 'asf3_upper_threshold' => { },
  137. 'asf3_edge_detect' => { },
  138. 'aec_enable' => { },
  139. 'aec_mode' => { },
  140. 'aec_aggressiveness' => { },
  141. 'aec_luma_target' => { },
  142. 'aec_luma_tolerance' => { },
  143. 'aec_indoor_idx' => { },
  144. 'aec_odoor_idx' => { },
  145. 'aec_exposure_index_adj_step' => { },
  146. 'aec_outdoor_gamma_index' => { },
  147. 'aec_vfe_luma' => { },
  148. 'aec_high_luma_region_threshold' => { },
  149. 'aec_snapshot_sensor_gain' => { },
  150. 'aec_snapshot_digital_gain' => { },
  151. 'aec_snapshot_line_count' => { },
  152. 'aec_snapshot_exposure_time_ms' => { },
  153. 'aec_outdoor_bright_enable' => { },
  154. 'aec_outdoor_bright_reduction' => { },
  155. 'aec_outdoor_bright_threshold_LO' => { },
  156. 'aec_outdoor_bright_threshold_HI' => { },
  157. 'aec_outdoor_bright_discarded' => { },
  158. 'aec_high_luma_region_count' => { },
  159. 'antibanding_enable' => { },
  160. 'anti_bading_pixel_clk' => { },
  161. 'anti_bading_pixel_clk_per_line' => { },
  162. 'afr_enable' => { },
  163. 'afr_faster_0_trigger' => { },
  164. 'afr_slower_0_trigger' => { },
  165. 'afr_faster_0_exp_mod' => { },
  166. 'afr_slower_0_exp_mod' => { },
  167. 'afr_faster_1_trigger' => { },
  168. 'afr_slower_1_trigger' => { },
  169. 'afr_faster_1_exp_mod' => { },
  170. 'afr_slower_1_exp_mod' => { },
  171. 'afr_faster_2_trigger' => { },
  172. 'afr_slower_2_trigger' => { },
  173. 'afr_faster_2_exp_mod' => { },
  174. 'afr_slower_2_exp_mod' => { },
  175. 'afr_faster_3_trigger' => { },
  176. 'afr_slower_3_trigger' => { },
  177. 'afr_faster_3_exp_mod' => { },
  178. 'afr_slower_3_exp_mod' => { },
  179. 'afr_faster_4_trigger' => { },
  180. 'afr_slower_4_trigger' => { },
  181. 'afr_faster_4_exp_mod' => { },
  182. 'afr_slower_4_exp_mod' => { },
  183. 'afr_possible_frame_cnt' => { },
  184. 'af_enable' => { },
  185. 'af_steps_near_far' => { },
  186. 'af_steps_near_infinity' => { },
  187. 'af_gross_step' => { },
  188. 'af_fine_step' => { },
  189. 'af_fine_srch_points' => { },
  190. 'af_process' => { },
  191. 'af_mode' => { },
  192. 'af_near_end' => { },
  193. 'af_boundary' => { },
  194. 'af_far_end' => { },
  195. 'af_collect_end_stat' => { },
  196. 'af_test_mode' => { },
  197. 'af_undershoot_protect' => { },
  198. 'af_reset_lens_after_snap' => { },
  199. 'clip_to_af_rato' => { },
  200. 'af_pos_def_macro' => { },
  201. 'af_pos_def_norm' => { },
  202. 'af_vfe_vert_offset' => { },
  203. 'af_vfe_horz_offset' => { },
  204. 'af_vfe_vert_height' => { },
  205. 'af_vfe_horz_width' => { },
  206. 'af_vfe_metric_max' => { },
  207. 'af_trace_positions[0]' => { },
  208. 'af_trace_positions[1]' => { },
  209. 'af_trace_positions[2]' => { },
  210. 'af_trace_positions[3]' => { },
  211. 'af_trace_positions[4]' => { },
  212. 'af_trace_positions[5]' => { },
  213. 'af_trace_positions[6]' => { },
  214. 'af_trace_positions[7]' => { },
  215. 'af_trace_positions[8]' => { },
  216. 'af_trace_positions[9]' => { },
  217. 'af_trace_positions[10]' => { },
  218. 'af_trace_positions[11]' => { },
  219. 'af_trace_positions[12]' => { },
  220. 'af_trace_positions[13]' => { },
  221. 'af_trace_positions[14]' => { },
  222. 'af_trace_positions[15]' => { },
  223. 'af_trace_positions[16]' => { },
  224. 'af_trace_positions[17]' => { },
  225. 'af_trace_positions[18]' => { },
  226. 'af_trace_positions[19]' => { },
  227. 'af_trace_positions[20]' => { },
  228. 'af_trace_positions[21]' => { },
  229. 'af_trace_positions[22]' => { },
  230. 'af_trace_positions[23]' => { },
  231. 'af_trace_positions[24]' => { },
  232. 'af_trace_positions[25]' => { },
  233. 'af_trace_positions[26]' => { },
  234. 'af_trace_positions[27]' => { },
  235. 'af_trace_positions[28]' => { },
  236. 'af_trace_positions[29]' => { },
  237. 'af_trace_positions[30]' => { },
  238. 'af_trace_positions[31]' => { },
  239. 'af_trace_positions[32]' => { },
  240. 'af_trace_positions[33]' => { },
  241. 'af_trace_positions[34]' => { },
  242. 'af_trace_positions[35]' => { },
  243. 'af_trace_positions[36]' => { },
  244. 'af_trace_positions[37]' => { },
  245. 'af_trace_positions[38]' => { },
  246. 'af_trace_positions[39]' => { },
  247. 'af_trace_positions[40]' => { },
  248. 'af_trace_positions[41]' => { },
  249. 'af_trace_positions[42]' => { },
  250. 'af_trace_positions[43]' => { },
  251. 'af_trace_positions[44]' => { },
  252. 'af_trace_positions[45]' => { },
  253. 'af_trace_positions[46]' => { },
  254. 'af_trace_positions[47]' => { },
  255. 'af_trace_positions[48]' => { },
  256. 'af_trace_positions[49]' => { },
  257. 'af_trace_stats[0]' => { },
  258. 'af_trace_stats[1]' => { },
  259. 'af_trace_stats[2]' => { },
  260. 'af_trace_stats[3]' => { },
  261. 'af_trace_stats[4]' => { },
  262. 'af_trace_stats[5]' => { },
  263. 'af_trace_stats[6]' => { },
  264. 'af_trace_stats[7]' => { },
  265. 'af_trace_stats[8]' => { },
  266. 'af_trace_stats[9]' => { },
  267. 'af_trace_stats[10]' => { },
  268. 'af_trace_stats[11]' => { },
  269. 'af_trace_stats[12]' => { },
  270. 'af_trace_stats[13]' => { },
  271. 'af_trace_stats[14]' => { },
  272. 'af_trace_stats[15]' => { },
  273. 'af_trace_stats[16]' => { },
  274. 'af_trace_stats[17]' => { },
  275. 'af_trace_stats[18]' => { },
  276. 'af_trace_stats[19]' => { },
  277. 'af_trace_stats[20]' => { },
  278. 'af_trace_stats[21]' => { },
  279. 'af_trace_stats[22]' => { },
  280. 'af_trace_stats[23]' => { },
  281. 'af_trace_stats[24]' => { },
  282. 'af_trace_stats[25]' => { },
  283. 'af_trace_stats[26]' => { },
  284. 'af_trace_stats[27]' => { },
  285. 'af_trace_stats[28]' => { },
  286. 'af_trace_stats[29]' => { },
  287. 'af_trace_stats[30]' => { },
  288. 'af_trace_stats[31]' => { },
  289. 'af_trace_stats[32]' => { },
  290. 'af_trace_stats[33]' => { },
  291. 'af_trace_stats[34]' => { },
  292. 'af_trace_stats[35]' => { },
  293. 'af_trace_stats[36]' => { },
  294. 'af_trace_stats[37]' => { },
  295. 'af_trace_stats[38]' => { },
  296. 'af_trace_stats[39]' => { },
  297. 'af_trace_stats[40]' => { },
  298. 'af_trace_stats[41]' => { },
  299. 'af_trace_stats[42]' => { },
  300. 'af_trace_stats[43]' => { },
  301. 'af_trace_stats[44]' => { },
  302. 'af_trace_stats[45]' => { },
  303. 'af_trace_stats[46]' => { },
  304. 'af_trace_stats[47]' => { },
  305. 'af_trace_stats[48]' => { },
  306. 'af_trace_stats[49]' => { },
  307. 'af_focus_time' => { },
  308. 'awb_enable' => { },
  309. 'awb_algorithm' => { },
  310. 'awb_aggressiveness' => { },
  311. 'awb_red_gain_ref1' => { },
  312. 'awb_blue_gain_ref1' => { },
  313. 'awb_red_gain_adj_ref1' => { },
  314. 'awb_blue_gain_adj_ref1' => { },
  315. 'awb_red_gain_ref2' => { },
  316. 'awb_blue_gain_ref2' => { },
  317. 'awb_red_gain_adj_ref2' => { },
  318. 'awb_blue_gain_adj_ref2' => { },
  319. 'awb_red_gain_ref3' => { },
  320. 'awb_blue_gain_ref3' => { },
  321. 'awb_red_gain_adj_ref3' => { },
  322. 'awb_blue_gain_adj_ref3' => { },
  323. 'awb_red_gain_ref4' => { },
  324. 'awb_blue_gain_ref4' => { },
  325. 'awb_red_gain_adj_ref4' => { },
  326. 'awb_blue_gain_adj_ref4' => { },
  327. 'awb_red_gain_ref5' => { },
  328. 'awb_blue_gain_ref5' => { },
  329. 'awb_red_gain_adj_ref5' => { },
  330. 'awb_blue_gain_adj_ref5' => { },
  331. 'awb_red_gain_ref6' => { },
  332. 'awb_blue_gain_ref6' => { },
  333. 'awb_red_gain_adj_ref6' => { },
  334. 'awb_blue_gain_adj_ref6' => { },
  335. 'awb_red_gain_ref7' => { },
  336. 'awb_blue_gain_ref7' => { },
  337. 'awb_red_gain_adj_ref7' => { },
  338. 'awb_blue_gain_adj_ref7' => { },
  339. 'awb_red_gain_ref8' => { },
  340. 'awb_blue_gain_ref8' => { },
  341. 'awb_red_gain_adj_ref8' => { },
  342. 'awb_blue_gain_adj_ref8' => { },
  343. 'awb_lo_vfe_max_y' => { },
  344. 'awb_lo_vfe_min_y' => { },
  345. 'awb_lo_vfe_m1' => { },
  346. 'awb_lo_vfe_m2' => { },
  347. 'awb_lo_vfe_m3' => { },
  348. 'awb_lo_vfe_m4' => { },
  349. 'awb_lo_vfe_c1' => { },
  350. 'awb_lo_vfe_c2' => { },
  351. 'awb_lo_vfe_c3' => { },
  352. 'awb_lo_vfe_c4' => { },
  353. 'awb_norm_vfe_max_y' => { },
  354. 'awb_norm_vfe_min_y' => { },
  355. 'awb_norm_vfe_m1' => { },
  356. 'awb_norm_vfe_m2' => { },
  357. 'awb_norm_vfe_m3' => { },
  358. 'awb_norm_vfe_m4' => { },
  359. 'awb_norm_vfe_c1' => { },
  360. 'awb_norm_vfe_c2' => { },
  361. 'awb_norm_vfe_c3' => { },
  362. 'awb_norm_vfe_c4' => { },
  363. 'awb_oudor_vfe_max_y' => { },
  364. 'awb_oudor_vfe_min_y' => { },
  365. 'awb_oudor_vfe_m1' => { },
  366. 'awb_oudor_vfe_m2' => { },
  367. 'awb_oudor_vfe_m3' => { },
  368. 'awb_oudor_vfe_m4' => { },
  369. 'awb_oudor_vfe_c1' => { },
  370. 'awb_oudor_vfe_c2' => { },
  371. 'awb_oudor_vfe_c3' => { },
  372. 'awb_oudor_vfe_c4' => { },
  373. 'awb_cc_bias' => { },
  374. 'awb_min_r_gain' => { },
  375. 'awb_min_g_gain' => { },
  376. 'awb_min_b_gain' => { },
  377. 'awb_max_r_gain' => { },
  378. 'awb_max_g_gain' => { },
  379. 'awb_max_b_gain' => { },
  380. 'awb_outdoor_sample_influence' => { },
  381. 'awb_indoor_sample_influence' => { },
  382. 'awb_low_lig_col_cor_ena' => { },
  383. 'awb_agw_grid_dist_2_thresh' => { },
  384. 'awb_ave_rg_ratio' => { },
  385. 'awb_ave_bg_ratio' => { },
  386. 'awb_compact_cluster_R2' => { },
  387. 'outlier_distance' => { },
  388. 'awb_green_offset_rg' => { },
  389. 'awb_green_offset_bg' => { },
  390. 'awb_prev_wb_rgain' => { },
  391. 'awb_prev_wb_ggain' => { },
  392. 'awb_prev_wb_bgain' => { },
  393. 'awb_snapshot_r_gain' => { },
  394. 'awb_snapshot_b_gain' => { },
  395. 'rolloff_enable' => { },
  396. 'r2_tl84_cx' => { },
  397. 'r2_tl84_cy' => { },
  398. 'r2_tl84_width' => { },
  399. 'r2_tl84_height' => { },
  400. 'r2_tl84_intervals' => { },
  401. 'r2_tl84_tbl[0]' => { },
  402. 'r2_tl84_tbl[1]' => { },
  403. 'r2_tl84_tbl[2]' => { },
  404. 'r2_tl84_tbl[3]' => { },
  405. 'r2_tl84_tbl[4]' => { },
  406. 'r2_tl84_tbl[5]' => { },
  407. 'r2_tl84_tbl[6]' => { },
  408. 'r2_tl84_tbl[7]' => { },
  409. 'r2_tl84_tbl[8]' => { },
  410. 'r2_tl84_tbl[9]' => { },
  411. 'r2_tl84_tbl[10]' => { },
  412. 'r2_tl84_tbl[11]' => { },
  413. 'r2_tl84_tbl[12]' => { },
  414. 'r2_tl84_tbl[13]' => { },
  415. 'r2_tl84_tbl[14]' => { },
  416. 'r2_tl84_tbl[15]' => { },
  417. 'r2_tl84_tbl[16]' => { },
  418. 'r2_tl84_tbl[17]' => { },
  419. 'r2_tl84_tbl[18]' => { },
  420. 'r2_tl84_tbl[19]' => { },
  421. 'r2_tl84_tbl[20]' => { },
  422. 'r2_tl84_tbl[21]' => { },
  423. 'r2_tl84_tbl[22]' => { },
  424. 'r2_tl84_tbl[23]' => { },
  425. 'r2_tl84_tbl[24]' => { },
  426. 'r2_tl84_tbl[25]' => { },
  427. 'r2_tl84_tbl[26]' => { },
  428. 'r2_tl84_tbl[27]' => { },
  429. 'r2_tl84_tbl[28]' => { },
  430. 'r2_tl84_tbl[29]' => { },
  431. 'r2_tl84_tbl[30]' => { },
  432. 'r2_tl84_tbl[31]' => { },
  433. 'r2_tl84_red_ctbl[0]' => { },
  434. 'r2_tl84_red_ctbl[1]' => { },
  435. 'r2_tl84_red_ctbl[2]' => { },
  436. 'r2_tl84_red_ctbl[3]' => { },
  437. 'r2_tl84_red_ctbl[4]' => { },
  438. 'r2_tl84_red_ctbl[5]' => { },
  439. 'r2_tl84_red_ctbl[6]' => { },
  440. 'r2_tl84_red_ctbl[7]' => { },
  441. 'r2_tl84_red_ctbl[8]' => { },
  442. 'r2_tl84_red_ctbl[9]' => { },
  443. 'r2_tl84_red_ctbl[10]' => { },
  444. 'r2_tl84_red_ctbl[11]' => { },
  445. 'r2_tl84_red_ctbl[12]' => { },
  446. 'r2_tl84_red_ctbl[13]' => { },
  447. 'r2_tl84_red_ctbl[14]' => { },
  448. 'r2_tl84_red_ctbl[15]' => { },
  449. 'r2_tl84_red_ctbl[16]' => { },
  450. 'r2_tl84_red_ctbl[17]' => { },
  451. 'r2_tl84_red_ctbl[18]' => { },
  452. 'r2_tl84_red_ctbl[19]' => { },
  453. 'r2_tl84_red_ctbl[20]' => { },
  454. 'r2_tl84_red_ctbl[21]' => { },
  455. 'r2_tl84_red_ctbl[22]' => { },
  456. 'r2_tl84_red_ctbl[23]' => { },
  457. 'r2_tl84_red_ctbl[24]' => { },
  458. 'r2_tl84_red_ctbl[25]' => { },
  459. 'r2_tl84_red_ctbl[26]' => { },
  460. 'r2_tl84_red_ctbl[27]' => { },
  461. 'r2_tl84_red_ctbl[28]' => { },
  462. 'r2_tl84_red_ctbl[29]' => { },
  463. 'r2_tl84_red_ctbl[30]' => { },
  464. 'r2_tl84_red_ctbl[31]' => { },
  465. 'r2_tl84_green_ctbl[0]' => { },
  466. 'r2_tl84_green_ctbl[1]' => { },
  467. 'r2_tl84_green_ctbl[2]' => { },
  468. 'r2_tl84_green_ctbl[3]' => { },
  469. 'r2_tl84_green_ctbl[4]' => { },
  470. 'r2_tl84_green_ctbl[5]' => { },
  471. 'r2_tl84_green_ctbl[6]' => { },
  472. 'r2_tl84_green_ctbl[7]' => { },
  473. 'r2_tl84_green_ctbl[8]' => { },
  474. 'r2_tl84_green_ctbl[9]' => { },
  475. 'r2_tl84_green_ctbl[10]' => { },
  476. 'r2_tl84_green_ctbl[11]' => { },
  477. 'r2_tl84_green_ctbl[12]' => { },
  478. 'r2_tl84_green_ctbl[13]' => { },
  479. 'r2_tl84_green_ctbl[14]' => { },
  480. 'r2_tl84_green_ctbl[15]' => { },
  481. 'r2_tl84_green_ctbl[16]' => { },
  482. 'r2_tl84_green_ctbl[17]' => { },
  483. 'r2_tl84_green_ctbl[18]' => { },
  484. 'r2_tl84_green_ctbl[19]' => { },
  485. 'r2_tl84_green_ctbl[20]' => { },
  486. 'r2_tl84_green_ctbl[21]' => { },
  487. 'r2_tl84_green_ctbl[22]' => { },
  488. 'r2_tl84_green_ctbl[23]' => { },
  489. 'r2_tl84_green_ctbl[24]' => { },
  490. 'r2_tl84_green_ctbl[25]' => { },
  491. 'r2_tl84_green_ctbl[26]' => { },
  492. 'r2_tl84_green_ctbl[27]' => { },
  493. 'r2_tl84_green_ctbl[28]' => { },
  494. 'r2_tl84_green_ctbl[29]' => { },
  495. 'r2_tl84_green_ctbl[30]' => { },
  496. 'r2_tl84_green_ctbl[31]' => { },
  497. 'r2_tl84_blue_ctbl[0]' => { },
  498. 'r2_tl84_blue_ctbl[1]' => { },
  499. 'r2_tl84_blue_ctbl[2]' => { },
  500. 'r2_tl84_blue_ctbl[3]' => { },
  501. 'r2_tl84_blue_ctbl[4]' => { },
  502. 'r2_tl84_blue_ctbl[5]' => { },
  503. 'r2_tl84_blue_ctbl[6]' => { },
  504. 'r2_tl84_blue_ctbl[7]' => { },
  505. 'r2_tl84_blue_ctbl[8]' => { },
  506. 'r2_tl84_blue_ctbl[9]' => { },
  507. 'r2_tl84_blue_ctbl[10]' => { },
  508. 'r2_tl84_blue_ctbl[11]' => { },
  509. 'r2_tl84_blue_ctbl[12]' => { },
  510. 'r2_tl84_blue_ctbl[13]' => { },
  511. 'r2_tl84_blue_ctbl[14]' => { },
  512. 'r2_tl84_blue_ctbl[15]' => { },
  513. 'r2_tl84_blue_ctbl[16]' => { },
  514. 'r2_tl84_blue_ctbl[17]' => { },
  515. 'r2_tl84_blue_ctbl[18]' => { },
  516. 'r2_tl84_blue_ctbl[19]' => { },
  517. 'r2_tl84_blue_ctbl[20]' => { },
  518. 'r2_tl84_blue_ctbl[21]' => { },
  519. 'r2_tl84_blue_ctbl[22]' => { },
  520. 'r2_tl84_blue_ctbl[23]' => { },
  521. 'r2_tl84_blue_ctbl[24]' => { },
  522. 'r2_tl84_blue_ctbl[25]' => { },
  523. 'r2_tl84_blue_ctbl[26]' => { },
  524. 'r2_tl84_blue_ctbl[27]' => { },
  525. 'r2_tl84_blue_ctbl[28]' => { },
  526. 'r2_tl84_blue_ctbl[29]' => { },
  527. 'r2_tl84_blue_ctbl[30]' => { },
  528. 'r2_tl84_blue_ctbl[31]' => { },
  529. 'r2_tl84_red_stbl[0]' => { },
  530. 'r2_tl84_red_stbl[1]' => { },
  531. 'r2_tl84_red_stbl[2]' => { },
  532. 'r2_tl84_red_stbl[3]' => { },
  533. 'r2_tl84_red_stbl[4]' => { },
  534. 'r2_tl84_red_stbl[5]' => { },
  535. 'r2_tl84_red_stbl[6]' => { },
  536. 'r2_tl84_red_stbl[7]' => { },
  537. 'r2_tl84_red_stbl[8]' => { },
  538. 'r2_tl84_red_stbl[9]' => { },
  539. 'r2_tl84_red_stbl[10]' => { },
  540. 'r2_tl84_red_stbl[11]' => { },
  541. 'r2_tl84_red_stbl[12]' => { },
  542. 'r2_tl84_red_stbl[13]' => { },
  543. 'r2_tl84_red_stbl[14]' => { },
  544. 'r2_tl84_red_stbl[15]' => { },
  545. 'r2_tl84_red_stbl[16]' => { },
  546. 'r2_tl84_red_stbl[17]' => { },
  547. 'r2_tl84_red_stbl[18]' => { },
  548. 'r2_tl84_red_stbl[19]' => { },
  549. 'r2_tl84_red_stbl[20]' => { },
  550. 'r2_tl84_red_stbl[21]' => { },
  551. 'r2_tl84_red_stbl[22]' => { },
  552. 'r2_tl84_red_stbl[23]' => { },
  553. 'r2_tl84_red_stbl[24]' => { },
  554. 'r2_tl84_red_stbl[25]' => { },
  555. 'r2_tl84_red_stbl[26]' => { },
  556. 'r2_tl84_red_stbl[27]' => { },
  557. 'r2_tl84_red_stbl[28]' => { },
  558. 'r2_tl84_red_stbl[29]' => { },
  559. 'r2_tl84_red_stbl[30]' => { },
  560. 'r2_tl84_red_stbl[31]' => { },
  561. 'r2_tl84_blue_stbl[0]' => { },
  562. 'r2_tl84_blue_stbl[1]' => { },
  563. 'r2_tl84_blue_stbl[2]' => { },
  564. 'r2_tl84_blue_stbl[3]' => { },
  565. 'r2_tl84_blue_stbl[4]' => { },
  566. 'r2_tl84_blue_stbl[5]' => { },
  567. 'r2_tl84_blue_stbl[6]' => { },
  568. 'r2_tl84_blue_stbl[7]' => { },
  569. 'r2_tl84_blue_stbl[8]' => { },
  570. 'r2_tl84_blue_stbl[9]' => { },
  571. 'r2_tl84_blue_stbl[10]' => { },
  572. 'r2_tl84_blue_stbl[11]' => { },
  573. 'r2_tl84_blue_stbl[12]' => { },
  574. 'r2_tl84_blue_stbl[13]' => { },
  575. 'r2_tl84_blue_stbl[14]' => { },
  576. 'r2_tl84_blue_stbl[15]' => { },
  577. 'r2_tl84_blue_stbl[16]' => { },
  578. 'r2_tl84_blue_stbl[17]' => { },
  579. 'r2_tl84_blue_stbl[18]' => { },
  580. 'r2_tl84_blue_stbl[19]' => { },
  581. 'r2_tl84_blue_stbl[20]' => { },
  582. 'r2_tl84_blue_stbl[21]' => { },
  583. 'r2_tl84_blue_stbl[22]' => { },
  584. 'r2_tl84_blue_stbl[23]' => { },
  585. 'r2_tl84_blue_stbl[24]' => { },
  586. 'r2_tl84_blue_stbl[25]' => { },
  587. 'r2_tl84_blue_stbl[26]' => { },
  588. 'r2_tl84_blue_stbl[27]' => { },
  589. 'r2_tl84_blue_stbl[28]' => { },
  590. 'r2_tl84_blue_stbl[29]' => { },
  591. 'r2_tl84_blue_stbl[30]' => { },
  592. 'r2_tl84_blue_stbl[31]' => { },
  593. 'r2_tl84_green_stbl[0]' => { },
  594. 'r2_tl84_green_stbl[1]' => { },
  595. 'r2_tl84_green_stbl[2]' => { },
  596. 'r2_tl84_green_stbl[3]' => { },
  597. 'r2_tl84_green_stbl[4]' => { },
  598. 'r2_tl84_green_stbl[5]' => { },
  599. 'r2_tl84_green_stbl[6]' => { },
  600. 'r2_tl84_green_stbl[7]' => { },
  601. 'r2_tl84_green_stbl[8]' => { },
  602. 'r2_tl84_green_stbl[9]' => { },
  603. 'r2_tl84_green_stbl[10]' => { },
  604. 'r2_tl84_green_stbl[11]' => { },
  605. 'r2_tl84_green_stbl[12]' => { },
  606. 'r2_tl84_green_stbl[13]' => { },
  607. 'r2_tl84_green_stbl[14]' => { },
  608. 'r2_tl84_green_stbl[15]' => { },
  609. 'r2_tl84_green_stbl[16]' => { },
  610. 'r2_tl84_green_stbl[17]' => { },
  611. 'r2_tl84_green_stbl[18]' => { },
  612. 'r2_tl84_green_stbl[19]' => { },
  613. 'r2_tl84_green_stbl[20]' => { },
  614. 'r2_tl84_green_stbl[21]' => { },
  615. 'r2_tl84_green_stbl[22]' => { },
  616. 'r2_tl84_green_stbl[23]' => { },
  617. 'r2_tl84_green_stbl[24]' => { },
  618. 'r2_tl84_green_stbl[25]' => { },
  619. 'r2_tl84_green_stbl[26]' => { },
  620. 'r2_tl84_green_stbl[27]' => { },
  621. 'r2_tl84_green_stbl[28]' => { },
  622. 'r2_tl84_green_stbl[29]' => { },
  623. 'r2_tl84_green_stbl[30]' => { },
  624. 'r2_tl84_green_stbl[31]' => { },
  625. 'r2_d65_cx' => { },
  626. 'r2_d65_cy' => { },
  627. 'r2_d65_width' => { },
  628. 'r2_d65_height' => { },
  629. 'r2_d65_intervals' => { },
  630. 'r2_d65_tbl[0]' => { },
  631. 'r2_d65_tbl[1]' => { },
  632. 'r2_d65_tbl[2]' => { },
  633. 'r2_d65_tbl[3]' => { },
  634. 'r2_d65_tbl[4]' => { },
  635. 'r2_d65_tbl[5]' => { },
  636. 'r2_d65_tbl[6]' => { },
  637. 'r2_d65_tbl[7]' => { },
  638. 'r2_d65_tbl[8]' => { },
  639. 'r2_d65_tbl[9]' => { },
  640. 'r2_d65_tbl[10]' => { },
  641. 'r2_d65_tbl[11]' => { },
  642. 'r2_d65_tbl[12]' => { },
  643. 'r2_d65_tbl[13]' => { },
  644. 'r2_d65_tbl[14]' => { },
  645. 'r2_d65_tbl[15]' => { },
  646. 'r2_d65_tbl[16]' => { },
  647. 'r2_d65_tbl[17]' => { },
  648. 'r2_d65_tbl[18]' => { },
  649. 'r2_d65_tbl[19]' => { },
  650. 'r2_d65_tbl[20]' => { },
  651. 'r2_d65_tbl[21]' => { },
  652. 'r2_d65_tbl[22]' => { },
  653. 'r2_d65_tbl[23]' => { },
  654. 'r2_d65_tbl[24]' => { },
  655. 'r2_d65_tbl[25]' => { },
  656. 'r2_d65_tbl[26]' => { },
  657. 'r2_d65_tbl[27]' => { },
  658. 'r2_d65_tbl[28]' => { },
  659. 'r2_d65_tbl[29]' => { },
  660. 'r2_d65_tbl[30]' => { },
  661. 'r2_d65_tbl[31]' => { },
  662. 'r2_d65_red_ctbl[0]' => { },
  663. 'r2_d65_red_ctbl[1]' => { },
  664. 'r2_d65_red_ctbl[2]' => { },
  665. 'r2_d65_red_ctbl[3]' => { },
  666. 'r2_d65_red_ctbl[4]' => { },
  667. 'r2_d65_red_ctbl[5]' => { },
  668. 'r2_d65_red_ctbl[6]' => { },
  669. 'r2_d65_red_ctbl[7]' => { },
  670. 'r2_d65_red_ctbl[8]' => { },
  671. 'r2_d65_red_ctbl[9]' => { },
  672. 'r2_d65_red_ctbl[10]' => { },
  673. 'r2_d65_red_ctbl[11]' => { },
  674. 'r2_d65_red_ctbl[12]' => { },
  675. 'r2_d65_red_ctbl[13]' => { },
  676. 'r2_d65_red_ctbl[14]' => { },
  677. 'r2_d65_red_ctbl[15]' => { },
  678. 'r2_d65_red_ctbl[16]' => { },
  679. 'r2_d65_red_ctbl[17]' => { },
  680. 'r2_d65_red_ctbl[18]' => { },
  681. 'r2_d65_red_ctbl[19]' => { },
  682. 'r2_d65_red_ctbl[20]' => { },
  683. 'r2_d65_red_ctbl[21]' => { },
  684. 'r2_d65_red_ctbl[22]' => { },
  685. 'r2_d65_red_ctbl[23]' => { },
  686. 'r2_d65_red_ctbl[24]' => { },
  687. 'r2_d65_red_ctbl[25]' => { },
  688. 'r2_d65_red_ctbl[26]' => { },
  689. 'r2_d65_red_ctbl[27]' => { },
  690. 'r2_d65_red_ctbl[28]' => { },
  691. 'r2_d65_red_ctbl[29]' => { },
  692. 'r2_d65_red_ctbl[30]' => { },
  693. 'r2_d65_red_ctbl[31]' => { },
  694. 'r2_d65_green_ctbl[0]' => { },
  695. 'r2_d65_green_ctbl[1]' => { },
  696. 'r2_d65_green_ctbl[2]' => { },
  697. 'r2_d65_green_ctbl[3]' => { },
  698. 'r2_d65_green_ctbl[4]' => { },
  699. 'r2_d65_green_ctbl[5]' => { },
  700. 'r2_d65_green_ctbl[6]' => { },
  701. 'r2_d65_green_ctbl[7]' => { },
  702. 'r2_d65_green_ctbl[8]' => { },
  703. 'r2_d65_green_ctbl[9]' => { },
  704. 'r2_d65_green_ctbl[10]' => { },
  705. 'r2_d65_green_ctbl[11]' => { },
  706. 'r2_d65_green_ctbl[12]' => { },
  707. 'r2_d65_green_ctbl[13]' => { },
  708. 'r2_d65_green_ctbl[14]' => { },
  709. 'r2_d65_green_ctbl[15]' => { },
  710. 'r2_d65_green_ctbl[16]' => { },
  711. 'r2_d65_green_ctbl[17]' => { },
  712. 'r2_d65_green_ctbl[18]' => { },
  713. 'r2_d65_green_ctbl[19]' => { },
  714. 'r2_d65_green_ctbl[20]' => { },
  715. 'r2_d65_green_ctbl[21]' => { },
  716. 'r2_d65_green_ctbl[22]' => { },
  717. 'r2_d65_green_ctbl[23]' => { },
  718. 'r2_d65_green_ctbl[24]' => { },
  719. 'r2_d65_green_ctbl[25]' => { },
  720. 'r2_d65_green_ctbl[26]' => { },
  721. 'r2_d65_green_ctbl[27]' => { },
  722. 'r2_d65_green_ctbl[28]' => { },
  723. 'r2_d65_green_ctbl[29]' => { },
  724. 'r2_d65_green_ctbl[30]' => { },
  725. 'r2_d65_green_ctbl[31]' => { },
  726. 'r2_d65_blue_ctbl[0]' => { },
  727. 'r2_d65_blue_ctbl[1]' => { },
  728. 'r2_d65_blue_ctbl[2]' => { },
  729. 'r2_d65_blue_ctbl[3]' => { },
  730. 'r2_d65_blue_ctbl[4]' => { },
  731. 'r2_d65_blue_ctbl[5]' => { },
  732. 'r2_d65_blue_ctbl[6]' => { },
  733. 'r2_d65_blue_ctbl[7]' => { },
  734. 'r2_d65_blue_ctbl[8]' => { },
  735. 'r2_d65_blue_ctbl[9]' => { },
  736. 'r2_d65_blue_ctbl[10]' => { },
  737. 'r2_d65_blue_ctbl[11]' => { },
  738. 'r2_d65_blue_ctbl[12]' => { },
  739. 'r2_d65_blue_ctbl[13]' => { },
  740. 'r2_d65_blue_ctbl[14]' => { },
  741. 'r2_d65_blue_ctbl[15]' => { },
  742. 'r2_d65_blue_ctbl[16]' => { },
  743. 'r2_d65_blue_ctbl[17]' => { },
  744. 'r2_d65_blue_ctbl[18]' => { },
  745. 'r2_d65_blue_ctbl[19]' => { },
  746. 'r2_d65_blue_ctbl[20]' => { },
  747. 'r2_d65_blue_ctbl[21]' => { },
  748. 'r2_d65_blue_ctbl[22]' => { },
  749. 'r2_d65_blue_ctbl[23]' => { },
  750. 'r2_d65_blue_ctbl[24]' => { },
  751. 'r2_d65_blue_ctbl[25]' => { },
  752. 'r2_d65_blue_ctbl[26]' => { },
  753. 'r2_d65_blue_ctbl[27]' => { },
  754. 'r2_d65_blue_ctbl[28]' => { },
  755. 'r2_d65_blue_ctbl[29]' => { },
  756. 'r2_d65_blue_ctbl[30]' => { },
  757. 'r2_d65_blue_ctbl[31]' => { },
  758. 'r2_d65_red_stbl[0]' => { },
  759. 'r2_d65_red_stbl[1]' => { },
  760. 'r2_d65_red_stbl[2]' => { },
  761. 'r2_d65_red_stbl[3]' => { },
  762. 'r2_d65_red_stbl[4]' => { },
  763. 'r2_d65_red_stbl[5]' => { },
  764. 'r2_d65_red_stbl[6]' => { },
  765. 'r2_d65_red_stbl[7]' => { },
  766. 'r2_d65_red_stbl[8]' => { },
  767. 'r2_d65_red_stbl[9]' => { },
  768. 'r2_d65_red_stbl[10]' => { },
  769. 'r2_d65_red_stbl[11]' => { },
  770. 'r2_d65_red_stbl[12]' => { },
  771. 'r2_d65_red_stbl[13]' => { },
  772. 'r2_d65_red_stbl[14]' => { },
  773. 'r2_d65_red_stbl[15]' => { },
  774. 'r2_d65_red_stbl[16]' => { },
  775. 'r2_d65_red_stbl[17]' => { },
  776. 'r2_d65_red_stbl[18]' => { },
  777. 'r2_d65_red_stbl[19]' => { },
  778. 'r2_d65_red_stbl[20]' => { },
  779. 'r2_d65_red_stbl[21]' => { },
  780. 'r2_d65_red_stbl[22]' => { },
  781. 'r2_d65_red_stbl[23]' => { },
  782. 'r2_d65_red_stbl[24]' => { },
  783. 'r2_d65_red_stbl[25]' => { },
  784. 'r2_d65_red_stbl[26]' => { },
  785. 'r2_d65_red_stbl[27]' => { },
  786. 'r2_d65_red_stbl[28]' => { },
  787. 'r2_d65_red_stbl[29]' => { },
  788. 'r2_d65_red_stbl[30]' => { },
  789. 'r2_d65_red_stbl[31]' => { },
  790. 'r2_d65_blue_stbl[0]' => { },
  791. 'r2_d65_blue_stbl[1]' => { },
  792. 'r2_d65_blue_stbl[2]' => { },
  793. 'r2_d65_blue_stbl[3]' => { },
  794. 'r2_d65_blue_stbl[4]' => { },
  795. 'r2_d65_blue_stbl[5]' => { },
  796. 'r2_d65_blue_stbl[6]' => { },
  797. 'r2_d65_blue_stbl[7]' => { },
  798. 'r2_d65_blue_stbl[8]' => { },
  799. 'r2_d65_blue_stbl[9]' => { },
  800. 'r2_d65_blue_stbl[10]' => { },
  801. 'r2_d65_blue_stbl[11]' => { },
  802. 'r2_d65_blue_stbl[12]' => { },
  803. 'r2_d65_blue_stbl[13]' => { },
  804. 'r2_d65_blue_stbl[14]' => { },
  805. 'r2_d65_blue_stbl[15]' => { },
  806. 'r2_d65_blue_stbl[16]' => { },
  807. 'r2_d65_blue_stbl[17]' => { },
  808. 'r2_d65_blue_stbl[18]' => { },
  809. 'r2_d65_blue_stbl[19]' => { },
  810. 'r2_d65_blue_stbl[20]' => { },
  811. 'r2_d65_blue_stbl[21]' => { },
  812. 'r2_d65_blue_stbl[22]' => { },
  813. 'r2_d65_blue_stbl[23]' => { },
  814. 'r2_d65_blue_stbl[24]' => { },
  815. 'r2_d65_blue_stbl[25]' => { },
  816. 'r2_d65_blue_stbl[26]' => { },
  817. 'r2_d65_blue_stbl[27]' => { },
  818. 'r2_d65_blue_stbl[28]' => { },
  819. 'r2_d65_blue_stbl[29]' => { },
  820. 'r2_d65_blue_stbl[30]' => { },
  821. 'r2_d65_blue_stbl[31]' => { },
  822. 'r2_d65_green_stbl[0]' => { },
  823. 'r2_d65_green_stbl[1]' => { },
  824. 'r2_d65_green_stbl[2]' => { },
  825. 'r2_d65_green_stbl[3]' => { },
  826. 'r2_d65_green_stbl[4]' => { },
  827. 'r2_d65_green_stbl[5]' => { },
  828. 'r2_d65_green_stbl[6]' => { },
  829. 'r2_d65_green_stbl[7]' => { },
  830. 'r2_d65_green_stbl[8]' => { },
  831. 'r2_d65_green_stbl[9]' => { },
  832. 'r2_d65_green_stbl[10]' => { },
  833. 'r2_d65_green_stbl[11]' => { },
  834. 'r2_d65_green_stbl[12]' => { },
  835. 'r2_d65_green_stbl[13]' => { },
  836. 'r2_d65_green_stbl[14]' => { },
  837. 'r2_d65_green_stbl[15]' => { },
  838. 'r2_d65_green_stbl[16]' => { },
  839. 'r2_d65_green_stbl[17]' => { },
  840. 'r2_d65_green_stbl[18]' => { },
  841. 'r2_d65_green_stbl[19]' => { },
  842. 'r2_d65_green_stbl[20]' => { },
  843. 'r2_d65_green_stbl[21]' => { },
  844. 'r2_d65_green_stbl[22]' => { },
  845. 'r2_d65_green_stbl[23]' => { },
  846. 'r2_d65_green_stbl[24]' => { },
  847. 'r2_d65_green_stbl[25]' => { },
  848. 'r2_d65_green_stbl[26]' => { },
  849. 'r2_d65_green_stbl[27]' => { },
  850. 'r2_d65_green_stbl[28]' => { },
  851. 'r2_d65_green_stbl[29]' => { },
  852. 'r2_d65_green_stbl[30]' => { },
  853. 'r2_d65_green_stbl[31]' => { },
  854. 'r2_a_cx' => { },
  855. 'r2_a_cy' => { },
  856. 'r2_a_width' => { },
  857. 'r2_a_height' => { },
  858. 'r2_a_intervals' => { },
  859. 'r2_a_tbl[0]' => { },
  860. 'r2_a_tbl[1]' => { },
  861. 'r2_a_tbl[2]' => { },
  862. 'r2_a_tbl[3]' => { },
  863. 'r2_a_tbl[4]' => { },
  864. 'r2_a_tbl[5]' => { },
  865. 'r2_a_tbl[6]' => { },
  866. 'r2_a_tbl[7]' => { },
  867. 'r2_a_tbl[8]' => { },
  868. 'r2_a_tbl[9]' => { },
  869. 'r2_a_tbl[10]' => { },
  870. 'r2_a_tbl[11]' => { },
  871. 'r2_a_tbl[12]' => { },
  872. 'r2_a_tbl[13]' => { },
  873. 'r2_a_tbl[14]' => { },
  874. 'r2_a_tbl[15]' => { },
  875. 'r2_a_tbl[16]' => { },
  876. 'r2_a_tbl[17]' => { },
  877. 'r2_a_tbl[18]' => { },
  878. 'r2_a_tbl[19]' => { },
  879. 'r2_a_tbl[20]' => { },
  880. 'r2_a_tbl[21]' => { },
  881. 'r2_a_tbl[22]' => { },
  882. 'r2_a_tbl[23]' => { },
  883. 'r2_a_tbl[24]' => { },
  884. 'r2_a_tbl[25]' => { },
  885. 'r2_a_tbl[26]' => { },
  886. 'r2_a_tbl[27]' => { },
  887. 'r2_a_tbl[28]' => { },
  888. 'r2_a_tbl[29]' => { },
  889. 'r2_a_tbl[30]' => { },
  890. 'r2_a_tbl[31]' => { },
  891. 'r2_a_red_ctbl[0]' => { },
  892. 'r2_a_red_ctbl[1]' => { },
  893. 'r2_a_red_ctbl[2]' => { },
  894. 'r2_a_red_ctbl[3]' => { },
  895. 'r2_a_red_ctbl[4]' => { },
  896. 'r2_a_red_ctbl[5]' => { },
  897. 'r2_a_red_ctbl[6]' => { },
  898. 'r2_a_red_ctbl[7]' => { },
  899. 'r2_a_red_ctbl[8]' => { },
  900. 'r2_a_red_ctbl[9]' => { },
  901. 'r2_a_red_ctbl[10]' => { },
  902. 'r2_a_red_ctbl[11]' => { },
  903. 'r2_a_red_ctbl[12]' => { },
  904. 'r2_a_red_ctbl[13]' => { },
  905. 'r2_a_red_ctbl[14]' => { },
  906. 'r2_a_red_ctbl[15]' => { },
  907. 'r2_a_red_ctbl[16]' => { },
  908. 'r2_a_red_ctbl[17]' => { },
  909. 'r2_a_red_ctbl[18]' => { },
  910. 'r2_a_red_ctbl[19]' => { },
  911. 'r2_a_red_ctbl[20]' => { },
  912. 'r2_a_red_ctbl[21]' => { },
  913. 'r2_a_red_ctbl[22]' => { },
  914. 'r2_a_red_ctbl[23]' => { },
  915. 'r2_a_red_ctbl[24]' => { },
  916. 'r2_a_red_ctbl[25]' => { },
  917. 'r2_a_red_ctbl[26]' => { },
  918. 'r2_a_red_ctbl[27]' => { },
  919. 'r2_a_red_ctbl[28]' => { },
  920. 'r2_a_red_ctbl[29]' => { },
  921. 'r2_a_red_ctbl[30]' => { },
  922. 'r2_a_red_ctbl[31]' => { },
  923. 'r2_a_green_ctbl[0]' => { },
  924. 'r2_a_green_ctbl[1]' => { },
  925. 'r2_a_green_ctbl[2]' => { },
  926. 'r2_a_green_ctbl[3]' => { },
  927. 'r2_a_green_ctbl[4]' => { },
  928. 'r2_a_green_ctbl[5]' => { },
  929. 'r2_a_green_ctbl[6]' => { },
  930. 'r2_a_green_ctbl[7]' => { },
  931. 'r2_a_green_ctbl[8]' => { },
  932. 'r2_a_green_ctbl[9]' => { },
  933. 'r2_a_green_ctbl[10]' => { },
  934. 'r2_a_green_ctbl[11]' => { },
  935. 'r2_a_green_ctbl[12]' => { },
  936. 'r2_a_green_ctbl[13]' => { },
  937. 'r2_a_green_ctbl[14]' => { },
  938. 'r2_a_green_ctbl[15]' => { },
  939. 'r2_a_green_ctbl[16]' => { },
  940. 'r2_a_green_ctbl[17]' => { },
  941. 'r2_a_green_ctbl[18]' => { },
  942. 'r2_a_green_ctbl[19]' => { },
  943. 'r2_a_green_ctbl[20]' => { },
  944. 'r2_a_green_ctbl[21]' => { },
  945. 'r2_a_green_ctbl[22]' => { },
  946. 'r2_a_green_ctbl[23]' => { },
  947. 'r2_a_green_ctbl[24]' => { },
  948. 'r2_a_green_ctbl[25]' => { },
  949. 'r2_a_green_ctbl[26]' => { },
  950. 'r2_a_green_ctbl[27]' => { },
  951. 'r2_a_green_ctbl[28]' => { },
  952. 'r2_a_green_ctbl[29]' => { },
  953. 'r2_a_green_ctbl[30]' => { },
  954. 'r2_a_green_ctbl[31]' => { },
  955. 'r2_a_blue_ctbl[0]' => { },
  956. 'r2_a_blue_ctbl[1]' => { },
  957. 'r2_a_blue_ctbl[2]' => { },
  958. 'r2_a_blue_ctbl[3]' => { },
  959. 'r2_a_blue_ctbl[4]' => { },
  960. 'r2_a_blue_ctbl[5]' => { },
  961. 'r2_a_blue_ctbl[6]' => { },
  962. 'r2_a_blue_ctbl[7]' => { },
  963. 'r2_a_blue_ctbl[8]' => { },
  964. 'r2_a_blue_ctbl[9]' => { },
  965. 'r2_a_blue_ctbl[10]' => { },
  966. 'r2_a_blue_ctbl[11]' => { },
  967. 'r2_a_blue_ctbl[12]' => { },
  968. 'r2_a_blue_ctbl[13]' => { },
  969. 'r2_a_blue_ctbl[14]' => { },
  970. 'r2_a_blue_ctbl[15]' => { },
  971. 'r2_a_blue_ctbl[16]' => { },
  972. 'r2_a_blue_ctbl[17]' => { },
  973. 'r2_a_blue_ctbl[18]' => { },
  974. 'r2_a_blue_ctbl[19]' => { },
  975. 'r2_a_blue_ctbl[20]' => { },
  976. 'r2_a_blue_ctbl[21]' => { },
  977. 'r2_a_blue_ctbl[22]' => { },
  978. 'r2_a_blue_ctbl[23]' => { },
  979. 'r2_a_blue_ctbl[24]' => { },
  980. 'r2_a_blue_ctbl[25]' => { },
  981. 'r2_a_blue_ctbl[26]' => { },
  982. 'r2_a_blue_ctbl[27]' => { },
  983. 'r2_a_blue_ctbl[28]' => { },
  984. 'r2_a_blue_ctbl[29]' => { },
  985. 'r2_a_blue_ctbl[30]' => { },
  986. 'r2_a_blue_ctbl[31]' => { },
  987. 'r2_a_red_stbl[0]' => { },
  988. 'r2_a_red_stbl[1]' => { },
  989. 'r2_a_red_stbl[2]' => { },
  990. 'r2_a_red_stbl[3]' => { },
  991. 'r2_a_red_stbl[4]' => { },
  992. 'r2_a_red_stbl[5]' => { },
  993. 'r2_a_red_stbl[6]' => { },
  994. 'r2_a_red_stbl[7]' => { },
  995. 'r2_a_red_stbl[8]' => { },
  996. 'r2_a_red_stbl[9]' => { },
  997. 'r2_a_red_stbl[10]' => { },
  998. 'r2_a_red_stbl[11]' => { },
  999. 'r2_a_red_stbl[12]' => { },
  1000. 'r2_a_red_stbl[13]' => { },
  1001. 'r2_a_red_stbl[14]' => { },
  1002. 'r2_a_red_stbl[15]' => { },
  1003. 'r2_a_red_stbl[16]' => { },
  1004. 'r2_a_red_stbl[17]' => { },
  1005. 'r2_a_red_stbl[18]' => { },
  1006. 'r2_a_red_stbl[19]' => { },
  1007. 'r2_a_red_stbl[20]' => { },
  1008. 'r2_a_red_stbl[21]' => { },
  1009. 'r2_a_red_stbl[22]' => { },
  1010. 'r2_a_red_stbl[23]' => { },
  1011. 'r2_a_red_stbl[24]' => { },
  1012. 'r2_a_red_stbl[25]' => { },
  1013. 'r2_a_red_stbl[26]' => { },
  1014. 'r2_a_red_stbl[27]' => { },
  1015. 'r2_a_red_stbl[28]' => { },
  1016. 'r2_a_red_stbl[29]' => { },
  1017. 'r2_a_red_stbl[30]' => { },
  1018. 'r2_a_red_stbl[31]' => { },
  1019. 'r2_a_blue_stbl[0]' => { },
  1020. 'r2_a_blue_stbl[1]' => { },
  1021. 'r2_a_blue_stbl[2]' => { },
  1022. 'r2_a_blue_stbl[3]' => { },
  1023. 'r2_a_blue_stbl[4]' => { },
  1024. 'r2_a_blue_stbl[5]' => { },
  1025. 'r2_a_blue_stbl[6]' => { },
  1026. 'r2_a_blue_stbl[7]' => { },
  1027. 'r2_a_blue_stbl[8]' => { },
  1028. 'r2_a_blue_stbl[9]' => { },
  1029. 'r2_a_blue_stbl[10]' => { },
  1030. 'r2_a_blue_stbl[11]' => { },
  1031. 'r2_a_blue_stbl[12]' => { },
  1032. 'r2_a_blue_stbl[13]' => { },
  1033. 'r2_a_blue_stbl[14]' => { },
  1034. 'r2_a_blue_stbl[15]' => { },
  1035. 'r2_a_blue_stbl[16]' => { },
  1036. 'r2_a_blue_stbl[17]' => { },
  1037. 'r2_a_blue_stbl[18]' => { },
  1038. 'r2_a_blue_stbl[19]' => { },
  1039. 'r2_a_blue_stbl[20]' => { },
  1040. 'r2_a_blue_stbl[21]' => { },
  1041. 'r2_a_blue_stbl[22]' => { },
  1042. 'r2_a_blue_stbl[23]' => { },
  1043. 'r2_a_blue_stbl[24]' => { },
  1044. 'r2_a_blue_stbl[25]' => { },
  1045. 'r2_a_blue_stbl[26]' => { },
  1046. 'r2_a_blue_stbl[27]' => { },
  1047. 'r2_a_blue_stbl[28]' => { },
  1048. 'r2_a_blue_stbl[29]' => { },
  1049. 'r2_a_blue_stbl[30]' => { },
  1050. 'r2_a_blue_stbl[31]' => { },
  1051. 'r2_a_green_stbl[0]' => { },
  1052. 'r2_a_green_stbl[1]' => { },
  1053. 'r2_a_green_stbl[2]' => { },
  1054. 'r2_a_green_stbl[3]' => { },
  1055. 'r2_a_green_stbl[4]' => { },
  1056. 'r2_a_green_stbl[5]' => { },
  1057. 'r2_a_green_stbl[6]' => { },
  1058. 'r2_a_green_stbl[7]' => { },
  1059. 'r2_a_green_stbl[8]' => { },
  1060. 'r2_a_green_stbl[9]' => { },
  1061. 'r2_a_green_stbl[10]' => { },
  1062. 'r2_a_green_stbl[11]' => { },
  1063. 'r2_a_green_stbl[12]' => { },
  1064. 'r2_a_green_stbl[13]' => { },
  1065. 'r2_a_green_stbl[14]' => { },
  1066. 'r2_a_green_stbl[15]' => { },
  1067. 'r2_a_green_stbl[16]' => { },
  1068. 'r2_a_green_stbl[17]' => { },
  1069. 'r2_a_green_stbl[18]' => { },
  1070. 'r2_a_green_stbl[19]' => { },
  1071. 'r2_a_green_stbl[20]' => { },
  1072. 'r2_a_green_stbl[21]' => { },
  1073. 'r2_a_green_stbl[22]' => { },
  1074. 'r2_a_green_stbl[23]' => { },
  1075. 'r2_a_green_stbl[24]' => { },
  1076. 'r2_a_green_stbl[25]' => { },
  1077. 'r2_a_green_stbl[26]' => { },
  1078. 'r2_a_green_stbl[27]' => { },
  1079. 'r2_a_green_stbl[28]' => { },
  1080. 'r2_a_green_stbl[29]' => { },
  1081. 'r2_a_green_stbl[30]' => { },
  1082. 'r2_a_green_stbl[31]' => { },
  1083. 'def_cor_c0' => { },
  1084. 'def_cor_c1' => { },
  1085. 'def_cor_c2' => { },
  1086. 'def_cor_c3' => { },
  1087. 'def_cor_c4' => { },
  1088. 'def_cor_c5' => { },
  1089. 'def_cor_c6' => { },
  1090. 'def_cor_c7' => { },
  1091. 'def_cor_c8' => { },
  1092. 'def_cor_k0' => { },
  1093. 'def_cor_k1' => { },
  1094. 'def_cor_k2' => { },
  1095. 'yhi_ylo_cor_c0' => { },
  1096. 'yhi_ylo_cor_c1' => { },
  1097. 'yhi_ylo_cor_c2' => { },
  1098. 'yhi_ylo_cor_c3' => { },
  1099. 'yhi_ylo_cor_c4' => { },
  1100. 'yhi_ylo_cor_c5' => { },
  1101. 'yhi_ylo_cor_c6' => { },
  1102. 'yhi_ylo_cor_c7' => { },
  1103. 'yhi_ylo_cor_c8' => { },
  1104. 'yhi_ylo_cor_k0' => { },
  1105. 'yhi_ylo_cor_k1' => { },
  1106. 'yhi_ylo_cor_k2' => { },
  1107. 'def_conv_chrm_a_m' => { },
  1108. 'def_conv_chrm_a_p' => { },
  1109. 'def_conv_chrm_b_m' => { },
  1110. 'def_conv_chrm_b_p' => { },
  1111. 'def_conv_chrm_c_m' => { },
  1112. 'def_conv_chrm_c_p' => { },
  1113. 'def_conv_chrm_d_m' => { },
  1114. 'def_conv_chrm_d_p' => { },
  1115. 'def_conv_chrm_k_cb' => { },
  1116. 'def_conv_chrm_k_cr' => { },
  1117. 'def_conv_luma_v0' => { },
  1118. 'def_conv_luma_v1' => { },
  1119. 'def_conv_luma_v2' => { },
  1120. 'def_conv_luma_k' => { },
  1121. 'tl84_conv_chrm_a_m' => { },
  1122. 'tl84_conv_chrm_a_p' => { },
  1123. 'tl84_conv_chrm_b_m' => { },
  1124. 'tl84_conv_chrm_b_p' => { },
  1125. 'tl84_conv_chrm_c_m' => { },
  1126. 'tl84_conv_chrm_c_p' => { },
  1127. 'tl84_conv_chrm_d_m' => { },
  1128. 'tl84_conv_chrm_d_p' => { },
  1129. 'tl84_conv_chrm_k_cb' => { },
  1130. 'tl84_conv_chrm_k_cr' => { },
  1131. 'tl84_conv_luma_v0' => { },
  1132. 'tl84_conv_luma_v1' => { },
  1133. 'tl84_conv_luma_v2' => { },
  1134. 'tl84_conv_luma_k' => { },
  1135. 'incand_conv_chrm_a_m' => { },
  1136. 'incand_conv_chrm_a_p' => { },
  1137. 'incand_conv_chrm_b_m' => { },
  1138. 'incand_conv_chrm_b_p' => { },
  1139. 'incand_conv_chrm_c_m' => { },
  1140. 'incand_conv_chrm_c_p' => { },
  1141. 'incand_conv_chrm_d_m' => { },
  1142. 'incand_conv_chrm_d_p' => { },
  1143. 'incand_conv_chrm_k_cb' => { },
  1144. 'incand_conv_chrm_k_cr' => { },
  1145. 'incand_conv_luma_v0' => { },
  1146. 'incand_conv_luma_v1' => { },
  1147. 'incand_conv_luma_v2' => { },
  1148. 'incand_conv_luma_k' => { },
  1149. 'daylt_conv_chrm_a_m' => { },
  1150. 'daylt_conv_chrm_a_p' => { },
  1151. 'daylt_conv_chrm_b_m' => { },
  1152. 'daylt_conv_chrm_b_p' => { },
  1153. 'daylt_conv_chrm_c_m' => { },
  1154. 'daylt_conv_chrm_c_p' => { },
  1155. 'daylt_conv_chrm_d_m' => { },
  1156. 'daylt_conv_chrm_d_p' => { },
  1157. 'daylt_conv_chrm_k_cb' => { },
  1158. 'daylt_conv_chrm_k_cr' => { },
  1159. 'daylt_conv_luma_v0' => { },
  1160. 'daylt_conv_luma_v1' => { },
  1161. 'daylt_conv_luma_v2' => { },
  1162. 'daylt_conv_luma_k' => { },
  1163. 'yhi_ylo_conv_chrm_a_m' => { },
  1164. 'yhi_ylo_conv_chrm_a_p' => { },
  1165. 'yhi_ylo_conv_chrm_b_m' => { },
  1166. 'yhi_ylo_conv_chrm_b_p' => { },
  1167. 'yhi_ylo_conv_chrm_c_m' => { },
  1168. 'yhi_ylo_conv_chrm_c_p' => { },
  1169. 'yhi_ylo_conv_chrm_d_m' => { },
  1170. 'yhi_ylo_conv_chrm_d_p' => { },
  1171. 'yhi_ylo_conv_chrm_k_cb' => { },
  1172. 'yhi_ylo_conv_chrm_k_cr' => { },
  1173. 'yhi_ylo_conv_luma_v0' => { },
  1174. 'yhi_ylo_conv_luma_v1' => { },
  1175. 'yhi_ylo_conv_luma_v2' => { },
  1176. 'yhi_ylo_conv_luma_k' => { },
  1177. 'gamma_enable' => { },
  1178. 'def_luma_gamma_mode' => { },
  1179. 'def_rgb_gamma_mode' => { },
  1180. 'blck_lvl_even_cols' => { },
  1181. 'blck_lvl_odd_cols' => { },
  1182. 'defect_pix_min_thresh' => { },
  1183. 'defect_pix_max_thresh' => { },
  1184. 'defect_pix_cor_enable' => { },
  1185. 'prview_resol' => { },
  1186. 'snapshot_resol' => { },
  1187. 'curr_resol' => { },
  1188. 'sensor_fmt' => { },
  1189. 'discard_frst_frm' => { },
  1190. 'frm_skip_pttrn' => { },
  1191. 'sensor_type' => { },
  1192. 'max_video_fps' => { },
  1193. 'video_fps' => { },
  1194. 'max_prview_fps' => { },
  1195. 'prview_fps' => { },
  1196. 'nghtsht_fps' => { },
  1197. 'sensr_ful_wdth' => { },
  1198. 'sensr_ful_hght' => { },
  1199. 'sensr_qtr_wdth' => { },
  1200. 'sensr_qtr_hght' => { },
  1201. 'nightshot_mode' => { },
  1202. 'pclk_invert' => { },
  1203. 'cam_mclk_hz' => { },
  1204. 'chrom_supress' => { },
  1205. 'chro_sup_luma_thres_1' => { },
  1206. 'chro_sup_luma_thres_2' => { },
  1207. 'chro_sup_luma_thres_3' => { },
  1208. 'chro_sup_luma_thres_4' => { },
  1209. 'chro_sup_chro_thres_1' => { },
  1210. 'chro_sup_chro_thres_2' => { },
  1211. 'la_detect' => { },
  1212. 'la_enable' => { },
  1213. 'HJR_enable' => { },
  1214. 'HJR_max_num_frames' => { },
  1215. 'HJR_one_to_two_offset' => { },
  1216. 'HJR_n_reduction_flat' => { },
  1217. 'HJR_n_reduction_texture' => { },
  1218. 'HJR_texture_threshold' => { },
  1219. );
  1220. # generate tag names and descriptions
  1221. {
  1222. local $_;
  1223. my $table = \%Image::ExifTool::Qualcomm::Main;
  1224. MakeNameAndDesc($_, $$table{$_}) foreach TagTableKeys($table);
  1225. }
  1226. #------------------------------------------------------------------------------
  1227. # Generate tag Name and Description from a Qualcomm tag ID
  1228. # Inputs: 0) tag ID, 1) tagInfo ref
  1229. # Returns: true on success
  1230. sub MakeNameAndDesc($$)
  1231. {
  1232. local $_ = shift;
  1233. my $tagInfo = shift;
  1234. # capitalize various leading acronyms or just first letter...
  1235. s/^(asf|awb|aec|afr|af_|la_|r2_tl|tl)/\U$1/ or $_ = ucfirst;
  1236. s/_([a-z])/_\u$1/g; # capitalize first letter of each word
  1237. s/\[(\d+)\]$/sprintf("_%.2d",$1)/e; # use 2-digit subscripts (and remove brackets)
  1238. tr/-_a-zA-Z0-9//dc; # delete invalid characters
  1239. my $desc = $_;
  1240. # convert underlines to spaces in description
  1241. if ($desc =~ tr/_/ /) {
  1242. # remove unnecessary underlines from tag name...
  1243. s/_([A-Z][a-z])/$1/g;
  1244. s/([a-z0-9])_([A-Z])/$1$2/g;
  1245. s/([A-Za-z])_(\d)/$1$2/g;
  1246. }
  1247. return 0 unless length;
  1248. $$tagInfo{Name} = $_;
  1249. $$tagInfo{Description} = $desc;
  1250. return 1;
  1251. }
  1252. #------------------------------------------------------------------------------
  1253. # Process Qualcomm APP7 metadata (ref PH)
  1254. # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
  1255. # Returns: 1 on success
  1256. sub ProcessQualcomm($$$)
  1257. {
  1258. my ($et, $dirInfo, $tagTablePtr) = @_;
  1259. my $dataPt = $$dirInfo{DataPt};
  1260. my $dataPos = $$dirInfo{DataPos};
  1261. my $pos = $$dirInfo{DirStart};
  1262. my $dirEnd = $pos + $$dirInfo{DirLen};
  1263. $et->VerboseDir('Qualcomm', undef, $$dirInfo{DirLen});
  1264. SetByteOrder('II');
  1265. while ($pos + 3 < $dirEnd) {
  1266. my $valLen = Get16u($dataPt, $pos);
  1267. my $tagLen = Get8u($dataPt, $pos + 2);
  1268. last if $pos + 8 + $tagLen + $valLen > $dirEnd;
  1269. my $tag = substr($$dataPt, $pos + 3, $tagLen);
  1270. $pos += 3 + $tagLen; # point to format byte
  1271. my $fmt = Get8u($dataPt, $pos);
  1272. # (not sure what these counts are for -- both are always 1 in my samples)
  1273. #my $cnt1 = Get16u($dataPt, $pos + 1);
  1274. #my $cnt2 = Get16u($dataPt, $pos + 3);
  1275. $pos += 5; # point to start of value data
  1276. my ($val, $format);
  1277. if ($fmt <= 7) {
  1278. $format = $qualcommFormat[$fmt];
  1279. $val = ReadValue($dataPt, $pos, $format, undef, $valLen);
  1280. } else {
  1281. $format = "format $fmt";
  1282. my $value = substr($$dataPt, $pos, $valLen);
  1283. $val = \$value;
  1284. }
  1285. unless (defined $$tagTablePtr{$tag} or $Image::ExifTool::specialTags{$tag}) {
  1286. my %tagInfo;
  1287. if (MakeNameAndDesc($tag, \%tagInfo)) {
  1288. $et->VPrint(0, $$et{INDENT}, "[adding Qualcomm:$tagInfo{Name}]\n");
  1289. AddTagToTable($tagTablePtr, $tag, \%tagInfo);
  1290. }
  1291. }
  1292. $et->HandleTag($tagTablePtr, $tag, $val,
  1293. DataPt => $dataPt,
  1294. DataPos => $dataPos,
  1295. Start => $pos,
  1296. Size => $valLen,
  1297. Format => $format,
  1298. );
  1299. $pos += $valLen; # point to start of next entry
  1300. }
  1301. return 1;
  1302. }
  1303. 1; # end
  1304. __END__
  1305. =head1 NAME
  1306. Image::ExifTool::Qualcomm - Read Qualcomm APP7 meta information
  1307. =head1 SYNOPSIS
  1308. This module is loaded automatically by Image::ExifTool when required.
  1309. =head1 DESCRIPTION
  1310. This module contains definitions required by Image::ExifTool to read
  1311. information from the Qualcomm APP7 segment in JPEG images.
  1312. =head1 AUTHOR
  1313. Copyright 2003-2016, Phil Harvey (phil at owl.phy.queensu.ca)
  1314. This library is free software; you can redistribute it and/or modify it
  1315. under the same terms as Perl itself.
  1316. =head1 SEE ALSO
  1317. L<Image::ExifTool::TagNames/Qualcomm Tags>,
  1318. L<Image::ExifTool(3pm)|Image::ExifTool>
  1319. =cut