Casio.pm 62 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058
  1. #------------------------------------------------------------------------------
  2. # File: Casio.pm
  3. #
  4. # Description: Casio EXIF maker notes tags
  5. #
  6. # Revisions: 12/09/2003 - P. Harvey Created
  7. # 09/10/2004 - P. Harvey Added MakerNote2 (thanks to Joachim Loehr)
  8. #
  9. # References: 1) http://park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html
  10. # 2) Joachim Loehr private communication
  11. # 3) http://homepage3.nifty.com/kamisaka/makernote/makernote_casio.htm
  12. # 4) http://gvsoft.homedns.org/exif/makernote-casio-type1.html
  13. # 5) Robert Chi private communication (EX-F1)
  14. # 6) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,3701.html
  15. # JD) Jens Duttke private communication
  16. #------------------------------------------------------------------------------
  17. package Image::ExifTool::Casio;
  18. use strict;
  19. use vars qw($VERSION);
  20. use Image::ExifTool::Exif;
  21. $VERSION = '1.37';
  22. # older Casio maker notes (ref 1)
  23. %Image::ExifTool::Casio::Main = (
  24. WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
  25. CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
  26. WRITABLE => 1,
  27. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  28. 0x0001 => {
  29. Name => 'RecordingMode' ,
  30. Writable => 'int16u',
  31. PrintConv => {
  32. 1 => 'Single Shutter',
  33. 2 => 'Panorama',
  34. 3 => 'Night Scene',
  35. 4 => 'Portrait',
  36. 5 => 'Landscape',
  37. 7 => 'Panorama', #4
  38. 10 => 'Night Scene', #4
  39. 15 => 'Portrait', #4
  40. 16 => 'Landscape', #4
  41. },
  42. },
  43. 0x0002 => {
  44. Name => 'Quality',
  45. Writable => 'int16u',
  46. PrintConv => { 1 => 'Economy', 2 => 'Normal', 3 => 'Fine' },
  47. },
  48. 0x0003 => {
  49. Name => 'FocusMode',
  50. Writable => 'int16u',
  51. PrintConv => {
  52. 2 => 'Macro',
  53. 3 => 'Auto',
  54. 4 => 'Manual',
  55. 5 => 'Infinity',
  56. 7 => 'Spot AF', #4
  57. },
  58. },
  59. 0x0004 => [
  60. {
  61. Name => 'FlashMode',
  62. Condition => '$self->{Model} =~ /^QV-(3500EX|8000SX)/',
  63. Writable => 'int16u',
  64. PrintConv => {
  65. 1 => 'Auto',
  66. 2 => 'On',
  67. 3 => 'Off',
  68. 4 => 'Off', #4
  69. 5 => 'Red-eye Reduction', #4
  70. },
  71. },
  72. {
  73. Name => 'FlashMode',
  74. Writable => 'int16u',
  75. PrintConv => {
  76. 1 => 'Auto',
  77. 2 => 'On',
  78. 3 => 'Off',
  79. 4 => 'Red-eye Reduction',
  80. },
  81. },
  82. ],
  83. 0x0005 => {
  84. Name => 'FlashIntensity',
  85. Writable => 'int16u',
  86. PrintConv => {
  87. 11 => 'Weak',
  88. 12 => 'Low', #4
  89. 13 => 'Normal',
  90. 14 => 'High', #4
  91. 15 => 'Strong',
  92. },
  93. },
  94. 0x0006 => {
  95. Name => 'ObjectDistance',
  96. Writable => 'int32u',
  97. ValueConv => '$val / 1000', #4
  98. ValueConvInv => '$val * 1000',
  99. PrintConv => '"$val m"',
  100. PrintConvInv => '$val=~s/\s*m$//;$val',
  101. },
  102. 0x0007 => {
  103. Name => 'WhiteBalance',
  104. Writable => 'int16u',
  105. PrintConv => {
  106. 1 => 'Auto',
  107. 2 => 'Tungsten',
  108. 3 => 'Daylight',
  109. 4 => 'Fluorescent',
  110. 5 => 'Shade',
  111. 129 => 'Manual',
  112. },
  113. },
  114. # 0x0009 Bulb? (ref unknown)
  115. 0x000a => {
  116. Name => 'DigitalZoom',
  117. Writable => 'int32u',
  118. PrintHex => 1,
  119. PrintConv => {
  120. 0x10000 => 'Off',
  121. 0x10001 => '2x',
  122. 0x19999 => '1.6x', #4
  123. 0x20000 => '2x', #4
  124. 0x33333 => '3.2x', #4
  125. 0x40000 => '4x', #4
  126. },
  127. },
  128. 0x000b => {
  129. Name => 'Sharpness',
  130. Writable => 'int16u',
  131. PrintConv => {
  132. 0 => 'Normal',
  133. 1 => 'Soft',
  134. 2 => 'Hard',
  135. 16 => 'Normal', #4
  136. 17 => '+1', #4
  137. 18 => '-1', #4
  138. },
  139. },
  140. 0x000c => {
  141. Name => 'Contrast',
  142. Writable => 'int16u',
  143. PrintConv => {
  144. 0 => 'Normal',
  145. 1 => 'Low',
  146. 2 => 'High',
  147. 16 => 'Normal', #4
  148. 17 => '+1', #4
  149. 18 => '-1', #4
  150. },
  151. },
  152. 0x000d => {
  153. Name => 'Saturation',
  154. Writable => 'int16u',
  155. PrintConv => {
  156. 0 => 'Normal',
  157. 1 => 'Low',
  158. 2 => 'High',
  159. 16 => 'Normal', #4
  160. 17 => '+1', #4
  161. 18 => '-1', #4
  162. },
  163. },
  164. 0x0014 => {
  165. Name => 'ISO',
  166. Writable => 'int16u',
  167. Priority => 0,
  168. },
  169. 0x0015 => { #JD (Similar to Type2 0x2001)
  170. Name => 'FirmwareDate',
  171. Writable => 'string',
  172. Format => 'undef', # the 'string' contains nulls
  173. Count => 18,
  174. PrintConv => q{
  175. $_ = $val;
  176. if (/^(\d{2})(\d{2})\0\0(\d{2})(\d{2})\0\0(\d{2})(.{2})\0{2}$/) {
  177. my $yr = $1 + ($1 < 70 ? 2000 : 1900);
  178. my $sec = $6;
  179. $val = "$yr:$2:$3 $4:$5";
  180. $val .= ":$sec" if $sec=~/^\d{2}$/;
  181. return $val;
  182. }
  183. tr/\0/./; s/\.+$//;
  184. return "Unknown ($_)";
  185. },
  186. PrintConvInv => q{
  187. $_ = $val;
  188. if (/^(19|20)(\d{2}):(\d{2}):(\d{2}) (\d{2}):(\d{2})$/) {
  189. return "$2$3\0\0$4$5\0\0$6\0\0\0\0";
  190. } elsif (/^Unknown\s*\((.*)\)$/i) {
  191. $_ = $1; tr/./\0/;
  192. return $_;
  193. } else {
  194. return undef;
  195. }
  196. },
  197. },
  198. 0x0016 => { #4
  199. Name => 'Enhancement',
  200. Writable => 'int16u',
  201. PrintConv => {
  202. 1 => 'Off',
  203. 2 => 'Red',
  204. 3 => 'Green',
  205. 4 => 'Blue',
  206. 5 => 'Flesh Tones',
  207. },
  208. },
  209. 0x0017 => { #4
  210. Name => 'ColorFilter',
  211. Writable => 'int16u',
  212. PrintConv => {
  213. 1 => 'Off',
  214. 2 => 'Black & White',
  215. 3 => 'Sepia',
  216. 4 => 'Red',
  217. 5 => 'Green',
  218. 6 => 'Blue',
  219. 7 => 'Yellow',
  220. 8 => 'Pink',
  221. 9 => 'Purple',
  222. },
  223. },
  224. 0x0018 => { #4
  225. Name => 'AFPoint',
  226. Writable => 'int16u',
  227. Notes => 'may not be valid for all models', #JD
  228. PrintConv => {
  229. 1 => 'Center',
  230. 2 => 'Upper Left',
  231. 3 => 'Upper Right',
  232. 4 => 'Near Left/Right of Center',
  233. 5 => 'Far Left/Right of Center',
  234. 6 => 'Far Left/Right of Center/Bottom',
  235. 7 => 'Top Near-left',
  236. 8 => 'Near Upper/Left',
  237. 9 => 'Top Near-right',
  238. 10 => 'Top Left',
  239. 11 => 'Top Center',
  240. 12 => 'Top Right',
  241. 13 => 'Center Left',
  242. 14 => 'Center Right',
  243. 15 => 'Bottom Left',
  244. 16 => 'Bottom Center',
  245. 17 => 'Bottom Right',
  246. },
  247. },
  248. 0x0019 => { #4
  249. Name => 'FlashIntensity',
  250. Writable => 'int16u',
  251. PrintConv => {
  252. 1 => 'Normal',
  253. 2 => 'Weak',
  254. 3 => 'Strong',
  255. },
  256. },
  257. 0x0e00 => {
  258. Name => 'PrintIM',
  259. Description => 'Print Image Matching',
  260. # crazy I know, but the offset for this value is entry-based
  261. # (QV-2100, QV-2900UX, QV-3500EX and QV-4000) even though the
  262. # offsets for other values isn't
  263. EntryBased => 1,
  264. SubDirectory => {
  265. TagTable => 'Image::ExifTool::PrintIM::Main',
  266. },
  267. },
  268. );
  269. # ref 2:
  270. %Image::ExifTool::Casio::Type2 = (
  271. WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
  272. CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
  273. WRITABLE => 1,
  274. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  275. 0x0002 => {
  276. Name => 'PreviewImageSize',
  277. Groups => { 2 => 'Image' },
  278. Writable => 'int16u',
  279. Count => 2,
  280. PrintConv => '$val =~ tr/ /x/; $val',
  281. PrintConvInv => '$val =~ tr/x/ /; $val',
  282. },
  283. 0x0003 => {
  284. Name => 'PreviewImageLength',
  285. Groups => { 2 => 'Image' },
  286. OffsetPair => 0x0004, # point to associated offset
  287. DataTag => 'PreviewImage',
  288. Writable => 'int32u',
  289. Protected => 2,
  290. },
  291. 0x0004 => {
  292. Name => 'PreviewImageStart',
  293. Groups => { 2 => 'Image' },
  294. Flags => 'IsOffset',
  295. OffsetPair => 0x0003, # point to associated byte count
  296. DataTag => 'PreviewImage',
  297. Writable => 'int32u',
  298. Protected => 2,
  299. },
  300. 0x0008 => {
  301. Name => 'QualityMode',
  302. Writable => 'int16u',
  303. PrintConv => {
  304. 0 => 'Economy',
  305. 1 => 'Normal',
  306. 2 => 'Fine',
  307. },
  308. },
  309. 0x0009 => {
  310. Name => 'CasioImageSize',
  311. Groups => { 2 => 'Image' },
  312. Writable => 'int16u',
  313. PrintConv => {
  314. 0 => '640x480',
  315. 4 => '1600x1200',
  316. 5 => '2048x1536',
  317. 20 => '2288x1712',
  318. 21 => '2592x1944',
  319. 22 => '2304x1728',
  320. 36 => '3008x2008',
  321. },
  322. },
  323. 0x000d => {
  324. Name => 'FocusMode',
  325. Writable => 'int16u',
  326. PrintConv => {
  327. 0 => 'Normal',
  328. 1 => 'Macro',
  329. },
  330. },
  331. 0x0014 => {
  332. Name => 'ISO',
  333. Writable => 'int16u',
  334. Priority => 0,
  335. PrintConv => {
  336. 3 => 50,
  337. 4 => 64,
  338. 6 => 100,
  339. 9 => 200,
  340. },
  341. },
  342. 0x0019 => {
  343. Name => 'WhiteBalance',
  344. Writable => 'int16u',
  345. PrintConv => {
  346. 0 => 'Auto',
  347. 1 => 'Daylight',
  348. 2 => 'Shade',
  349. 3 => 'Tungsten',
  350. 4 => 'Fluorescent',
  351. 5 => 'Manual',
  352. },
  353. },
  354. 0x001d => {
  355. Name => 'FocalLength',
  356. Writable => 'rational64u',
  357. PrintConv => 'sprintf("%.1f mm",$val)',
  358. PrintConvInv => '$val=~s/\s*mm$//;$val',
  359. },
  360. 0x001f => {
  361. Name => 'Saturation',
  362. Writable => 'int16u',
  363. PrintConv => {
  364. 0 => 'Low',
  365. 1 => 'Normal',
  366. 2 => 'High',
  367. },
  368. },
  369. 0x0020 => {
  370. Name => 'Contrast',
  371. Writable => 'int16u',
  372. PrintConv => {
  373. 0 => 'Low',
  374. 1 => 'Normal',
  375. 2 => 'High',
  376. },
  377. },
  378. 0x0021 => {
  379. Name => 'Sharpness',
  380. Writable => 'int16u',
  381. PrintConv => {
  382. 0 => 'Soft',
  383. 1 => 'Normal',
  384. 2 => 'Hard',
  385. },
  386. },
  387. 0x0e00 => {
  388. Name => 'PrintIM',
  389. Description => 'Print Image Matching',
  390. Writable => 0,
  391. SubDirectory => {
  392. TagTable => 'Image::ExifTool::PrintIM::Main',
  393. },
  394. },
  395. 0x2000 => {
  396. # this image data is also referenced by tags 3 and 4
  397. # (nasty that they double-reference the image!)
  398. %Image::ExifTool::previewImageTagInfo,
  399. Groups => { 2 => 'Preview' },
  400. },
  401. 0x2001 => { #PH
  402. # I downloaded images from 12 different EX-Z50 cameras, and they showed
  403. # only 3 distinct dates here (2004:08:31 18:55, 2004:09:13 14:14, and
  404. # 2004:11:26 17:07), so I'm guessing this is a firmware version date - PH
  405. Name => 'FirmwareDate',
  406. Writable => 'string',
  407. Format => 'undef', # the 'string' contains nulls
  408. Count => 18,
  409. PrintConv => q{
  410. $_ = $val;
  411. if (/^(\d{2})(\d{2})\0\0(\d{2})(\d{2})\0\0(\d{2})\0{4}$/) {
  412. my $yr = $1 + ($1 < 70 ? 2000 : 1900);
  413. return "$yr:$2:$3 $4:$5";
  414. }
  415. tr/\0/./; s/\.+$//;
  416. return "Unknown ($_)";
  417. },
  418. PrintConvInv => q{
  419. $_ = $val;
  420. if (/^(19|20)(\d{2}):(\d{2}):(\d{2}) (\d{2}):(\d{2})$/) {
  421. return "$2$3\0\0$4$5\0\0$6\0\0\0\0";
  422. } elsif (/^Unknown\s*\((.*)\)$/i) {
  423. $_ = $1; tr/./\0/;
  424. return $_;
  425. } else {
  426. return undef;
  427. }
  428. },
  429. },
  430. 0x2011 => {
  431. Name => 'WhiteBalanceBias',
  432. Writable => 'int16u',
  433. Count => 2,
  434. },
  435. 0x2012 => {
  436. Name => 'WhiteBalance',
  437. Writable => 'int16u',
  438. PrintConv => {
  439. 0 => 'Manual',
  440. 1 => 'Daylight', #3
  441. 2 => 'Cloudy', #PH (EX-ZR20, NC)
  442. 3 => 'Shade', #3
  443. 4 => 'Flash?',
  444. 6 => 'Fluorescent', #3
  445. 9 => 'Tungsten?', #PH (EX-Z77)
  446. 10 => 'Tungsten', #3
  447. 12 => 'Flash',
  448. },
  449. },
  450. 0x2021 => { #JD (guess)
  451. Name => 'AFPointPosition',
  452. Writable => 'int16u',
  453. Count => 4,
  454. PrintConv => q{
  455. my @v = split ' ', $val;
  456. return 'n/a' if $v[0] == 65535 or not $v[1] or not $v[3];
  457. sprintf "%.2g %.2g", $v[0]/$v[1], $v[2]/$v[3];
  458. },
  459. },
  460. 0x2022 => {
  461. Name => 'ObjectDistance',
  462. Writable => 'int32u',
  463. ValueConv => '$val >= 0x20000000 ? "inf" : $val / 1000',
  464. ValueConvInv => '$val eq "inf" ? 0x20000000 : $val * 1000',
  465. PrintConv => '$val eq "inf" ? $val : "$val m"',
  466. PrintConvInv => '$val=~s/\s*m$//;$val',
  467. },
  468. # 0x2023 looks interesting (values 0,1,2,3,5 in samples) - PH
  469. # - 1 for makeup mode shots (portrait?) (EX-Z450)
  470. 0x2034 => {
  471. Name => 'FlashDistance',
  472. Writable => 'int16u',
  473. },
  474. # 0x203e - normally 62000, but 62001 for anti-shake mode - PH
  475. 0x2076 => { #PH (EX-Z450)
  476. # ("Enhancement" was taken already, so call this "SpecialEffect" for lack of a better name)
  477. Name => 'SpecialEffectMode',
  478. Writable => 'int8u',
  479. Count => 3,
  480. PrintConv => {
  481. '0 0 0' => 'Off',
  482. '1 0 0' => 'Makeup',
  483. '2 0 0' => 'Mist Removal',
  484. '3 0 0' => 'Vivid Landscape',
  485. # have also seen '1 1 1', '2 2 4', '4 3 3', '4 4 4'
  486. # '0 0 14' and '0 0 42' - premium auto night shot (EX-Z2300)
  487. # and '0 0 2' for Art HDR
  488. },
  489. },
  490. 0x2089 => [ #PH
  491. {
  492. Name => 'FaceInfo1',
  493. Condition => '$$valPt =~ /^(\0\0|.\x02\x80\x01\xe0)/s', # (EX-H5)
  494. SubDirectory => {
  495. TagTable => 'Image::ExifTool::Casio::FaceInfo1',
  496. ByteOrder => 'BigEndian',
  497. },
  498. },{
  499. Name => 'FaceInfo2',
  500. Condition => '$$valPt =~ /^\x02\x01/', # (EX-H20G,EX-ZR100)
  501. SubDirectory => {
  502. TagTable => 'Image::ExifTool::Casio::FaceInfo2',
  503. ByteOrder => 'LittleEndian',
  504. },
  505. },{
  506. Name => 'FaceInfoUnknown',
  507. Unknown => 1,
  508. },
  509. ],
  510. # 0x208a - also some sort of face detection information - PH
  511. 0x211c => { #PH
  512. Name => 'FacesDetected',
  513. Format => 'int8u',
  514. },
  515. 0x3000 => {
  516. Name => 'RecordMode',
  517. Writable => 'int16u',
  518. PrintConv => {
  519. 2 => 'Program AE', #3
  520. 3 => 'Shutter Priority', #3
  521. 4 => 'Aperture Priority', #3
  522. 5 => 'Manual', #3
  523. 6 => 'Best Shot', #3
  524. 17 => 'Movie', #PH (UHQ?)
  525. 19 => 'Movie (19)', #PH (HQ?, EX-P505)
  526. 20 => 'YouTube Movie', #PH
  527. '2 0' => 'Program AE', #PH (NC)
  528. '3 0' => 'Shutter Priority', #PH (NC)
  529. '4 0' => 'Aperture Priority', #PH (NC)
  530. '5 0' => 'Manual', #PH (NC)
  531. '6 0' => 'Best Shot', #PH (NC)
  532. },
  533. },
  534. 0x3001 => { #3
  535. Name => 'ReleaseMode',
  536. Writable => 'int16u',
  537. PrintConv => {
  538. 1 => 'Normal',
  539. 3 => 'AE Bracketing',
  540. 11 => 'WB Bracketing',
  541. 13 => 'Contrast Bracketing', #(not sure about translation - PH)
  542. 19 => 'High Speed Burst', #PH (EX-FH25, 40fps)
  543. # have also seen: 2, 7(common), 14, 18 - PH
  544. },
  545. },
  546. 0x3002 => {
  547. Name => 'Quality',
  548. Writable => 'int16u',
  549. PrintConv => {
  550. 1 => 'Economy',
  551. 2 => 'Normal',
  552. 3 => 'Fine',
  553. },
  554. },
  555. 0x3003 => {
  556. Name => 'FocusMode',
  557. Writable => 'int16u',
  558. PrintConv => {
  559. 0 => 'Manual', #(guess at translation)
  560. 1 => 'Focus Lock', #(guess at translation)
  561. 2 => 'Macro', #3
  562. 3 => 'Single-Area Auto Focus',
  563. 5 => 'Infinity', #PH
  564. 6 => 'Multi-Area Auto Focus',
  565. 8 => 'Super Macro', #PH (EX-Z2300)
  566. },
  567. },
  568. 0x3006 => {
  569. Name => 'HometownCity',
  570. Writable => 'string',
  571. },
  572. # unfortunately the BestShotMode numbers are model-dependent - PH
  573. #http://search.casio-intl.com/search?q=BEST+SHOT+sets+up+the+camera+CASIO+EX+ZR100+BEST+SHOT&btnG=Search&output=xml_no_dtd&oe=UTF-8&ie=UTF-8&site=casio-intl_com&client=search_casio-intl_com&proxystylesheet=search_casio-intl_com
  574. # NOTE: BestShotMode is not used unless RecordMode is "Best Shot"
  575. 0x3007 => [{
  576. Name => 'BestShotMode',
  577. Writable => 'int16u',
  578. Condition => '$$self{Model} eq "EX-FC100"',
  579. Notes => 'EX-FC100',
  580. PrintConvColumns => 2,
  581. PrintConv => {
  582. 0 => 'Off',
  583. 1 => 'Auto',
  584. 2 => 'Portrait',
  585. 3 => 'Scenery',
  586. 4 => 'Portrait with Scenery',
  587. 5 => 'Children',
  588. 6 => 'Sports',
  589. 7 => 'Pet',
  590. 8 => 'Flower',
  591. 9 => 'Natural Green',
  592. 10 => 'Autumn Leaves',
  593. 11 => 'Sundown',
  594. 12 => 'High Speed Night Scene',
  595. 13 => 'Night Scene Portrait',
  596. 14 => 'Fireworks',
  597. 15 => 'High Speed Anti Shake',
  598. 16 => 'Multi-motion Image',
  599. 17 => 'High Speed Best Selection',
  600. 18 => 'Move Out CS',
  601. 19 => 'Move In CS',
  602. 20 => 'Pre-record Movie',
  603. 21 => 'For YouTube',
  604. },
  605. },{
  606. Name => 'BestShotMode',
  607. Writable => 'int16u',
  608. Condition => '$$self{Model} eq "EX-FC150"',
  609. Notes => 'EX-FC150',
  610. PrintConvColumns => 2,
  611. PrintConv => {
  612. 0 => 'Off',
  613. 1 => 'Auto',
  614. 2 => 'Expression CS',
  615. 3 => 'Baby CS',
  616. 4 => 'Child CS',
  617. 5 => 'Pet CS',
  618. 6 => 'Sports CS',
  619. 7 => 'Child High Speed Movie',
  620. 8 => 'Pet High Speed Movie',
  621. 9 => 'Sports High Speed Movie',
  622. 10 => 'Lag Correction',
  623. 11 => 'High Speed Lighting',
  624. 12 => 'High Speed Night Scene',
  625. 13 => 'High Speed Night Scene and Portrait',
  626. 14 => 'High Speed Anti Shake',
  627. 15 => 'High Speed Best Selection',
  628. 16 => 'Portrait',
  629. 17 => 'Scenery',
  630. 18 => 'Portrait With Scenery',
  631. 19 => 'Flower',
  632. 20 => 'Natural Green',
  633. 21 => 'Autumn Leaves',
  634. 22 => 'Sundown',
  635. 23 => 'Fireworks',
  636. 24 => 'Multi-motion Image',
  637. 25 => 'Move Out CS',
  638. 26 => 'Move In CS',
  639. 27 => 'Pre-record Movie',
  640. 28 => 'For YouTube',
  641. },
  642. },{
  643. Name => 'BestShotMode',
  644. Writable => 'int16u',
  645. Condition => '$$self{Model} eq "EX-FC200S"',
  646. Notes => 'EX-FC200S',
  647. PrintConvColumns => 2,
  648. PrintConv => {
  649. 0 => 'Off',
  650. 1 => 'Slow Motion Swing (behind)',
  651. 2 => 'Slow Motion Swing (front)',
  652. 3 => 'Self Slow Motion (behind)',
  653. 4 => 'Self Slow Motion (front)',
  654. 5 => 'Swing Burst',
  655. 6 => 'HDR',
  656. 7 => 'HDR Art',
  657. 8 => 'High Speed Night Scene',
  658. 9 => 'High Speed Night Scene and Portrait',
  659. 10 => 'High Speed Anti Shake',
  660. 11 => 'Multi SR Zoom',
  661. 12 => 'Blurred Background',
  662. 13 => 'Wide Shot',
  663. 14 => 'Slide Panorama',
  664. 15 => 'High Speed Best Selection',
  665. 16 => 'Lag Correction',
  666. 17 => 'High Speed CS',
  667. 18 => 'Child CS',
  668. 19 => 'Pet CS',
  669. 20 => 'Sports CS',
  670. 21 => 'Child High Speed Movie',
  671. 22 => 'Pet High Speed Movie',
  672. 23 => 'Sports High Speed Movie',
  673. 24 => 'Portrait',
  674. 25 => 'Scenery',
  675. 26 => 'Portrait with Scenery',
  676. 27 => 'Children',
  677. 28 => 'Sports',
  678. 29 => 'Candlelight Portrait',
  679. 30 => 'Party',
  680. 31 => 'Pet',
  681. 32 => 'Flower',
  682. 33 => 'Natural Green',
  683. 34 => 'Autumn Leaves',
  684. 35 => 'Soft Flowing Water',
  685. 36 => 'Splashing Water',
  686. 37 => 'Sundown',
  687. 38 => 'Fireworks',
  688. 39 => 'Food',
  689. 40 => 'Text',
  690. 41 => 'Collection',
  691. 42 => 'Auction',
  692. 43 => 'Pre-record Movie',
  693. 44 => 'For YouTube',
  694. },
  695. },{
  696. Name => 'BestShotMode',
  697. Writable => 'int16u',
  698. Condition => '$$self{Model} eq "EX-FH100"',
  699. Notes => 'EX-FH100',
  700. PrintConvColumns => 2,
  701. PrintConv => {
  702. 0 => 'Off',
  703. 1 => 'Expression CS',
  704. 2 => 'Baby CS',
  705. 3 => 'Child CS',
  706. 4 => 'Pet CS',
  707. 5 => 'Sports CS',
  708. 6 => 'Child High Speed Movie',
  709. 7 => 'Pet High Speed Movie',
  710. 8 => 'Sports High Speed Movie',
  711. 9 => 'Lag Correction',
  712. 10 => 'High Speed Lighting',
  713. 11 => 'High Speed Night Scene',
  714. 12 => 'High Speed Night Scene and Portrait',
  715. 13 => 'High Speed Anti Shake',
  716. 14 => 'High Speed Best Selection',
  717. 15 => 'Portrait',
  718. 16 => 'Scenery',
  719. 17 => 'Portrait With Scenery',
  720. 18 => 'Flower',
  721. 19 => 'Natural Green',
  722. 20 => 'Autumn Leaves',
  723. 21 => 'Sundown',
  724. 22 => 'Fireworks',
  725. 23 => 'Multi-motion Image',
  726. 24 => 'Move Out CS',
  727. 25 => 'Move In CS',
  728. 26 => 'Pre-record Movie',
  729. 27 => 'For YouTube',
  730. },
  731. },{
  732. Name => 'BestShotMode',
  733. Writable => 'int16u',
  734. Condition => '$$self{Model} eq "EX-G1"',
  735. Notes => 'EX-G1',
  736. PrintConvColumns => 3,
  737. PrintConv => {
  738. 0 => 'Off',
  739. 1 => 'Auto',
  740. 2 => 'Auto Best Shot',
  741. 3 => 'Dynamic Photo',
  742. 4 => 'Interval Snapshot',
  743. 5 => 'Interval Movie',
  744. 6 => 'Portrait',
  745. 7 => 'Scenery',
  746. 8 => 'Portrait with Scenery',
  747. 9 => 'Underwater',
  748. 10 => 'Beach',
  749. 11 => 'Snow',
  750. 12 => 'Children',
  751. 13 => 'Sports',
  752. 14 => 'Pet',
  753. 15 => 'Flower',
  754. 16 => 'Sundown',
  755. 17 => 'Night Scene',
  756. 18 => 'Night Scene Portrait',
  757. 19 => 'Fireworks',
  758. 20 => 'Food',
  759. 21 => 'For eBay',
  760. 22 => 'Multi-motion Image',
  761. 23 => 'Pre-record Movie',
  762. 24 => 'For YouTube',
  763. 25 => 'Voice Recording',
  764. },
  765. },{
  766. Name => 'BestShotMode',
  767. Writable => 'int16u',
  768. Condition => '$$self{Model} eq "EX-S10"',
  769. Notes => 'EX-S10',
  770. PrintConvColumns => 3,
  771. PrintConv => {
  772. 0 => 'Off',
  773. 1 => 'Auto',
  774. 2 => 'Portrait',
  775. 3 => 'Scenery',
  776. 4 => 'Portrait with Scenery',
  777. 5 => 'Self-portrait (1 person)',
  778. 6 => 'Self-portrait (2 people)',
  779. 7 => 'Children',
  780. 8 => 'Sports',
  781. 9 => 'Candlelight Portrait',
  782. 10 => 'Party',
  783. 11 => 'Pet',
  784. 12 => 'Flower',
  785. 13 => 'Natural Green',
  786. 14 => 'Autumn Leaves',
  787. 15 => 'Soft Flowing Water',
  788. 16 => 'Splashing Water',
  789. 17 => 'Sundown',
  790. 18 => 'Night Scene',
  791. 19 => 'Night Scene Portrait',
  792. 20 => 'Fireworks',
  793. 21 => 'Food',
  794. 22 => 'Text',
  795. 23 => 'Collection',
  796. 24 => 'Auction',
  797. 25 => 'Backlight',
  798. 26 => 'Anti Shake',
  799. 27 => 'High Sensitivity',
  800. 28 => 'Underwater',
  801. 29 => 'Monochrome',
  802. 30 => 'Retro',
  803. 31 => 'Business Cards',
  804. 32 => 'White Board',
  805. 33 => 'Silent',
  806. 34 => 'Pre-record Movie',
  807. 35 => 'For YouTube',
  808. 36 => 'Voice Recording',
  809. },
  810. },{
  811. Name => 'BestShotMode',
  812. Writable => 'int16u',
  813. Condition => '$$self{Model} eq "EX-S880"',
  814. Notes => 'EX-S880',
  815. PrintConvColumns => 3,
  816. PrintConv => {
  817. 0 => 'Off',
  818. 1 => 'Auto',
  819. 2 => 'Portrait',
  820. 3 => 'Scenery',
  821. 4 => 'Portrait with Scenery',
  822. 5 => 'Children',
  823. 6 => 'Sports',
  824. 7 => 'Candlelight Portrait',
  825. 8 => 'Party',
  826. 9 => 'Pet',
  827. 10 => 'Flower',
  828. 11 => 'Natural Green',
  829. 12 => 'Autumn Leaves',
  830. 13 => 'Soft Flowing Water', # (wrong in documentation)
  831. 14 => 'Splashing Water',
  832. 15 => 'Sundown',
  833. 16 => 'Night Scene',
  834. 17 => 'Night Scene Portrait',
  835. 18 => 'Fireworks',
  836. 19 => 'Food',
  837. 20 => 'Text',
  838. 21 => 'Collection',
  839. 22 => 'Auction',
  840. 23 => 'Backlight',
  841. 24 => 'Anti Shake',
  842. 25 => 'High Sensitivity',
  843. 26 => 'Monochrome',
  844. 27 => 'Retro',
  845. 28 => 'Twilight',
  846. 29 => 'Layout (2 images)',
  847. 30 => 'Layout (3 images)',
  848. 31 => 'Auto Framing',
  849. 32 => 'Old Photo',
  850. 33 => 'Business Cards',
  851. 34 => 'White Board',
  852. 35 => 'Silent',
  853. 36 => 'Short Movie',
  854. 37 => 'Past Movie',
  855. 38 => 'For YouTube',
  856. 39 => 'Voice Recording',
  857. },
  858. },{
  859. Name => 'BestShotMode',
  860. Writable => 'int16u',
  861. Condition => '$$self{Model} eq "EX-Z16"',
  862. Notes => 'EX-Z16',
  863. PrintConvColumns => 3,
  864. PrintConv => {
  865. 0 => 'Off',
  866. 1 => 'Auto',
  867. 2 => 'Portrait',
  868. 3 => 'Scenery',
  869. 4 => 'Portrait with Scenery',
  870. 5 => 'Children',
  871. 6 => 'Sports',
  872. 7 => 'Candlelight Portrait',
  873. 8 => 'Party',
  874. 9 => 'Pet',
  875. 10 => 'Flower',
  876. 11 => 'Soft Flowing Water',
  877. 12 => 'Sundown',
  878. 13 => 'Night Scene',
  879. 14 => 'Night Scene Portrait',
  880. 15 => 'Fireworks',
  881. 16 => 'Food',
  882. 17 => 'Text',
  883. 18 => 'For eBay',
  884. 19 => 'Backlight',
  885. 20 => 'Anti Shake',
  886. 21 => 'High Sensitivity',
  887. 22 => 'For YouTube',
  888. 23 => 'Voice Recording',
  889. },
  890. },{
  891. Name => 'BestShotMode',
  892. Writable => 'int16u',
  893. Condition => '$$self{Model} eq "EX-Z9"',
  894. Notes => 'EX-Z9',
  895. PrintConvColumns => 3,
  896. PrintConv => {
  897. 0 => 'Off',
  898. 1 => 'Auto',
  899. 2 => 'Movie',
  900. 3 => 'Portrait',
  901. 4 => 'Scenery',
  902. 5 => 'Children',
  903. 6 => 'Sports',
  904. 7 => 'Candlelight Portrait',
  905. 8 => 'Party',
  906. 9 => 'Pet',
  907. 10 => 'Flower',
  908. 11 => 'Soft Flowing Water',
  909. 12 => 'Sundown',
  910. 13 => 'Night Scene',
  911. 14 => 'Night Scene Portrait',
  912. 15 => 'Fireworks',
  913. 16 => 'Food',
  914. 17 => 'Text',
  915. 18 => 'Auction',
  916. 19 => 'Backlight',
  917. 20 => 'Anti Shake',
  918. 21 => 'High Sensitivity',
  919. 22 => 'For YouTube',
  920. 23 => 'Voice Recording',
  921. },
  922. },{
  923. Name => 'BestShotMode',
  924. Writable => 'int16u',
  925. Condition => '$$self{Model} eq "EX-Z80"',
  926. Notes => 'EX-Z80',
  927. PrintConvColumns => 3,
  928. PrintConv => {
  929. 0 => 'Off',
  930. 1 => 'Auto',
  931. 2 => 'Portrait',
  932. 3 => 'Scenery',
  933. 4 => 'Portrait with Scenery',
  934. 5 => 'Pet',
  935. 6 => 'Self-portrait (1 person)',
  936. 7 => 'Self-portrait (2 people)',
  937. 8 => 'Flower',
  938. 9 => 'Food',
  939. 10 => 'Fashion Accessories',
  940. 11 => 'Magazine',
  941. 12 => 'Monochrome',
  942. 13 => 'Retro',
  943. 14 => 'Cross Filter',
  944. 15 => 'Pastel',
  945. 16 => 'Night Scene',
  946. 17 => 'Night Scene Portrait',
  947. 18 => 'Party',
  948. 19 => 'Sports',
  949. 20 => 'Children',
  950. 21 => 'Sundown',
  951. 22 => 'Fireworks',
  952. 23 => 'Underwater',
  953. 24 => 'Backlight',
  954. 25 => 'High Sensitivity',
  955. 26 => 'Auction',
  956. 27 => 'White Board',
  957. 28 => 'Pre-record Movie',
  958. 29 => 'For YouTube',
  959. 30 => 'Voice Recording',
  960. },
  961. },{
  962. Name => 'BestShotMode',
  963. Writable => 'int16u',
  964. Condition => '$$self{Model} =~ /^EX-Z(100|200)$/',
  965. Notes => 'EX-Z100 and EX-Z200',
  966. PrintConvColumns => 3,
  967. PrintConv => {
  968. 0 => 'Off',
  969. 1 => 'Auto',
  970. 2 => 'Auto Best Shot',
  971. 3 => 'Portrait',
  972. 4 => 'Scenery',
  973. 5 => 'Portrait with Scenery',
  974. 6 => 'Self-portrait (1 person)',
  975. 7 => 'Self-portrait (2 people)',
  976. 8 => 'Children',
  977. 9 => 'Sports',
  978. 10 => 'Candlelight Portrait',
  979. 11 => 'Party',
  980. 12 => 'Pet',
  981. 13 => 'Flower',
  982. 14 => 'Natural Green',
  983. 15 => 'Autumn Leaves',
  984. 16 => 'Soft Flowing Water',
  985. 17 => 'Splashing Water',
  986. 18 => 'Sundown',
  987. 19 => 'Night Scene',
  988. 20 => 'Night Scene Portrait',
  989. 21 => 'Fireworks',
  990. 22 => 'Food',
  991. 23 => 'Text',
  992. 24 => 'Collection',
  993. 25 => 'Auction',
  994. 26 => 'Backlight',
  995. 27 => 'Anti Shake',
  996. 28 => 'High Sensitivity',
  997. 29 => 'Underwater',
  998. 30 => 'Monochrome',
  999. 31 => 'Retro',
  1000. 32 => 'Twilight',
  1001. 33 => 'ID Photo',
  1002. 34 => 'Business Cards',
  1003. 35 => 'White Board',
  1004. 36 => 'Silent',
  1005. 37 => 'Pre-record Movie',
  1006. 38 => 'For YouTube',
  1007. 39 => 'Voice Recording',
  1008. },
  1009. },{
  1010. Name => 'BestShotMode',
  1011. Writable => 'int16u',
  1012. # (Movies have different BestShot numbers for this camera)
  1013. Condition => '$$self{Model} eq "EX-Z750" and $$self{FILE_TYPE} eq "JPEG"',
  1014. Notes => 'EX-Z750 JPEG images',
  1015. PrintConvColumns => 3,
  1016. PrintConv => {
  1017. 0 => 'Off',
  1018. 1 => 'Portrait',
  1019. 2 => 'Scenery',
  1020. 3 => 'Portrait with Scenery',
  1021. 4 => 'Children',
  1022. 5 => 'Sports',
  1023. 6 => 'Candlelight Portrait',
  1024. 7 => 'Party',
  1025. 8 => 'Pet',
  1026. 9 => 'Flower',
  1027. 10 => 'Natural Green',
  1028. 11 => 'Soft Flowing Water',
  1029. 12 => 'Splashing Water',
  1030. 13 => 'Sundown',
  1031. 14 => 'Night Scene',
  1032. 15 => 'Night Scene Portrait',
  1033. 16 => 'Fireworks',
  1034. 17 => 'Food',
  1035. 18 => 'Text',
  1036. 19 => 'Collection',
  1037. 20 => 'Backlight',
  1038. 21 => 'Anti Shake',
  1039. 22 => 'Pastel',
  1040. 23 => 'Illustration',
  1041. 24 => 'Cross Filter',
  1042. 25 => 'Monochrome',
  1043. 26 => 'Retro',
  1044. 27 => 'Twilight',
  1045. 28 => 'Old Photo',
  1046. 29 => 'ID Photo',
  1047. 30 => 'Business Cards',
  1048. 31 => 'White Board',
  1049. },
  1050. },{
  1051. Name => 'BestShotMode',
  1052. Writable => 'int16u',
  1053. # (Movies have different BestShot numbers for this camera)
  1054. Condition => '$$self{Model} eq "EX-Z750" and $$self{FILE_TYPE} =~ /^(MOV|AVI)$/',
  1055. Notes => 'EX-Z750 movies',
  1056. PrintConvColumns => 3,
  1057. PrintConv => {
  1058. 0 => 'Off',
  1059. 1 => 'Portrait',
  1060. 2 => 'Scenery',
  1061. 3 => 'Night Scene',
  1062. 4 => 'Fireworks',
  1063. 5 => 'Backlight',
  1064. 6 => 'Silent',
  1065. },
  1066. },{
  1067. Name => 'BestShotMode',
  1068. Writable => 'int16u',
  1069. # (Movies have different BestShot numbers for this camera)
  1070. Condition => '$$self{Model} eq "EX-Z850" and $$self{FILE_TYPE} eq "JPEG"',
  1071. Notes => 'EX-Z850 JPEG images',
  1072. PrintConvColumns => 3,
  1073. PrintConv => {
  1074. 0 => 'Off',
  1075. 1 => 'Portrait',
  1076. 2 => 'Scenery',
  1077. 3 => 'Portrait with Scenery',
  1078. 4 => 'Children',
  1079. 5 => 'Sports',
  1080. 6 => 'Candlelight Portrait',
  1081. 7 => 'Party',
  1082. 8 => 'Pet',
  1083. 9 => 'Flower',
  1084. 10 => 'Natural Green',
  1085. 11 => 'Autumn Leaves',
  1086. 12 => 'Soft Flowing Water',
  1087. 13 => 'Splashing Water',
  1088. 14 => 'Sundown',
  1089. 15 => 'Night Scene',
  1090. 16 => 'Night Scene Portrait',
  1091. 17 => 'Fireworks',
  1092. 18 => 'Food',
  1093. 19 => 'Text',
  1094. 20 => 'Collection',
  1095. 21 => 'For eBay',
  1096. 22 => 'Backlight',
  1097. 23 => 'Anti Shake',
  1098. 24 => 'High Sensitivity',
  1099. 25 => 'Pastel',
  1100. 26 => 'Illustration',
  1101. 27 => 'Cross Filter',
  1102. 28 => 'Monochrome',
  1103. 29 => 'Retro',
  1104. 30 => 'Twilight',
  1105. 31 => 'ID Photo',
  1106. 32 => 'Old Photo',
  1107. 33 => 'Business Cards',
  1108. 34 => 'White Board',
  1109. },
  1110. },{
  1111. Name => 'BestShotMode',
  1112. Writable => 'int16u',
  1113. # (Movies have different BestShot numbers for this camera)
  1114. Condition => '$$self{Model} eq "EX-Z850" and $$self{FILE_TYPE} =~ /^(MOV|AVI)$/',
  1115. Notes => 'EX-Z850 movies',
  1116. PrintConvColumns => 3,
  1117. PrintConv => {
  1118. 0 => 'Off',
  1119. 1 => 'Portrait',
  1120. 2 => 'Scenery',
  1121. 3 => 'Night Scene',
  1122. 4 => 'Fireworks',
  1123. 5 => 'Backlight',
  1124. 6 => 'High Sensitivity',
  1125. 7 => 'Silent',
  1126. 8 => 'Short Movie',
  1127. 9 => 'Past Movie',
  1128. },
  1129. },{
  1130. Name => 'BestShotMode',
  1131. Writable => 'int16u',
  1132. # (Movies have different BestShot numbers for this camera)
  1133. Condition => '$$self{Model} eq "EX-Z1050"',
  1134. Notes => 'EX-Z1050',
  1135. PrintConvColumns => 3,
  1136. PrintConv => {
  1137. 0 => 'Off',
  1138. 1 => 'Auto',
  1139. 2 => 'Movie',
  1140. 3 => 'Portrait',
  1141. 4 => 'Scenery',
  1142. 5 => 'Portrait with Scenery',
  1143. 6 => 'Children',
  1144. 7 => 'Sports',
  1145. 8 => 'Candlelight Portrait',
  1146. 9 => 'Party',
  1147. 10 => 'Pet',
  1148. 11 => 'Flower',
  1149. 12 => 'Natural Green',
  1150. 13 => 'Autumn Leaves',
  1151. 14 => 'Soft Flowing Water',
  1152. 15 => 'Splashing Water',
  1153. 16 => 'Sundown',
  1154. 17 => 'Night Scene',
  1155. 18 => 'Night Scene Portrait',
  1156. 19 => 'Fireworks',
  1157. 20 => 'Food',
  1158. 21 => 'Text',
  1159. 22 => 'Collection',
  1160. 23 => 'For eBay',
  1161. 24 => 'Backlight',
  1162. 25 => 'Anti Shake',
  1163. 26 => 'High Sensitivity',
  1164. 27 => 'Underwater',
  1165. 28 => 'Monochrome',
  1166. 29 => 'Retro',
  1167. 30 => 'Twilight',
  1168. 31 => 'Layout (2 images)',
  1169. 32 => 'Layout (3 images)',
  1170. 33 => 'Auto Framing',
  1171. 34 => 'ID Photo',
  1172. 35 => 'Old Photo',
  1173. 36 => 'Business Cards',
  1174. 37 => 'White Board',
  1175. 38 => 'Voice Recording',
  1176. },
  1177. },{
  1178. Name => 'BestShotMode',
  1179. Writable => 'int16u',
  1180. # (Movies have different BestShot numbers for this camera)
  1181. Condition => '$$self{Model} eq "EX-Z1080"',
  1182. Notes => 'EX-Z1080',
  1183. PrintConvColumns => 3,
  1184. PrintConv => {
  1185. 0 => 'Off',
  1186. 1 => 'Auto',
  1187. 2 => 'Movie',
  1188. 3 => 'Portrait',
  1189. 4 => 'Scenery',
  1190. 5 => 'Portrait with Scenery',
  1191. 6 => 'Children',
  1192. 7 => 'Sports',
  1193. 8 => 'Candlelight Portrait',
  1194. 9 => 'Party',
  1195. 10 => 'Pet',
  1196. 11 => 'Flower',
  1197. 12 => 'Natural Green',
  1198. 13 => 'Autumn Leaves',
  1199. 14 => 'Soft Flowing Water',
  1200. 15 => 'Splashing Water',
  1201. 16 => 'Sundown',
  1202. 17 => 'Night Scene',
  1203. 18 => 'Night Scene Portrait',
  1204. 19 => 'Fireworks',
  1205. 20 => 'Food',
  1206. 21 => 'Text',
  1207. 22 => 'Collection',
  1208. 23 => 'For eBay',
  1209. 24 => 'Backlight',
  1210. 25 => 'Anti Shake',
  1211. 26 => 'High Sensitivity',
  1212. 27 => 'Underwater',
  1213. 28 => 'Monochrome',
  1214. 29 => 'Retro',
  1215. 30 => 'Twilight',
  1216. 31 => 'Layout (2 images)',
  1217. 32 => 'Layout (3 images)',
  1218. 33 => 'Auto Framing',
  1219. 34 => 'ID Photo',
  1220. 35 => 'Old Photo',
  1221. 36 => 'Business Cards',
  1222. 37 => 'White Board',
  1223. 38 => 'Short Movie',
  1224. 39 => 'Past Movie',
  1225. 40 => 'For YouTube',
  1226. 41 => 'Voice Recording',
  1227. },
  1228. },{
  1229. Name => 'BestShotMode',
  1230. Writable => 'int16u',
  1231. # (Movies have different BestShot numbers for this camera)
  1232. Condition => '$$self{Model} eq "EX-Z1200" and $$self{FILE_TYPE} eq "JPEG"',
  1233. Notes => 'EX-Z1200 JPEG images',
  1234. PrintConvColumns => 3,
  1235. PrintConv => {
  1236. 0 => 'Off',
  1237. 1 => 'Portrait',
  1238. 2 => 'Scenery',
  1239. 3 => 'Portrait with Scenery',
  1240. 4 => 'Children',
  1241. 5 => 'Sports',
  1242. 6 => 'Candlelight Portrait',
  1243. 7 => 'Party',
  1244. 8 => 'Pet',
  1245. 9 => 'Flower',
  1246. 10 => 'Natural Green',
  1247. 11 => 'Autumn Leaves',
  1248. 12 => 'Soft Flowing Water',
  1249. 13 => 'Splashing Water',
  1250. 14 => 'Sundown',
  1251. 15 => 'Night Scene',
  1252. 16 => 'Night Scene Portrait',
  1253. 17 => 'Fireworks',
  1254. 18 => 'Food',
  1255. 19 => 'Text',
  1256. 20 => 'Collection',
  1257. 21 => 'Auction',
  1258. 22 => 'Backlight',
  1259. 23 => 'High Sensitivity',
  1260. 24 => 'Underwater',
  1261. 25 => 'Monochrome',
  1262. 26 => 'Retro',
  1263. 27 => 'Twilight',
  1264. 28 => 'Layout (2 images)',
  1265. 29 => 'Layout (3 images)',
  1266. 30 => 'Auto Framing',
  1267. 31 => 'ID Photo',
  1268. 32 => 'Old Photo',
  1269. 33 => 'Business Cards',
  1270. 34 => 'White Board',
  1271. },
  1272. },{
  1273. Name => 'BestShotMode',
  1274. Writable => 'int16u',
  1275. # (Movies have different BestShot numbers for this camera)
  1276. Condition => '$$self{Model} eq "EX-Z1200" and $$self{FILE_TYPE} =~ /^(MOV|AVI)$/',
  1277. Notes => 'EX-Z1200 movies',
  1278. PrintConvColumns => 3,
  1279. PrintConv => {
  1280. 0 => 'Off',
  1281. 1 => 'Portrait',
  1282. 2 => 'Scenery',
  1283. 3 => 'Night Scene',
  1284. 4 => 'Fireworks',
  1285. 5 => 'Backlight',
  1286. 6 => 'High Sensitivity',
  1287. 7 => 'Silent',
  1288. 8 => 'Short Movie',
  1289. 9 => 'Past Movie',
  1290. },
  1291. },
  1292. # (the following weren't numbered in the documentation:
  1293. # G1, Z300, Z250, Z85, Z19, Z150, F1, FH20)
  1294. {
  1295. Name => 'BestShotMode',
  1296. Writable => 'int16u',
  1297. Condition => '$$self{Model} eq "EX-Z2000"',
  1298. Notes => 'EX-Z2000',
  1299. PrintConvColumns => 3,
  1300. #http://support.casio.com/download_files/001/faq_pdf/Z2000/EXZ2000_BS_US_a.pdf
  1301. PrintConv => {
  1302. 0 => 'Off',
  1303. 1 => 'Auto',
  1304. 2 => 'Premium Auto',
  1305. 3 => 'Dynamic Photo',
  1306. 4 => 'Portrait',
  1307. 5 => 'Scenery',
  1308. 6 => 'Portrait with Scenery',
  1309. 7 => 'Children',
  1310. 8 => 'Sports',
  1311. 9 => 'Candlelight Portrait',
  1312. 10 => 'Party',
  1313. 11 => 'Pet',
  1314. 12 => 'Flower',
  1315. 13 => 'Natural Green',
  1316. 14 => 'Autumn Leaves',
  1317. 15 => 'Soft Flowing Water',
  1318. 16 => 'Splashing Water',
  1319. 17 => 'Sundown',
  1320. 18 => 'Night Scene',
  1321. 19 => 'Night Scene Portrait',
  1322. 20 => 'Fireworks',
  1323. 21 => 'Food',
  1324. 22 => 'Text',
  1325. 23 => 'Collection',
  1326. 24 => 'For eBay',
  1327. 25 => 'Backlight',
  1328. 26 => 'High Sensitivity',
  1329. 27 => 'Oil Painting',
  1330. 28 => 'Crayon',
  1331. 29 => 'Water Color',
  1332. 30 => 'Monochrome',
  1333. 31 => 'Retro',
  1334. 32 => 'Twilight',
  1335. 33 => 'Multi-motion Image',
  1336. 34 => 'ID Photo',
  1337. 35 => 'Business Cards',
  1338. 36 => 'White Board',
  1339. 37 => 'Silent',
  1340. 38 => 'Pre-record Movie',
  1341. 39 => 'For YouTube',
  1342. 40 => 'Voice Recording',
  1343. },
  1344. },{
  1345. Name => 'BestShotMode',
  1346. Writable => 'int16u',
  1347. # (Movies have different BestShot numbers for this camera)
  1348. Condition => '$$self{Model} eq "EX-Z2300"',
  1349. Notes => 'EX-Z2300',
  1350. PrintConvColumns => 3,
  1351. PrintConv => {
  1352. 0 => 'Off',
  1353. 1 => 'Auto',
  1354. 2 => 'Premium Auto',
  1355. 3 => 'Dynamic Photo',
  1356. 4 => 'Portrait',
  1357. 5 => 'Scenery',
  1358. 6 => 'Portrait with Scenery',
  1359. 7 => 'Children',
  1360. 8 => 'Sports',
  1361. 9 => 'Candlelight Portrait',
  1362. 10 => 'Party',
  1363. 11 => 'Pet',
  1364. 12 => 'Flower',
  1365. 13 => 'Natural Green',
  1366. 14 => 'Autumn Leaves',
  1367. 15 => 'Soft Flowing Water',
  1368. 16 => 'Splashing Water',
  1369. 17 => 'Sundown',
  1370. 18 => 'Night Scene',
  1371. 19 => 'Night Scene Portrait',
  1372. 20 => 'Fireworks',
  1373. 21 => 'Food',
  1374. 22 => 'Text',
  1375. 23 => 'Collection',
  1376. 24 => 'Auction',
  1377. 25 => 'Backlight',
  1378. 26 => 'High Sensitivity',
  1379. 27 => 'Oil Painting',
  1380. 28 => 'Crayon',
  1381. 29 => 'Water Color',
  1382. 30 => 'Monochrome',
  1383. 31 => 'Retro',
  1384. 32 => 'Twilight',
  1385. 33 => 'Multi-motion Image',
  1386. 34 => 'ID Photo',
  1387. 35 => 'Business Cards',
  1388. 36 => 'White Board',
  1389. 37 => 'Silent',
  1390. 38 => 'Pre-record Movie',
  1391. 39 => 'For YouTube',
  1392. 40 => 'Voice Recording',
  1393. },
  1394. },{
  1395. Name => 'BestShotMode',
  1396. Writable => 'int16u',
  1397. Condition => '$$self{Model} eq "EX-Z3000"',
  1398. Notes => 'EX-Z3000',
  1399. PrintConvColumns => 3,
  1400. PrintConv => {
  1401. 0 => 'Off',
  1402. 1 => 'Portrait',
  1403. 2 => 'Scenery',
  1404. 3 => 'Portrait With Scenery',
  1405. 4 => 'Children',
  1406. 5 => 'Sports',
  1407. 6 => 'Night Scene',
  1408. },
  1409. },{
  1410. Name => 'BestShotMode',
  1411. Writable => 'int16u',
  1412. Condition => '$$self{Model} eq "EX-ZR100"',
  1413. Notes => 'EX-ZR100',
  1414. PrintConvColumns => 2,
  1415. PrintConv => {
  1416. 0 => 'Off',
  1417. 1 => 'Child CS',
  1418. 2 => 'Pet CS',
  1419. 3 => 'Sports CS',
  1420. 4 => 'Child High Speed Movie',
  1421. 5 => 'Pet High Speed Movie',
  1422. 6 => 'Sports High Speed Movie',
  1423. 7 => 'Multi SR Zoom',
  1424. 8 => 'Lag Correction',
  1425. 9 => 'High Speed Night Scene',
  1426. 10 => 'High Speed Night Scene and Portrait',
  1427. 11 => 'High Speed Anti Shake',
  1428. 12 => 'Portrait',
  1429. 13 => 'Scenery',
  1430. 14 => 'Portrait with Scenery',
  1431. 15 => 'Children',
  1432. 16 => 'Sports',
  1433. 17 => 'Candlelight Portrait',
  1434. 18 => 'Party',
  1435. 19 => 'Pet',
  1436. 20 => 'Flower',
  1437. 21 => 'Natural Green',
  1438. 22 => 'Autumn Leaves',
  1439. 23 => 'Soft Flowing Water',
  1440. 24 => 'Splashing Water',
  1441. 25 => 'Sundown',
  1442. 26 => 'Fireworks',
  1443. 27 => 'Food',
  1444. 28 => 'Text',
  1445. 29 => 'Collection',
  1446. 30 => 'For eBay',
  1447. 31 => 'Pre-record Movie',
  1448. 32 => 'For YouTube',
  1449. },
  1450. },{
  1451. Name => 'BestShotMode',
  1452. Writable => 'int16u',
  1453. Condition => '$$self{Model} eq "EX-ZR200"',
  1454. Notes => 'EX-ZR200',
  1455. PrintConvColumns => 2,
  1456. PrintConv => {
  1457. 0 => 'Off',
  1458. 1 => 'High Speed Night Scene',
  1459. 2 => 'High Speed Night Scene and Portrait',
  1460. 3 => 'High Speed Anti Shake',
  1461. 4 => 'Blurred Background',
  1462. 5 => 'Wide Shot',
  1463. 6 => 'High Speed Best Selection',
  1464. 7 => 'Lag Correction',
  1465. 8 => 'Child CS',
  1466. 9 => 'Pet CS',
  1467. 10 => 'Sports CS',
  1468. 11 => 'Child High Speed Movie',
  1469. 12 => 'Pet High Speed Movie',
  1470. 13 => 'Sports High Speed Movie',
  1471. 14 => 'Portrait',
  1472. 15 => 'Scenery',
  1473. 16 => 'Portrait with Scenery',
  1474. 17 => 'Children',
  1475. 18 => 'Sports',
  1476. 19 => 'Candlelight Portrait',
  1477. 20 => 'Party',
  1478. 21 => 'Pet',
  1479. 22 => 'Flower',
  1480. 23 => 'Natural Green',
  1481. 24 => 'Autumn Leaves',
  1482. 25 => 'Soft Flowing Water',
  1483. 26 => 'Splashing Water',
  1484. 27 => 'Sundown',
  1485. 28 => 'Fireworks',
  1486. 29 => 'Food',
  1487. 30 => 'Text',
  1488. 31 => 'Collection',
  1489. 32 => 'Auction',
  1490. 33 => 'Pre-record Movie',
  1491. 34 => 'For YouTube',
  1492. },
  1493. },{ #http://ftp.casio.co.jp/pub/world_manual/qv/en/qv_4000/BS.pdf
  1494. Name => 'BestShotMode',
  1495. Writable => 'int16u',
  1496. Condition => '$$self{Model} eq "QV-4000"',
  1497. Notes => 'QV-4000',
  1498. PrintConvColumns => 3,
  1499. PrintConv => {
  1500. 0 => 'Off',
  1501. 1 => 'People',
  1502. 2 => 'Scenery',
  1503. 3 => 'Flower',
  1504. 4 => 'Night Scene',
  1505. 5 => 'Soft Focus',
  1506. # this camera also supports 100 modes that you can apparently load
  1507. # from a CD-ROM, but I don't know how these map into these numbers
  1508. },
  1509. },{ #Manfred, email
  1510. Name => 'BestShotMode',
  1511. Writable => 'int16u',
  1512. Condition => '$$self{Model} eq "EX-ZR300"',
  1513. Notes => 'EX-ZR300',
  1514. PrintConvColumns => 2,
  1515. PrintConv => {
  1516. 1 => 'High Speed Night Shot',
  1517. 2 => 'Blurred Background',
  1518. 3 => 'Toy Camera',
  1519. 4 => 'Soft Focus',
  1520. 5 => 'Light Tone',
  1521. 6 => 'Pop',
  1522. 7 => 'Sepia',
  1523. 8 => 'Monochrome',
  1524. 9 => 'Miniature',
  1525. 10 => 'Wide Shot',
  1526. 11 => 'High Speed Best Selection',
  1527. 12 => 'Lag Correction',
  1528. 13 => 'High Speed Night Scene',
  1529. 14 => 'High Speed Night Scene and Portrait',
  1530. 15 => 'High Speed Anti Shake',
  1531. 16 => 'Portrait',
  1532. 17 => 'Scenery',
  1533. 18 => 'Portrait with Scenery',
  1534. 19 => 'Children',
  1535. 20 => 'Sports',
  1536. 21 => 'Candlelight Portrait',
  1537. 22 => 'Party',
  1538. 23 => 'Pet',
  1539. 24 => 'Flower',
  1540. 25 => 'Natural Green',
  1541. 26 => 'Autumn Leaves',
  1542. 27 => 'Soft Flowing Water',
  1543. 28 => 'Splashing Water',
  1544. 29 => 'Sundown',
  1545. 30 => 'Fireworks',
  1546. 31 => 'Food',
  1547. 32 => 'Text',
  1548. 33 => 'Collection',
  1549. 34 => 'Auction',
  1550. 35 => 'Prerecord (Movie)',
  1551. 36 => 'For YouTube',
  1552. },
  1553. },{
  1554. Name => 'BestShotMode',
  1555. Writable => 'int16u',
  1556. Notes => 'other models not yet decoded',
  1557. # so we can't use a lookup as usual - PH
  1558. PrintConv => '$val ? $val : "Off"',
  1559. PrintConvInv => '$val=~/(\d+)/ ? $1 : 0',
  1560. }],
  1561. 0x3008 => { #3
  1562. Name => 'AutoISO',
  1563. Writable => 'int16u',
  1564. PrintConv => {
  1565. 1 => 'On',
  1566. 2 => 'Off',
  1567. 7 => 'On (high sensitivity)', #PH
  1568. 8 => 'On (anti-shake)', #PH
  1569. 10 => 'High Speed', #PH (EX-FC150)
  1570. },
  1571. },
  1572. 0x3009 => { #6
  1573. Name => 'AFMode',
  1574. Writable => 'int16u',
  1575. PrintConv => {
  1576. 0 => 'Off',
  1577. 1 => 'Spot',
  1578. 2 => 'Multi',
  1579. 3 => 'Face Detection',
  1580. 4 => 'Tracking', # (but saw this for "Family First" mode with EX-Z77 - PH)
  1581. 5 => 'Intelligent',
  1582. },
  1583. },
  1584. 0x3011 => { #3
  1585. Name => 'Sharpness',
  1586. Format => 'int16s',
  1587. Writable => 'undef',
  1588. },
  1589. 0x3012 => { #3
  1590. Name => 'Contrast',
  1591. Format => 'int16s',
  1592. Writable => 'undef',
  1593. },
  1594. 0x3013 => { #3
  1595. Name => 'Saturation',
  1596. Format => 'int16s',
  1597. Writable => 'undef',
  1598. },
  1599. 0x3014 => {
  1600. Name => 'ISO',
  1601. Writable => 'int16u',
  1602. Priority => 0,
  1603. },
  1604. 0x3015 => {
  1605. Name => 'ColorMode',
  1606. Writable => 'int16u',
  1607. PrintConv => {
  1608. 0 => 'Off',
  1609. 2 => 'Black & White', #PH (EX-Z400,FH20)
  1610. 3 => 'Sepia', #PH (EX-Z400)
  1611. },
  1612. },
  1613. 0x3016 => {
  1614. Name => 'Enhancement',
  1615. Writable => 'int16u',
  1616. PrintConv => {
  1617. 0 => 'Off',
  1618. 1 => 'Scenery', #PH (NC) (EX-Z77)
  1619. 3 => 'Green', #PH (EX-Z77)
  1620. 5 => 'Underwater', #PH (NC) (EX-Z77)
  1621. 9 => 'Flesh Tones', #PH (EX-Z77)
  1622. },
  1623. },
  1624. 0x3017 => {
  1625. Name => 'ColorFilter',
  1626. Writable => 'int16u',
  1627. PrintConv => {
  1628. 0 => 'Off',
  1629. 1 => 'Blue', #PH (FH20,Z400)
  1630. 3 => 'Green', #PH (FH20)
  1631. 4 => 'Yellow', #PH (FH20)
  1632. 5 => 'Red', #PH (FH20,Z77)
  1633. 6 => 'Purple', #PH (FH20,Z77,Z400)
  1634. 7 => 'Pink', #PH (FH20)
  1635. },
  1636. },
  1637. 0x301b => { #PH
  1638. Name => 'ArtMode',
  1639. Writable => 'int16u',
  1640. PrintConv => {
  1641. 0 => 'Normal',
  1642. 8 => 'Silent Movie',
  1643. 39 => 'HDR', # (EX-ZR10)
  1644. 45 => 'Premium Auto', # (EX-2300)
  1645. 47 => 'Painting', # (EX-2300)
  1646. 49 => 'Crayon Drawing', # (EX-2300)
  1647. 51 => 'Panorama', # (EX-ZR10)
  1648. 52 => 'Art HDR', # (EX-ZR10,EX-Z3000)
  1649. 62 => 'High Speed Night Shot', # (EX-ZR20)
  1650. 64 => 'Monochrome', # (EX-ZR20)
  1651. 67 => 'Toy Camera', # (EX-ZR20)
  1652. 68 => 'Pop Art', # (EX-ZR20)
  1653. 69 => 'Light Tone', # (EX-ZR20)
  1654. },
  1655. },
  1656. 0x301c => { #3
  1657. Name => 'SequenceNumber', # for continuous shooting
  1658. Writable => 'int16u',
  1659. },
  1660. 0x301d => { #3
  1661. Name => 'BracketSequence',
  1662. Writable => 'int16u',
  1663. Count => 2,
  1664. },
  1665. # 0x301e - MultiBracket ? (ref 3)
  1666. 0x3020 => { #3
  1667. Name => 'ImageStabilization',
  1668. Writable => 'int16u',
  1669. PrintConv => {
  1670. 0 => 'Off',
  1671. 1 => 'On',
  1672. 2 => 'Best Shot',
  1673. 3 => 'Movie Anti-Shake', # (EX-V7, EX-TR100)
  1674. # (newer models write 2 numbers here - PH)
  1675. '0 0' => 'Off', #PH
  1676. '16 0' => 'Slow Shutter', #PH (EX-Z77)
  1677. '18 0' => 'Anti-Shake', #PH (EX-Z77)
  1678. '20 0' => 'High Sensitivity', #PH (EX-Z77)
  1679. # EX-Z2000 in 'Auto' mode gives '0 3' or '2 3' (ref 6)
  1680. '0 1' => 'Off (1)', #6
  1681. '0 3' => 'CCD Shift', #PH/6 ("Camera AS" in EX-Z2000 manual)
  1682. '2 1' => 'High Sensitivity', #6
  1683. '2 3' => 'CCD Shift + High Sensitivity', #PH (EX-FC150)
  1684. # have also seen:
  1685. # '2 0' - EX-Z15 1/60s ISO 200, EX-Z77 1/1000s ISO 50
  1686. # '16 1' - EX-Z2300 1/125s ISO 50
  1687. },
  1688. },
  1689. 0x302a => { #PH (EX-Z450)
  1690. Name => 'LightingMode', #(just guessing here)
  1691. Writable => 'int16u',
  1692. PrintConv => {
  1693. 0 => 'Off',
  1694. 1 => 'High Dynamic Range', # (EX-Z77 anti-blur shot)
  1695. 5 => 'Shadow Enhance Low', #(NC)
  1696. 6 => 'Shadow Enhance High', #(NC)
  1697. },
  1698. },
  1699. 0x302b => { #PH (EX-Z77)
  1700. Name => 'PortraitRefiner',
  1701. Writable => 'int16u',
  1702. PrintConv => {
  1703. 0 => 'Off',
  1704. 1 => '+1',
  1705. 2 => '+2',
  1706. },
  1707. },
  1708. 0x3030 => { #PH (EX-Z450)
  1709. Name => 'SpecialEffectLevel',
  1710. Writable => 'int16u',
  1711. },
  1712. 0x3031 => { #PH (EX-Z450)
  1713. Name => 'SpecialEffectSetting',
  1714. Writable => 'int16u',
  1715. PrintConv => {
  1716. 0 => 'Off',
  1717. 1 => 'Makeup',
  1718. 2 => 'Mist Removal',
  1719. 3 => 'Vivid Landscape',
  1720. 16 => 'Art Shot', # (EX-Z2300)
  1721. },
  1722. },
  1723. 0x3103 => { #5
  1724. Name => 'DriveMode',
  1725. Writable => 'int16u',
  1726. PrintConvColumns => 2,
  1727. PrintConv => {
  1728. OTHER => sub {
  1729. # handle new values of future models
  1730. my ($val, $inv) = @_;
  1731. return $val =~ /(\d+)/ ? $1 : undef if $inv;
  1732. return "Continuous ($val fps)";
  1733. },
  1734. 0 => 'Single Shot', #PH (NC)
  1735. 1 => 'Continuous Shooting', # (1 fps for the EX-F1)
  1736. 2 => 'Continuous (2 fps)',
  1737. 3 => 'Continuous (3 fps)',
  1738. 4 => 'Continuous (4 fps)',
  1739. 5 => 'Continuous (5 fps)',
  1740. 6 => 'Continuous (6 fps)',
  1741. 7 => 'Continuous (7 fps)',
  1742. 10 => 'Continuous (10 fps)',
  1743. 12 => 'Continuous (12 fps)',
  1744. 15 => 'Continuous (15 fps)',
  1745. 20 => 'Continuous (20 fps)',
  1746. 30 => 'Continuous (30 fps)',
  1747. 40 => 'Continuous (40 fps)', #PH (EX-FH25)
  1748. 60 => 'Continuous (60 fps)',
  1749. 240 => 'Auto-N',
  1750. },
  1751. },
  1752. 0x310b => { #PH (NC)
  1753. Name => 'ArtModeParameters',
  1754. Writable => 'int8u',
  1755. Count => 3,
  1756. # "0 1 0" = Toy camera 1
  1757. # "0 2 0" = Toy camera 1
  1758. # "0 3 0" = Toy camera 1
  1759. # Have also seen "0 0 0" and "2 0 0"
  1760. },
  1761. 0x4001 => { #PH (AVI videos)
  1762. Name => 'CaptureFrameRate',
  1763. Writable => 'int16u',
  1764. Count => -1,
  1765. ValueConv => q{
  1766. my @v=split(" ",$val);
  1767. return $val / 1000 if @v == 1;
  1768. return $v[1] ? "$v[1]-$v[0]" : ($v[0] > 10000 ? $v[0] / 1000 : $v[0]);
  1769. },
  1770. ValueConvInv => '$val <= 60 ? $val * 1000 : int($val) . " 0"',
  1771. },
  1772. # 0x4002 - AVI videos, related to video quality or size - PH
  1773. 0x4003 => { #PH (AVI and MOV videos)
  1774. Name => 'VideoQuality',
  1775. Writable => 'int16u',
  1776. PrintConv => {
  1777. 1 => 'Standard',
  1778. # 2 - could this be LP?
  1779. 3 => 'HD (720p)',
  1780. 4 => 'Full HD (1080p)', # (EX-ZR10, 30fps 1920x1080)
  1781. 5 => 'Low', # used in High Speed modes
  1782. },
  1783. },
  1784. );
  1785. # face detection information (ref PH) (EX-H5)
  1786. %Image::ExifTool::Casio::FaceInfo1 = (
  1787. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  1788. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  1789. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  1790. GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
  1791. WRITABLE => 1,
  1792. FIRST_ENTRY => 0,
  1793. DATAMEMBER => [ 0 ],
  1794. NOTES => 'Face-detect tags extracted from models such as the EX-H5.',
  1795. 0x00 => { # (NC)
  1796. Name => 'FacesDetected',
  1797. DataMember => 'FacesDetected',
  1798. RawConv => '$$self{FacesDetected} = $val',
  1799. },
  1800. 0x01 => {
  1801. Name => 'FaceDetectFrameSize',
  1802. Condition => '$$self{FacesDetected} >= 1', # (otherwise zeros)
  1803. Format => 'int16u[2]',
  1804. },
  1805. 0x0d => {
  1806. Name => 'Face1Position',
  1807. Condition => '$$self{FacesDetected} >= 1',
  1808. Format => 'int16u[4]',
  1809. Notes => q{
  1810. left, top, right and bottom of detected face in coordinates of
  1811. FaceDetectFrameSize, with increasing Y downwards
  1812. },
  1813. },
  1814. # decoding NOT CONFIRMED (NC) for faces 2-10!
  1815. 0x7c => {
  1816. Name => 'Face2Position',
  1817. Condition => '$$self{FacesDetected} >= 2',
  1818. Format => 'int16u[4]',
  1819. },
  1820. 0xeb => {
  1821. Name => 'Face3Position',
  1822. Condition => '$$self{FacesDetected} >= 3',
  1823. Format => 'int16u[4]',
  1824. },
  1825. 0x15a => {
  1826. Name => 'Face4Position',
  1827. Condition => '$$self{FacesDetected} >= 4',
  1828. Format => 'int16u[4]',
  1829. },
  1830. 0x1c9 => {
  1831. Name => 'Face5Position',
  1832. Condition => '$$self{FacesDetected} >= 5',
  1833. Format => 'int16u[4]',
  1834. },
  1835. 0x238 => {
  1836. Name => 'Face6Position',
  1837. Condition => '$$self{FacesDetected} >= 6',
  1838. Format => 'int16u[4]',
  1839. },
  1840. 0x2a7 => {
  1841. Name => 'Face7Position',
  1842. Condition => '$$self{FacesDetected} >= 7',
  1843. Format => 'int16u[4]',
  1844. },
  1845. 0x316 => {
  1846. Name => 'Face8Position',
  1847. Condition => '$$self{FacesDetected} >= 8',
  1848. Format => 'int16u[4]',
  1849. },
  1850. 0x385 => {
  1851. Name => 'Face9Position',
  1852. Condition => '$$self{FacesDetected} >= 9',
  1853. Format => 'int16u[4]',
  1854. },
  1855. 0x3f4 => {
  1856. Name => 'Face10Position',
  1857. Condition => '$$self{FacesDetected} >= 10',
  1858. Format => 'int16u[4]',
  1859. },
  1860. );
  1861. # face detection information (ref PH) (EX-ZR100)
  1862. %Image::ExifTool::Casio::FaceInfo2 = (
  1863. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  1864. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  1865. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  1866. GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
  1867. WRITABLE => 1,
  1868. FIRST_ENTRY => 0,
  1869. DATAMEMBER => [ 2 ],
  1870. NOTES => 'Face-detect tags extracted from models such as the EX-H20G and EX-ZR100.',
  1871. 0x02 => {
  1872. Name => 'FacesDetected',
  1873. DataMember => 'FacesDetected',
  1874. RawConv => '$$self{FacesDetected} = $val',
  1875. },
  1876. 0x04 => {
  1877. Name => 'FaceDetectFrameSize',
  1878. Condition => '$$self{FacesDetected} >= 1',
  1879. Format => 'int16u[2]',
  1880. },
  1881. 0x08 => {
  1882. Name => 'FaceOrientation',
  1883. Condition => '$$self{FacesDetected} >= 1',
  1884. PrintConv => {
  1885. 0 => 'Horizontal (normal)',
  1886. 1 => 'Rotate 90 CW',
  1887. 2 => 'Rotate 270 CW',
  1888. 3 => 'Rotate 180', # (NC)
  1889. # (have seen 64 here, but image had no face)
  1890. },
  1891. Notes => 'orientation of face relative to unrotated image',
  1892. },
  1893. # 0x0a - FaceDetectFrameSize again
  1894. # 0x11 - Face1Detected flag (1=detected)
  1895. 0x18 => {
  1896. Name => 'Face1Position',
  1897. Condition => '$$self{FacesDetected} >= 1',
  1898. Format => 'int16u[4]',
  1899. Notes => q{
  1900. left, top, right and bottom of detected face in coordinates of
  1901. FaceDetectFrameSize, with increasing Y downwards
  1902. },
  1903. },
  1904. # 0x45 - Face2Detected, etc...
  1905. 0x4c => {
  1906. Name => 'Face2Position',
  1907. Condition => '$$self{FacesDetected} >= 2',
  1908. Format => 'int16u[4]',
  1909. },
  1910. 0x80 => {
  1911. Name => 'Face3Position',
  1912. Condition => '$$self{FacesDetected} >= 3',
  1913. Format => 'int16u[4]',
  1914. },
  1915. 0xb4 => {
  1916. Name => 'Face4Position',
  1917. Condition => '$$self{FacesDetected} >= 4',
  1918. Format => 'int16u[4]',
  1919. },
  1920. 0xe8 => {
  1921. Name => 'Face5Position',
  1922. Condition => '$$self{FacesDetected} >= 5',
  1923. Format => 'int16u[4]',
  1924. },
  1925. 0x11c => {
  1926. Name => 'Face6Position',
  1927. Condition => '$$self{FacesDetected} >= 6',
  1928. Format => 'int16u[4]',
  1929. },
  1930. 0x150 => {
  1931. Name => 'Face7Position',
  1932. Condition => '$$self{FacesDetected} >= 7',
  1933. Format => 'int16u[4]',
  1934. },
  1935. 0x184 => {
  1936. Name => 'Face8Position',
  1937. Condition => '$$self{FacesDetected} >= 8',
  1938. Format => 'int16u[4]',
  1939. },
  1940. 0x1b8 => {
  1941. Name => 'Face9Position',
  1942. Condition => '$$self{FacesDetected} >= 9',
  1943. Format => 'int16u[4]',
  1944. },
  1945. 0x1ec => {
  1946. Name => 'Face10Position',
  1947. Condition => '$$self{FacesDetected} >= 10',
  1948. Format => 'int16u[4]',
  1949. },
  1950. );
  1951. # Casio APP1 QVCI segment found in QV-7000SX images (ref PH)
  1952. %Image::ExifTool::Casio::QVCI = (
  1953. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  1954. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  1955. FIRST_ENTRY => 0,
  1956. NOTES => q{
  1957. This information is found in the APP1 QVCI segment of JPEG images from the
  1958. Casio QV-7000SX.
  1959. },
  1960. 0x2c => {
  1961. Name => 'CasioQuality',
  1962. PrintConv => {
  1963. 1 => 'Economy',
  1964. 2 => 'Normal',
  1965. 3 => 'Fine',
  1966. 4 => 'Super Fine',
  1967. },
  1968. },
  1969. 0x37 => {
  1970. Name => 'FocalRange',
  1971. Unknown => 1,
  1972. },
  1973. 0x4d => {
  1974. Name => 'DateTimeOriginal',
  1975. Description => 'Date/Time Original',
  1976. Format => 'string[20]',
  1977. Groups => { 2 => 'Time' },
  1978. ValueConv => '$val=~tr/./:/; $val=~s/(\d+:\d+:\d+):/$1 /; $val',
  1979. PrintConv => '$self->ConvertDateTime($val)',
  1980. },
  1981. 0x62 => {
  1982. Name => 'ModelType',
  1983. Format => 'string[7]',
  1984. },
  1985. 0x72 => { # could be serial number or manufacture date in form YYMMDDxx ?
  1986. Name => 'ManufactureIndex',
  1987. Format => 'string[9]',
  1988. },
  1989. 0x7c => {
  1990. Name => 'ManufactureCode',
  1991. Format => 'string[9]',
  1992. },
  1993. );
  1994. # tags in Casio AVI videos (ref PH)
  1995. %Image::ExifTool::Casio::AVI = (
  1996. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  1997. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  1998. FIRST_ENTRY => 0,
  1999. NOTES => 'This information is found in Casio GV-10 AVI videos.',
  2000. 0 => {
  2001. Name => 'Software', # (equivalent to RIFF Software tag)
  2002. Format => 'string',
  2003. },
  2004. );
  2005. 1; # end
  2006. __END__
  2007. =head1 NAME
  2008. Image::ExifTool::Casio - Casio EXIF maker notes tags
  2009. =head1 SYNOPSIS
  2010. This module is loaded automatically by Image::ExifTool when required.
  2011. =head1 DESCRIPTION
  2012. This module contains definitions required by Image::ExifTool to interpret
  2013. Casio maker notes in EXIF information.
  2014. =head1 AUTHOR
  2015. Copyright 2003-2016, Phil Harvey (phil at owl.phy.queensu.ca)
  2016. This library is free software; you can redistribute it and/or modify it
  2017. under the same terms as Perl itself.
  2018. =head1 REFERENCES
  2019. =over 4
  2020. =item L<http://park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html>
  2021. =back
  2022. =head1 ACKNOWLEDGEMENTS
  2023. Thanks to Joachim Loehr for adding support for the type 2 maker notes, and
  2024. Jens Duttke and Robert Chi for decoding some tags.
  2025. =head1 SEE ALSO
  2026. L<Image::ExifTool::TagNames/Casio Tags>,
  2027. L<Image::ExifTool(3pm)|Image::ExifTool>
  2028. =cut