NikonCustom.pm 177 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331
  1. #------------------------------------------------------------------------------
  2. # File: NikonCustom.pm
  3. #
  4. # Description: Read and write Nikon Custom settings
  5. #
  6. # Revisions: 2009/11/25 - P. Harvey Created
  7. #
  8. # References: 1) Warren Hatch private communication (D3 with SB-800 and SB-900)
  9. # 2) Anonymous contribution 2011/05/25 (D700, D7000)
  10. # JD) Jens Duttke private communication
  11. #------------------------------------------------------------------------------
  12. package Image::ExifTool::NikonCustom;
  13. use strict;
  14. use vars qw($VERSION);
  15. $VERSION = '1.12';
  16. # custom settings for the D80 (encrypted) - ref JD
  17. %Image::ExifTool::NikonCustom::SettingsD80 = (
  18. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  19. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  20. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  21. WRITABLE => 1,
  22. FIRST_ENTRY => 0,
  23. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  24. NOTES => 'Custom settings for the Nikon D80.',
  25. 0.1 => { # CS1
  26. Name => 'Beep',
  27. Mask => 0x80,
  28. PrintConv => {
  29. 0x00 => 'On',
  30. 0x80 => 'Off',
  31. },
  32. },
  33. 0.2 => { # CS4
  34. Name => 'AFAssist',
  35. Mask => 0x40,
  36. PrintConv => {
  37. 0x00 => 'On',
  38. 0x40 => 'Off',
  39. },
  40. },
  41. 0.3 => { # CS5
  42. Name => 'NoMemoryCard',
  43. Mask => 0x20,
  44. PrintConv => {
  45. 0x00 => 'Release Locked',
  46. 0x20 => 'Enable Release',
  47. },
  48. },
  49. 0.4 => { # CS6
  50. Name => 'ImageReview',
  51. Mask => 0x10,
  52. PrintConv => {
  53. 0x00 => 'On',
  54. 0x10 => 'Off',
  55. },
  56. },
  57. 0.5 => { # CS17
  58. Name => 'Illumination',
  59. Mask => 0x08,
  60. PrintConv => {
  61. 0x00 => 'Off',
  62. 0x08 => 'On',
  63. },
  64. },
  65. 0.6 => { # CS11
  66. Name => 'MainDialExposureComp',
  67. Mask => 0x04,
  68. PrintConv => {
  69. 0x00 => 'Off',
  70. 0x04 => 'On',
  71. },
  72. },
  73. 0.7 => { # CS10
  74. Name => 'EVStepSize',
  75. Mask => 0x01,
  76. PrintConv => {
  77. 0x00 => '1/3 EV',
  78. 0x01 => '1/2 EV',
  79. },
  80. },
  81. 1.1 => { # CS7
  82. Name => 'AutoISO',
  83. Mask => 0x40,
  84. PrintConv => {
  85. 0x00 => 'Off',
  86. 0x40 => 'On',
  87. },
  88. },
  89. 1.2 => { # CS7-a
  90. Name => 'AutoISOMax',
  91. Mask => 0x30,
  92. PrintConv => {
  93. 0x00 => 200,
  94. 0x10 => 400,
  95. 0x20 => 800,
  96. 0x30 => 1600,
  97. },
  98. },
  99. 1.3 => { # CS7-b
  100. Name => 'AutoISOMinShutterSpeed',
  101. Mask => 0x0f,
  102. PrintConvColumns => 2,
  103. PrintConv => {
  104. 0x00 => '1/125 s',
  105. 0x01 => '1/100 s',
  106. 0x02 => '1/80 s',
  107. 0x03 => '1/60 s',
  108. 0x04 => '1/40 s',
  109. 0x05 => '1/30 s',
  110. 0x06 => '1/15 s',
  111. 0x07 => '1/8 s',
  112. 0x08 => '1/4 s',
  113. 0x09 => '1/2 s',
  114. 0x0a => '1 s',
  115. },
  116. },
  117. 2.1 => { # CS13
  118. Name => 'AutoBracketSet',
  119. Mask => 0xc0,
  120. PrintConv => {
  121. 0x00 => 'AE & Flash',
  122. 0x40 => 'AE Only',
  123. 0x80 => 'Flash Only',
  124. 0xc0 => 'WB Bracketing',
  125. },
  126. },
  127. 2.2 => { # CS14
  128. Name => 'AutoBracketOrder',
  129. Mask => 0x20,
  130. PrintConv => {
  131. 0x00 => '0,-,+',
  132. 0x20 => '-,0,+',
  133. },
  134. },
  135. 3.1 => { # CS27
  136. Name => 'MonitorOffTime',
  137. Mask => 0xe0,
  138. PrintConv => {
  139. 0x00 => '5 s',
  140. 0x20 => '10 s',
  141. 0x40 => '20 s',
  142. 0x60 => '1 min',
  143. 0x80 => '5 min',
  144. 0xa0 => '10 min',
  145. },
  146. },
  147. 3.2 => { # CS28
  148. Name => 'MeteringTime',
  149. Mask => 0x1c,
  150. PrintConv => {
  151. 0x00 => '4 s',
  152. 0x04 => '6 s',
  153. 0x08 => '8 s',
  154. 0x0c => '16 s',
  155. 0x10 => '30 s',
  156. 0x14 => '30 min',
  157. },
  158. },
  159. 3.3 => { # CS29
  160. Name => 'SelfTimerTime',
  161. Mask => 0x03,
  162. PrintConv => {
  163. 0x00 => '2 s',
  164. 0x01 => '5 s',
  165. 0x02 => '10 s',
  166. 0x03 => '20 s',
  167. },
  168. },
  169. 4.1 => { # CS18
  170. Name => 'AELockButton',
  171. Mask => 0x1e,
  172. PrintConv => {
  173. 0x00 => 'AE/AF Lock',
  174. 0x02 => 'AE Lock Only',
  175. 0x04 => 'AF Lock Only',
  176. 0x06 => 'AE Lock (hold)',
  177. 0x08 => 'AF-ON',
  178. 0x0a => 'FV Lock',
  179. 0x0c => 'Focus Area Selection',
  180. 0x0e => 'AE-L/AF-L/AF Area',
  181. 0x10 => 'AE-L/AF Area',
  182. 0x12 => 'AF-L/AF Area',
  183. 0x14 => 'AF-ON/AF Area',
  184. },
  185. },
  186. 4.2 => { # CS19
  187. Name => 'AELock',
  188. Mask => 0x01,
  189. PrintConv => {
  190. 0x00 => 'Off',
  191. 0x01 => 'On',
  192. },
  193. },
  194. 4.3 => { # CS30
  195. Name => 'RemoteOnDuration',
  196. Mask => 0xc0,
  197. PrintConv => {
  198. 0x00 => '1 min',
  199. 0x40 => '5 min',
  200. 0x80 => '10 min',
  201. 0xc0 => '15 min',
  202. },
  203. },
  204. 5.1 => { # CS15
  205. Name => 'CommandDials',
  206. Mask => 0x80,
  207. PrintConv => {
  208. 0x00 => 'Standard (Main Shutter, Sub Aperture)',
  209. 0x80 => 'Reversed (Main Aperture, Sub Shutter)',
  210. },
  211. },
  212. 5.2 => { # CS16
  213. Name => 'FunctionButton',
  214. Mask => 0x78,
  215. PrintConv => {
  216. 0x00 => 'ISO Display',
  217. 0x08 => 'Framing Grid',
  218. 0x10 => 'AF-area Mode',
  219. 0x18 => 'Center AF Area',
  220. 0x20 => 'FV Lock',
  221. 0x28 => 'Flash Off',
  222. 0x30 => 'Matrix Metering',
  223. 0x38 => 'Center-weighted',
  224. 0x40 => 'Spot Metering',
  225. },
  226. },
  227. 6.1 => { # CS8
  228. Name => 'GridDisplay',
  229. Mask => 0x80,
  230. PrintConv => {
  231. 0x00 => 'Off',
  232. 0x80 => 'On',
  233. },
  234. },
  235. 6.2 => { # CS9
  236. Name => 'ViewfinderWarning',
  237. Mask => 0x40,
  238. PrintConv => {
  239. 0x00 => 'On',
  240. 0x40 => 'Off',
  241. },
  242. },
  243. 6.3 => { # CS12
  244. Name => 'CenterWeightedAreaSize',
  245. Mask => 0x0c,
  246. PrintConv => {
  247. 0x00 => '6 mm',
  248. 0x04 => '8 mm',
  249. 0x08 => '10 mm',
  250. },
  251. },
  252. 6.4 => { # CS31
  253. Name => 'ExposureDelayMode',
  254. Mask => 0x20,
  255. PrintConv => {
  256. 0x00 => 'Off',
  257. 0x20 => 'On',
  258. },
  259. },
  260. 6.5 => { # CS32
  261. Name => 'MB-D80Batteries',
  262. Mask => 0x03,
  263. PrintConv => {
  264. 0x00 => 'LR6 (AA Alkaline)',
  265. 0x01 => 'HR6 (AA Ni-MH)',
  266. 0x02 => 'FR6 (AA Lithium)',
  267. 0x03 => 'ZR6 (AA Ni-Mg)',
  268. },
  269. },
  270. 7.1 => { # CS23
  271. Name => 'FlashWarning',
  272. Mask => 0x80,
  273. PrintConv => {
  274. 0x00 => 'On',
  275. 0x80 => 'Off',
  276. },
  277. },
  278. 7.2 => { # CS24
  279. Name => 'FlashShutterSpeed',
  280. Mask => 0x78,
  281. ValueConv => '2 ** (($val >> 3) - 6)',
  282. ValueConvInv => '$val>0 ? int(log($val)/log(2)+6+0.5) << 3 : 0',
  283. PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
  284. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  285. },
  286. 7.3 => { # CS25
  287. Name => 'AutoFP',
  288. Mask => 0x04,
  289. PrintConv => {
  290. 0x00 => 'Off',
  291. 0x04 => 'On',
  292. },
  293. },
  294. 7.4 => { # CS26
  295. Name => 'ModelingFlash',
  296. Mask => 0x02,
  297. PrintConv => {
  298. 0x00 => 'Off',
  299. 0x02 => 'On',
  300. },
  301. },
  302. 8.1 => { # CS22
  303. Name => 'InternalFlash',
  304. Mask => 0xc0,
  305. PrintConv => {
  306. 0x00 => 'TTL',
  307. 0x40 => 'Manual',
  308. 0x80 => 'Repeating Flash',
  309. 0xc0 => 'Commander Mode',
  310. },
  311. },
  312. 8.2 => { # CS22-a
  313. Name => 'ManualFlashOutput',
  314. Mask => 0x07,
  315. ValueConv => '2 ** (-$val)',
  316. ValueConvInv => '$val > 0 ? -log($val)/log(2) : 0',
  317. PrintConv => q{
  318. return 'Full' if $val > 0.99;
  319. Image::ExifTool::Exif::PrintExposureTime($val);
  320. },
  321. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  322. },
  323. 9.1 => { # CS22-b
  324. Name => 'RepeatingFlashOutput',
  325. Mask => 0x70,
  326. ValueConv => '2 ** (-($val>>4)-2)',
  327. ValueConvInv => '$val > 0 ? int(-log($val)/log(2)-2+0.5)<<4 : 0',
  328. PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
  329. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  330. },
  331. 9.2 => { # CS22-c
  332. Name => 'RepeatingFlashCount',
  333. Mask => 0x0f,
  334. ValueConv => '$val < 10 ? $val + 1 : 5 * ($val - 7)',
  335. ValueConvInv => '$val <= 10 ? $val - 1 : $val / 5 + 7',
  336. },
  337. 10.1 => { # CS22-d
  338. Name => 'RepeatingFlashRate',
  339. Mask => 0xf0,
  340. ValueConv => 'my $v=($val>>4); $v < 10 ? $v + 1 : 10 * ($v - 8)',
  341. ValueConvInv => 'int(($val <= 10 ? $val - 1 : $val / 10 + 8) + 0.5) << 4',
  342. PrintConv => '"$val Hz"',
  343. PrintConvInv => '$val=~/(\d+)/; $1 || 0',
  344. },
  345. 10.2 => { # CS22-n
  346. Name => 'CommanderChannel',
  347. Mask => 0x03,
  348. ValueConv => '$val + 1',
  349. ValueConvInv => '$val - 1',
  350. },
  351. 11.1 => { # CS22-e
  352. Name => 'CommanderInternalFlash',
  353. Mask => 0xc0,
  354. PrintConv => {
  355. 0x00 => 'TTL',
  356. 0x40 => 'Manual',
  357. 0x80 => 'Off',
  358. },
  359. },
  360. 11.2 => { # CS22-h
  361. Name => 'CommanderGroupAMode',
  362. Mask => 0x30,
  363. PrintConv => {
  364. 0x00 => 'TTL',
  365. 0x10 => 'Auto Aperture',
  366. 0x20 => 'Manual',
  367. 0x30 => 'Off',
  368. },
  369. },
  370. 11.3 => { # CS22-k
  371. Name => 'CommanderGroupBMode',
  372. Mask => 0x0c,
  373. PrintConv => {
  374. 0x00 => 'TTL',
  375. 0x04 => 'Auto Aperture',
  376. 0x08 => 'Manual',
  377. 0x0c => 'Off',
  378. },
  379. },
  380. 12.1 => { # CS22-f
  381. Name => 'CommanderInternalTTLComp',
  382. Mask => 0x1f,
  383. ValueConv => '($val - 9) / 3',
  384. ValueConvInv => '$val * 3 + 9',
  385. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  386. PrintConvInv => '$val',
  387. },
  388. 12.2 => { # CS22-g
  389. Name => 'CommanderInternalManualOutput',
  390. Mask => 0xe0,
  391. ValueConv => '2 ** (-($val>>5))',
  392. ValueConvInv => '$val > 0 ? int(-log($val)/log(2)+0.5) << 5 : 0',
  393. PrintConv => q{
  394. return 'Full' if $val > 0.99;
  395. Image::ExifTool::Exif::PrintExposureTime($val);
  396. },
  397. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  398. },
  399. 13.1 => { # CS22-i
  400. Name => 'CommanderGroupA_TTL-AAComp',
  401. Mask => 0x1f,
  402. ValueConv => '($val - 9) / 3',
  403. ValueConvInv => '$val * 3 + 9',
  404. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  405. PrintConvInv => '$val',
  406. },
  407. 13.2 => { # CS22-j
  408. Name => 'CommanderGroupAManualOutput',
  409. Mask => 0xe0,
  410. ValueConv => '2 ** (-($val>>5))',
  411. ValueConvInv => '$val > 0 ? int(-log($val)/log(2)+0.5) << 5 : 0',
  412. PrintConv => q{
  413. return 'Full' if $val > 0.99;
  414. Image::ExifTool::Exif::PrintExposureTime($val);
  415. },
  416. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  417. },
  418. 14.1 => { # CS22-l
  419. Name => 'CommanderGroupB_TTL-AAComp',
  420. Mask => 0x1f,
  421. ValueConv => '($val - 9) / 3',
  422. ValueConvInv => '$val * 3 + 9',
  423. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  424. PrintConvInv => '$val',
  425. },
  426. 14.2 => { # CS22-m
  427. Name => 'CommanderGroupBManualOutput',
  428. Mask => 0xe0,
  429. ValueConv => '2 ** (-($val>>5))',
  430. ValueConvInv => '$val > 0 ? int(-log($val)/log(2)+0.5) << 5 : 0',
  431. PrintConv => q{
  432. return 'Full' if $val > 0.99;
  433. Image::ExifTool::Exif::PrintExposureTime($val);
  434. },
  435. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  436. },
  437. 15.1 => { # CS3
  438. Name => 'CenterAFArea',
  439. Mask => 0x80,
  440. PrintConv => {
  441. 0x00 => 'Normal Zone',
  442. 0x80 => 'Wide Zone',
  443. },
  444. },
  445. 15.2 => { # CS20
  446. Name => 'FocusAreaSelection',
  447. Mask => 0x04,
  448. PrintConv => {
  449. 0x00 => 'No Wrap',
  450. 0x04 => 'Wrap',
  451. },
  452. },
  453. 15.3 => { # CS21
  454. Name => 'AFAreaIllumination',
  455. Mask => 0x03,
  456. PrintConv => {
  457. 0x00 => 'Auto',
  458. 0x01 => 'Off',
  459. 0x02 => 'On',
  460. },
  461. },
  462. 16.1 => { # CS2
  463. Name => 'AFAreaModeSetting',
  464. Mask => 0xc0,
  465. PrintConv => {
  466. 0x00 => 'Single Area',
  467. 0x40 => 'Dynamic Area',
  468. 0x80 => 'Auto-area',
  469. },
  470. },
  471. );
  472. # custom settings for the D40 (encrypted) - ref JD
  473. %Image::ExifTool::NikonCustom::SettingsD40 = (
  474. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  475. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  476. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  477. WRITABLE => 1,
  478. FIRST_ENTRY => 0,
  479. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  480. NOTES => 'Custom settings for the Nikon D40.',
  481. 0.1 => { # CS1
  482. Name => 'Beep',
  483. Mask => 0x80,
  484. PrintConv => {
  485. 0x00 => 'On',
  486. 0x80 => 'Off',
  487. },
  488. },
  489. 0.2 => { # CS9
  490. Name => 'AFAssist',
  491. Mask => 0x40,
  492. PrintConv => {
  493. 0x00 => 'On',
  494. 0x40 => 'Off',
  495. },
  496. },
  497. 0.3 => { # CS6
  498. Name => 'NoMemoryCard',
  499. Mask => 0x20,
  500. PrintConv => {
  501. 0x00 => 'Release Locked',
  502. 0x20 => 'Enable Release',
  503. },
  504. },
  505. 0.4 => { # CS7
  506. Name => 'ImageReview',
  507. Mask => 0x10,
  508. PrintConv => {
  509. 0x00 => 'On',
  510. 0x10 => 'Off',
  511. },
  512. },
  513. 1.1 => { # CS10-a
  514. Name => 'AutoISO',
  515. Mask => 0x80,
  516. PrintConv => {
  517. 0x00 => 'Off',
  518. 0x80 => 'On',
  519. },
  520. },
  521. 1.2 => { # CS10-b
  522. Name => 'AutoISOMax',
  523. Mask => 0x30,
  524. PrintConv => {
  525. 0x10 => 400,
  526. 0x20 => 800,
  527. 0x30 => 1600,
  528. },
  529. },
  530. 1.3 => { # CS10-c
  531. Name => 'AutoISOMinShutterSpeed',
  532. Mask => 0x07,
  533. PrintConvColumns => 2,
  534. PrintConv => {
  535. 0x00 => '1/125 s',
  536. 0x01 => '1/60 s',
  537. 0x02 => '1/30 s',
  538. 0x03 => '1/15 s',
  539. 0x04 => '1/8 s',
  540. 0x05 => '1/4 s',
  541. 0x06 => '1/2 s',
  542. 0x07 => '1 s',
  543. },
  544. },
  545. 2.1 => { # CS15-b
  546. Name => 'ImageReviewTime',
  547. Mask => 0x07,
  548. PrintConv => {
  549. 0x00 => '4 s',
  550. 0x01 => '8 s',
  551. 0x02 => '20 s',
  552. 0x03 => '1 min',
  553. 0x04 => '10 min',
  554. },
  555. },
  556. 3.1 => { # CS15-a
  557. Name => 'MonitorOffTime',
  558. Mask => 0xe0,
  559. PrintConv => {
  560. 0x00 => '4 s',
  561. 0x20 => '8 s',
  562. 0x40 => '20 s',
  563. 0x60 => '1 min',
  564. 0x80 => '10 min',
  565. },
  566. },
  567. 3.2 => { # CS15-c
  568. Name => 'MeteringTime',
  569. Mask => 0x1c,
  570. PrintConv => {
  571. 0x00 => '4 s',
  572. 0x04 => '8 s',
  573. 0x08 => '20 s',
  574. 0x0c => '1 min',
  575. 0x10 => '30 min',
  576. },
  577. },
  578. 3.3 => { # CS16
  579. Name => 'SelfTimerTime',
  580. Mask => 0x03,
  581. PrintConv => {
  582. 0x00 => '2 s',
  583. 0x01 => '5 s',
  584. 0x02 => '10 s',
  585. 0x03 => '20 s',
  586. },
  587. },
  588. 3.4 => { # CS17
  589. Name => 'RemoteOnDuration',
  590. Mask => 0xc0,
  591. PrintConv => {
  592. 0x00 => '1 min',
  593. 0x40 => '5 min',
  594. 0x80 => '10 min',
  595. 0xc0 => '15 min',
  596. },
  597. },
  598. 4.1 => { # CS12
  599. Name => 'AELockButton',
  600. Mask => 0x0e,
  601. PrintConv => {
  602. 0x00 => 'AE/AF Lock',
  603. 0x02 => 'AE Lock Only',
  604. 0x04 => 'AF Lock Only',
  605. 0x06 => 'AE Lock (hold)',
  606. 0x08 => 'AF-ON',
  607. },
  608. },
  609. 4.2 => { # CS13
  610. Name => 'AELock',
  611. Mask => 0x01,
  612. PrintConv => {
  613. 0x00 => 'Off',
  614. 0x01 => 'On',
  615. },
  616. },
  617. 5.1 => { # CS4
  618. Name => 'ShootingModeSetting',
  619. Mask => 0x70,
  620. PrintConv => {
  621. 0x00 => 'Single Frame',
  622. 0x10 => 'Continuous',
  623. 0x20 => 'Self-timer',
  624. 0x30 => 'Delayed Remote',
  625. 0x40 => 'Quick-response Remote',
  626. },
  627. },
  628. 5.2 => { # CS11
  629. Name => 'TimerFunctionButton',
  630. Mask => 0x07,
  631. PrintConv => {
  632. 0x00 => 'Shooting Mode',
  633. 0x01 => 'Image Quality/Size',
  634. 0x02 => 'ISO',
  635. 0x03 => 'White Balance',
  636. 0x04 => 'Self-timer',
  637. },
  638. },
  639. 6.1 => { # CS5
  640. Name => 'Metering',
  641. Mask => 0x03,
  642. PrintConv => {
  643. 0x00 => 'Matrix',
  644. 0x01 => 'Center-weighted',
  645. 0x02 => 'Spot',
  646. },
  647. },
  648. 8.1 => { # CS14-a
  649. Name => 'InternalFlash',
  650. Mask => 0x10,
  651. PrintConv => {
  652. 0x00 => 'TTL',
  653. 0x10 => 'Manual',
  654. },
  655. },
  656. 8.2 => { # CS14-b
  657. Name => 'ManualFlashOutput',
  658. Mask => 0x07,
  659. ValueConv => '2 ** (-$val)',
  660. ValueConvInv => '$val > 0 ? -log($val)/log(2) : 0',
  661. PrintConv => q{
  662. return 'Full' if $val > 0.99;
  663. Image::ExifTool::Exif::PrintExposureTime($val);
  664. },
  665. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  666. },
  667. 9 => { # CS8
  668. Name => 'FlashLevel',
  669. Format => 'int8s',
  670. ValueConv => '$val / 6',
  671. ValueConvInv => '$val * 6',
  672. PrintConv => 'sprintf("%+.1f",$val)',
  673. PrintConvInv => '$val',
  674. },
  675. 10.1 => { # CS2
  676. Name => 'FocusModeSetting',
  677. # (may differ from FocusMode if lens switch is set to Manual)
  678. Mask => 0xc0,
  679. PrintConv => {
  680. 0x00 => 'Manual',
  681. 0x40 => 'AF-S',
  682. 0x80 => 'AF-C',
  683. 0xc0 => 'AF-A',
  684. },
  685. },
  686. 11.1 => { # CS3
  687. Name => 'AFAreaModeSetting',
  688. # (may differ from AFAreaMode for Manual focus)
  689. Mask => 0x30,
  690. PrintConv => {
  691. 0x00 => 'Single Area',
  692. 0x10 => 'Dynamic Area',
  693. 0x20 => 'Closest Subject',
  694. },
  695. }
  696. );
  697. # D90 custom settings (ref PH)
  698. %Image::ExifTool::NikonCustom::SettingsD90 = (
  699. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  700. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  701. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  702. WRITABLE => 1,
  703. FIRST_ENTRY => 0,
  704. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  705. NOTES => 'Custom settings for the D90.',
  706. # Missing:
  707. # CSe2 RepeatingFlashRate (needs verification)
  708. # CommanderInternalFlash, CommanderGroupAMode, CommanderGroupBMode,
  709. # CommanderChannel, CommanderInternalManualOutput,
  710. # CommanderGroupAManualOutput, CommanderGroupBManualOutput
  711. # CommanderGroupA_TTL-AAComp, CommanderGroupB_TTL-AAComp,
  712. # CSe4 AutoBracketSet (some values need verification)
  713. # CSf2 OKButton ("Not Used" value needs verification)
  714. # CSf5-b CommandDialsChangeMainSub
  715. # CSf5-c CommandDialsMenuAndPlayback
  716. 0.1 => { # CSf1
  717. Name => 'LightSwitch',
  718. Mask => 0x08,
  719. PrintConv => {
  720. 0x00 => 'LCD Backlight',
  721. 0x08 => 'LCD Backlight and Shooting Information',
  722. },
  723. },
  724. 2.1 => { # CSa1
  725. Name => 'AFAreaModeSetting',
  726. Mask => 0x60,
  727. PrintConv => {
  728. 0x00 => 'Single Area',
  729. 0x20 => 'Dynamic Area',
  730. 0x40 => 'Auto-area',
  731. 0x60 => '3D-tracking (11 points)',
  732. },
  733. },
  734. 2.2 => { # CSa2
  735. Name => 'CenterFocusPoint',
  736. Mask => 0x10,
  737. PrintConv => {
  738. 0x00 => 'Normal Zone',
  739. 0x10 => 'Wide Zone',
  740. },
  741. },
  742. 2.3 => { # CSa3
  743. Name => 'AFAssist',
  744. Mask => 0x01,
  745. PrintConv => { 0x00 => 'On', 0x01 => 'Off' },
  746. },
  747. 2.4 => { # CSa4
  748. Name => 'AFPointIllumination',
  749. Mask => 0x06,
  750. PrintConv => {
  751. 0x00 => 'Auto',
  752. 0x02 => 'On',
  753. 0x04 => 'Off',
  754. },
  755. },
  756. 2.5 => { # CSa5
  757. Name => 'FocusPointWrap',
  758. Mask => 0x08,
  759. PrintConv => {
  760. 0x00 => 'No Wrap',
  761. 0x08 => 'Wrap',
  762. },
  763. },
  764. 3.1 => { # CSa6
  765. Name => 'AELockForMB-D80',
  766. Mask => 0x1c,
  767. PrintConv => {
  768. 0x00 => 'AE Lock Only',
  769. 0x04 => 'AF Lock Only',
  770. 0x08 => 'AE Lock (hold)',
  771. 0x0c => 'AF-On',
  772. 0x10 => 'FV Lock',
  773. 0x14 => 'Focus Point Selection',
  774. 0x1c => 'AE/AF Lock',
  775. },
  776. },
  777. 3.2 => { # CSd12
  778. Name => 'MB-D80BatteryType',
  779. Mask => 0x03,
  780. PrintConv => {
  781. 0x00 => 'LR6 (AA alkaline)',
  782. 0x01 => 'HR6 (AA Ni-MH)',
  783. 0x02 => 'FR6 (AA lithium)',
  784. 0x03 => 'ZR6 (AA Ni-Mn)',
  785. },
  786. },
  787. 4.1 => { # CSd1
  788. Name => 'Beep',
  789. Mask => 0x40,
  790. PrintConv => {
  791. 0x40 => 'On',
  792. 0x00 => 'Off',
  793. },
  794. },
  795. 4.2 => { # CSd2
  796. Name => 'GridDisplay',
  797. Mask => 0x02,
  798. PrintConv => { 0x00 => 'Off', 0x02 => 'On' },
  799. },
  800. 4.3 => { # CSd3
  801. Name => 'ISODisplay',
  802. Mask => 0x0c,
  803. PrintConv => {
  804. 0x00 => 'Show ISO/Easy ISO',
  805. 0x04 => 'Show ISO Sensitivity',
  806. 0x0c => 'Show Frame Count',
  807. },
  808. },
  809. 4.4 => { # CSd4
  810. Name => 'ViewfinderWarning',
  811. Mask => 0x01,
  812. PrintConv => { 0x00 => 'On', 0x01 => 'Off' },
  813. },
  814. 4.5 => { # CSf6
  815. Name => 'NoMemoryCard',
  816. Mask => 0x20,
  817. PrintConv => {
  818. 0x00 => 'Release Locked',
  819. 0x20 => 'Enable Release',
  820. },
  821. },
  822. 5.1 => { # CSd5
  823. Name => 'ScreenTips',
  824. Mask => 0x04,
  825. PrintConv => { 0x00 => 'Off', 0x04 => 'On' },
  826. },
  827. 5.2 => { # CSd7
  828. Name => 'FileNumberSequence',
  829. Mask => 0x08,
  830. PrintConv => { 0x00 => 'On', 0x08 => 'Off' },
  831. },
  832. 5.3 => { # CSd8
  833. Name => 'ShootingInfoDisplay',
  834. Mask => 0xc0,
  835. PrintConv => {
  836. 0x00 => 'Auto',
  837. 0x80 => 'Manual (dark on light)',
  838. 0xc0 => 'Manual (light on dark)',
  839. },
  840. },
  841. 5.4 => { # CSd9
  842. Name => 'LCDIllumination',
  843. Mask => 0x20,
  844. PrintConv => { 0x00 => 'Off', 0x20 => 'On' },
  845. },
  846. 6.1 => { # CSb2
  847. Name => 'EasyExposureComp',
  848. Mask => 0x01,
  849. PrintConv => { 0x00 => 'Off', 0x01 => 'On' },
  850. },
  851. 6.2 => { # CSf7
  852. Name => 'ReverseIndicators',
  853. Mask => 0x80,
  854. PrintConv => {
  855. 0x00 => '+ 0 -',
  856. 0x80 => '- 0 +',
  857. },
  858. },
  859. 7.1 => { # CSb1
  860. Name => 'ExposureControlStepSize',
  861. Mask => 0x40,
  862. PrintConv => {
  863. 0x00 => '1/3 EV',
  864. 0x40 => '1/2 EV',
  865. },
  866. },
  867. 8.1 => { # CSb3
  868. Name => 'CenterWeightedAreaSize',
  869. Mask => 0x60,
  870. PrintConv => {
  871. 0x00 => '6 mm',
  872. 0x20 => '8 mm',
  873. 0x40 => '10 mm',
  874. },
  875. },
  876. 8.2 => { # CSb4-a
  877. Name => 'FineTuneOptMatrixMetering',
  878. Mask => 0x0f,
  879. ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
  880. ValueConvInv => 'int($val*6+($val>0?0.5:-0.5)) & 0x0f',
  881. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  882. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  883. },
  884. 9.1 => { # CSb4-b
  885. Name => 'FineTuneOptCenterWeighted',
  886. Mask => 0xf0,
  887. ValueConv => '($val > 0x70 ? $val - 0x100 : $val) / 0x60',
  888. ValueConvInv => '(int($val*6+($val>0?0.5:-0.5))<<4) & 0xf0',
  889. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  890. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  891. },
  892. 9.2 => { # CSb4-c
  893. Name => 'FineTuneOptSpotMetering',
  894. Mask => 0x0f,
  895. ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
  896. ValueConvInv => 'int($val*6+($val>0?0.5:-0.5)) & 0x0f',
  897. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  898. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  899. },
  900. 11.1 => { # CSd6
  901. Name => 'CLModeShootingSpeed',
  902. Mask => 0x07,
  903. PrintConv => '"$val fps"',
  904. PrintConvInv => '$val=~s/\s*fps//i; $val',
  905. },
  906. 11.2 => { # CSd10
  907. Name => 'ExposureDelayMode',
  908. Mask => 0x40,
  909. PrintConv => {
  910. 0x00 => 'Off',
  911. 0x40 => 'On',
  912. },
  913. },
  914. 13.1 => { # CSe4
  915. Name => 'AutoBracketSet',
  916. Mask => 0xe0, #(NC)
  917. PrintConv => {
  918. 0x00 => 'AE & Flash', # default
  919. 0x20 => 'AE Only',
  920. 0x40 => 'Flash Only', #(NC)
  921. 0x60 => 'WB Bracketing', #(NC)
  922. 0x80 => 'Active D-Lighting', #(NC)
  923. },
  924. },
  925. 13.2 => { # CSe6
  926. Name => 'AutoBracketOrder',
  927. Mask => 0x10,
  928. PrintConv => {
  929. 0x00 => '0,-,+',
  930. 0x10 => '-,0,+',
  931. },
  932. },
  933. 14.1 => { # CSf3
  934. Name => 'FuncButton',
  935. Mask => 0x78,
  936. PrintConv => {
  937. 0x08 => 'Framing Grid',
  938. 0x10 => 'AF-area Mode',
  939. 0x18 => 'Center Focus Point',
  940. 0x20 => 'FV Lock', # default
  941. 0x28 => 'Flash Off',
  942. 0x30 => 'Matrix Metering',
  943. 0x38 => 'Center-weighted Metering',
  944. 0x40 => 'Spot Metering',
  945. 0x48 => 'My Menu Top',
  946. 0x50 => '+ NEF (RAW)',
  947. },
  948. },
  949. 16.1 => { # CSf2
  950. Name => 'OKButton',
  951. Mask => 0x18,
  952. PrintConv => {
  953. 0x08 => 'Select Center Focus Point',
  954. 0x10 => 'Highlight Active Focus Point',
  955. 0x18 => 'Not Used', #(NC)
  956. 0x00 => 'Not Used', #(NC)
  957. },
  958. },
  959. 17.1 => { # CSf4
  960. Name => 'AELockButton',
  961. Mask => 0x38,
  962. PrintConv => {
  963. 0x00 => 'AE/AF Lock',
  964. 0x08 => 'AE Lock Only',
  965. 0x10 => 'AF Lock Only', #(NC)
  966. 0x18 => 'AE Lock (hold)', #(NC)
  967. 0x20 => 'AF-ON', #(NC)
  968. 0x28 => 'FV Lock', #(NC)
  969. },
  970. },
  971. 18.1 => { # CSf5-a
  972. Name => 'CommandDialsReverseRotation',
  973. Mask => 0x80,
  974. PrintConv => { 0x00 => 'No', 0x80 => 'Yes' },
  975. },
  976. 18.2 => { # CSc1
  977. Name => 'ShutterReleaseButtonAE-L',
  978. Mask => 0x02,
  979. PrintConv => { 0x00 => 'Off', 0x02 => 'On' },
  980. },
  981. 19.1 => { # CSc2
  982. Name => 'MeteringTime',
  983. Mask => 0xf0,
  984. PrintConvColumns => 2,
  985. PrintConv => {
  986. 0x00 => '4 s',
  987. 0x10 => '6 s', # default
  988. 0x20 => '8 s',
  989. 0x30 => '16 s',
  990. 0x40 => '30 s',
  991. 0x50 => '1 min',
  992. 0x60 => '5 min',
  993. 0x70 => '10 min',
  994. 0x80 => '30 min',
  995. },
  996. },
  997. 19.2 => { # CSc5
  998. Name => 'RemoteOnDuration',
  999. Mask => 0x03,
  1000. PrintConv => {
  1001. 0x00 => '1 min',
  1002. 0x01 => '5 min',
  1003. 0x02 => '10 min',
  1004. 0x03 => '15 min',
  1005. },
  1006. },
  1007. 20.1 => { # CSc3-a
  1008. Name => 'SelfTimerTime',
  1009. Mask => 0xc0,
  1010. PrintConv => {
  1011. 0x00 => '2 s',
  1012. 0x40 => '5 s',
  1013. 0x80 => '10 s', # default
  1014. 0xc0 => '20 s',
  1015. },
  1016. },
  1017. 20.2 => { # CSc3-b
  1018. Name => 'SelfTimerShotCount',
  1019. Mask => 0x1e,
  1020. ValueConv => '$val >> 1',
  1021. ValueConvInv => '$val << 1',
  1022. },
  1023. 21.1 => { # CSc4-a
  1024. Name => 'PlaybackMonitorOffTime',
  1025. Mask => 0x1c,
  1026. PrintConv => {
  1027. 0x00 => '4 s',
  1028. 0x04 => '10 s', # default
  1029. 0x08 => '20 s',
  1030. 0x0c => '1 min',
  1031. 0x10 => '5 min',
  1032. 0x14 => '10 min',
  1033. },
  1034. },
  1035. 21.2 => { # CSc4-d
  1036. Name => 'ImageReviewTime',
  1037. Mask => 0xe0,
  1038. PrintConv => {
  1039. 0x00 => '4 s', # default
  1040. 0x20 => '10 s',
  1041. 0x40 => '20 s',
  1042. 0x60 => '1 min',
  1043. 0x80 => '5 min',
  1044. 0xa0 => '10 min',
  1045. },
  1046. },
  1047. 22.1 => { # CSc4-b
  1048. Name => 'MenuMonitorOffTime',
  1049. Mask => 0xe0,
  1050. PrintConv => {
  1051. 0x00 => '4 s',
  1052. 0x20 => '10 s',
  1053. 0x40 => '20 s', # default
  1054. 0x60 => '1 min',
  1055. 0x80 => '5 min',
  1056. 0xa0 => '10 min',
  1057. },
  1058. },
  1059. 22.2 => { # CSc4-c
  1060. Name => 'ShootingInfoMonitorOffTime',
  1061. Mask => 0x1c,
  1062. PrintConv => {
  1063. 0x00 => '4 s',
  1064. 0x04 => '10 s', # default
  1065. 0x08 => '20 s',
  1066. 0x0c => '1 min',
  1067. 0x10 => '5 min',
  1068. 0x14 => '10 min',
  1069. },
  1070. },
  1071. 23.1 => { # CSe1
  1072. Name => 'FlashShutterSpeed',
  1073. Mask => 0x0f,
  1074. PrintConvColumns => 2,
  1075. PrintConv => {
  1076. 0x00 => '1/60 s', # default
  1077. 0x01 => '1/30 s',
  1078. 0x02 => '1/15 s',
  1079. 0x03 => '1/8 s',
  1080. 0x04 => '1/4 s',
  1081. 0x05 => '1/2 s',
  1082. 0x06 => '1 s',
  1083. 0x07 => '2 s',
  1084. 0x08 => '4 s',
  1085. 0x09 => '8 s',
  1086. 0x0a => '15 s',
  1087. 0x0b => '30 s',
  1088. },
  1089. },
  1090. 24.1 => { # CSe2-a
  1091. Name => 'InternalFlash',
  1092. Mask => 0xc0,
  1093. PrintConv => {
  1094. 0x00 => 'TTL',
  1095. 0x40 => 'Manual',
  1096. 0x80 => 'Repeating Flash',
  1097. 0xc0 => 'Commander Mode',
  1098. },
  1099. },
  1100. 24.2 => { # CSe2-b
  1101. Name => 'ManualFlashOutput',
  1102. Mask => 0x1f,
  1103. ValueConv => '2 ** (-$val/3)',
  1104. ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
  1105. PrintConv => q{
  1106. return 'Full' if $val > 0.99;
  1107. Image::ExifTool::Exif::PrintExposureTime($val);
  1108. },
  1109. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  1110. },
  1111. 25.1 => { # CSe2-ca
  1112. Name => 'RepeatingFlashOutput',
  1113. Mask => 0x70,
  1114. ValueConv => '2 ** (-($val>>4)-2)',
  1115. ValueConvInv => '$val > 0 ? int(-log($val)/log(2)-2+0.5)<<4 : 0',
  1116. PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
  1117. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  1118. },
  1119. 25.2 => { # CSe2-cb
  1120. Name => 'RepeatingFlashCount',
  1121. Mask => 0x0f,
  1122. ValueConv => '$val < 10 ? $val + 1 : 5 * ($val - 7)',
  1123. ValueConvInv => '$val <= 10 ? $val - 1 : $val / 5 + 7',
  1124. },
  1125. 26.1 => { # CSe2-cc (NC)
  1126. Name => 'RepeatingFlashRate',
  1127. Mask => 0xf0,
  1128. ValueConv => 'my $v=($val>>4); $v < 10 ? $v + 1 : 10 * ($v - 8)',
  1129. ValueConvInv => 'int(($val <= 10 ? $val - 1 : $val / 10 + 8) + 0.5) << 4',
  1130. PrintConv => '"$val Hz"',
  1131. PrintConvInv => '$val=~/(\d+)/; $1 || 0',
  1132. },
  1133. 31.1 => { # CSd11
  1134. Name => 'FlashWarning',
  1135. Mask => 0x80,
  1136. PrintConv => {
  1137. 0x00 => 'On',
  1138. 0x80 => 'Off',
  1139. },
  1140. },
  1141. 31.2 => { # CSe2-ea
  1142. Name => 'CommanderInternalTTLComp',
  1143. Mask => 0x1f,
  1144. ValueConv => '($val - 9) / 3',
  1145. ValueConvInv => '$val * 3 + 9',
  1146. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  1147. PrintConvInv => '$val',
  1148. },
  1149. 31.3 => { # CSe3
  1150. Name => 'ModelingFlash',
  1151. Mask => 0x20,
  1152. PrintConv => { 0x00 => 'On', 0x20 => 'Off' },
  1153. },
  1154. 31.4 => { # CSe5
  1155. Name => 'AutoFP',
  1156. Mask => 0x40,
  1157. PrintConv => {
  1158. 0x00 => 'Off',
  1159. 0x40 => 'On',
  1160. },
  1161. },
  1162. 32.1 => { # CSe2-eb
  1163. Name => 'CommanderGroupA_TTLComp',
  1164. Mask => 0x1f,
  1165. ValueConv => '($val - 9) / 3',
  1166. ValueConvInv => '$val * 3 + 9',
  1167. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  1168. PrintConvInv => '$val',
  1169. },
  1170. 33.1 => { # CSe2-ec
  1171. Name => 'CommanderGroupB_TTLComp',
  1172. Mask => 0x1f,
  1173. ValueConv => '($val - 9) / 3',
  1174. ValueConvInv => '$val * 3 + 9',
  1175. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  1176. PrintConvInv => '$val',
  1177. },
  1178. 34.1 => { # CSa7
  1179. Name => 'LiveViewAF',
  1180. Mask => 0xc0,
  1181. PrintConv => {
  1182. 0x00 => 'Face Priority', #(NC)
  1183. 0x40 => 'Wide Area',
  1184. 0x80 => 'Normal Area',
  1185. },
  1186. },
  1187. );
  1188. # D300 (ref JD) and D3 (ref 1/PH) custom settings
  1189. %Image::ExifTool::NikonCustom::SettingsD3 = (
  1190. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  1191. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  1192. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  1193. WRITABLE => 1,
  1194. FIRST_ENTRY => 0,
  1195. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  1196. NOTES => 'Custom settings for the D3, D3S, D3X, D300 and D300S.',
  1197. # these settings have been decoded using the D3 and D300, and
  1198. # extrapolated to the other models, but these haven't yet been
  1199. # verified, and the following custom settings are missing:
  1200. # CSf1-d (D3X,D3S) MultiSelectorLiveView
  1201. # CSf1 (D300S) LightSwitch
  1202. 0.1 => { #1
  1203. Name => 'CustomSettingsBank',
  1204. Mask => 0x03,
  1205. PrintConv => {
  1206. 0 => 'A',
  1207. 1 => 'B',
  1208. 2 => 'C',
  1209. 3 => 'D',
  1210. },
  1211. },
  1212. 0.2 => { #1
  1213. Name => 'CustomSettingsAllDefault',
  1214. Notes => '"No" if any custom setting for this bank was changed from the default',
  1215. Mask => 0x80,
  1216. PrintConv => { 0x00 => 'Yes', 0x80 => 'No' },
  1217. },
  1218. 1.1 => { # CSa1
  1219. Name => 'AF-CPrioritySelection',
  1220. Mask => 0xc0,
  1221. PrintConv => {
  1222. 0x00 => 'Release',
  1223. 0x40 => 'Release + Focus',
  1224. 0x80 => 'Focus',
  1225. },
  1226. },
  1227. 1.2 => { # CSa2
  1228. Name => 'AF-SPrioritySelection',
  1229. Mask => 0x20,
  1230. PrintConv => {
  1231. 0x00 => 'Focus',
  1232. 0x20 => 'Release',
  1233. },
  1234. },
  1235. 1.3 => { # CSa8
  1236. Name => 'AFPointSelection',
  1237. Mask => 0x10,
  1238. PrintConv => {
  1239. 0x00 => '51 Points',
  1240. 0x10 => '11 Points',
  1241. },
  1242. },
  1243. 1.4 => { # CSa3
  1244. Name => 'DynamicAFArea',
  1245. Mask => 0x0c,
  1246. PrintConv => {
  1247. 0x00 => '9 Points',
  1248. 0x04 => '21 Points',
  1249. 0x08 => '51 Points',
  1250. 0x0c => '51 Points (3D-tracking)',
  1251. },
  1252. },
  1253. 1.5 => { # CSa4
  1254. Name => 'FocusTrackingLockOn',
  1255. Condition => '$$self{Model} !~ /D3S\b/',
  1256. Notes => 'not D3S',
  1257. Mask => 0x03,
  1258. PrintConv => {
  1259. 0x00 => 'Long',
  1260. 0x01 => 'Normal',
  1261. 0x02 => 'Short',
  1262. 0x03 => 'Off',
  1263. },
  1264. },
  1265. 2.1 => { # CSa5
  1266. Name => 'AFActivation',
  1267. Mask => 0x80,
  1268. PrintConv => {
  1269. 0x00 => 'Shutter/AF-On',
  1270. 0x80 => 'AF-On Only',
  1271. },
  1272. },
  1273. 2.2 => { # CSa7
  1274. Name => 'FocusPointWrap',
  1275. Mask => 0x08,
  1276. PrintConv => {
  1277. 0x00 => 'No Wrap',
  1278. 0x08 => 'Wrap',
  1279. },
  1280. },
  1281. 2.3 => [ # CSa6
  1282. {
  1283. Name => 'AFPointIllumination',
  1284. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1285. Notes => 'D3',
  1286. Mask => 0x60,
  1287. PrintConv => {
  1288. 0x00 => 'On in Continuous Shooting and Manual Focusing',
  1289. 0x20 => 'On During Manual Focusing',
  1290. 0x40 => 'On in Continuous Shooting Modes',
  1291. 0x60 => 'Off',
  1292. },
  1293. },
  1294. {
  1295. Name => 'AFPointIllumination',
  1296. Notes => 'D300',
  1297. Mask => 0x06,
  1298. PrintConv => {
  1299. 0x00 => 'Auto',
  1300. 0x02 => 'Off',
  1301. 0x04 => 'On',
  1302. },
  1303. },
  1304. ],
  1305. 2.4 => { # CSa6-b (D3, added by firmware update)
  1306. Name => 'AFPointBrightness',
  1307. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1308. Notes => 'D3 only',
  1309. Mask => 0x06,
  1310. PrintConv => {
  1311. 0x00 => 'Low',
  1312. 0x02 => 'Normal',
  1313. 0x04 => 'High',
  1314. 0x06 => 'Extra High',
  1315. },
  1316. },
  1317. 2.5 => { # CSa9 (D300)
  1318. Name => 'AFAssist',
  1319. Condition => '$$self{Model} =~ /D300S?\b/',
  1320. Notes => 'D300 only',
  1321. Mask => 0x01,
  1322. PrintConv => { 0x00 => 'On', 0x01 => 'Off' },
  1323. },
  1324. 3.1 => { # CSa9 (D3)
  1325. Name => 'AFOnButton',
  1326. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1327. Notes => 'D3 only',
  1328. Mask => 0x07,
  1329. PrintConv => {
  1330. 0 => 'AF On',
  1331. 1 => 'AE/AF Lock',
  1332. 2 => 'AE Lock Only',
  1333. 3 => 'AE Lock (reset on release)',
  1334. 4 => 'AE Lock (hold)',
  1335. 5 => 'AF Lock Only',
  1336. },
  1337. },
  1338. 3.2 => { # CSa10 (D3)
  1339. Name => 'VerticalAFOnButton',
  1340. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1341. Notes => 'D3 only',
  1342. Mask => 0x70,
  1343. PrintConv => {
  1344. 0x00 => 'AF On',
  1345. 0x10 => 'AE/AF Lock',
  1346. 0x20 => 'AE Lock Only',
  1347. 0x30 => 'AE Lock (reset on release)',
  1348. 0x40 => 'AE Lock (hold)',
  1349. 0x50 => 'AF Lock Only',
  1350. 0x70 => 'Same as AF On',
  1351. },
  1352. },
  1353. 3.3 => { # CSa10 (D300)
  1354. Name => 'AF-OnForMB-D10',
  1355. Condition => '$$self{Model} =~ /D300S?\b/',
  1356. Notes => 'D300 only',
  1357. Mask => 0x70,
  1358. PrintConv => {
  1359. 0x00 => 'AF-On',
  1360. 0x10 => 'AE/AF Lock',
  1361. 0x20 => 'AE Lock Only',
  1362. 0x30 => 'AE Lock (reset on release)',
  1363. 0x40 => 'AE Lock (hold)',
  1364. 0x50 => 'AF Lock Only',
  1365. 0x60 => 'Same as FUNC Button',
  1366. },
  1367. },
  1368. 4.1 => { # CSa4 (D3S)
  1369. Name => 'FocusTrackingLockOn',
  1370. Condition => '$$self{Model} =~ /D3S\b/',
  1371. Notes => 'D3S only',
  1372. Mask => 0x07,
  1373. PrintConv => {
  1374. 0x00 => '5 (Long)',
  1375. 0x01 => '4',
  1376. 0x02 => '3 (Normal)',
  1377. 0x03 => '2',
  1378. 0x04 => '1 (Short)',
  1379. 0x05 => 'Off',
  1380. },
  1381. },
  1382. 4.2 => { # CSf7 (D3S)
  1383. Name => 'AssignBktButton',
  1384. Condition => '$$self{Model} =~ /D3S\b/',
  1385. Notes => 'D3S only',
  1386. Mask => 0x08,
  1387. PrintConv => {
  1388. 0x00 => 'Auto Bracketing',
  1389. 0x08 => 'Multiple Exposure',
  1390. },
  1391. },
  1392. 4.3 => { # CSf1-c (D3S) (ref 1)
  1393. Name => 'MultiSelectorLiveView',
  1394. Condition => '$$self{Model} =~ /D3S\b/',
  1395. Notes => 'D3S only',
  1396. Mask => 0xc0,
  1397. PrintConv => {
  1398. 0x00 => 'Reset',
  1399. 0x40 => 'Zoom On/Off',
  1400. 0x80 => 'Start Movie Recording',
  1401. 0xc0 => 'Not Used',
  1402. },
  1403. },
  1404. 4.4 => { # CSf1-c2 (D3S) (ref 1)
  1405. Name => 'InitialZoomLiveView',
  1406. Condition => '$$self{Model} =~ /D3S\b/',
  1407. Notes => 'D3S only',
  1408. Mask => 0x30,
  1409. PrintConv => {
  1410. 0x00 => 'Low Magnification',
  1411. 0x10 => 'Medium Magnification',
  1412. 0x20 => 'High Magnification',
  1413. },
  1414. },
  1415. 6.1 => { # CSb1
  1416. Name => 'ISOStepSize',
  1417. Mask => 0xc0,
  1418. PrintConv => {
  1419. 0x00 => '1/3 EV',
  1420. 0x40 => '1/2 EV',
  1421. 0x80 => '1 EV',
  1422. },
  1423. },
  1424. 6.2 => { # CSb2
  1425. Name => 'ExposureControlStepSize',
  1426. Mask => 0x30,
  1427. PrintConv => {
  1428. 0x00 => '1/3 EV',
  1429. 0x10 => '1/2 EV',
  1430. 0x20 => '1 EV',
  1431. },
  1432. },
  1433. 6.3 => { # CSb3
  1434. Name => 'ExposureCompStepSize',
  1435. Mask => 0x0c,
  1436. PrintConv => {
  1437. 0x00 => '1/3 EV',
  1438. 0x04 => '1/2 EV',
  1439. 0x08 => '1 EV',
  1440. },
  1441. },
  1442. 6.4 => { # CSb4
  1443. Name => 'EasyExposureCompensation',
  1444. Mask => 0x03,
  1445. PrintConv => {
  1446. 0x00 => 'Off',
  1447. 0x01 => 'On',
  1448. 0x02 => 'On (auto reset)',
  1449. },
  1450. },
  1451. 7.1 => [ # CSb5
  1452. {
  1453. Name => 'CenterWeightedAreaSize',
  1454. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1455. Notes => 'D3',
  1456. Mask => 0xe0,
  1457. PrintConv => {
  1458. 0x00 => '8 mm',
  1459. 0x20 => '12 mm',
  1460. 0x40 => '15 mm',
  1461. 0x60 => '20 mm',
  1462. 0x80 => 'Average',
  1463. },
  1464. },
  1465. {
  1466. Name => 'CenterWeightedAreaSize',
  1467. Notes => 'D300',
  1468. Mask => 0xe0,
  1469. PrintConv => {
  1470. 0x00 => '6 mm',
  1471. 0x20 => '8 mm',
  1472. 0x40 => '10 mm',
  1473. 0x60 => '13 mm',
  1474. 0x80 => 'Average',
  1475. },
  1476. },
  1477. ],
  1478. 7.2 => { # CSb6-b
  1479. Name => 'FineTuneOptCenterWeighted',
  1480. Mask => 0x0f,
  1481. ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
  1482. ValueConvInv => 'int($val*6+($val>0?0.5:-0.5)) & 0x0f',
  1483. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  1484. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  1485. },
  1486. 8.1 => { # CSb6-a
  1487. Name => 'FineTuneOptMatrixMetering',
  1488. Mask => 0xf0,
  1489. ValueConv => '($val > 0x70 ? $val - 0x100 : $val) / 0x60',
  1490. ValueConvInv => '(int($val*6+($val>0?0.5:-0.5))<<4) & 0xf0',
  1491. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  1492. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  1493. },
  1494. 8.2 => { # CSb6-c
  1495. Name => 'FineTuneOptSpotMetering',
  1496. Mask => 0x0f,
  1497. ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
  1498. ValueConvInv => 'int($val*6+($val>0?0.5:-0.5)) & 0x0f',
  1499. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  1500. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  1501. },
  1502. 9.1 => { # CSf1-a, CSf2-a (D300S)
  1503. Name => 'MultiSelectorShootMode',
  1504. Mask => 0xc0,
  1505. PrintConv => {
  1506. 0x00 => 'Select Center Focus Point',
  1507. 0x40 => 'Highlight Active Focus Point',
  1508. 0x80 => 'Not Used',
  1509. },
  1510. },
  1511. 9.2 => { # CSf1-b, CSf2-b (D300S)
  1512. Name => 'MultiSelectorPlaybackMode',
  1513. Condition => '$$self{Model} !~ /D3S\b/',
  1514. Notes => 'all models except D3S', # (not confirmed for D3X)
  1515. Mask => 0x30,
  1516. PrintConv => {
  1517. 0x00 => 'Thumbnail On/Off',
  1518. 0x10 => 'View Histograms',
  1519. 0x20 => 'Zoom On/Off',
  1520. 0x30 => 'Choose Folder',
  1521. },
  1522. },
  1523. 9.3 => [ # CSf1-b2, CSf2-b2 (D300S)
  1524. {
  1525. Name => 'InitialZoomSetting',
  1526. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1527. Notes => 'D3',
  1528. Mask => 0x0c,
  1529. PrintConv => { #1
  1530. 0x00 => 'High Magnification',
  1531. 0x04 => 'Medium Magnification',
  1532. 0x08 => 'Low Magnification',
  1533. },
  1534. },
  1535. {
  1536. Name => 'InitialZoomSetting',
  1537. Notes => 'D300',
  1538. Mask => 0x0c,
  1539. PrintConv => { #JD
  1540. 0x00 => 'Low Magnification',
  1541. 0x04 => 'Medium Magnification',
  1542. 0x08 => 'High Magnification',
  1543. },
  1544. },
  1545. ],
  1546. 9.4 => { # CSf2 (D300,D3), CSf3 (D300S)
  1547. Name => 'MultiSelector',
  1548. Mask => 0x01,
  1549. PrintConv => {
  1550. 0x00 => 'Do Nothing',
  1551. 0x01 => 'Reset Meter-off Delay',
  1552. },
  1553. },
  1554. 10.1 => { # CSd9 (D300,D3S), CSd10 (D300S), CSd8 (D3)
  1555. Name => 'ExposureDelayMode',
  1556. Mask => 0x40,
  1557. PrintConv => { 0x00 => 'Off', 0x40 => 'On' },
  1558. },
  1559. 10.2 => { # CSd4 (D300), CDs5 (D300S), CSd2-a (D3)
  1560. Name => 'CLModeShootingSpeed',
  1561. Mask => 0x07,
  1562. PrintConv => '"$val fps"',
  1563. PrintConvInv => '$val=~s/\s*fps//i; $val',
  1564. },
  1565. 10.3 => { # (D3 CSd2-b)
  1566. Name => 'CHModeShootingSpeed',
  1567. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1568. Notes => 'D3 only',
  1569. Mask => 0x30,
  1570. PrintConv => {
  1571. 0x00 => '9 fps',
  1572. 0x10 => '10 fps',
  1573. 0x20 => '11 fps',
  1574. },
  1575. },
  1576. 11 => { # CSd5 (D300), CSd6 (D300S), CSd3 (D3)
  1577. Name => 'MaxContinuousRelease',
  1578. # values: 1-100 (D300), 1-130 (D3)
  1579. },
  1580. 12.1 => { # CSf10, CSf11 (D3S,D300S)
  1581. Name => 'ReverseIndicators',
  1582. Mask => 0x20,
  1583. PrintConv => {
  1584. 0x00 => '+ 0 -',
  1585. 0x20 => '- 0 +',
  1586. },
  1587. },
  1588. 12.2 => [ # CSd6 (D300), CSd7 (D300S), CSd4 (D3)
  1589. {
  1590. Name => 'FileNumberSequence',
  1591. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1592. Notes => 'D3',
  1593. Mask => 0x02,
  1594. PrintConv => { 0x00 => 'On', 0x02 => 'Off' },
  1595. },
  1596. {
  1597. Name => 'FileNumberSequence',
  1598. Notes => 'D300',
  1599. Mask => 0x08,
  1600. PrintConv => { 0x00 => 'On', 0x08 => 'Off' },
  1601. },
  1602. ],
  1603. 12.3 => { # CSd5-a (D3)
  1604. Name => 'RearDisplay',
  1605. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1606. Notes => 'D3 only',
  1607. Mask => 0x80,
  1608. PrintConv => {
  1609. 0x00 => 'ISO',
  1610. 0x80 => 'Exposures Remaining',
  1611. },
  1612. },
  1613. 12.4 => { # CSd5-b (D3)
  1614. Name => 'ViewfinderDisplay',
  1615. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1616. Notes => 'D3 only',
  1617. Mask => 0x40,
  1618. PrintConv => {
  1619. 0x00 => 'Frame Count',
  1620. 0x40 => 'Exposures Remaining',
  1621. },
  1622. },
  1623. 12.5 => { # CSd11 (D300), CSd12 (D300S)
  1624. Name => 'BatteryOrder',
  1625. Condition => '$$self{Model} =~ /D300S?\b/',
  1626. Notes => 'D300 only',
  1627. Mask => 0x04,
  1628. PrintConv => {
  1629. 0x00 => 'MB-D10 First',
  1630. 0x04 => 'Camera Battery First',
  1631. },
  1632. },
  1633. 12.6 => { # CSd10 (D300), CSd11 (D300S)
  1634. Name => 'MB-D10Batteries',
  1635. Condition => '$$self{Model} =~ /D300S?\b/',
  1636. Notes => 'D300 only',
  1637. Mask => 0x03,
  1638. PrintConv => {
  1639. 0x00 => 'LR6 (AA alkaline)',
  1640. 0x01 => 'HR6 (AA Ni-MH)',
  1641. 0x02 => 'FR6 (AA lithium)',
  1642. 0x03 => 'ZR6 (AA Ni-Mn)',
  1643. },
  1644. },
  1645. 12.7 => { # CSd7 (D3S), CSd4, (D300S)
  1646. Name => 'ScreenTips',
  1647. Condition => '$$self{Model} =~ /(D3S|D300S)\b/',
  1648. Mask => 0x10,
  1649. PrintConv => {
  1650. 0x00 => 'On',
  1651. 0x10 => 'Off',
  1652. },
  1653. },
  1654. 13.1 => { # CSd1
  1655. Name => 'Beep',
  1656. Mask => 0xc0,
  1657. PrintConv => {
  1658. 0x00 => 'High',
  1659. 0x40 => 'Low',
  1660. 0x80 => 'Off',
  1661. },
  1662. },
  1663. 13.2 => { # CSd7 (D300), CSd8 (D300S), CSd6 (D3)
  1664. Name => 'ShootingInfoDisplay',
  1665. Mask => 0x30,
  1666. PrintConv => {
  1667. 0x00 => 'Auto', #JD (D300)
  1668. 0x10 => 'Auto', #1 (D3)
  1669. 0x20 => 'Manual (dark on light)',
  1670. 0x30 => 'Manual (light on dark)',
  1671. },
  1672. },
  1673. 13.3 => { # CSd2 (D300)
  1674. Name => 'GridDisplay',
  1675. Condition => '$$self{Model} =~ /D300S?\b/',
  1676. Notes => 'D300 only',
  1677. Mask => 0x02,
  1678. PrintConv => { 0x00 => 'Off', 0x02 => 'On' },
  1679. },
  1680. 13.4 => { # CSd3 (D300)
  1681. Name => 'ViewfinderWarning',
  1682. Condition => '$$self{Model} =~ /D300S?\b/',
  1683. Notes => 'D300 only',
  1684. Mask => 0x01,
  1685. PrintConv => { 0x00 => 'On', 0x01 => 'Off' },
  1686. },
  1687. 13.5 => { # CSf1-b (D3S) (ref 1)
  1688. Name => 'MultiSelectorPlaybackMode',
  1689. Condition => '$$self{Model} =~ /D3S\b/',
  1690. Notes => 'D3S only',
  1691. Mask => 0x03,
  1692. PrintConv => {
  1693. 0x00 => 'Thumbnail On/Off',
  1694. 0x01 => 'View Histograms',
  1695. 0x02 => 'Zoom On/Off',
  1696. },
  1697. },
  1698. 14.1 => [ # CSf5-a (ref 1), CSf6-a (D300S)
  1699. {
  1700. Name => 'PreviewButton',
  1701. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1702. Notes => 'D3',
  1703. Mask => 0xf8,
  1704. PrintConv => {
  1705. 0x00 => 'None',
  1706. 0x08 => 'Preview',
  1707. 0x10 => 'FV Lock',
  1708. 0x18 => 'AE/AF Lock',
  1709. 0x20 => 'AE Lock Only',
  1710. 0x28 => 'AE Lock (reset on release)',
  1711. 0x30 => 'AE Lock (hold)',
  1712. 0x38 => 'AF Lock Only',
  1713. 0x40 => 'Flash Off',
  1714. 0x48 => 'Bracketing Burst',
  1715. 0x50 => 'Matrix Metering',
  1716. 0x58 => 'Center-weighted Metering',
  1717. 0x60 => 'Spot Metering',
  1718. 0x68 => 'Virtual Horizon',
  1719. # 0x70 not used
  1720. 0x78 => 'Playback',
  1721. 0x80 => 'My Menu Top',
  1722. },
  1723. },
  1724. { #PH
  1725. Name => 'FuncButton',
  1726. Notes => 'D300',
  1727. Mask => 0xf8,
  1728. PrintConv => {
  1729. 0x00 => 'None',
  1730. 0x08 => 'Preview',
  1731. 0x10 => 'FV Lock',
  1732. 0x18 => 'AE/AF Lock',
  1733. 0x20 => 'AE Lock Only',
  1734. 0x28 => 'AE Lock (reset on release)',
  1735. 0x30 => 'AE Lock (hold)',
  1736. 0x38 => 'AF Lock Only',
  1737. # 0x40 not used
  1738. 0x48 => 'Flash Off',
  1739. 0x50 => 'Bracketing Burst',
  1740. 0x58 => 'Matrix Metering',
  1741. 0x60 => 'Center-weighted Metering',
  1742. 0x68 => 'Spot Metering',
  1743. 0x70 => 'Playback', #PH (guess)
  1744. 0x78 => 'My Menu Top', #PH (guess)
  1745. 0x80 => '+ NEF (RAW)', #PH (guess)
  1746. },
  1747. },
  1748. ],
  1749. 14.2 => [ # CSf5-b (PH,NC), CSf6-b (D300S)
  1750. {
  1751. Name => 'PreviewButtonPlusDials',
  1752. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1753. Notes => 'D3',
  1754. Mask => 0x07,
  1755. PrintConv => {
  1756. 0 => 'None',
  1757. 1 => 'Choose Image Area (FX/DX/5:4)',
  1758. 2 => 'One Step Speed/Aperture',
  1759. 3 => 'Choose Non-CPU Lens Number',
  1760. # n/a 4 => 'Focus Point Selection',
  1761. 5 => 'Choose Image Area (FX/DX)',
  1762. 6 => 'Shooting Bank Menu',
  1763. 7 => 'Dynamic AF Area', #PH (D3S,D3X,NC)
  1764. },
  1765. },
  1766. { #PH
  1767. Name => 'FuncButtonPlusDials',
  1768. Notes => 'D300',
  1769. Mask => 0x07,
  1770. PrintConv => {
  1771. 0 => 'None',
  1772. 2 => 'One Step Speed/Aperture',
  1773. 3 => 'Choose Non-CPU Lens Number',
  1774. 5 => 'Auto Bracketing',
  1775. 6 => 'Dynamic AF Area',
  1776. },
  1777. },
  1778. ],
  1779. 15.1 => [ # CSf4-a (ref 1), CSf5-a (D300S)
  1780. {
  1781. Name => 'FuncButton',
  1782. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1783. Notes => 'D3',
  1784. Mask => 0xf8,
  1785. PrintConv => {
  1786. 0x00 => 'None',
  1787. 0x08 => 'Preview',
  1788. 0x10 => 'FV Lock',
  1789. 0x18 => 'AE/AF Lock',
  1790. 0x20 => 'AE Lock Only',
  1791. 0x28 => 'AE Lock (reset on release)',
  1792. 0x30 => 'AE Lock (hold)',
  1793. 0x38 => 'AF Lock Only',
  1794. 0x40 => 'Flash Off',
  1795. 0x48 => 'Bracketing Burst',
  1796. 0x50 => 'Matrix Metering',
  1797. 0x58 => 'Center-weighted Metering',
  1798. 0x60 => 'Spot Metering',
  1799. 0x68 => 'Virtual Horizon',
  1800. # 0x70 not used
  1801. 0x78 => 'Playback',
  1802. 0x80 => 'My Menu Top',
  1803. },
  1804. },
  1805. { #PH
  1806. Name => 'PreviewButton',
  1807. Notes => 'D300',
  1808. Mask => 0xf8,
  1809. PrintConv => {
  1810. 0x00 => 'None',
  1811. 0x08 => 'Preview',
  1812. 0x10 => 'FV Lock',
  1813. 0x18 => 'AE/AF Lock',
  1814. 0x20 => 'AE Lock Only',
  1815. 0x28 => 'AE Lock (reset on release)',
  1816. 0x30 => 'AE Lock (hold)',
  1817. 0x38 => 'AF Lock Only',
  1818. # 0x40 not used
  1819. 0x48 => 'Flash Off',
  1820. 0x50 => 'Bracketing Burst',
  1821. 0x58 => 'Matrix Metering',
  1822. 0x60 => 'Center-weighted Metering',
  1823. 0x68 => 'Spot Metering',
  1824. 0x70 => 'Playback', #PH (guess)
  1825. 0x78 => 'My Menu Top', #PH (guess)
  1826. 0x80 => '+ NEF (RAW)', #PH (guess)
  1827. },
  1828. },
  1829. ],
  1830. 15.2 => [ # CSf4-b (ref 1), CSf5-b (D300S)
  1831. {
  1832. Name => 'FuncButtonPlusDials',
  1833. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1834. Notes => 'D3',
  1835. Mask => 0x07,
  1836. PrintConv => {
  1837. 0 => 'None',
  1838. 1 => 'Choose Image Area (FX/DX/5:4)',
  1839. 2 => 'One Step Speed/Aperture',
  1840. 3 => 'Choose Non-CPU Lens Number',
  1841. 4 => 'Focus Point Selection', #(NC)
  1842. 5 => 'Choose Image Area (FX/DX)',
  1843. 6 => 'Shooting Bank Menu',
  1844. 7 => 'Dynamic AF Area', #PH (D3S,D3X,NC)
  1845. },
  1846. },
  1847. { #PH
  1848. Name => 'PreviewButtonPlusDials',
  1849. Notes => 'D300',
  1850. Mask => 0x07,
  1851. PrintConv => {
  1852. 0 => 'None',
  1853. 2 => 'One Step Speed/Aperture',
  1854. 3 => 'Choose Non-CPU Lens Number',
  1855. 5 => 'Auto Bracketing',
  1856. 6 => 'Dynamic AF Area',
  1857. },
  1858. },
  1859. ],
  1860. 16.1 => [ # CSf6-a (ref 1), CSf7-a (D300S)
  1861. {
  1862. Name => 'AELockButton',
  1863. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1864. Notes => 'D3',
  1865. Mask => 0xf8,
  1866. PrintConv => {
  1867. 0x00 => 'None',
  1868. 0x08 => 'Preview',
  1869. 0x10 => 'FV Lock',
  1870. 0x18 => 'AE/AF Lock',
  1871. 0x20 => 'AE Lock Only',
  1872. 0x28 => 'AE Lock (reset on release)',
  1873. 0x30 => 'AE Lock (hold)',
  1874. 0x38 => 'AF Lock Only',
  1875. 0x40 => 'Flash Off',
  1876. 0x48 => 'Bracketing Burst',
  1877. 0x50 => 'Matrix Metering',
  1878. 0x58 => 'Center-weighted Metering',
  1879. 0x60 => 'Spot Metering',
  1880. 0x68 => 'Virtual Horizon',
  1881. 0x70 => 'AF On', # (AE-L/AF-L button only)
  1882. 0x78 => 'Playback',
  1883. 0x80 => 'My Menu Top',
  1884. },
  1885. },
  1886. { #PH
  1887. Name => 'AELockButton',
  1888. Notes => 'D300',
  1889. Mask => 0xf8,
  1890. PrintConv => {
  1891. 0x00 => 'None',
  1892. 0x08 => 'Preview',
  1893. 0x10 => 'FV Lock',
  1894. 0x18 => 'AE/AF Lock',
  1895. 0x20 => 'AE Lock Only',
  1896. 0x28 => 'AE Lock (reset on release)',
  1897. 0x30 => 'AE Lock (hold)',
  1898. 0x38 => 'AF Lock Only',
  1899. 0x40 => 'AF On', # (AE-L/AF-L button only)
  1900. 0x48 => 'Flash Off',
  1901. 0x50 => 'Bracketing Burst',
  1902. 0x58 => 'Matrix Metering',
  1903. 0x60 => 'Center-weighted Metering',
  1904. 0x68 => 'Spot Metering',
  1905. 0x70 => 'Playback', #PH (guess)
  1906. 0x78 => 'My Menu Top', #PH (guess)
  1907. 0x80 => '+ NEF (RAW)', #PH (guess)
  1908. },
  1909. },
  1910. ],
  1911. 16.2 => [ # CSf6-b (ref 1), CSf7-b (D300S)
  1912. {
  1913. Name => 'AELockButtonPlusDials',
  1914. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  1915. Notes => 'D3',
  1916. Mask => 0x07,
  1917. PrintConv => {
  1918. 0 => 'None',
  1919. 1 => 'Choose Image Area (FX/DX/5:4)',
  1920. 2 => 'One Step Speed/Aperture',
  1921. 3 => 'Choose Non-CPU Lens Number',
  1922. # n/c 4 => 'Focus Point Selection', #(NC)
  1923. 5 => 'Choose Image Area (FX/DX)',
  1924. 6 => 'Shooting Bank Menu',
  1925. 7 => 'Dynamic AF Area', #PH (D3S,D3X,NC)
  1926. },
  1927. },
  1928. { #PH
  1929. Name => 'AELockButtonPlusDials',
  1930. Notes => 'D300',
  1931. Mask => 0x07,
  1932. PrintConv => {
  1933. 0 => 'None',
  1934. # n/a 2 => 'One Step Speed/Aperture',
  1935. 3 => 'Choose Non-CPU Lens Number',
  1936. 5 => 'Auto Bracketing', #(NC)
  1937. 6 => 'Dynamic AF Area',
  1938. },
  1939. },
  1940. ],
  1941. 17.1 => { # CSf7-a, CSf8-a (D3S,D300S)
  1942. Name => 'CommandDialsReverseRotation',
  1943. Mask => 0x80,
  1944. PrintConv => { 0x00 => 'No', 0x80 => 'Yes' },
  1945. },
  1946. 17.2 => { # CSf7-b, CSf8-b (D3S,D300S)
  1947. Name => 'CommandDialsChangeMainSub',
  1948. Mask => 0x40,
  1949. PrintConv => { 0x00 => 'Off', 0x40 => 'On' },
  1950. },
  1951. 17.3 => { # CSf7-c, CSf8-c (D3S,D300S)
  1952. Name => 'CommandDialsApertureSetting',
  1953. Mask => 0x20,
  1954. PrintConv => {
  1955. 0x00 => 'Sub-command Dial',
  1956. 0x20 => 'Aperture Ring',
  1957. },
  1958. },
  1959. 17.4 => { # CSf7-d, CSf8-d (D3S,D300S)
  1960. Name => 'CommandDialsMenuAndPlayback',
  1961. Mask => 0x10,
  1962. PrintConv => { 0x00 => 'Off', 0x10 => 'On' },
  1963. },
  1964. 17.5 => { # CSd8 (D300,D3S), CSd9 (D300S), CSd7 (D3)
  1965. Name => 'LCDIllumination',
  1966. Mask => 0x08,
  1967. PrintConv => { 0x00 => 'Off', 0x08 => 'On' },
  1968. },
  1969. 17.6 => { # CSf3, CSf4 (D300S)
  1970. Name => 'PhotoInfoPlayback',
  1971. Mask => 0x04,
  1972. PrintConv => {
  1973. 0x00 => 'Info Up-down, Playback Left-right',
  1974. 0x04 => 'Info Left-right, Playback Up-down',
  1975. },
  1976. },
  1977. 17.7 => { # CSc1
  1978. Name => 'ShutterReleaseButtonAE-L',
  1979. Mask => 0x02,
  1980. PrintConv => { 0x00 => 'Off', 0x02 => 'On' },
  1981. },
  1982. 17.8 => { # CSf8, CSf9 (D3S,D300S)
  1983. Name => 'ReleaseButtonToUseDial',
  1984. Mask => 0x01,
  1985. PrintConv => { 0x00 => 'No', 0x01 => 'Yes' },
  1986. },
  1987. 18.1 => { # CSc3
  1988. Name => 'SelfTimerTime',
  1989. Mask => 0x18,
  1990. PrintConv => {
  1991. 0x00 => '2 s',
  1992. 0x08 => '5 s',
  1993. 0x10 => '10 s',
  1994. 0x18 => '20 s',
  1995. },
  1996. },
  1997. 18.2 => { # CSc4
  1998. Name => 'MonitorOffTime',
  1999. # NOTE: The D3S and D300S have separate settings for Playback,
  2000. # Image Review, Menus, and Information Display times
  2001. Mask => 0x07,
  2002. PrintConv => {
  2003. 0x00 => '10 s',
  2004. 0x01 => '20 s',
  2005. 0x02 => '1 min',
  2006. 0x03 => '5 min',
  2007. 0x04 => '10 min',
  2008. },
  2009. },
  2010. 20.1 => [ # CSe1
  2011. {
  2012. Name => 'FlashSyncSpeed',
  2013. Condition => '$$self{Model} =~ /D3[SX]?\b/',
  2014. Notes => 'D3',
  2015. Mask => 0xe0,
  2016. PrintConv => {
  2017. 0x00 => '1/250 s (auto FP)',
  2018. 0x20 => '1/250 s',
  2019. 0x40 => '1/200 s',
  2020. 0x60 => '1/160 s',
  2021. 0x80 => '1/125 s',
  2022. 0xa0 => '1/100 s',
  2023. 0xc0 => '1/80 s',
  2024. 0xe0 => '1/60 s',
  2025. },
  2026. },
  2027. {
  2028. Name => 'FlashSyncSpeed',
  2029. Notes => 'D300',
  2030. Mask => 0xf0,
  2031. PrintConv => {
  2032. 0x00 => '1/320 s (auto FP)',
  2033. 0x10 => '1/250 s (auto FP)',
  2034. 0x20 => '1/250 s',
  2035. 0x30 => '1/200 s',
  2036. 0x40 => '1/160 s',
  2037. 0x50 => '1/125 s',
  2038. 0x60 => '1/100 s',
  2039. 0x70 => '1/80 s',
  2040. 0x80 => '1/60 s',
  2041. },
  2042. },
  2043. ],
  2044. 20.2 => { # CSe2
  2045. Name => 'FlashShutterSpeed',
  2046. Mask => 0x0f,
  2047. PrintConvColumns => 2,
  2048. PrintConv => {
  2049. 0x00 => '1/60 s',
  2050. 0x01 => '1/30 s',
  2051. 0x02 => '1/15 s',
  2052. 0x03 => '1/8 s',
  2053. 0x04 => '1/4 s',
  2054. 0x05 => '1/2 s',
  2055. 0x06 => '1 s',
  2056. 0x07 => '2 s',
  2057. 0x08 => '4 s',
  2058. 0x09 => '8 s',
  2059. 0x0a => '15 s',
  2060. 0x0b => '30 s',
  2061. },
  2062. },
  2063. 21.1 => [{ # CSe5 (D300), CSe4 (D3)
  2064. Name => 'AutoBracketSet',
  2065. Condition => '$$self{Model} !~ /(D3S|D300S)\b/',
  2066. Notes => 'D3 and D300',
  2067. Mask => 0xc0,
  2068. PrintConv => {
  2069. 0x00 => 'AE & Flash',
  2070. 0x40 => 'AE Only',
  2071. 0x80 => 'Flash Only',
  2072. 0xc0 => 'WB Bracketing',
  2073. },
  2074. },{ # CSe4 (D3S) (NC for D300S)
  2075. Name => 'AutoBracketSet',
  2076. Notes => 'D3S and D300S',
  2077. Mask => 0xe0,
  2078. PrintConv => {
  2079. 0x00 => 'AE & Flash',
  2080. 0x20 => 'AE Only',
  2081. 0x40 => 'Flash Only',
  2082. 0x60 => 'WB Bracketing',
  2083. # D3S/D300S have an "ADL Bracketing" setting - PH
  2084. 0x80 => 'ADL Bracketing',
  2085. },
  2086. }],
  2087. 21.2 => [{ # CSe6 (D300), CSe5 (D3)
  2088. Name => 'AutoBracketModeM',
  2089. Condition => '$$self{Model} !~ /(D3S|D300S)\b/',
  2090. Notes => 'D3 and D300',
  2091. Mask => 0x30,
  2092. PrintConv => {
  2093. 0x00 => 'Flash/Speed',
  2094. 0x10 => 'Flash/Speed/Aperture',
  2095. 0x20 => 'Flash/Aperture',
  2096. 0x30 => 'Flash Only',
  2097. },
  2098. },{ # CSe5 (D3S)
  2099. Name => 'AutoBracketModeM',
  2100. Notes => 'D3S and D300S',
  2101. Mask => 0x18,
  2102. PrintConv => {
  2103. 0x00 => 'Flash/Speed',
  2104. 0x08 => 'Flash/Speed/Aperture',
  2105. 0x10 => 'Flash/Aperture',
  2106. 0x18 => 'Flash Only',
  2107. },
  2108. }],
  2109. 21.3 => [{ # CSe7 (D300), CSe6 (D3)
  2110. Name => 'AutoBracketOrder',
  2111. Condition => '$$self{Model} !~ /(D3S|D300S)\b/',
  2112. Notes => 'D3 and D300',
  2113. Mask => 0x08,
  2114. PrintConv => {
  2115. 0x00 => '0,-,+',
  2116. 0x08 => '-,0,+',
  2117. },
  2118. },{ # CSe6 (D3S)
  2119. Name => 'AutoBracketOrder',
  2120. Notes => 'D3S and D300S',
  2121. Mask => 0x04,
  2122. PrintConv => {
  2123. 0x00 => '0,-,+',
  2124. 0x04 => '-,0,+',
  2125. },
  2126. }],
  2127. 21.4 => { # CSe4 (D300), CSe3 (D3)
  2128. Name => 'ModelingFlash',
  2129. Mask => 0x01,
  2130. PrintConv => { 0x00 => 'On', 0x01 => 'Off' },
  2131. },
  2132. 22.1 => { # CSf9, CSf10 (D3S,D300S)
  2133. Name => 'NoMemoryCard',
  2134. Mask => 0x80,
  2135. PrintConv => {
  2136. 0x00 => 'Release Locked',
  2137. 0x80 => 'Enable Release',
  2138. },
  2139. },
  2140. 22.2 => { # CSc2
  2141. Name => 'MeteringTime',
  2142. Mask => 0x0f,
  2143. PrintConvColumns => 2,
  2144. PrintConv => {
  2145. 0x00 => '4 s',
  2146. 0x01 => '6 s',
  2147. 0x02 => '8 s',
  2148. 0x03 => '16 s',
  2149. 0x04 => '30 s',
  2150. 0x05 => '1 min',
  2151. 0x06 => '5 min',
  2152. 0x07 => '10 min',
  2153. 0x08 => '30 min',
  2154. 0x09 => 'No Limit',
  2155. },
  2156. },
  2157. 23.1 => { # CSe3
  2158. Name => 'InternalFlash',
  2159. Mask => 0xc0,
  2160. PrintConv => {
  2161. 0x00 => 'TTL',
  2162. 0x40 => 'Manual',
  2163. 0x80 => 'Repeating Flash',
  2164. 0xc0 => 'Commander Mode',
  2165. },
  2166. },
  2167. 25.1 => { #1 CSc4-d (D3S)
  2168. Name => 'ImageReviewTime',
  2169. Mask => 0xe0,
  2170. PrintConv => {
  2171. 0x00 => '4 s',
  2172. 0x20 => '10 s',
  2173. 0x40 => '20 s',
  2174. 0x60 => '1 min',
  2175. 0x80 => '5 min',
  2176. 0xa0 => '10 min',
  2177. },
  2178. },
  2179. 25.2 => { #1 CSc4-a (D3S)
  2180. Name => 'PlaybackMonitorOffTime',
  2181. Mask => 0x1c,
  2182. PrintConv => {
  2183. 0x00 => '4 s',
  2184. 0x04 => '10 s',
  2185. 0x08 => '20 s',
  2186. 0x0c => '1 min',
  2187. 0x10 => '5 min',
  2188. 0x14 => '10 min',
  2189. },
  2190. },
  2191. 26.1 => { #1 CSc4-b (D3S)
  2192. Name => 'MenuMonitorOffTime',
  2193. Mask => 0xe0,
  2194. PrintConv => {
  2195. 0x00 => '4 s',
  2196. 0x20 => '10 s',
  2197. 0x40 => '20 s',
  2198. 0x60 => '1 min',
  2199. 0x80 => '5 min',
  2200. 0xa0 => '10 min',
  2201. },
  2202. },
  2203. 26.2 => { #1 CSc4-c (D3S)
  2204. Name => 'ShootingInfoMonitorOffTime',
  2205. Mask => 0x1c,
  2206. PrintConv => {
  2207. 0x00 => '4 s',
  2208. 0x04 => '10 s',
  2209. 0x08 => '20 s',
  2210. 0x0c => '1 min',
  2211. 0x10 => '5 min',
  2212. 0x14 => '10 min',
  2213. },
  2214. },
  2215. );
  2216. # D700 custom settings (ref 2)
  2217. %Image::ExifTool::NikonCustom::SettingsD700 = (
  2218. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  2219. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  2220. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  2221. WRITABLE => 1,
  2222. FIRST_ENTRY => 0,
  2223. DATAMEMBER => [ 16.1 ],
  2224. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  2225. NOTES => 'Custom settings for the D700.',
  2226. 0.1 => { #1
  2227. Name => 'CustomSettingsBank',
  2228. Mask => 0x03,
  2229. PrintConv => {
  2230. 0 => 'A',
  2231. 1 => 'B',
  2232. 2 => 'C',
  2233. 3 => 'D',
  2234. },
  2235. },
  2236. 0.2 => { #1
  2237. Name => 'CustomSettingsAllDefault',
  2238. Notes => '"No" if any custom setting for this bank was changed from the default',
  2239. Mask => 0x80,
  2240. PrintConv => { 0x00 => 'Yes', 0x80 => 'No' },
  2241. },
  2242. 1.1 => { # CSa1
  2243. Name => 'AF-CPrioritySelection',
  2244. Mask => 0xc0,
  2245. PrintConv => {
  2246. 0x00 => 'Release',
  2247. 0x40 => 'Release + Focus',
  2248. 0x80 => 'Focus',
  2249. },
  2250. },
  2251. 1.2 => { # CSa2
  2252. Name => 'AF-SPrioritySelection',
  2253. Mask => 0x20,
  2254. PrintConv => {
  2255. 0x00 => 'Focus',
  2256. 0x20 => 'Release',
  2257. },
  2258. },
  2259. 1.3 => { # CSa8
  2260. Name => 'AFPointSelection',
  2261. Mask => 0x10,
  2262. PrintConv => {
  2263. 0x00 => '51 Points',
  2264. 0x10 => '11 Points',
  2265. },
  2266. },
  2267. 1.4 => { # CSa3
  2268. Name => 'DynamicAFArea',
  2269. Mask => 0x0c,
  2270. PrintConv => {
  2271. 0x00 => '9 Points',
  2272. 0x04 => '21 Points',
  2273. 0x08 => '51 Points',
  2274. 0x0c => '51 Points (3D-tracking)',
  2275. },
  2276. },
  2277. 2.1 => { # CSa5
  2278. Name => 'AFActivation',
  2279. Mask => 0x80,
  2280. PrintConv => {
  2281. 0x00 => 'Shutter/AF-On',
  2282. 0x80 => 'AF-On Only',
  2283. },
  2284. },
  2285. 2.2 => { # CSa7
  2286. Name => 'FocusPointWrap',
  2287. Mask => 0x08,
  2288. PrintConv => {
  2289. 0x00 => 'No Wrap',
  2290. 0x08 => 'Wrap',
  2291. },
  2292. },
  2293. 2.3 => { # CSa6
  2294. Name => 'AFPointIllumination',
  2295. Mask => 0x06,
  2296. PrintConv => {
  2297. 0x00 => 'Auto',
  2298. 0x02 => 'Off',
  2299. 0x04 => 'On',
  2300. },
  2301. },
  2302. 2.4 => { # CSa9
  2303. Name => 'AFAssist',
  2304. Mask => 0x01,
  2305. PrintConv => { 0x00 => 'On', 0x01 => 'Off' },
  2306. },
  2307. 3.1 => { # CSa4
  2308. Name => 'FocusTrackingLockOn',
  2309. Mask => 0x07,
  2310. PrintConv => {
  2311. 0x00 => '3 Normal',
  2312. 0x01 => '4',
  2313. 0x02 => '5 Long',
  2314. 0x03 => '2',
  2315. 0x04 => '1 Short',
  2316. 0x05 => 'Off',
  2317. },
  2318. },
  2319. 3.2 => { # CSa10
  2320. Name => 'AF-OnForMB-D10',
  2321. Mask => 0x70,
  2322. PrintConv => {
  2323. 0x00 => 'AF-On',
  2324. 0x10 => 'AE/AF Lock',
  2325. 0x20 => 'AE Lock Only',
  2326. 0x30 => 'AE Lock (reset on release)',
  2327. 0x40 => 'AE Lock (hold)',
  2328. 0x50 => 'AF Lock Only',
  2329. 0x60 => 'Same as FUNC Button',
  2330. },
  2331. },
  2332. 4.1 => { # CSb1
  2333. Name => 'ISOStepSize',
  2334. Mask => 0xc0,
  2335. PrintConv => {
  2336. 0x00 => '1/3 EV',
  2337. 0x40 => '1/2 EV',
  2338. 0x80 => '1 EV',
  2339. },
  2340. },
  2341. 4.2 => { # CSb2
  2342. Name => 'ExposureControlStepSize',
  2343. Mask => 0x30,
  2344. PrintConv => {
  2345. 0x00 => '1/3 EV',
  2346. 0x10 => '1/2 EV',
  2347. 0x20 => '1 EV',
  2348. },
  2349. },
  2350. 4.3 => { # CSb3
  2351. Name => 'ExposureCompStepSize',
  2352. Mask => 0x0c,
  2353. PrintConv => {
  2354. 0x00 => '1/3 EV',
  2355. 0x04 => '1/2 EV',
  2356. 0x08 => '1 EV',
  2357. },
  2358. },
  2359. 4.4 => { # CSb4
  2360. Name => 'EasyExposureCompensation',
  2361. Mask => 0x03,
  2362. PrintConv => {
  2363. 0x00 => 'Off',
  2364. 0x01 => 'On',
  2365. 0x02 => 'On (auto reset)',
  2366. },
  2367. },
  2368. 5.1 => { # CSb5
  2369. Name => 'CenterWeightedAreaSize',
  2370. Mask => 0x70,
  2371. PrintConv => {
  2372. 0x00 => '8 mm',
  2373. 0x10 => '12 mm',
  2374. 0x20 => '15 mm',
  2375. 0x30 => '20 mm',
  2376. 0x40 => 'Average',
  2377. },
  2378. },
  2379. 6.1 => { # CSb6-a
  2380. Name => 'FineTuneOptMatrixMetering',
  2381. Mask => 0xf0,
  2382. ValueConv => '($val > 0x70 ? $val - 0x100 : $val) / 0x60',
  2383. ValueConvInv => '(int($val*6+($val>0?0.5:-0.5))<<4) & 0xf0',
  2384. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  2385. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  2386. },
  2387. 6.2 => { # CSb6-c
  2388. Name => 'FineTuneOptSpotMetering',
  2389. Mask => 0x0f,
  2390. ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
  2391. ValueConvInv => 'int($val*6+($val>0?0.5:-0.5)) & 0x0f',
  2392. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  2393. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  2394. },
  2395. 7.1 => { # CSc1
  2396. Name => 'ShutterReleaseButtonAE-L',
  2397. Mask => 0x80,
  2398. PrintConv => { 0x00 => 'Off', 0x80 => 'On' },
  2399. },
  2400. 7.2 => { # CSc3
  2401. Name => 'SelfTimerTime',
  2402. Mask => 0x30,
  2403. PrintConv => {
  2404. 0x00 => '2 s',
  2405. 0x10 => '5 s',
  2406. 0x20 => '10 s',
  2407. 0x30 => '20 s',
  2408. },
  2409. },
  2410. 7.3 => { # CSc2
  2411. Name => 'MeteringTime',
  2412. Mask => 0x0f,
  2413. PrintConvColumns => 2,
  2414. PrintConv => {
  2415. 0x00 => '4 s',
  2416. 0x01 => '6 s',
  2417. 0x02 => '8 s',
  2418. 0x03 => '16 s',
  2419. 0x04 => '30 s',
  2420. 0x05 => '1 min',
  2421. 0x06 => '5 min',
  2422. 0x07 => '10 min',
  2423. 0x08 => '30 min',
  2424. 0x09 => 'No Limit',
  2425. },
  2426. },
  2427. 8.1 => { # CSc4-a
  2428. Name => 'PlaybackMonitorOffTime',
  2429. Mask => 0x38,
  2430. PrintConv => {
  2431. 0x00 => '4 s',
  2432. 0x08 => '10 s',
  2433. 0x10 => '20 s',
  2434. 0x18 => '1 min',
  2435. 0x20 => '5 min',
  2436. 0x28 => '10 min',
  2437. },
  2438. },
  2439. 8.2 => { # CSc4-b
  2440. Name => 'MenuMonitorOffTime',
  2441. Mask => 0x07,
  2442. PrintConv => {
  2443. 0x00 => '4 s',
  2444. 0x01 => '10 s',
  2445. 0x02 => '20 s',
  2446. 0x03 => '1 min',
  2447. 0x04 => '5 min',
  2448. 0x05 => '10 min',
  2449. },
  2450. },
  2451. 9.1 => { # CSc4-c
  2452. Name => 'ShootingInfoMonitorOffTime',
  2453. Mask => 0x38,
  2454. PrintConv => {
  2455. 0x00 => '4 s',
  2456. 0x08 => '10 s',
  2457. 0x10 => '20 s',
  2458. 0x18 => '1 min',
  2459. 0x20 => '5 min',
  2460. 0x28 => '10 min',
  2461. },
  2462. },
  2463. 9.2 => { # CSc4-d
  2464. Name => 'ImageReviewTime',
  2465. Mask => 0x07,
  2466. PrintConv => {
  2467. 0x00 => '4 s',
  2468. 0x01 => '10 s',
  2469. 0x02 => '20 s',
  2470. 0x03 => '1 min',
  2471. 0x04 => '5 min',
  2472. 0x05 => '10 min',
  2473. },
  2474. },
  2475. 10.1 => { # CSd1
  2476. Name => 'Beep',
  2477. Mask => 0xc0,
  2478. PrintConv => {
  2479. 0x00 => 'High',
  2480. 0x40 => 'Low',
  2481. 0x80 => 'Off',
  2482. },
  2483. },
  2484. 10.2 => { # CSd7
  2485. Name => 'ShootingInfoDisplay',
  2486. Mask => 0x30,
  2487. PrintConv => {
  2488. 0x00 => 'Auto', #JD (D300)
  2489. 0x10 => 'Auto', #1 (D3)
  2490. 0x20 => 'Manual (dark on light)',
  2491. 0x30 => 'Manual (light on dark)',
  2492. },
  2493. },
  2494. 10.3 => { # CSd8
  2495. Name => 'LCDIllumination',
  2496. Mask => 0x08,
  2497. PrintConv => { 0x00 => 'Off', 0x08 => 'On' },
  2498. },
  2499. 10.4 => { # CSd9
  2500. Name => 'ExposureDelayMode',
  2501. Mask => 0x04,
  2502. PrintConv => { 0x00 => 'Off', 0x04 => 'On' },
  2503. },
  2504. 10.5 => { # CSd2
  2505. Name => 'GridDisplay',
  2506. Mask => 0x02,
  2507. PrintConv => { 0x00 => 'Off', 0x02 => 'On' },
  2508. },
  2509. 11.1 => { # CSd6
  2510. Name => 'FileNumberSequence',
  2511. Mask => 0x40,
  2512. PrintConv => { 0x00 => 'On', 0x40 => 'Off' },
  2513. },
  2514. 11.2 => { # CSd4
  2515. Name => 'CLModeShootingSpeed',
  2516. Mask => 0x07,
  2517. PrintConv => '"$val fps"',
  2518. PrintConvInv => '$val=~s/\s*fps//i; $val',
  2519. },
  2520. 12 => { # CSd5
  2521. Name => 'MaxContinuousRelease',
  2522. # values: 1-100
  2523. },
  2524. 13.1 => { # CSd3
  2525. Name => 'ScreenTips',
  2526. Mask => 0x08,
  2527. PrintConv => { 0x08 => 'On', 0x00 => 'Off' },
  2528. },
  2529. 13.2 => { # CSd11
  2530. Name => 'BatteryOrder',
  2531. Mask => 0x04,
  2532. PrintConv => {
  2533. 0x00 => 'MB-D10 First',
  2534. 0x04 => 'Camera Battery First',
  2535. },
  2536. },
  2537. 13.3 => { # CSd10
  2538. Name => 'MB-D10BatteryType',
  2539. Mask => 0x03,
  2540. PrintConv => {
  2541. 0x00 => 'LR6 (AA alkaline)',
  2542. 0x01 => 'HR6 (AA Ni-MH)',
  2543. 0x02 => 'FR6 (AA lithium)',
  2544. 0x03 => 'ZR6 (AA Ni-Mn)',
  2545. },
  2546. },
  2547. 15.1 => { # CSe1
  2548. Name => 'FlashSyncSpeed',
  2549. Mask => 0xf0,
  2550. PrintConv => {
  2551. 0x00 => '1/320 s (auto FP)',
  2552. 0x10 => '1/250 s (auto FP)',
  2553. 0x20 => '1/250 s',
  2554. 0x30 => '1/200 s',
  2555. 0x40 => '1/160 s',
  2556. 0x50 => '1/125 s',
  2557. 0x60 => '1/100 s',
  2558. 0x70 => '1/80 s',
  2559. 0x80 => '1/60 s',
  2560. },
  2561. },
  2562. 15.2 => { # CSe2
  2563. Name => 'FlashShutterSpeed',
  2564. Mask => 0x0f,
  2565. PrintConvColumns => 2,
  2566. PrintConv => {
  2567. 0x00 => '1/60 s',
  2568. 0x01 => '1/30 s',
  2569. 0x02 => '1/15 s',
  2570. 0x03 => '1/8 s',
  2571. 0x04 => '1/4 s',
  2572. 0x05 => '1/2 s',
  2573. 0x06 => '1 s',
  2574. 0x07 => '2 s',
  2575. 0x08 => '4 s',
  2576. 0x09 => '8 s',
  2577. 0x0a => '15 s',
  2578. 0x0b => '30 s',
  2579. },
  2580. },
  2581. 16.1 => { # CSe3
  2582. Name => 'FlashControlBuilt-in',
  2583. # Note If set the Manual, Repeating Flash, Commander Mode
  2584. # does not decode the detail settings.
  2585. Mask => 0xc0,
  2586. RawConv => '$$self{FlashControlBuiltin} = $val',
  2587. PrintConv => {
  2588. 0x00 => 'TTL',
  2589. 0x40 => 'Manual',
  2590. 0x80 => 'Repeating Flash',
  2591. 0xc0 => 'Commander Mode',
  2592. },
  2593. },
  2594. 16.2 => { # CSe3-b
  2595. Name => 'ManualFlashOutput',
  2596. Condition => '$$self{FlashControlBuiltin} == 0x40',
  2597. Mask => 0x1f,
  2598. ValueConv => '2 ** (-$val/3)',
  2599. ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
  2600. PrintConv => q{
  2601. return 'Full' if $val > 0.99;
  2602. Image::ExifTool::Exif::PrintExposureTime($val);
  2603. },
  2604. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  2605. },
  2606. 17.1 => { # CSe3-ca
  2607. Name => 'RepeatingFlashOutput',
  2608. Condition => '$$self{FlashControlBuiltin} == 0x80',
  2609. Mask => 0x70,
  2610. ValueConv => '2 ** (-($val>>4)-2)',
  2611. ValueConvInv => '$val > 0 ? int(-log($val)/log(2)-2+0.5)<<4 : 0',
  2612. PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
  2613. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  2614. },
  2615. 17.2 => { # CSe3-cb
  2616. Name => 'RepeatingFlashCount',
  2617. Condition => '$$self{FlashControlBuiltin} == 0x80',
  2618. Mask => 0x0f,
  2619. ValueConv => '$val < 10 ? $val + 1 : 5 * ($val - 7)',
  2620. ValueConvInv => '$val <= 10 ? $val - 1 : $val / 5 + 7',
  2621. },
  2622. 18.1 => { # CSe3-cc (NC)
  2623. Name => 'RepeatingFlashRate',
  2624. Condition => '$$self{FlashControlBuiltin} == 0x80',
  2625. Mask => 0xf0,
  2626. ValueConv => 'my $v=($val>>4); $v < 10 ? $v + 1 : 10 * ($v - 8)',
  2627. ValueConvInv => 'int(($val <= 10 ? $val - 1 : $val / 10 + 8) + 0.5) << 4',
  2628. PrintConv => '"$val Hz"',
  2629. PrintConvInv => '$val=~/(\d+)/; $1 || 0',
  2630. },
  2631. 18.2 => { # CSe3-dd
  2632. Name => 'CommanderInternalTTLChannel',
  2633. Condition => '$$self{FlashControlBuiltin} == 0xc0',
  2634. Mask => 0x03,
  2635. PrintConv => {
  2636. 0x00 => '1 ch',
  2637. 0x01 => '2 ch',
  2638. 0x02 => '3 ch',
  2639. 0x03 => '4 ch',
  2640. },
  2641. },
  2642. 20.1 => { # CSe3-da
  2643. Name => 'CommanderInternalTTLCompBuiltin',
  2644. Condition => '$$self{FlashControlBuiltin} == 0xc0',
  2645. Mask => 0x1f,
  2646. ValueConv => '($val - 9) / 3',
  2647. ValueConvInv => '$val * 3 + 9',
  2648. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  2649. PrintConvInv => '$val',
  2650. },
  2651. 21.1 => { # CSe3-db
  2652. Name => 'CommanderInternalTTLCompGroupA',
  2653. Condition => '$$self{FlashControlBuiltin} == 0xc0',
  2654. Mask => 0x1f,
  2655. ValueConv => '($val - 9) / 3',
  2656. ValueConvInv => '$val * 3 + 9',
  2657. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  2658. PrintConvInv => '$val',
  2659. },
  2660. 22.1 => { # CSe3-dc
  2661. Name => 'CommanderInternalTTLCompGroupB',
  2662. Condition => '$$self{FlashControlBuiltin} == 0xc0',
  2663. Mask => 0x1f,
  2664. ValueConv => '($val - 9) / 3',
  2665. ValueConvInv => '$val * 3 + 9',
  2666. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  2667. PrintConvInv => '$val',
  2668. },
  2669. 26.1 => { # CSe5
  2670. Name => 'AutoBracketSet',
  2671. Mask => 0xc0,
  2672. PrintConv => {
  2673. 0x00 => 'AE & Flash',
  2674. 0x40 => 'AE Only',
  2675. 0x80 => 'Flash Only',
  2676. 0xc0 => 'WB Bracketing',
  2677. },
  2678. },
  2679. 26.2 => { # CSe6
  2680. Name => 'AutoBracketModeM',
  2681. Mask => 0x30,
  2682. PrintConv => {
  2683. 0x00 => 'Flash/Speed',
  2684. 0x10 => 'Flash/Speed/Aperture',
  2685. 0x20 => 'Flash/Aperture',
  2686. 0x30 => 'Flash Only',
  2687. },
  2688. },
  2689. 26.3 => { # CSe7
  2690. Name => 'AutoBracketOrder',
  2691. Mask => 0x08,
  2692. PrintConv => {
  2693. 0x00 => '0,-,+',
  2694. 0x08 => '-,0,+',
  2695. },
  2696. },
  2697. 26.4 => { # CSe4
  2698. Name => 'ModelingFlash',
  2699. Mask => 0x01,
  2700. PrintConv => { 0x00 => 'On', 0x01 => 'Off' },
  2701. },
  2702. 27.1 => { # CSf2-a
  2703. Name => 'MultiSelectorShootMode',
  2704. Mask => 0xc0,
  2705. PrintConv => {
  2706. 0x00 => 'Select Center Focus Point',
  2707. 0x40 => 'Highlight Active Focus Point',
  2708. 0x80 => 'Not Used',
  2709. },
  2710. },
  2711. 27.2 => { # CSf2-b
  2712. Name => 'MultiSelectorPlaybackMode',
  2713. Mask => 0x30,
  2714. PrintConv => {
  2715. 0x00 => 'Thumbnail On/Off',
  2716. 0x10 => 'View Histograms',
  2717. 0x20 => 'Zoom On/Off',
  2718. 0x30 => 'Choose Folder',
  2719. },
  2720. },
  2721. 27.3 => { # CSf2-b2
  2722. Name => 'InitialZoomSetting',
  2723. Mask => 0x0c,
  2724. PrintConv => { #1
  2725. 0x00 => 'Low Magnification',
  2726. 0x04 => 'Medium Magnification',
  2727. 0x08 => 'High Magnification',
  2728. },
  2729. },
  2730. 27.4 => { # CSf3
  2731. Name => 'MultiSelector',
  2732. Mask => 0x01,
  2733. PrintConv => {
  2734. 0x00 => 'Do Nothing',
  2735. 0x01 => 'Reset Meter-off Delay',
  2736. },
  2737. },
  2738. 28.1 => { # CSf5-a
  2739. Name => 'FuncButton',
  2740. Mask => 0xf8,
  2741. PrintConv => {
  2742. 0x00 => 'None',
  2743. 0x08 => 'Preview',
  2744. 0x10 => 'FV Lock',
  2745. 0x18 => 'AE/AF Lock',
  2746. 0x20 => 'AE Lock Only',
  2747. 0x28 => 'AE Lock (reset on release)',
  2748. 0x30 => 'AE Lock (hold)',
  2749. 0x38 => 'AF Lock Only',
  2750. # 0x40 not used
  2751. 0x48 => 'Flash Off',
  2752. 0x50 => 'Bracketing Burst',
  2753. 0x58 => 'Matrix Metering',
  2754. 0x60 => 'Center-weighted Metering',
  2755. 0x68 => 'Spot Metering',
  2756. 0x70 => 'My Menu Top',
  2757. 0x78 => 'Live View',
  2758. 0x80 => '+ NEF (RAW)',
  2759. 0x88 => 'Virtual Horizon',
  2760. },
  2761. },
  2762. 29.1 => { # CSf6-a
  2763. Name => 'PreviewButton',
  2764. Mask => 0xf8,
  2765. PrintConv => {
  2766. 0x00 => 'None',
  2767. 0x08 => 'Preview',
  2768. 0x10 => 'FV Lock',
  2769. 0x18 => 'AE/AF Lock',
  2770. 0x20 => 'AE Lock Only',
  2771. 0x28 => 'AE Lock (reset on release)',
  2772. 0x30 => 'AE Lock (hold)',
  2773. 0x38 => 'AF Lock Only',
  2774. 0x40 => 'AF-ON',
  2775. 0x48 => 'Flash Off',
  2776. 0x50 => 'Bracketing Burst',
  2777. 0x58 => 'Matrix Metering',
  2778. 0x60 => 'Center-weighted Metering',
  2779. 0x68 => 'Spot Metering',
  2780. 0x70 => 'My Menu Top',
  2781. 0x78 => 'Live View',
  2782. 0x80 => '+ NEF (RAW)',
  2783. 0x88 => 'Virtual Horizon',
  2784. },
  2785. },
  2786. 30.1 => { # CSf7-a
  2787. Name => 'AELockButton',
  2788. Notes => 'D300',
  2789. Mask => 0xf8,
  2790. PrintConv => {
  2791. 0x00 => 'None',
  2792. 0x08 => 'Preview',
  2793. 0x10 => 'FV Lock',
  2794. 0x18 => 'AE/AF Lock',
  2795. 0x20 => 'AE Lock Only',
  2796. 0x28 => 'AE Lock (reset on release)',
  2797. 0x30 => 'AE Lock (hold)',
  2798. 0x38 => 'AF Lock Only',
  2799. 0x40 => 'AF-ON',
  2800. 0x48 => 'Flash Off',
  2801. 0x50 => 'Bracketing Burst',
  2802. 0x58 => 'Matrix Metering',
  2803. 0x60 => 'Center-weighted Metering',
  2804. 0x68 => 'Spot Metering',
  2805. 0x70 => 'My Menu Top',
  2806. 0x78 => 'Live View',
  2807. 0x80 => '+ NEF (RAW)',
  2808. 0x88 => 'Virtual Horizon',
  2809. },
  2810. },
  2811. 31.1 => { # CSf5-b
  2812. Name => 'FuncButtonPlusDials',
  2813. Mask => 0x70,
  2814. PrintConv => {
  2815. 0x00 => 'None',
  2816. 0x10 => 'Choose Image Area',
  2817. 0x20 => 'One Step Speed/Aperture',
  2818. 0x30 => 'Choose Non-CPU Lens Number',
  2819. # n/a 0x40 => 'Focus Point Selection',
  2820. 0x50 => 'Auto bracketing',
  2821. 0x60 => 'Dynamic AF Area',
  2822. 0x70 => 'Shutter speed & Aperture lock',
  2823. },
  2824. },
  2825. 31.2 => { # CSf6-b
  2826. Name => 'PreviewButtonPlusDials',
  2827. Mask => 0x07,
  2828. PrintConv => {
  2829. 0x00 => 'None',
  2830. 0x01 => 'Choose Image Area',
  2831. 0x02 => 'One Step Speed/Aperture',
  2832. 0x03 => 'Choose Non-CPU Lens Number',
  2833. # n/a 0x04 => 'Focus Point Selection',
  2834. 0x05 => 'Auto bracketing',
  2835. 0x06 => 'Dynamic AF Area',
  2836. 0x07 => 'Shutter speed & Aperture lock',
  2837. },
  2838. },
  2839. 32.1 => { # CSf7-b
  2840. Name => 'AELockButtonPlusDials',
  2841. Mask => 0x70,
  2842. PrintConv => {
  2843. 0x00 => 'None',
  2844. 0x10 => 'Choose Image Area',
  2845. 0x20 => 'One Step Speed/Aperture',
  2846. 0x30 => 'Choose Non-CPU Lens Number',
  2847. # n/a 0x40 => 'Focus Point Selection',
  2848. 0x50 => 'Auto bracketing',
  2849. 0x60 => 'Dynamic AF Area',
  2850. 0x70 => 'Shutter speed & Aperture lock',
  2851. },
  2852. },
  2853. 33.1 => { # CSf9-a
  2854. Name => 'CommandDialsReverseRotation',
  2855. Mask => 0x80,
  2856. PrintConv => { 0x00 => 'No', 0x80 => 'Yes' },
  2857. },
  2858. 33.2 => { # CSf9-b
  2859. Name => 'CommandDialsChangeMainSub',
  2860. Mask => 0x40,
  2861. PrintConv => { 0x00 => 'Off', 0x40 => 'On' },
  2862. },
  2863. 33.3 => { # CSf9-c
  2864. Name => 'CommandDialsApertureSetting',
  2865. Mask => 0x20,
  2866. PrintConv => {
  2867. 0x00 => 'Sub-command Dial',
  2868. 0x20 => 'Aperture Ring',
  2869. },
  2870. },
  2871. 33.4 => { # CSf9-d
  2872. Name => 'CommandDialsMenuAndPlayback',
  2873. Mask => 0x10,
  2874. PrintConv => { 0x00 => 'Off', 0x10 => 'On' },
  2875. },
  2876. 33.5 => { # CSf12
  2877. Name => 'ReverseIndicators',
  2878. Mask => 0x08,
  2879. PrintConv => {
  2880. 0x00 => '+ 0 -',
  2881. 0x08 => '- 0 +',
  2882. },
  2883. },
  2884. 33.6 => { # CSf4
  2885. Name => 'PhotoInfoPlayback',
  2886. Mask => 0x04,
  2887. PrintConv => { 0x00 => 'Off', 0x04 => 'On' },
  2888. },
  2889. 33.7 => { # CSf11
  2890. Name => 'NoMemoryCard',
  2891. Mask => 0x02,
  2892. PrintConv => {
  2893. 0x00 => 'Release Locked',
  2894. 0x02 => 'Enable Release',
  2895. },
  2896. },
  2897. 33.8 => { # CSf10
  2898. Name => 'ReleaseButtonToUseDial',
  2899. Mask => 0x01,
  2900. PrintConv => { 0x00 => 'No', 0x01 => 'Yes' },
  2901. },
  2902. );
  2903. # D800 custom settings (ref PH)
  2904. %Image::ExifTool::NikonCustom::SettingsD800 = (
  2905. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  2906. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  2907. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  2908. WRITABLE => 1,
  2909. FIRST_ENTRY => 0,
  2910. DATAMEMBER => [ 23.1 ],
  2911. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  2912. NOTES => 'Custom settings for the D800 and D800E.',
  2913. 12.1 => { # CSe5
  2914. Name => 'AutoBracketingSet',
  2915. Mask => 0xe0, #(NC)
  2916. PrintConv => {
  2917. 0x00 => 'AE & Flash', # default
  2918. 0x20 => 'AE Only', #(NC)
  2919. 0x40 => 'Flash Only',
  2920. 0x60 => 'WB Bracketing', #(NC)
  2921. 0x80 => 'Active D-Lighting', #(NC)
  2922. },
  2923. },
  2924. 12.2 => { # CSe7
  2925. Name => 'AutoBracketOrder',
  2926. Mask => 0x10,
  2927. PrintConv => {
  2928. 0x00 => '0,-,+',
  2929. 0x10 => '-,0,+',
  2930. },
  2931. },
  2932. 12.3 => { # CSe6
  2933. Name => 'AutoBracketingMode',
  2934. Mask => 0x0c,
  2935. PrintConv => {
  2936. 0x00 => 'Flash/Speed',
  2937. 0x04 => 'Flash/Speed/Aperture',
  2938. 0x08 => 'Flash/Aperture',
  2939. 0x0c => 'Flash Only',
  2940. },
  2941. },
  2942. # 21 - 100 (MaxContinuousRelease?)
  2943. 22.1 => { # CSe1
  2944. Name => 'FlashSyncSpeed',
  2945. Mask => 0xf0,
  2946. PrintConv => {
  2947. 0x00 => '1/320 s (auto FP)',
  2948. 0x10 => '1/250 s (auto FP)',
  2949. 0x20 => '1/250 s',
  2950. 0x30 => '1/200 s',
  2951. 0x40 => '1/160 s',
  2952. 0x50 => '1/125 s',
  2953. 0x60 => '1/100 s',
  2954. 0x70 => '1/80 s',
  2955. 0x80 => '1/60 s',
  2956. },
  2957. },
  2958. 22.2 => { # CSe2
  2959. Name => 'FlashShutterSpeed',
  2960. Mask => 0x0f,
  2961. PrintConvColumns => 2,
  2962. PrintConv => {
  2963. 0x00 => '1/60 s',
  2964. 0x01 => '1/30 s',
  2965. 0x02 => '1/15 s',
  2966. 0x03 => '1/8 s',
  2967. 0x04 => '1/4 s',
  2968. 0x05 => '1/2 s',
  2969. 0x06 => '1 s',
  2970. 0x07 => '2 s',
  2971. 0x08 => '4 s',
  2972. 0x09 => '8 s',
  2973. 0x0a => '15 s',
  2974. 0x0b => '30 s',
  2975. },
  2976. },
  2977. 23.1 => { # CSe3
  2978. Name => 'FlashControlBuilt-in',
  2979. Mask => 0xc0,
  2980. RawConv => '$$self{FlashControlBuiltin} = $val',
  2981. PrintConv => {
  2982. 0x00 => 'TTL',
  2983. 0x40 => 'Manual',
  2984. 0x80 => 'Repeating Flash',
  2985. 0xc0 => 'Commander Mode',
  2986. },
  2987. },
  2988. 23.2 => { # CSe3-b
  2989. Name => 'ManualFlashOutput',
  2990. Condition => '$$self{FlashControlBuiltin} == 0x40',
  2991. Mask => 0x1f,
  2992. ValueConv => '2 ** (-$val/3)',
  2993. ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
  2994. PrintConv => q{
  2995. return 'Full' if $val > 0.99;
  2996. Image::ExifTool::Exif::PrintExposureTime($val);
  2997. },
  2998. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  2999. },
  3000. 24.1 => { # CSe3-ca
  3001. Name => 'RepeatingFlashOutput',
  3002. Condition => '$$self{FlashControlBuiltin} == 0x80',
  3003. Mask => 0x70,
  3004. ValueConv => '2 ** (-($val>>4)-2)',
  3005. ValueConvInv => '$val > 0 ? int(-log($val)/log(2)-2+0.5)<<4 : 0',
  3006. PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
  3007. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  3008. },
  3009. 24.2 => { # CSe3-cb
  3010. Name => 'RepeatingFlashCount',
  3011. Condition => '$$self{FlashControlBuiltin} == 0x80',
  3012. Mask => 0x0f,
  3013. ValueConv => '$val < 10 ? $val + 1 : 5 * ($val - 7)',
  3014. ValueConvInv => '$val <= 10 ? $val - 1 : $val / 5 + 7',
  3015. },
  3016. 25.1 => { # CSe3-cc
  3017. Name => 'RepeatingFlashRate',
  3018. Condition => '$$self{FlashControlBuiltin} == 0x80',
  3019. Mask => 0xf0,
  3020. ValueConv => 'my $v=($val>>4); $v < 10 ? $v + 1 : 10 * ($v - 8)',
  3021. ValueConvInv => 'int(($val <= 10 ? $val - 1 : $val / 10 + 8) + 0.5) << 4',
  3022. PrintConv => '"$val Hz"',
  3023. PrintConvInv => '$val=~/(\d+)/; $1 || 0',
  3024. },
  3025. 25.2 => { # CSe3
  3026. Name => 'CommanderChannel',
  3027. Mask => 0x03,
  3028. ValueConv => '$val + 1',
  3029. ValueConvInv => '$val - 1',
  3030. },
  3031. 27.1 => { # CSe3
  3032. Name => 'CommanderInternalFlash',
  3033. Mask => 0xc0,
  3034. PrintConv => {
  3035. 0x00 => 'TTL',
  3036. 0x40 => 'Manual',
  3037. 0x80 => 'Off',
  3038. },
  3039. },
  3040. 27.2 => { # CSe3
  3041. Name => 'CommanderInternalManualOutput',
  3042. Mask => 0x1f,
  3043. ValueConv => '2 ** (-$val/3)',
  3044. ValueConvInv => '$val > 0 ? int(-log($val)/log(2) * 3 + 0.5): 0',
  3045. PrintConv => q{
  3046. return 'Full' if $val > 0.99;
  3047. Image::ExifTool::Exif::PrintExposureTime($val);
  3048. },
  3049. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  3050. },
  3051. 28.1 => { # CSe3
  3052. Name => 'CommanderGroupAMode',
  3053. Mask => 0xc0,
  3054. PrintConv => {
  3055. 0x00 => 'TTL',
  3056. 0x40 => 'Auto Aperture',
  3057. 0x80 => 'Manual',
  3058. 0xc0 => 'Off',
  3059. },
  3060. },
  3061. 28.2 => { # CSe3
  3062. Name => 'CommanderGroupAManualOutput',
  3063. Mask => 0x1f,
  3064. ValueConv => '2 ** (-$val/3)',
  3065. ValueConvInv => '$val > 0 ? int(-log($val)/log(2) * 3 + 0.5): 0',
  3066. PrintConv => q{
  3067. return 'Full' if $val > 0.99;
  3068. Image::ExifTool::Exif::PrintExposureTime($val);
  3069. },
  3070. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  3071. },
  3072. 29.1 => { # CSe3
  3073. Name => 'CommanderGroupBMode',
  3074. Mask => 0xc0,
  3075. PrintConv => {
  3076. 0x00 => 'TTL',
  3077. 0x40 => 'Auto Aperture',
  3078. 0x80 => 'Manual',
  3079. 0xc0 => 'Off',
  3080. },
  3081. },
  3082. 29.2 => { # CSe3
  3083. Name => 'CommanderGroupBManualOutput',
  3084. Mask => 0x1f,
  3085. ValueConv => '2 ** (-$val/3)',
  3086. ValueConvInv => '$val > 0 ? int(-log($val)/log(2) * 3 + 0.5): 0',
  3087. PrintConv => q{
  3088. return 'Full' if $val > 0.99;
  3089. Image::ExifTool::Exif::PrintExposureTime($val);
  3090. },
  3091. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  3092. },
  3093. 30.1 => { # CSe4
  3094. Name => 'ModelingFlash',
  3095. Mask => 0x20,
  3096. PrintConv => { 0x00 => 'On', 0x20 => 'Off' },
  3097. },
  3098. 30.2 => { # CSe3
  3099. Name => 'CommanderInternalTTLComp',
  3100. Mask => 0x1f,
  3101. ValueConv => '($val - 9) / 3',
  3102. ValueConvInv => '$val * 3 + 9',
  3103. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  3104. PrintConvInv => '$val',
  3105. },
  3106. 31.1 => { # CSe3
  3107. Name => 'CommanderGroupA_TTL-AAComp',
  3108. Mask => 0x1f,
  3109. ValueConv => '($val - 9) / 3',
  3110. ValueConvInv => '$val * 3 + 9',
  3111. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  3112. PrintConvInv => '$val',
  3113. },
  3114. 32.1 => { # CSe3
  3115. Name => 'CommanderGroupB_TTL-AAComp',
  3116. Mask => 0x1f,
  3117. ValueConv => '($val - 9) / 3',
  3118. ValueConvInv => '$val * 3 + 9',
  3119. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  3120. PrintConvInv => '$val',
  3121. },
  3122. # 47 - related to flash
  3123. );
  3124. # D810 custom settings (ref 1)
  3125. %Image::ExifTool::NikonCustom::SettingsD810 = (
  3126. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  3127. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  3128. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  3129. WRITABLE => 1,
  3130. FIRST_ENTRY => 0,
  3131. DATAMEMBER => [ 24.1 ],
  3132. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  3133. NOTES => 'Custom settings for the D810',
  3134. 0.1 => { # CSf1
  3135. Name => 'LightSwitch',
  3136. Mask => 0x08,
  3137. PrintConv => {
  3138. 0x00 => 'LCD Backlight',
  3139. 0x08 => 'LCD Backlight and Shooting Information',
  3140. },
  3141. },
  3142. 0.2 => {
  3143. Name => 'CustomSettingsBank',
  3144. Mask => 0x03,
  3145. PrintConv => {
  3146. 0 => 'A',
  3147. 1 => 'B',
  3148. 2 => 'C',
  3149. 3 => 'D',
  3150. },
  3151. },
  3152. 1.1 => { #CSa1
  3153. Name => 'AF-CPrioritySelection',
  3154. Mask => 0xc0,
  3155. PrintConv => {
  3156. 0x00 => 'Release',
  3157. 0x40 => 'Release + Focus',
  3158. 0x80 => 'Focus',
  3159. },
  3160. },
  3161. 1.2 => { # CSa2
  3162. Name => 'AF-SPrioritySelection',
  3163. Mask => 0x20,
  3164. PrintConv => {
  3165. 0x00 => 'Focus',
  3166. 0x20 => 'Release',
  3167. },
  3168. },
  3169. 1.3 => { # CSa7
  3170. Name => 'AFPointSelection',
  3171. Mask => 0x10,
  3172. PrintConv => {
  3173. 0x00 => '51 Points',
  3174. 0x10 => '11 Points',
  3175. },
  3176. },
  3177. 1.4 => { # CSa3
  3178. Name => 'FocusTrackingLockOn',
  3179. Mask => 0x07,
  3180. PrintConv => {
  3181. 0x00 => 'Off',
  3182. 0x01 => '1 (Short)',
  3183. 0x02 => '2',
  3184. 0x03 => '3 (Normal)',
  3185. 0x04 => '4',
  3186. 0x05 => '5 (Long)',
  3187. },
  3188. },
  3189. 2.1 => { # CSa4
  3190. Name => 'AFActivation',
  3191. Mask => 0x80,
  3192. PrintConv => {
  3193. 0x00 => 'Shutter/AF-On',
  3194. 0x80 => 'AF-On Only',
  3195. },
  3196. },
  3197. 2.2 => { # CSa7
  3198. Name => 'FocusPointWrap',
  3199. Mask => 0x08,
  3200. PrintConv => {
  3201. 0x00 => 'No Wrap',
  3202. 0x08 => 'Wrap',
  3203. },
  3204. },
  3205. 2.3 => { # CSa6
  3206. Name => 'AFPointBrightness',
  3207. Mask => 0x06,
  3208. PrintConv => {
  3209. 0x00 => 'Auto',
  3210. 0x02 => 'On',
  3211. 0x04 => 'Off',
  3212. },
  3213. },
  3214. 2.4 => { # CSa10
  3215. Name => 'AFAssist',
  3216. Mask => 0x01,
  3217. PrintConv => {
  3218. 0x00 => 'On',
  3219. 0x01 => 'Off',
  3220. },
  3221. },
  3222. 3.1 => { # CSd13
  3223. Name => 'BatteryOrder',
  3224. Mask => 0x40,
  3225. PrintConv => {
  3226. 0x00 => 'MB-D12 First',
  3227. 0x40 => 'Camera Battery First',
  3228. },
  3229. },
  3230. 3.2 => { # CSd12
  3231. Name => 'MB-D12BatteryType',
  3232. Mask => 0x03,
  3233. PrintConv => {
  3234. 0x00 => 'LR6 (AA alkaline)',
  3235. 0x01 => 'HR6 (AA Ni-MH)',
  3236. 0x02 => 'FR6 (AA lithium)',
  3237. },
  3238. },
  3239. 4.1 => { # CSd1-b
  3240. Name => 'Pitch',
  3241. Mask => 0x40,
  3242. PrintConv => { 0x00 => 'High', 0x40 => 'Low' },
  3243. },
  3244. 4.2 => { # CSf11
  3245. Name => 'NoMemoryCard',
  3246. Mask => 0x20,
  3247. PrintConv => {
  3248. 0x00 => 'Release Locked',
  3249. 0x20 => 'Enable Release',
  3250. },
  3251. },
  3252. 4.3 => { # CSd8
  3253. Name => 'ISODisplay',
  3254. Mask => 0x0c,
  3255. PrintConv => {
  3256. 0x00 => 'Show ISO/Easy ISO',
  3257. 0x04 => 'Show ISO Sensitivity',
  3258. 0x0c => 'Show Frame Count',
  3259. },
  3260. },
  3261. 4.4 => { # CSd7
  3262. Name => 'GridDisplay',
  3263. Mask => 0x02,
  3264. PrintConv => { 0x00 => 'On', 0x02 => 'Off' },
  3265. },
  3266. 5.1 => { # CSd10
  3267. Name => 'ShootingInfoDisplay',
  3268. Mask => 0xc0,
  3269. PrintConv => {
  3270. 0x00 => 'Not Set', # observed on a new camera prior to applying a setting for the first time
  3271. 0x40 => 'Auto',
  3272. 0x80 => 'Manual (dark on light)',
  3273. 0xc0 => 'Manual (light on dark)',
  3274. },
  3275. },
  3276. 5.2 => { # CSd11
  3277. Name => 'LCDIllumination',
  3278. Mask => 0x20,
  3279. PrintConv => { 0x00 => 'Off', 0x20 => 'On' },
  3280. },
  3281. 5.3 => { # CSd5
  3282. Name => 'ElectronicFront-CurtainShutter',
  3283. Mask => 0x08,
  3284. PrintConv => { 0x00 => 'Off', 0x08 => 'On' },
  3285. },
  3286. 5.4 => { # CSd9
  3287. Name => 'ScreenTips',
  3288. Mask => 0x04,
  3289. PrintConv => { 0x00 => 'Off', 0x04 => 'On' },
  3290. },
  3291. 5.5 => { # CSd1-a
  3292. Name => 'Beep',
  3293. Mask => 0x03,
  3294. PrintConv => {
  3295. 0x00 => 'Off',
  3296. 0x01 => 'Low',
  3297. 0x02 => 'Medium',
  3298. 0x03 => 'High',
  3299. },
  3300. },
  3301. 6.1 => { # CSf12
  3302. Name => 'ReverseIndicators',
  3303. Mask => 0x80,
  3304. PrintConv => {
  3305. 0x00 => '+ 0 -',
  3306. 0x80 => '- 0 +',
  3307. },
  3308. },
  3309. 6.2 => { # CSf9-a
  3310. Name => 'CommandDialsReverseRotation',
  3311. Mask => 0x18,
  3312. PrintConv => {
  3313. 0x00 => 'No',
  3314. 0x08 => 'Shutter Speed & Aperture',
  3315. 0x10 => 'Exposure Compensation',
  3316. 0x18 => 'Exposure Compensation, Shutter Speed & Aperture',
  3317. },
  3318. },
  3319. 6.3 => { # CSb4
  3320. Name => 'EasyExposureCompensation',
  3321. Mask => 0x03,
  3322. PrintConv => {
  3323. 0x00 => 'Off',
  3324. 0x01 => 'On',
  3325. 0x02 => 'On (auto reset)',
  3326. },
  3327. },
  3328. 7.1 => { # CSb2
  3329. Name => 'ExposureControlStepSize',
  3330. Mask => 0xc0,
  3331. PrintConv => {
  3332. 0x00 => '1/3 EV',
  3333. 0x40 => '1/2 EV',
  3334. 0x80 => '1 EV',
  3335. },
  3336. },
  3337. 7.2 => { # CSb1
  3338. Name => 'ISOStepSize',
  3339. Mask => 0x30,
  3340. PrintConv => {
  3341. 0x00 => '1/3 EV',
  3342. 0x10 => '1/2 EV',
  3343. 0x20 => '1 EV',
  3344. },
  3345. },
  3346. 7.3 => { # CSb3
  3347. Name => 'ExposureCompStepSize',
  3348. Mask => 0x0c,
  3349. PrintConv => {
  3350. 0x00 => '1/3 EV',
  3351. 0x04 => '1/2 EV',
  3352. 0x08 => '1 EV',
  3353. },
  3354. },
  3355. 8.1 => { # CSb6
  3356. Name => 'CenterWeightedAreaSize',
  3357. Mask => 0xe0,
  3358. PrintConv => {
  3359. 0x00 => '8 mm',
  3360. 0x20 => '12 mm',
  3361. 0x40 => '15 mm',
  3362. 0x60 => '20 mm',
  3363. 0x80 => 'Average',
  3364. },
  3365. },
  3366. 8.2 => { # CSb7-a
  3367. Name => 'FineTuneOptMatrixMetering',
  3368. Mask => 0x0f,
  3369. ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
  3370. ValueConvInv => 'int($val*6+($val>0?0.5:-0.5)) & 0x0f',
  3371. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  3372. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  3373. },
  3374. 9.1 => { # CSb7-b
  3375. Name => 'FineTuneOptCenterWeighted',
  3376. Mask => 0xf0,
  3377. ValueConv => '($val > 0x70 ? $val - 0x100 : $val) / 0x60',
  3378. ValueConvInv => '(int($val*6+($val>0?0.5:-0.5))<<4) & 0xf0',
  3379. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  3380. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  3381. },
  3382. 9.2 => { # CSb7-c
  3383. Name => 'FineTuneOptSpotMetering',
  3384. Mask => 0x0f,
  3385. ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
  3386. ValueConvInv => 'int($val*6+($val>0?0.5:-0.5)) & 0x0f',
  3387. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  3388. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  3389. },
  3390. 10.1 => { # CSf2-a
  3391. Name => 'MultiSelectorShootMode',
  3392. Mask => 0xc0,
  3393. PrintConv => {
  3394. 0x00 => 'Select Center Focus Point (Reset)',
  3395. 0x40 => 'Highlight Active Focus Point',
  3396. 0x80 => 'Preset Focus Point (Pre)',
  3397. 0xc0 => 'Not Used (None)',
  3398. },
  3399. },
  3400. 10.2 => { # CSf2-b
  3401. Name => 'MultiSelectorPlaybackMode',
  3402. Mask => 0x30,
  3403. PrintConv => {
  3404. 0x00 => 'Thumbnail On/Off',
  3405. 0x10 => 'View Histograms',
  3406. 0x20 => 'Zoom On/Off',
  3407. 0x30 => 'Choose Folder',
  3408. },
  3409. },
  3410. 10.3 => { # CSf3
  3411. Name => 'MultiSelector',
  3412. Mask => 0x01,
  3413. PrintConv => {
  3414. 0x00 => 'Do Nothing',
  3415. 0x01 => 'Reset Meter-off Delay',
  3416. },
  3417. },
  3418. 11.1 => { # CSd4
  3419. Name => 'ExposureDelayMode',
  3420. Mask => 0xc0,
  3421. PrintConv => {
  3422. 0x00 => 'Off',
  3423. 0x40 => '1 s',
  3424. 0x80 => '2 s',
  3425. 0xc0 => '3 s',
  3426. },
  3427. },
  3428. 11.2 => { # CSd2
  3429. Name => 'CLModeShootingSpeed',
  3430. Mask => 0x0f,
  3431. PrintConv => '"$val fps"',
  3432. PrintConvInv => '$val=~s/\s*fps//i; $val',
  3433. },
  3434. 12.1 => { # CSd3
  3435. Name => 'MaxContinuousRelease',
  3436. # values: 1-100
  3437. },
  3438. 13.1 => { # CSe6
  3439. Name => 'AutoBracketSet',
  3440. Mask => 0xe0,
  3441. PrintConv => {
  3442. 0x00 => 'AE & Flash',
  3443. 0x20 => 'AE Only',
  3444. 0x40 => 'Flash Only',
  3445. 0x60 => 'WB Bracketing',
  3446. 0x80 => 'Active D-Lighting',
  3447. },
  3448. },
  3449. 13.2 => { # CSe8
  3450. Name => 'AutoBracketOrder',
  3451. Mask => 0x10,
  3452. PrintConv => {
  3453. 0x00 => '0,-,+',
  3454. 0x10 => '-,0,+',
  3455. },
  3456. },
  3457. 13.3 => { # CSe7
  3458. Name => 'AutoBracketModeM',
  3459. Mask => 0x0c,
  3460. PrintConv => {
  3461. 0x00 => 'Flash/Speed',
  3462. 0x04 => 'Flash/Speed/Aperture',
  3463. 0x08 => 'Flash/Aperture',
  3464. 0x0c => 'Flash Only',
  3465. },
  3466. },
  3467. 14.1 => { # CSf4-a
  3468. Name => 'FuncButton',
  3469. Mask => 0x1f,
  3470. PrintConv => {
  3471. 0 => 'None',
  3472. 1 => 'Preview',
  3473. 2 => 'FV Lock',
  3474. 3 => 'AE/AF Lock',
  3475. 4 => 'AE Lock Only',
  3476. 5 => 'AE Lock (reset on release)',
  3477. 6 => 'AE Lock (hold)',
  3478. 7 => 'AF Lock Only',
  3479. 8 => 'AF-On',
  3480. 10 => 'Bracketing Burst',
  3481. 11 => 'Matrix Metering',
  3482. 12 => 'Center-weighted Metering',
  3483. 13 => 'Spot Metering',
  3484. 14 => 'Playback',
  3485. 15 => 'My Menu Top Item',
  3486. 16 => '+NEF(RAW)',
  3487. 17 => 'Virtual Horizon',
  3488. 19 => 'Grid Display', # values 19 and 20 are swapped from the D4s encodings
  3489. 20 => 'My Menu',
  3490. 21 => 'Disable Synchronized Release',
  3491. 22 => 'Remote Release Only',
  3492. 26 => 'Flash Disable/Enable',
  3493. 27 => 'Highlight-weighted Metering', # new value with D810
  3494. },
  3495. },
  3496. 15.1 => { # CSf5-a
  3497. Name => 'PreviewButton',
  3498. Mask => 0x1f,
  3499. PrintConv => {
  3500. 0 => 'None',
  3501. 1 => 'Preview',
  3502. 2 => 'FV Lock',
  3503. 3 => 'AE/AF Lock',
  3504. 4 => 'AE Lock Only',
  3505. 5 => 'AE Lock (reset on release)',
  3506. 6 => 'AE Lock (hold)',
  3507. 7 => 'AF Lock Only',
  3508. 8 => 'AF-On',
  3509. 10 => 'Bracketing Burst',
  3510. 11 => 'Matrix Metering',
  3511. 12 => 'Center-weighted Metering',
  3512. 13 => 'Spot Metering',
  3513. 14 => 'Playback',
  3514. 15 => 'My Menu Top Item',
  3515. 16 => '+NEF(RAW)',
  3516. 17 => 'Virtual Horizon',
  3517. 19 => 'Grid Display', # values 19 and 20 are swapped from the D4s encodings
  3518. 20 => 'My Menu',
  3519. 21 => 'Disable Synchronized Release',
  3520. 22 => 'Remote Release Only',
  3521. 26 => 'Flash Disable/Enable',
  3522. 27 => 'Highlight-weighted Metering', # new value with D810
  3523. },
  3524. },
  3525. 16.1 => { # CSf8
  3526. Name => 'AssignBktButton',
  3527. Mask => 0x07,
  3528. PrintConv => {
  3529. 0 => 'Auto Bracketing',
  3530. 1 => 'Multiple Exposure',
  3531. 2 => 'HDR (high dynamic range)',
  3532. 3 => 'None',
  3533. },
  3534. },
  3535. 17.1 => { # CSf6-a
  3536. Name => 'AELockButton',
  3537. Mask => 0x1f,
  3538. PrintConv => {
  3539. 0 => 'None',
  3540. 1 => 'Preview',
  3541. 2 => 'FV Lock',
  3542. 3 => 'AE/AF Lock',
  3543. 4 => 'AE Lock Only',
  3544. 5 => 'AE Lock (reset on release)',
  3545. 6 => 'AE Lock (hold)',
  3546. 7 => 'AF Lock Only',
  3547. 8 => 'AF-On',
  3548. 10 => 'Bracketing Burst',
  3549. 11 => 'Matrix Metering',
  3550. 12 => 'Center-weighted Metering',
  3551. 13 => 'Spot Metering',
  3552. 14 => 'Playback',
  3553. 15 => 'My Menu Top Item',
  3554. 16 => '+NEF(RAW)',
  3555. 17 => 'Virtual Horizon',
  3556. 19 => 'Grid Display', # values 19 and 20 are swapped from the D4s encodings
  3557. 20 => 'My Menu',
  3558. 21 => 'Disable Synchronized Release',
  3559. 22 => 'Remote Release Only',
  3560. 26 => 'Flash Disable/Enable',
  3561. 27 => 'Highlight-weighted Metering', # new value with D810
  3562. },
  3563. },
  3564. 18.1 => { # CSf9-b
  3565. Name => 'CommandDialsChangeMainSub',
  3566. Mask => 0xe0,
  3567. PrintConv => {
  3568. 0x00 => 'Autofocus Off, Exposure Off',
  3569. 0x20 => 'Autofocus Off, Exposure On',
  3570. 0x40 => 'Autofocus Off, Exposure On (Mode A)',
  3571. 0x80 => 'Autofocus On, Exposure Off',
  3572. 0xa0 => 'Autofocus On, Exposure On',
  3573. 0xc0 => 'Autofocus On, Exposure On (Mode A)',
  3574. },
  3575. },
  3576. 18.2 => { # CSf9-d
  3577. Name => 'CommandDialsMenuAndPlayback',
  3578. Mask => 0x18,
  3579. PrintConv => {
  3580. 0x00 => 'On',
  3581. 0x08 => 'Off',
  3582. 0x10 => 'On (Image Review Excluded)',
  3583. },
  3584. },
  3585. 18.3 => { # CSf9-c
  3586. Name => 'CommandDialsApertureSetting',
  3587. Mask => 0x04,
  3588. PrintConv => {
  3589. 0x00 => 'Sub-command Dial',
  3590. 0x04 => 'Aperture Ring',
  3591. },
  3592. },
  3593. 18.4 => { # CSc1
  3594. Name => 'ShutterReleaseButtonAE-L',
  3595. Mask => 0x02,
  3596. PrintConv => { 0x00 => 'Off', 0x02 => 'On' },
  3597. },
  3598. 18.5 => { # CSf10
  3599. Name => 'ReleaseButtonToUseDial',
  3600. Mask => 0x01,
  3601. PrintConv => { 0x00 => 'No', 0x01 => 'Yes' },
  3602. },
  3603. 19.1 => { # CSc2
  3604. Name => 'StandbyTimer',
  3605. Mask => 0xf0,
  3606. PrintConv => {
  3607. 0x00 => '4 s',
  3608. 0x10 => '6 s',
  3609. 0x30 => '10 s',
  3610. 0x50 => '30 s',
  3611. 0x60 => '1 min',
  3612. 0x70 => '5 min',
  3613. 0x80 => '10 min',
  3614. 0x90 => '30 min',
  3615. },
  3616. },
  3617. 20.1 => { # CSc3-a
  3618. Name => 'SelfTimerTime',
  3619. Mask => 0xc0,
  3620. PrintConv => {
  3621. 0x00 => '2 s',
  3622. 0x40 => '5 s',
  3623. 0x80 => '10 s',
  3624. 0xc0 => '20 s',
  3625. },
  3626. },
  3627. 20.2 => { # CSc3-c
  3628. Name => 'SelfTimerShotInterval',
  3629. Mask => 0x30,
  3630. PrintConv => {
  3631. 0x00 => '0.5 s',
  3632. 0x10 => '1 s',
  3633. 0x20 => '2 s',
  3634. 0x30 => '3 s',
  3635. },
  3636. },
  3637. 20.3 => { # CSc3-b
  3638. Name => 'SelfTimerShotCount',
  3639. Mask => 0x0f,
  3640. },
  3641. 21.1 => { # CSc4-d
  3642. Name => 'ImageReviewMonitorOffTime', # note: decode changed from D4s
  3643. Mask => 0xe0,
  3644. PrintConv => {
  3645. 0x00 => '2 s',
  3646. 0x20 => '4 s',
  3647. 0x60 => '10 s',
  3648. 0x80 => '20 s',
  3649. 0xa0 => '1 min',
  3650. 0xc0 => '5 min',
  3651. 0xe0 => '10 min',
  3652. },
  3653. },
  3654. 21.2 => { # CSc4-e # note: decode changed from D4s
  3655. Name => 'LiveViewMonitorOffTime',
  3656. Mask => 0x1c,
  3657. PrintConv => {
  3658. 0x04 => '5 min',
  3659. 0x08 => '10 min',
  3660. 0x0c => '15 min',
  3661. 0x10 => '20 min',
  3662. 0x14 => '30 min',
  3663. 0x18 => 'No Limit',
  3664. },
  3665. },
  3666. 22.1 => { # CSc4-b # note: decode changed from D4s
  3667. Name => 'MenuMonitorOffTime',
  3668. Mask => 0xe0,
  3669. PrintConv => {
  3670. 0x00 => '4 s',
  3671. 0x40 => '10 s',
  3672. 0x80 => '20 s',
  3673. 0xa0 => '1 min',
  3674. 0xc0 => '5 min',
  3675. 0xe0 => '10 min',
  3676. },
  3677. },
  3678. 22.2 => { # CSc4-c # note: decode changed from D4s
  3679. Name => 'ShootingInfoMonitorOffTime',
  3680. Mask => 0x1c,
  3681. PrintConv => {
  3682. 0x00 => '4 s',
  3683. 0x08 => '10 s',
  3684. 0x10 => '20 s',
  3685. 0x14 => '1 min',
  3686. 0x18 => '5 min',
  3687. 0x1c => '10 min',
  3688. },
  3689. },
  3690. 23.1 => { # CSe1
  3691. Name => 'FlashSyncSpeed',
  3692. Mask => 0xf0,
  3693. PrintConv => {
  3694. 0x00 => '1/320 s (auto FP)',
  3695. 0x20 => '1/250 s (auto FP)',
  3696. 0x30 => '1/250 s',
  3697. 0x50 => '1/200 s',
  3698. 0x60 => '1/160 s',
  3699. 0x70 => '1/125 s',
  3700. 0x80 => '1/100 s',
  3701. 0x90 => '1/80 s',
  3702. 0xa0 => '1/60 s',
  3703. },
  3704. },
  3705. 23.2 => { # CSe2
  3706. Name => 'FlashShutterSpeed',
  3707. Mask => 0x0f,
  3708. PrintConvColumns => 2,
  3709. PrintConv => {
  3710. 0x00 => '1/60 s',
  3711. 0x01 => '1/30 s',
  3712. 0x02 => '1/15 s',
  3713. 0x03 => '1/8 s',
  3714. 0x04 => '1/4 s',
  3715. 0x05 => '1/2 s',
  3716. 0x06 => '1 s',
  3717. 0x07 => '2 s',
  3718. 0x08 => '4 s',
  3719. 0x09 => '8 s',
  3720. 0x0a => '15 s',
  3721. 0x0b => '30 s',
  3722. },
  3723. },
  3724. 24.1 => { # CSe3
  3725. Name => 'FlashControlBuilt-in',
  3726. Mask => 0xc0,
  3727. RawConv => '$$self{FlashControlBuiltin} = $val',
  3728. PrintConv => {
  3729. 0x00 => 'TTL',
  3730. 0x40 => 'Manual',
  3731. 0x80 => 'Repeating Flash',
  3732. 0xc0 => 'Commander Mode',
  3733. },
  3734. },
  3735. 31.1 => { # CSe5
  3736. Name => 'ModelingFlash',
  3737. Mask => 0x20,
  3738. PrintConv => {
  3739. 0x00 => 'On',
  3740. 0x20 => 'Off',
  3741. },
  3742. },
  3743. 36.1 => { # CSc4-a
  3744. Name => 'PlaybackMonitorOffTime',
  3745. Mask => 0xe0,
  3746. PrintConv => {
  3747. 0x00 => '4 s',
  3748. 0x20 => '10 s',
  3749. 0x40 => '20 s',
  3750. 0x60 => '1 min',
  3751. 0x80 => '5 min',
  3752. 0xa0 => '10 min',
  3753. },
  3754. },
  3755. 37.1 => { # CSf2-c
  3756. Name => 'MultiSelectorLiveView',
  3757. Mask => 0xc0,
  3758. PrintConv => {
  3759. 0x00 => 'Reset',
  3760. 0x40 => 'Zoom',
  3761. 0xc0 => 'Not Used',
  3762. },
  3763. },
  3764. 38.1 => { # CSf7-a
  3765. Name => 'ShutterSpeedLock',
  3766. Mask => 0x80,
  3767. PrintConv => {
  3768. 0x00 => 'Off',
  3769. 0x80 => 'On',
  3770. },
  3771. },
  3772. 38.2 => { # CSf7-b
  3773. Name => 'ApertureLock',
  3774. Mask => 0x40,
  3775. PrintConv => {
  3776. 0x00 => 'Off',
  3777. 0x40 => 'On',
  3778. },
  3779. },
  3780. 38.3 => { # CSg4
  3781. Name => 'MovieShutterButton',
  3782. Mask => 0x20,
  3783. PrintConv => {
  3784. 0x00 => 'Take Photo',
  3785. 0x20 => 'Record Movies',
  3786. },
  3787. },
  3788. 38.4 => { # CSe4
  3789. Name => 'FlashExposureCompArea',
  3790. Mask => 0x04,
  3791. PrintConv => {
  3792. 0x00 => 'Entire frame',
  3793. 0x04 => 'Background only',
  3794. },
  3795. },
  3796. 40.1 => { # CSg3
  3797. Name => 'MovieAELockButtonAssignment',
  3798. Mask => 0x0f,
  3799. PrintConv => {
  3800. 0 => 'None',
  3801. 3 => 'Index Marking',
  3802. 4 => 'View Photo Shooting Info',
  3803. 5 => 'AE/AF Lock',
  3804. 6 => 'AE Lock Only',
  3805. 7 => 'AE Lock (hold)',
  3806. 8 => 'AF Lock Only',
  3807. },
  3808. },
  3809. 41.1 => { # CSg1
  3810. Name => 'MovieFunctionButton',
  3811. Mask => 0x70,
  3812. PrintConv => {
  3813. 0x00 => 'None',
  3814. 0x10 => 'Power Aperture (open)', # bit '02' is also toggled on for this setting
  3815. 0x30 => 'Index Marking',
  3816. 0x40 => 'View Photo Shooting Info',
  3817. },
  3818. },
  3819. 41.2 => { # CSg2
  3820. Name => 'MoviePreviewButton',
  3821. Mask => 0x07,
  3822. PrintConv => {
  3823. 0x00 => 'None',
  3824. 0x02 => 'Power Aperture (open)', # bit '10' is also toggled on for this setting
  3825. 0x03 => 'Index Marking',
  3826. 0x04 => 'View Photo Shooting Info',
  3827. },
  3828. },
  3829. 42.1 => { # CSf4-b
  3830. Name => 'FuncButtonPlusDials',
  3831. Mask => 0x0f,
  3832. PrintConv => {
  3833. 0 => 'None',
  3834. 1 => 'Choose Image Area (FX/DX/5:4)',
  3835. 2 => 'Shutter Speed & Aperture Lock',
  3836. 3 => 'One Step Speed / Aperture',
  3837. 4 => 'Choose Non-CPU Lens Number',
  3838. 5 => 'Active D-Lighting',
  3839. 8 => 'Exposure Delay Mode',
  3840. },
  3841. },
  3842. 43.1 => { # CSf5-b
  3843. Name => 'PreviewButtonPlusDials',
  3844. Mask => 0x0f,
  3845. PrintConv => {
  3846. 0 => 'None',
  3847. 1 => 'Choose Image Area (FX/DX/5:4)',
  3848. 2 => 'Shutter Speed & Aperture Lock',
  3849. 3 => 'One Step Speed / Aperture',
  3850. 4 => 'Choose Non-CPU Lens Number',
  3851. 5 => 'Active D-Lighting',
  3852. 8 => 'Exposure Delay Mode',
  3853. },
  3854. },
  3855. 44.1 => { # CSf6-b
  3856. Name => 'AELockButtonPlusDials',
  3857. Mask => 0x0f,
  3858. PrintConv => {
  3859. 0 => 'None',
  3860. 1 => 'Choose Image Area (FX/DX/5:4)',
  3861. 2 => 'Shutter Speed & Aperture Lock',
  3862. 4 => 'Choose Non-CPU Lens Number',
  3863. 8 => 'Exposure Delay Mode',
  3864. },
  3865. },
  3866. 45.1 => { # CSf13
  3867. Name => 'AssignMovieRecordButton',
  3868. Mask => 0x0f,
  3869. PrintConv => {
  3870. 0 => 'None',
  3871. 1 => 'Choose Image Area (FX/DX/5:4)',
  3872. 2 => 'Shutter Speed & Aperture Lock',
  3873. 9 => 'White Balance',
  3874. 10 => 'ISO Sensitivity',
  3875. },
  3876. },
  3877. 46.1 => { # CSb7-d
  3878. Name => 'FineTuneOptHighlightWeighted',
  3879. Mask => 0x0f,
  3880. ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
  3881. ValueConvInv => 'int($val*6+($val>0?0.5:-0.5)) & 0x0f',
  3882. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  3883. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  3884. },
  3885. 47.1 => { # CSa5-b
  3886. Name => 'DynamicAreaAFDisplay',
  3887. Mask => 0x80,
  3888. PrintConv => {
  3889. 0x00 => 'Off',
  3890. 0x80 => 'On',
  3891. },
  3892. },
  3893. 47.2 => { # CSa5-a # moved with D810
  3894. Name => 'AFPointIllumination',
  3895. Mask => 0x40,
  3896. PrintConv => {
  3897. 0x00 => 'Off',
  3898. 0x40 => 'On During Manual Focusing',
  3899. },
  3900. },
  3901. 47.3 => { # CSa9
  3902. Name => 'StoreByOrientation',
  3903. Mask => 0x18,
  3904. PrintConv => {
  3905. 0x00 => 'Off',
  3906. 0x08 => 'Focus Point',
  3907. 0x10 => 'Focus Point and AF-area mode',
  3908. },
  3909. },
  3910. 47.4 => { # CSa5-c
  3911. Name => 'GroupAreaAFIllumination',
  3912. Mask => 0x04,
  3913. PrintConv => {
  3914. 0x00 => 'Squares', # moved with D810
  3915. 0x04 => 'Dots',
  3916. },
  3917. },
  3918. 48.1 => { # CSb5
  3919. Name => 'MatrixMetering',
  3920. Mask => 0x80,
  3921. PrintConv => {
  3922. 0x00 => 'Face Detection On',
  3923. 0x80 => 'Face Detection Off',
  3924. },
  3925. },
  3926. 48.2 => { # CSf14
  3927. Name => 'LiveViewButtonOptions',
  3928. Mask => 0x30,
  3929. PrintConv => {
  3930. 0x00 => 'Enable',
  3931. 0x20 => 'Disable',
  3932. },
  3933. },
  3934. 48.3 => { # CSa12
  3935. Name => 'AFModeRestrictions',
  3936. Mask => 0x03,
  3937. PrintConv => {
  3938. 0x00 => 'No Restrictions',
  3939. 0x01 => 'AF-C',
  3940. 0x02 => 'AF-S',
  3941. },
  3942. },
  3943. 49.1 => { # CSa11
  3944. Name => 'LimitAFAreaModeSelection',
  3945. Mask => 0x7e,
  3946. PrintConv => {
  3947. 0 => 'No Restrictions',
  3948. BITMASK => {
  3949. 1 => 'Auto-area',
  3950. 2 => 'Group-area',
  3951. 3 => '3D-tracking',
  3952. 4 => 'Dynamic area (51 points)',
  3953. 5 => 'Dynamic area (21 points)',
  3954. 6 => 'Dynamic area (9 points)',
  3955. },
  3956. },
  3957. },
  3958. 50.1 => { # CSf15
  3959. Name => 'AF-OnForMB-D12',
  3960. Mask => 0x07,
  3961. PrintConv => {
  3962. 0 => 'AE/AF Lock',
  3963. 1 => 'AE Lock Only',
  3964. 2 => 'AF Lock Only',
  3965. 3 => 'AE Lock (hold)',
  3966. 4 => 'AE Lock (reset)',
  3967. 5 => 'AF-On',
  3968. 6 => 'FV Lock',
  3969. 7 => 'Same As Fn Button',
  3970. },
  3971. },
  3972. 51.1 => { # CSf16
  3973. Name => 'AssignRemoteFnButton',
  3974. Mask => 0x1f,
  3975. PrintConv => {
  3976. 0 => 'None',
  3977. 1 => 'Preview',
  3978. 2 => 'FV Lock',
  3979. 3 => 'AE/AF Lock',
  3980. 4 => 'AE Lock Only',
  3981. 5 => 'AE Lock (reset on release)',
  3982. 7 => 'AF Lock Only',
  3983. 8 => 'AF-On',
  3984. 16 => '+NEF(RAW)',
  3985. 25 => 'Live View',
  3986. 26 => 'Flash Disable/Enable',
  3987. },
  3988. },
  3989. 52.1 => { # CSf17
  3990. Name => 'LensFocusFunctionButtons',
  3991. Mask => 0x3f,
  3992. PrintConv => {
  3993. 3 => 'AE/AF Lock',
  3994. 4 => 'AE Lock Only',
  3995. 7 => 'AF Lock Only',
  3996. 21 => 'Disable Synchronized Release',
  3997. 22 => 'Remote Release Only',
  3998. 24 => 'Preset focus Point',
  3999. 26 => 'Flash Disable/Enable',
  4000. 32 => 'AF-Area Mode: Single-point AF',
  4001. 33 => 'AF-Area Mode: Dynamic-area AF (9 points)',
  4002. 34 => 'AF-Area Mode: Dynamic-area AF (21 points)',
  4003. 35 => 'AF-Area Mode: Dynamic-area AF (51 points)',
  4004. 36 => 'AF-Area Mode: Group-area AF',
  4005. 37 => 'AF-Area Mode: Auto area AF',
  4006. },
  4007. },
  4008. );
  4009. # D5000 custom settings (ref PH)
  4010. %Image::ExifTool::NikonCustom::SettingsD5000 = (
  4011. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  4012. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  4013. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  4014. WRITABLE => 1,
  4015. FIRST_ENTRY => 0,
  4016. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  4017. NOTES => 'Custom settings for the D5000.',
  4018. # Missing/Incomplete settings:
  4019. # CSd7 - LiveViewDisplayOptions [couldn't find in data - try again with live view shots]
  4020. 0.1 => { # CSa1
  4021. Name => 'AFAreaModeSetting',
  4022. Mask => 0x60,
  4023. PrintConv => {
  4024. 0x00 => 'Single Area',
  4025. 0x20 => 'Dynamic Area',
  4026. 0x40 => 'Auto-area',
  4027. 0x60 => '3D-tracking (11 points)',
  4028. },
  4029. },
  4030. 0.2 => { # CSa2
  4031. Name => 'AFAssist',
  4032. Mask => 0x01,
  4033. PrintConv => {
  4034. 0 => 'On',
  4035. 1 => 'Off',
  4036. },
  4037. },
  4038. 2.1 => { # CSd1
  4039. Name => 'Beep',
  4040. Mask => 0xc0,
  4041. PrintConv => {
  4042. 0x00 => 'Off',
  4043. 0x40 => 'Low',
  4044. 0x80 => 'High',
  4045. },
  4046. },
  4047. 2.2 => { # CSd2
  4048. Name => 'GridDisplay',
  4049. Mask => 0x02,
  4050. PrintConv => {
  4051. 0x00 => 'On',
  4052. 0x02 => 'Off',
  4053. },
  4054. },
  4055. 2.3 => { # CSd3
  4056. Name => 'ISODisplay',
  4057. Mask => 0x08,
  4058. PrintConv => {
  4059. 0x08 => 'Off',
  4060. 0x00 => 'On',
  4061. },
  4062. },
  4063. 2.4 => { # CSf4
  4064. Name => 'NoMemoryCard',
  4065. Mask => 0x20,
  4066. PrintConv => {
  4067. 0x00 => 'Release Locked',
  4068. 0x20 => 'Enable Release',
  4069. },
  4070. },
  4071. 3.1 => { # CSd4
  4072. Name => 'FileNumberSequence',
  4073. Mask => 0x08,
  4074. PrintConv => { 0x00 => 'On', 0x08 => 'Off' },
  4075. },
  4076. 4.1 => { # CSa4
  4077. Name => 'RangeFinder',
  4078. Mask => 0x10,
  4079. PrintConv => { 0x00 => 'Off', 0x10 => 'On' },
  4080. },
  4081. 4.2 => { # CSd6
  4082. Name => 'DateImprint',
  4083. Mask => 0x08,
  4084. PrintConv => {
  4085. 0x00 => 'Off',
  4086. 0x08 => 'On',
  4087. },
  4088. },
  4089. 4.3 => { # CSf5
  4090. Name => 'ReverseIndicators',
  4091. Mask => 0x80,
  4092. PrintConv => {
  4093. 0x00 => '+ 0 -',
  4094. 0x80 => '- 0 +',
  4095. },
  4096. },
  4097. 5.1 => { # CSb1
  4098. Name => 'EVStepSize',
  4099. Mask => 0x40,
  4100. PrintConv => {
  4101. 0x00 => '1/3 EV',
  4102. 0x40 => '1/2 EV',
  4103. },
  4104. },
  4105. 9.1 => { # CSd5
  4106. Name => 'ExposureDelayMode',
  4107. Mask => 0x40,
  4108. PrintConv => {
  4109. 0x00 => 'Off',
  4110. 0x40 => 'On',
  4111. },
  4112. },
  4113. 11.1 => { # CSe2
  4114. Name => 'AutoBracketSet',
  4115. Mask => 0xc0,
  4116. PrintConv => {
  4117. 0x00 => 'Exposure',
  4118. # (NOTE: the following are reversed in the D5100 -- is this correct?)
  4119. 0x40 => 'Active D-Lighting', #(NC)
  4120. 0x80 => 'WB Bracketing',
  4121. },
  4122. },
  4123. 12.1 => { # CSf1
  4124. Name => 'TimerFunctionButton',
  4125. Mask => 0x38,
  4126. PrintConv => {
  4127. 0x00 => 'Self-timer',
  4128. 0x08 => 'Release Mode',
  4129. 0x10 => 'Image Quality/Size', #(NC)
  4130. 0x18 => 'ISO', #(NC)
  4131. 0x20 => 'White Balance', #(NC)
  4132. 0x28 => 'Active D-Lighting', #(NC)
  4133. 0x30 => '+ NEF (RAW)',
  4134. 0x38 => 'Auto Bracketing',
  4135. },
  4136. },
  4137. 15.1 => { # CSf2
  4138. Name => 'AELockButton',
  4139. Mask => 0x38,
  4140. PrintConv => {
  4141. 0x00 => 'AE/AF Lock',
  4142. 0x08 => 'AE Lock Only', #(NC)
  4143. 0x10 => 'AF Lock Only', #(NC)
  4144. 0x18 => 'AE Lock (hold)',
  4145. 0x20 => 'AF-ON',
  4146. },
  4147. },
  4148. 16.1 => { # CSc1
  4149. Name => 'ShutterReleaseButtonAE-L',
  4150. Mask => 0x02,
  4151. PrintConv => { 0x00 => 'Off', 0x02 => 'On' },
  4152. },
  4153. 16.2 => { # CSf3
  4154. Name => 'CommandDialsReverseRotation',
  4155. Mask => 0x80,
  4156. PrintConv => { 0x00 => 'No', 0x80 => 'Yes' },
  4157. },
  4158. 17.1 => { # CSc2-c
  4159. Name => 'MeteringTime',
  4160. Mask => 0x70,
  4161. PrintConv => {
  4162. 0x00 => '4 s',
  4163. 0x10 => '8 s',
  4164. 0x20 => '20 s',
  4165. 0x30 => '1 min',
  4166. 0x40 => '30 min',
  4167. },
  4168. },
  4169. 17.2 => { # CSc4
  4170. Name => 'RemoteOnDuration',
  4171. Mask => 0x03,
  4172. PrintConv => {
  4173. 0x00 => '1 min',
  4174. 0x01 => '5 min',
  4175. 0x02 => '10 min',
  4176. 0x03 => '15 min',
  4177. },
  4178. },
  4179. 18.1 => { # CSc3-a
  4180. Name => 'SelfTimerTime',
  4181. Mask => 0xc0,
  4182. PrintConv => {
  4183. 0x00 => '2 s',
  4184. 0x40 => '5 s',
  4185. 0x80 => '10 s',
  4186. 0xc0 => '20 s',
  4187. },
  4188. },
  4189. 18.2 => { # CSc3-b
  4190. Name => 'SelfTimerShotCount',
  4191. Mask => 0x1e,
  4192. ValueConv => '$val >> 1',
  4193. ValueConvInv => '$val << 1',
  4194. },
  4195. 19.1 => { # CSc2-b
  4196. Name => 'ImageReviewTime',
  4197. Mask => 0xe0,
  4198. PrintConv => {
  4199. 0x00 => '4 s',
  4200. 0x20 => '8 s',
  4201. 0x40 => '20 s',
  4202. 0x60 => '1 min',
  4203. 0x80 => '10 min',
  4204. },
  4205. },
  4206. 20.1 => { # CSc2-a
  4207. Name => 'PlaybackMenusTime',
  4208. Mask => 0xe0,
  4209. PrintConv => {
  4210. 0x00 => '8 s',
  4211. 0x20 => '12 s',
  4212. 0x40 => '20 s',
  4213. 0x60 => '1 min',
  4214. 0x80 => '10 min',
  4215. },
  4216. },
  4217. 22.1 => { # CSe1-a
  4218. Name => 'InternalFlash',
  4219. Mask => 0xc0,
  4220. PrintConv => {
  4221. 0x00 => 'TTL',
  4222. 0x40 => 'Manual',
  4223. },
  4224. },
  4225. 22.2 => { # CSe1-b
  4226. Name => 'ManualFlashOutput',
  4227. Mask => 0x1f,
  4228. ValueConv => '2 ** (-$val/3)',
  4229. ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
  4230. PrintConv => q{
  4231. return 'Full' if $val > 0.99;
  4232. Image::ExifTool::Exif::PrintExposureTime($val);
  4233. },
  4234. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  4235. },
  4236. 32.1 => { # CSa3
  4237. Name => 'LiveViewAF',
  4238. Mask => 0x60,
  4239. PrintConv => {
  4240. 0x00 => 'Face Priority',
  4241. 0x20 => 'Wide Area',
  4242. 0x40 => 'Normal Area',
  4243. 0x60 => 'Subject Tracking',
  4244. },
  4245. },
  4246. );
  4247. # D5100 custom settings (ref PH)
  4248. %Image::ExifTool::NikonCustom::SettingsD5100 = (
  4249. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  4250. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  4251. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  4252. WRITABLE => 1,
  4253. FIRST_ENTRY => 0,
  4254. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  4255. NOTES => 'Custom settings for the D5100.',
  4256. 0.1 => { # CSa1
  4257. Name => 'AF-CPrioritySelection',
  4258. Mask => 0x80,
  4259. PrintConv => {
  4260. 0x00 => 'Release',
  4261. 0x80 => 'Focus',
  4262. },
  4263. },
  4264. 1.1 => { # CSa2
  4265. Name => 'AFAssist',
  4266. Mask => 0x01,
  4267. PrintConv => {
  4268. 0 => 'On',
  4269. 1 => 'Off',
  4270. },
  4271. },
  4272. 3.1 => { # CSd1
  4273. Name => 'Beep',
  4274. Mask => 0xc0,
  4275. PrintConv => {
  4276. 0x00 => 'Off',
  4277. 0x40 => 'Low',
  4278. 0x80 => 'High',
  4279. },
  4280. },
  4281. 3.2 => { # CSf4
  4282. Name => 'NoMemoryCard',
  4283. Mask => 0x20,
  4284. PrintConv => {
  4285. 0x00 => 'Release Locked',
  4286. 0x20 => 'Enable Release',
  4287. },
  4288. },
  4289. 3.3 => { # CSd2
  4290. Name => 'ISODisplay',
  4291. Mask => 0x08,
  4292. PrintConv => {
  4293. 0x00 => 'On',
  4294. 0x08 => 'Off',
  4295. },
  4296. },
  4297. 4.1 => { # CSd3
  4298. Name => 'FileNumberSequence',
  4299. Mask => 0x08,
  4300. PrintConv => { 0x00 => 'On', 0x08 => 'Off' },
  4301. },
  4302. 5.1 => { # CSa3
  4303. Name => 'RangeFinder',
  4304. Mask => 0x10,
  4305. PrintConv => { 0x00 => 'Off', 0x10 => 'On' },
  4306. },
  4307. # (it looks like CSd5 DateImprint is not stored)
  4308. 5.2 => { # CSf5
  4309. Name => 'ReverseIndicators',
  4310. Mask => 0x80,
  4311. PrintConv => {
  4312. 0x00 => '+ 0 -',
  4313. 0x80 => '- 0 +',
  4314. },
  4315. },
  4316. 6.1 => { # CSb1
  4317. Name => 'EVStepSize',
  4318. Mask => 0x40,
  4319. PrintConv => {
  4320. 0x00 => '1/3 EV',
  4321. 0x40 => '1/2 EV',
  4322. },
  4323. },
  4324. 10.1 => { # CSd4
  4325. Name => 'ExposureDelayMode',
  4326. Mask => 0x40,
  4327. PrintConv => {
  4328. 0x00 => 'Off',
  4329. 0x40 => 'On',
  4330. },
  4331. },
  4332. 12.1 => { # CSe2
  4333. Name => 'AutoBracketSet',
  4334. Mask => 0xc0,
  4335. PrintConv => {
  4336. 0x00 => 'Exposure',
  4337. # (NOTE: the following are reversed from the D5000 -- is D5000 correct?)
  4338. 0x40 => 'WB Bracketing',
  4339. 0x80 => 'Active D-Lighting',
  4340. },
  4341. },
  4342. 13.1 => { # CSf1
  4343. Name => 'TimerFunctionButton',
  4344. Mask => 0x38,
  4345. PrintConv => {
  4346. 0x00 => 'Self-timer',
  4347. 0x08 => 'Release Mode',
  4348. 0x10 => 'Image Quality/Size',
  4349. 0x18 => 'ISO',
  4350. 0x20 => 'White Balance',
  4351. 0x28 => 'Active D-Lighting',
  4352. 0x30 => '+ NEF (RAW)',
  4353. 0x38 => 'Auto Bracketing',
  4354. },
  4355. },
  4356. 16.1 => { # CSf2
  4357. Name => 'AELockButton',
  4358. Mask => 0x38,
  4359. PrintConv => {
  4360. 0x00 => 'AE/AF Lock',
  4361. 0x08 => 'AE Lock Only',
  4362. 0x10 => 'AF Lock Only',
  4363. 0x18 => 'AE Lock (hold)',
  4364. 0x20 => 'AF-ON',
  4365. },
  4366. },
  4367. 17.1 => { # CSc1
  4368. Name => 'ShutterReleaseButtonAE-L',
  4369. Mask => 0x02,
  4370. PrintConv => { 0x00 => 'Off', 0x02 => 'On' },
  4371. },
  4372. 17.2 => { # CSf3
  4373. Name => 'CommandDialsReverseRotation',
  4374. Mask => 0x80,
  4375. PrintConv => { 0x00 => 'No', 0x80 => 'Yes' },
  4376. },
  4377. 18.1 => { # CSc2-d
  4378. Name => 'MeteringTime',
  4379. Mask => 0x70,
  4380. PrintConv => {
  4381. 0x00 => '4 s',
  4382. 0x10 => '8 s',
  4383. 0x20 => '20 s', #(NC)
  4384. 0x30 => '1 min',
  4385. 0x40 => '30 min', #(NC)
  4386. },
  4387. },
  4388. 18.2 => { # CSc4
  4389. Name => 'RemoteOnDuration',
  4390. Mask => 0x03,
  4391. PrintConv => {
  4392. 0x00 => '1 min',
  4393. 0x01 => '5 min',
  4394. 0x02 => '10 min', #(NC)
  4395. 0x03 => '20 min', # (but picture in manual shows 15 min)
  4396. },
  4397. },
  4398. 19.1 => { # CSc3-a
  4399. Name => 'SelfTimerTime',
  4400. Mask => 0xc0,
  4401. PrintConv => {
  4402. 0x00 => '2 s',
  4403. 0x40 => '5 s',
  4404. 0x80 => '10 s',
  4405. 0xc0 => '20 s',
  4406. },
  4407. },
  4408. 19.2 => { # CSc3-b
  4409. Name => 'SelfTimerShotCount',
  4410. Mask => 0x0f,
  4411. },
  4412. 20.1 => { # CSc2-b
  4413. Name => 'ImageReviewTime',
  4414. Mask => 0xe0,
  4415. PrintConv => {
  4416. 0x00 => '4 s',
  4417. 0x20 => '8 s', #(NC)
  4418. 0x40 => '20 s',
  4419. 0x60 => '1 min', #(NC)
  4420. 0x80 => '10 min', #(NC)
  4421. },
  4422. },
  4423. 20.2 => { # CSc2-c
  4424. Name => 'LiveViewMonitorOffTime',
  4425. Mask => 0x1c,
  4426. PrintConv => {
  4427. 0x00 => '3 min',
  4428. 0x04 => '5 min', #(NC)
  4429. 0x08 => '10 min',
  4430. 0x0c => '15 min', #(NC)
  4431. 0x10 => '20 min', #(NC)
  4432. 0x14 => '30 min', #(NC)
  4433. },
  4434. },
  4435. 21.1 => { # CSc2-a
  4436. Name => 'PlaybackMenusTime',
  4437. Mask => 0xe0,
  4438. PrintConv => {
  4439. 0x00 => '8 s', #(NC)
  4440. 0x20 => '12 s',
  4441. 0x40 => '20 s',
  4442. 0x60 => '1 min',
  4443. 0x80 => '10 min', #(NC)
  4444. },
  4445. },
  4446. 23.1 => { # CSe1-a
  4447. Name => 'InternalFlash',
  4448. Mask => 0xc0,
  4449. PrintConv => {
  4450. 0x00 => 'TTL',
  4451. 0x40 => 'Manual',
  4452. },
  4453. },
  4454. 23.1 => { # CSe1-b
  4455. Name => 'ManualFlashOutput',
  4456. Mask => 0x1f,
  4457. ValueConv => '2 ** (-$val/3)',
  4458. ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
  4459. PrintConv => q{
  4460. return 'Full' if $val > 0.99;
  4461. Image::ExifTool::Exif::PrintExposureTime($val);
  4462. },
  4463. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  4464. },
  4465. );
  4466. # D5200 custom settings (ref PH)
  4467. %Image::ExifTool::NikonCustom::SettingsD5200 = (
  4468. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  4469. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  4470. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  4471. WRITABLE => 1,
  4472. FIRST_ENTRY => 0,
  4473. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  4474. NOTES => 'Custom settings for the D5200.',
  4475. 0.1 => { # CSa1
  4476. Name => 'AF-CPrioritySelection',
  4477. Mask => 0x80,
  4478. PrintConv => {
  4479. 0x00 => 'Release',
  4480. 0x80 => 'Focus',
  4481. },
  4482. },
  4483. 0.2 => { # CSa2
  4484. Name => 'NumberOfFocusPoints',
  4485. Mask => 0x10,
  4486. PrintConv => {
  4487. 0x00 => '39 Points',
  4488. 0x10 => '11 Points',
  4489. },
  4490. },
  4491. 1.1 => { # CSa3
  4492. Name => 'AFAssist',
  4493. Mask => 0x01,
  4494. PrintConv => {
  4495. 0 => 'On',
  4496. 1 => 'Off',
  4497. },
  4498. },
  4499. 3.1 => { # CSd1
  4500. Name => 'Beep',
  4501. Mask => 0xc0,
  4502. PrintConv => {
  4503. 0x00 => 'Off',
  4504. 0x40 => 'Low',
  4505. 0x80 => 'High',
  4506. },
  4507. },
  4508. 3.2 => { # CSf4
  4509. Name => 'NoMemoryCard',
  4510. Mask => 0x20,
  4511. PrintConv => {
  4512. 0x00 => 'Release Locked',
  4513. 0x20 => 'Enable Release',
  4514. },
  4515. },
  4516. 3.3 => { # CSd3
  4517. Name => 'ISODisplay',
  4518. Mask => 0x08,
  4519. PrintConv => {
  4520. 0x00 => 'On',
  4521. 0x08 => 'Off',
  4522. },
  4523. },
  4524. 4.1 => { # CSd3
  4525. Name => 'FileNumberSequence',
  4526. Mask => 0x08,
  4527. PrintConv => { 0x00 => 'On', 0x08 => 'Off' },
  4528. },
  4529. 5.1 => { # CSa4
  4530. Name => 'RangeFinder',
  4531. Mask => 0x04,
  4532. PrintConv => { 0x00 => 'Off', 0x04 => 'On' },
  4533. },
  4534. 5.2 => { # CSf3-a
  4535. Name => 'ReverseExposureCompDial',
  4536. Mask => 0x10,
  4537. PrintConv => { 0x00 => 'No', 0x10 => 'Yes' },
  4538. },
  4539. 5.3 => { # CSf3-b
  4540. Name => 'ReverseShutterSpeedAperture',
  4541. Mask => 0x08,
  4542. PrintConv => { 0x00 => 'No', 0x08 => 'Yes' },
  4543. },
  4544. 5.4 => { # CSf5
  4545. Name => 'ReverseIndicators',
  4546. Mask => 0x80,
  4547. PrintConv => {
  4548. 0x00 => '+ 0 -',
  4549. 0x80 => '- 0 +',
  4550. },
  4551. },
  4552. 6.1 => { # CSb1
  4553. Name => 'EVStepSize',
  4554. Mask => 0x40, # (bit 0x04 also changes)
  4555. PrintConv => {
  4556. 0x00 => '1/3 EV',
  4557. 0x40 => '1/2 EV',
  4558. },
  4559. },
  4560. 10.1 => { # CSd5
  4561. Name => 'ExposureDelayMode',
  4562. Mask => 0x40,
  4563. PrintConv => {
  4564. 0x00 => 'Off',
  4565. 0x40 => 'On',
  4566. },
  4567. },
  4568. 12.1 => { # CSe2
  4569. Name => 'AutoBracketSet',
  4570. Mask => 0xc0,
  4571. PrintConv => {
  4572. 0x00 => 'Exposure',
  4573. # (NOTE: the following are reversed from the D5000 -- is D5000 correct?)
  4574. 0x40 => 'WB Bracketing',
  4575. 0x80 => 'Active D-Lighting',
  4576. },
  4577. },
  4578. 13.1 => { # CSf1
  4579. Name => 'FunctionButton',
  4580. Mask => 0x1f,
  4581. PrintConv => {
  4582. 0x03 => 'AE/AF Lock',
  4583. 0x04 => 'AE Lock Only',
  4584. 0x06 => 'AE Lock (hold)',
  4585. 0x07 => 'AF Lock Only',
  4586. 0x08 => 'AF-ON',
  4587. 0x10 => '+ NEF (RAW)',
  4588. 0x12 => 'Active D-Lighting',
  4589. 0x19 => 'Live View',
  4590. 0x1a => 'Image Quality',
  4591. 0x1b => 'ISO',
  4592. 0x1c => 'White Balance',
  4593. 0x1d => 'HDR',
  4594. 0x1e => 'Auto Bracketing',
  4595. 0x1f => 'AF-area Mode',
  4596. },
  4597. },
  4598. 16.1 => { # CSf2
  4599. Name => 'AELockButton',
  4600. Mask => 0x0f,
  4601. PrintConv => {
  4602. 0x03 => 'AE/AF Lock',
  4603. 0x04 => 'AE Lock Only',
  4604. 0x06 => 'AE Lock (hold)',
  4605. 0x07 => 'AF Lock Only',
  4606. 0x08 => 'AF-ON',
  4607. },
  4608. },
  4609. 17.1 => { # CSc1
  4610. Name => 'ShutterReleaseButtonAE-L',
  4611. Mask => 0x02,
  4612. PrintConv => { 0x00 => 'Off', 0x02 => 'On' },
  4613. },
  4614. 18.1 => { # CSc2-d
  4615. Name => 'StandbyTimer',
  4616. Mask => 0xe0,
  4617. PrintConv => {
  4618. 0x00 => '4 s',
  4619. 0x20 => '8 s',
  4620. 0x40 => '20 s',
  4621. 0x60 => '1 min',
  4622. 0x80 => '30 min',
  4623. },
  4624. },
  4625. 18.2 => { # CSc4
  4626. Name => 'RemoteOnDuration',
  4627. Mask => 0x03,
  4628. PrintConv => {
  4629. 0x00 => '1 min',
  4630. 0x01 => '5 min',
  4631. 0x02 => '10 min',
  4632. 0x03 => '15 min',
  4633. },
  4634. },
  4635. 19.1 => { # CSc3-a
  4636. Name => 'SelfTimerTime',
  4637. Mask => 0xc0,
  4638. PrintConv => {
  4639. 0x00 => '2 s',
  4640. 0x40 => '5 s',
  4641. 0x80 => '10 s',
  4642. 0xc0 => '20 s',
  4643. },
  4644. },
  4645. 19.2 => { # CSc3-b
  4646. Name => 'SelfTimerShotCount',
  4647. Mask => 0x0f,
  4648. },
  4649. 20.1 => { # CSc2-b
  4650. Name => 'ImageReviewTime',
  4651. Mask => 0xe0,
  4652. PrintConv => {
  4653. 0x20 => '4 s',
  4654. 0x40 => '8 s',
  4655. 0x80 => '20 s',
  4656. 0xa0 => '1 min',
  4657. 0xe0 => '10 min',
  4658. },
  4659. },
  4660. 20.2 => { # CSc2-c
  4661. Name => 'LiveViewMonitorOffTime',
  4662. Mask => 0x1c,
  4663. PrintConv => {
  4664. 0x04 => '5 min',
  4665. 0x08 => '10 min',
  4666. 0x0c => '15 min',
  4667. 0x10 => '20 min',
  4668. 0x14 => '30 min',
  4669. },
  4670. },
  4671. 21.1 => { # CSc2-a
  4672. Name => 'PlaybackMenusTime',
  4673. Mask => 0xe0,
  4674. PrintConv => {
  4675. 0x20 => '8 s',
  4676. 0x80 => '20 s',
  4677. 0xa0 => '1 min',
  4678. 0xc0 => '5 min',
  4679. 0xe0 => '10 min',
  4680. },
  4681. },
  4682. 23.1 => { # CSe1-a
  4683. Name => 'InternalFlash',
  4684. Mask => 0xc0,
  4685. PrintConv => {
  4686. 0x00 => 'TTL',
  4687. 0x40 => 'Manual',
  4688. },
  4689. },
  4690. 23.2 => { # CSe1-b
  4691. Name => 'ManualFlashOutput',
  4692. Mask => 0x1f,
  4693. ValueConv => '2 ** (-$val/3)',
  4694. ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
  4695. PrintConv => q{
  4696. return 'Full' if $val > 0.99;
  4697. Image::ExifTool::Exif::PrintExposureTime($val);
  4698. },
  4699. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  4700. },
  4701. );
  4702. # D7000 custom settings (ref 2)
  4703. %Image::ExifTool::NikonCustom::SettingsD7000 = (
  4704. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  4705. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  4706. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  4707. WRITABLE => 1,
  4708. FIRST_ENTRY => 0,
  4709. DATAMEMBER => [ 23.1 ],
  4710. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  4711. NOTES => 'Custom settings for the D7000.',
  4712. 0.1 => { # CSa1
  4713. Name => 'AF-CPrioritySelection',
  4714. Mask => 0x80,
  4715. PrintConv => {
  4716. 0x00 => 'Release',
  4717. 0x80 => 'Focus',
  4718. },
  4719. },
  4720. 0.2 => { # CSa2
  4721. Name => 'AF-SPrioritySelection',
  4722. Mask => 0x20,
  4723. PrintConv => {
  4724. 0x00 => 'Focus',
  4725. 0x20 => 'Release',
  4726. },
  4727. },
  4728. 0.3 => { # CSa6
  4729. Name => 'NumberOfFocusPoints',
  4730. Mask => 0x10,
  4731. PrintConv => {
  4732. 0x00 => '39 Points',
  4733. 0x10 => '11 Points',
  4734. },
  4735. },
  4736. 0.4 => { # CSa3
  4737. Name => 'FocusTrackingLockOn',
  4738. Mask => 0x07,
  4739. PrintConv => {
  4740. 0x05 => '5 Long',
  4741. 0x04 => '4',
  4742. 0x03 => '3 Normal',
  4743. 0x02 => '2',
  4744. 0x01 => '1 Short',
  4745. 0x00 => 'Off',
  4746. },
  4747. },
  4748. 1.2 => { # CSa5
  4749. Name => 'FocusPointWrap',
  4750. Mask => 0x08,
  4751. PrintConv => {
  4752. 0x00 => 'No Wrap',
  4753. 0x08 => 'Wrap',
  4754. },
  4755. },
  4756. 1.3 => { # CSa4
  4757. Name => 'AFPointIllumination',
  4758. Mask => 0x06,
  4759. PrintConv => {
  4760. 0x00 => 'Auto',
  4761. 0x02 => 'On',
  4762. 0x04 => 'Off',
  4763. },
  4764. },
  4765. 1.4 => { # CSa7
  4766. Name => 'AFAssist',
  4767. Mask => 0x01,
  4768. PrintConv => { 0x00 => 'On', 0x01 => 'Off' },
  4769. },
  4770. 2.1 => { # CSd14
  4771. Name => 'BatteryOrder',
  4772. Mask => 0x40,
  4773. PrintConv => {
  4774. 0x00 => 'MB-D11 First',
  4775. 0x40 => 'Camera Battery First',
  4776. },
  4777. },
  4778. 2.2 => { # CSa10
  4779. Name => 'AF-OnForMB-D11',
  4780. Mask => 0x1c,
  4781. PrintConv => {
  4782. 0x00 => 'AE/AF Lock',
  4783. 0x04 => 'AE Lock Only',
  4784. 0x08 => 'AF Lock Only',
  4785. 0x0c => 'AE Lock (hold)',
  4786. 0x10 => 'AF-ON',
  4787. 0x14 => 'FV Lock',
  4788. 0x18 => 'Same as FUNC Button',
  4789. },
  4790. },
  4791. 2.3 => { # CSd13
  4792. Name => 'MB-D11BatteryType',
  4793. Mask => 0x03,
  4794. PrintConv => {
  4795. 0x00 => 'LR6 (AA alkaline)',
  4796. 0x01 => 'Ni-MH (AA Ni-MH)',
  4797. 0x02 => 'FR6 (AA lithium)',
  4798. },
  4799. },
  4800. 3.1 => { # CSd1-b
  4801. Name => 'BeepPitch',
  4802. Mask => 0xc0,
  4803. PrintConv => {
  4804. 0x00 => 'Off',
  4805. 0x40 => 'Low',
  4806. 0x80 => 'High',
  4807. },
  4808. },
  4809. 3.2 => { # CSf8
  4810. Name => 'NoMemoryCard',
  4811. Mask => 0x20,
  4812. PrintConv => {
  4813. 0x00 => 'Release Locked',
  4814. 0x20 => 'Enable Release',
  4815. },
  4816. },
  4817. 3.3 => { # CSd3
  4818. Name => 'ISODisplay',
  4819. Mask => 0x0c,
  4820. PrintConv => {
  4821. 0x00 => 'Show ISO/Easy ISO',
  4822. 0x04 => 'Show ISO Sensitivity',
  4823. 0x0c => 'Show Frame Count',
  4824. },
  4825. },
  4826. 3.4 => { # CSd2
  4827. Name => 'GridDisplay',
  4828. Mask => 0x02,
  4829. PrintConv => { 0x00 => 'On', 0x02 => 'Off' },
  4830. },
  4831. 3.5 => { # CSd4
  4832. Name => 'ViewfinderWarning',
  4833. Mask => 0x01,
  4834. PrintConv => { 0x00 => 'On', 0x01 => 'Off' },
  4835. },
  4836. 4.1 => { # CSd9
  4837. Name => 'ShootingInfoDisplay',
  4838. Mask => 0xc0,
  4839. PrintConv => {
  4840. 0x00 => 'Auto',
  4841. 0x80 => 'Manual (dark on light)',
  4842. 0xc0 => 'Manual (light on dark)',
  4843. },
  4844. },
  4845. 4.2 => { # CSd10
  4846. Name => 'LCDIllumination',
  4847. Mask => 0x20,
  4848. PrintConv => { 0x00 => 'Off', 0x20 => 'On' },
  4849. },
  4850. 4.3 => { # CSd8
  4851. Name => 'FileNumberSequence',
  4852. Mask => 0x08,
  4853. PrintConv => { 0x00 => 'On', 0x08 => 'Off' },
  4854. },
  4855. 4.4 => { # CSd5
  4856. Name => 'ScreenTips',
  4857. Mask => 0x04,
  4858. PrintConv => { 0x00 => 'Off', 0x04 => 'On' },
  4859. },
  4860. 4.5 => { # CSd1-a
  4861. Name => 'BeepVolume',
  4862. Mask => 0x03,
  4863. PrintConv => {
  4864. 0x00 => 'Off',
  4865. 0x01 => '1',
  4866. 0x02 => '2',
  4867. 0x03 => '3',
  4868. },
  4869. },
  4870. 5.1 => { # CSf9
  4871. Name => 'ReverseIndicators',
  4872. Mask => 0x80,
  4873. PrintConv => {
  4874. 0x00 => '+ 0 -',
  4875. 0x80 => '- 0 +',
  4876. },
  4877. },
  4878. 5.2 => { # CSb3
  4879. Name => 'EasyExposureCompensation',
  4880. Mask => 0x03,
  4881. PrintConv => {
  4882. 0x00 => 'Off',
  4883. 0x01 => 'On',
  4884. 0x02 => 'On Auto Reset',
  4885. },
  4886. },
  4887. 6.1 => { # CSb2
  4888. Name => 'ExposureControlStep',
  4889. Mask => 0x40,
  4890. PrintConv => {
  4891. 0x00 => '1/3 EV',
  4892. 0x40 => '1/2 EV',
  4893. },
  4894. },
  4895. 6.2 => { # CSb1
  4896. Name => 'ISOSensitivityStep',
  4897. Mask => 0x10,
  4898. PrintConv => {
  4899. 0x00 => '1/3 EV',
  4900. 0x10 => '1/2 EV',
  4901. },
  4902. },
  4903. 7.1 => { # CSb4
  4904. Name => 'CenterWeightedAreaSize',
  4905. Mask => 0xe0,
  4906. PrintConv => {
  4907. 0x00 => '6 mm',
  4908. 0x20 => '8 mm',
  4909. 0x40 => '10 mm',
  4910. 0x60 => '13 mm',
  4911. 0x80 => 'Average',
  4912. },
  4913. },
  4914. 10.1 => { # CSd11
  4915. Name => 'ExposureDelayMode',
  4916. Mask => 0x40,
  4917. PrintConv => {
  4918. 0x00 => 'Off',
  4919. 0x40 => 'On',
  4920. },
  4921. },
  4922. 10.2 => { # CSd6
  4923. Name => 'CLModeShootingSpeed',
  4924. Mask => 0x07,
  4925. PrintConv => '"$val fps"',
  4926. PrintConvInv => '$val=~s/\s*fps//i; $val',
  4927. },
  4928. 11 => { # CSd7
  4929. Name => 'MaxContinuousRelease',
  4930. # values: 1-100
  4931. },
  4932. 12.1 => { # CSe5
  4933. Name => 'AutoBracketSet',
  4934. Mask => 0xe0, #(NC)
  4935. PrintConv => {
  4936. 0x00 => 'AE & Flash', # default
  4937. 0x20 => 'AE Only',
  4938. 0x40 => 'Flash Only', #(NC)
  4939. 0x60 => 'WB Bracketing', #(NC)
  4940. 0x80 => 'Active D-Lighting', #(NC)
  4941. },
  4942. },
  4943. 12.2 => { # CSe6
  4944. Name => 'AutoBracketOrder',
  4945. Mask => 0x10,
  4946. PrintConv => {
  4947. 0x00 => '0,-,+',
  4948. 0x10 => '-,0,+',
  4949. },
  4950. },
  4951. 13.1 => { # CSf3
  4952. Name => 'FuncButton',
  4953. Mask => 0xf8,
  4954. PrintConv => {
  4955. 0x00 => 'Grid Display',
  4956. 0x08 => 'FV Lock',
  4957. 0x10 => 'Flash Off',
  4958. 0x18 => 'Matrix Metering',
  4959. 0x20 => 'Center-weighted Metering',
  4960. 0x28 => 'Spot Metering',
  4961. 0x30 => 'My Menu Top',
  4962. 0x38 => '+ NEF (RAW)',
  4963. 0x40 => 'Active D-Lighting',
  4964. 0x48 => 'Preview',
  4965. 0x50 => 'AE/AF Lock',
  4966. 0x58 => 'AE Lock Only',
  4967. 0x60 => 'AF Lock Only',
  4968. 0x68 => 'AE Lock (hold)',
  4969. 0x70 => 'Bracketing Burst',
  4970. 0x78 => 'Playback',
  4971. 0x80 => '1EV Step Speed/Aperture',
  4972. 0x88 => 'Choose Non-CPU Lens',
  4973. 0x90 => 'Virtual Horizon',
  4974. 0x98 => 'Start Movie Recording',
  4975. },
  4976. },
  4977. 14.1 => { # CSf4
  4978. Name => 'PreviewButton',
  4979. Mask => 0xf8,
  4980. PrintConv => {
  4981. 0x00 => 'Grid Display',
  4982. 0x08 => 'FV Lock',
  4983. 0x10 => 'Flash Off',
  4984. 0x18 => 'Matrix Metering',
  4985. 0x20 => 'Center-weighted Metering',
  4986. 0x28 => 'Spot Metering',
  4987. 0x30 => 'My Menu Top',
  4988. 0x38 => '+ NEF (RAW)',
  4989. 0x40 => 'Active D-Lighting',
  4990. 0x48 => 'Preview',
  4991. 0x50 => 'AE/AF Lock',
  4992. 0x58 => 'AE Lock Only',
  4993. 0x60 => 'AF Lock Only',
  4994. 0x68 => 'AE Lock (hold)',
  4995. 0x70 => 'Bracketing Burst',
  4996. 0x78 => 'Playback',
  4997. 0x80 => '1EV Step Speed/Aperture',
  4998. 0x88 => 'Choose Non-CPU Lens',
  4999. 0x90 => 'Virtual Horizon',
  5000. 0x98 => 'Start Movie Recording',
  5001. },
  5002. },
  5003. 16.1 => { # CSf5
  5004. Name => 'AELockButton',
  5005. Mask => 0x38,
  5006. PrintConv => {
  5007. 0x00 => 'AE/AF Lock',
  5008. 0x08 => 'AE Lock Only',
  5009. 0x10 => 'AF Lock Only',
  5010. 0x18 => 'AE Lock (hold)',
  5011. 0x20 => 'AF-ON',
  5012. 0x28 => 'FV Lock',
  5013. },
  5014. },
  5015. 15.1 => { # CSf2
  5016. Name => 'OKButton',
  5017. Mask => 0x18,
  5018. PrintConv => {
  5019. 0x08 => 'Select Center Focus Point',
  5020. 0x10 => 'Highlight Active Focus Point',
  5021. 0x18 => 'Not Used', #(NC)
  5022. 0x00 => 'Off', #(NC)
  5023. },
  5024. },
  5025. 17.1 => { # CSf6-a
  5026. Name => 'CommandDialsReverseRotation',
  5027. Mask => 0x80,
  5028. PrintConv => { 0x00 => 'No', 0x80 => 'Yes' },
  5029. },
  5030. 17.2 => { # CSf6-b
  5031. Name => 'CommandDialsChangeMainSub',
  5032. Mask => 0x60,
  5033. PrintConv => {
  5034. 0x00 => 'Off',
  5035. 0x20 => 'On',
  5036. 0x40 => 'On (A mode only)',
  5037. },
  5038. },
  5039. 17.3 => { # CSf6-c
  5040. Name => 'CommandDialsApertureSetting',
  5041. Mask => 0x04,
  5042. PrintConv => {
  5043. 0x00 => 'Sub-command Dial',
  5044. 0x04 => 'Aperture Ring',
  5045. },
  5046. },
  5047. 17.4 => { # CSf6-d
  5048. Name => 'CommandDialsMenuAndPlayback',
  5049. Mask => 0x18,
  5050. PrintConv => {
  5051. 0x00 => 'On',
  5052. 0x10 => 'On (Image Review Exclude)',
  5053. 0x08 => 'Off',
  5054. },
  5055. },
  5056. 17.5 => { # CSc1
  5057. Name => 'ShutterReleaseButtonAE-L',
  5058. Mask => 0x02,
  5059. PrintConv => { 0x00 => 'Off', 0x02 => 'On' },
  5060. },
  5061. 17.6 => { # CSf7
  5062. Name => 'ReleaseButtonToUseDial',
  5063. Mask => 0x01,
  5064. PrintConv => { 0x00 => 'No', 0x01 => 'Yes' },
  5065. },
  5066. 18.1 => { # CSc2
  5067. Name => 'MeteringTime',
  5068. Mask => 0xf0,
  5069. PrintConvColumns => 2,
  5070. PrintConv => {
  5071. 0x00 => '4 s',
  5072. 0x10 => '6 s', # default
  5073. 0x20 => '8 s',
  5074. 0x30 => '16 s',
  5075. 0x40 => '30 s',
  5076. 0x50 => '1 min',
  5077. 0x60 => '5 min',
  5078. 0x70 => '10 min',
  5079. 0x80 => '30 min',
  5080. 0x90 => 'No Limit',
  5081. },
  5082. },
  5083. 18.2 => { # CSc5
  5084. Name => 'RemoteOnDuration',
  5085. Mask => 0x03,
  5086. PrintConv => {
  5087. 0x00 => '1 min',
  5088. 0x01 => '5 min',
  5089. 0x02 => '10 min',
  5090. 0x03 => '15 min',
  5091. },
  5092. },
  5093. 19.1 => { # CSc3-a
  5094. Name => 'SelfTimerTime',
  5095. Mask => 0xc0,
  5096. PrintConv => {
  5097. 0x00 => '2 s',
  5098. 0x40 => '5 s',
  5099. 0x80 => '10 s', # default
  5100. 0xc0 => '20 s',
  5101. },
  5102. },
  5103. 19.2 => { # CSc3-c
  5104. Name => 'SelfTimerInterval',
  5105. Mask => 0x30,
  5106. PrintConv => {
  5107. 0x00 => '0.5 s',
  5108. 0x10 => '1 s',
  5109. 0x20 => '2 s', # default
  5110. 0x30 => '3 s',
  5111. },
  5112. },
  5113. 19.3 => { # CSc3-b
  5114. Name => 'SelfTimerShotCount',
  5115. Mask => 0x0f,
  5116. },
  5117. 20.1 => { # CSc4-d
  5118. Name => 'ImageReviewTime',
  5119. Mask => 0xe0,
  5120. PrintConv => { #(NC)
  5121. 0x00 => '4 s',
  5122. 0x20 => '10 s', # default
  5123. 0x40 => '20 s',
  5124. 0x60 => '1 min',
  5125. 0x80 => '5 min',
  5126. 0xa0 => '10 min',
  5127. },
  5128. },
  5129. 20.2 => { # CSc4-e
  5130. Name => 'LiveViewMonitorOffTime',
  5131. Mask => 0x1c,
  5132. PrintConv => { #(NC)
  5133. 0x00 => '4 s',
  5134. 0x04 => '10 s', # default
  5135. 0x08 => '20 s',
  5136. 0x0c => '1 min',
  5137. 0x10 => '5 min',
  5138. 0x14 => '10 min',
  5139. },
  5140. },
  5141. 21.1 => { # CSc4-b
  5142. Name => 'MenuMonitorOffTime',
  5143. Mask => 0xe0,
  5144. PrintConv => {
  5145. 0x00 => '4 s',
  5146. 0x20 => '10 s', # default
  5147. 0x40 => '20 s',
  5148. 0x60 => '1 min',
  5149. 0x80 => '5 min',
  5150. 0xa0 => '10 min',
  5151. },
  5152. },
  5153. 21.2 => { # CSc4-c
  5154. Name => 'ShootingInfoMonitorOffTime',
  5155. Mask => 0x1c,
  5156. PrintConv => { #(NC)
  5157. 0x00 => '4 s',
  5158. 0x04 => '10 s', # default
  5159. 0x08 => '20 s',
  5160. 0x0c => '1 min',
  5161. 0x10 => '5 min',
  5162. 0x14 => '10 min',
  5163. },
  5164. },
  5165. 22.1 => { # CSe1
  5166. Name => 'FlashSyncSpeed',
  5167. Mask => 0xf0,
  5168. PrintConv => {
  5169. 0x00 => '1/320 s (auto FP)',
  5170. 0x10 => '1/250 s (auto FP)',
  5171. 0x20 => '1/250 s',
  5172. 0x30 => '1/200 s',
  5173. 0x40 => '1/160 s',
  5174. 0x50 => '1/125 s',
  5175. 0x60 => '1/100 s',
  5176. 0x70 => '1/80 s',
  5177. 0x80 => '1/60 s',
  5178. },
  5179. },
  5180. 22.2 => { # CSe2
  5181. Name => 'FlashShutterSpeed',
  5182. Mask => 0x0f,
  5183. PrintConvColumns => 2,
  5184. PrintConv => {
  5185. 0x00 => '1/60 s',
  5186. 0x01 => '1/30 s',
  5187. 0x02 => '1/15 s',
  5188. 0x03 => '1/8 s',
  5189. 0x04 => '1/4 s',
  5190. 0x05 => '1/2 s',
  5191. 0x06 => '1 s',
  5192. 0x07 => '2 s',
  5193. 0x08 => '4 s',
  5194. 0x09 => '8 s',
  5195. 0x0a => '15 s',
  5196. 0x0b => '30 s',
  5197. },
  5198. },
  5199. 23.1 => { # CSe3
  5200. Name => 'FlashControlBuilt-in',
  5201. Mask => 0xc0,
  5202. RawConv => '$$self{FlashControlBuiltin} = $val',
  5203. PrintConv => {
  5204. 0x00 => 'TTL',
  5205. 0x40 => 'Manual',
  5206. 0x80 => 'Repeating Flash',
  5207. 0xc0 => 'Commander Mode',
  5208. },
  5209. },
  5210. 23.2 => { # CSe3-b
  5211. Name => 'ManualFlashOutput',
  5212. Condition => '$$self{FlashControlBuiltin} == 0x40',
  5213. Mask => 0x1f,
  5214. ValueConv => '2 ** (-$val/3)',
  5215. ValueConvInv => '$val > 0 ? -3*log($val)/log(2) : 0',
  5216. PrintConv => q{
  5217. return 'Full' if $val > 0.99;
  5218. Image::ExifTool::Exif::PrintExposureTime($val);
  5219. },
  5220. PrintConvInv => '$val=~/F/i ? 1 : Image::ExifTool::Exif::ConvertFraction($val)',
  5221. },
  5222. 24.1 => { # CSe3-ca
  5223. Name => 'RepeatingFlashOutput',
  5224. Condition => '$$self{FlashControlBuiltin} == 0x80',
  5225. Mask => 0x70,
  5226. ValueConv => '2 ** (-($val>>4)-2)',
  5227. ValueConvInv => '$val > 0 ? int(-log($val)/log(2)-2+0.5)<<4 : 0',
  5228. PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
  5229. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  5230. },
  5231. 24.2 => { # CSe3-cb
  5232. Name => 'RepeatingFlashCount',
  5233. Condition => '$$self{FlashControlBuiltin} == 0x80',
  5234. Mask => 0x0f,
  5235. ValueConv => '$val < 10 ? $val + 1 : 5 * ($val - 7)',
  5236. ValueConvInv => '$val <= 10 ? $val - 1 : $val / 5 + 7',
  5237. },
  5238. 25.1 => { # CSe3-cc (NC)
  5239. Name => 'RepeatingFlashRate',
  5240. Condition => '$$self{FlashControlBuiltin} == 0x80',
  5241. Mask => 0xf0,
  5242. ValueConv => 'my $v=($val>>4); $v < 10 ? $v + 1 : 10 * ($v - 8)',
  5243. ValueConvInv => 'int(($val <= 10 ? $val - 1 : $val / 10 + 8) + 0.5) << 4',
  5244. PrintConv => '"$val Hz"',
  5245. PrintConvInv => '$val=~/(\d+)/; $1 || 0',
  5246. },
  5247. 26.1 => { # CSe3-da
  5248. Name => 'CommanderInternalTTLCompBuiltin',
  5249. Condition => '$$self{FlashControlBuiltin} == 0xc0',
  5250. Mask => 0x1f,
  5251. ValueConv => '($val - 9) / 3',
  5252. ValueConvInv => '$val * 3 + 9',
  5253. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  5254. PrintConvInv => '$val',
  5255. },
  5256. 27.1 => { # CSe3-db
  5257. Name => 'CommanderInternalTTLCompGroupA',
  5258. Condition => '$$self{FlashControlBuiltin} == 0xc0',
  5259. Mask => 0x1f,
  5260. ValueConv => '($val - 9) / 3',
  5261. ValueConvInv => '$val * 3 + 9',
  5262. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  5263. PrintConvInv => '$val',
  5264. },
  5265. 28.1 => { # CSe3-dc
  5266. Name => 'CommanderInternalTTLCompGroupB',
  5267. Condition => '$$self{FlashControlBuiltin} == 0xc0',
  5268. Mask => 0x1f,
  5269. ValueConv => '($val - 9) / 3',
  5270. ValueConvInv => '$val * 3 + 9',
  5271. PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
  5272. PrintConvInv => '$val',
  5273. },
  5274. 30.1 => { # CSd11
  5275. Name => 'FlashWarning',
  5276. Mask => 0x80,
  5277. PrintConv => {
  5278. 0x00 => 'On',
  5279. 0x80 => 'Off',
  5280. },
  5281. },
  5282. 30.2 => { # CSe4
  5283. Name => 'ModelingFlash',
  5284. Mask => 0x20,
  5285. PrintConv => { 0x00 => 'On', 0x20 => 'Off' },
  5286. },
  5287. 34.1 => { # CSa8-b
  5288. Name => 'LiveViewAFAreaMode',
  5289. Mask => 0x60,
  5290. PrintConv => {
  5291. 0x00 => 'Face-Priority',
  5292. 0x20 => 'NormalArea',
  5293. 0x40 => 'WideArea',
  5294. 0x60 => 'SubjectTracking',
  5295. },
  5296. },
  5297. 34.2 => { # CSa8-a
  5298. Name => 'LiveViewAFMode',
  5299. Mask => 0x02,
  5300. PrintConv => {
  5301. 0x00 => 'AF-C',
  5302. 0x02 => 'AF-F',
  5303. },
  5304. },
  5305. 35.1 => { # CSc4-a
  5306. Name => 'PlaybackMonitorOffTime',
  5307. Mask => 0xe0,
  5308. PrintConv => {
  5309. 0x00 => '4 s',
  5310. 0x20 => '10 s', # default
  5311. 0x40 => '20 s',
  5312. 0x60 => '1 min',
  5313. 0x80 => '5 min',
  5314. 0xa0 => '10 min',
  5315. },
  5316. },
  5317. );
  5318. # D4/D4S custom settings (ref 1, decoded from D4S)
  5319. %Image::ExifTool::NikonCustom::SettingsD4 = (
  5320. PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
  5321. WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
  5322. CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
  5323. WRITABLE => 1,
  5324. FIRST_ENTRY => 0,
  5325. GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
  5326. NOTES => 'Custom settings for the D4 and D4S.',
  5327. 0.1 => {
  5328. Name => 'CustomSettingsBank',
  5329. Mask => 0x03,
  5330. PrintConv => {
  5331. 0 => 'A',
  5332. 1 => 'B',
  5333. 2 => 'C',
  5334. 3 => 'D',
  5335. },
  5336. },
  5337. 1.1 => { #CSa1
  5338. Name => 'AF-CPrioritySelection',
  5339. Mask => 0xc0,
  5340. PrintConv => {
  5341. 0x00 => 'Release',
  5342. 0x40 => 'Release + Focus',
  5343. 0x80 => 'Focus',
  5344. 0xc0 => 'Focus + Release',
  5345. },
  5346. },
  5347. 1.2 => { # CSa2
  5348. Name => 'AF-SPrioritySelection',
  5349. Mask => 0x20,
  5350. PrintConv => {
  5351. 0x00 => 'Focus',
  5352. 0x20 => 'Release',
  5353. },
  5354. },
  5355. 1.3 => { # CSa7
  5356. Name => 'AFPointSelection',
  5357. Mask => 0x10,
  5358. PrintConv => {
  5359. 0x00 => '51 Points',
  5360. 0x10 => '11 Points',
  5361. },
  5362. },
  5363. 1.4 => { # CSa3
  5364. Name => 'FocusTrackingLockOn',
  5365. Mask => 0x07,
  5366. PrintConv => {
  5367. 0x00 => 'Off',
  5368. 0x01 => '1 (Short)',
  5369. 0x02 => '2',
  5370. 0x03 => '3 (Normal)',
  5371. 0x04 => '4',
  5372. 0x05 => '5 (Long)',
  5373. },
  5374. },
  5375. 2.1 => { # CSa4
  5376. Name => 'AFActivation',
  5377. Mask => 0x80,
  5378. PrintConv => {
  5379. 0x00 => 'Shutter/AF-On',
  5380. 0x80 => 'AF-On Only',
  5381. },
  5382. },
  5383. 2.2 => { # CSa6
  5384. Name => 'FocusPointWrap',
  5385. Mask => 0x08,
  5386. PrintConv => {
  5387. 0x00 => 'No Wrap',
  5388. 0x08 => 'Wrap',
  5389. },
  5390. },
  5391. 4.1 => { # CSd1-b
  5392. Name => 'Pitch',
  5393. Mask => 0x40,
  5394. PrintConv => { 0x00 => 'High', 0x40 => 'Low' },
  5395. },
  5396. 4.2 => { # CSf12
  5397. Name => 'NoMemoryCard',
  5398. Mask => 0x20,
  5399. PrintConv => {
  5400. 0x00 => 'Release Locked',
  5401. 0x20 => 'Enable Release',
  5402. },
  5403. },
  5404. 4.3 => { # CSd6
  5405. Name => 'GridDisplay',
  5406. Mask => 0x02,
  5407. PrintConv => { 0x00 => 'On', 0x02 => 'Off' },
  5408. },
  5409. 5.1 => { # CSd9
  5410. Name => 'ShootingInfoDisplay',
  5411. Mask => 0xc0,
  5412. PrintConv => {
  5413. # 0x00 - seen for D4 (PH)
  5414. 0x40 => 'Auto',
  5415. 0x80 => 'Manual (dark on light)',
  5416. 0xc0 => 'Manual (light on dark)',
  5417. },
  5418. },
  5419. 5.2 => { # CSd10
  5420. Name => 'LCDIllumination',
  5421. Mask => 0x20,
  5422. PrintConv => { 0x00 => 'Off', 0x20 => 'On' },
  5423. },
  5424. 5.3 => { # CSd8
  5425. Name => 'ScreenTips',
  5426. Mask => 0x04,
  5427. PrintConv => { 0x00 => 'Off', 0x04 => 'On' },
  5428. },
  5429. 5.4 => { # CSd1-a
  5430. Name => 'Beep',
  5431. Mask => 0x03,
  5432. PrintConv => {
  5433. 0x00 => 'Off',
  5434. 0x01 => 'Low',
  5435. 0x02 => 'Medium',
  5436. 0x03 => 'High',
  5437. },
  5438. },
  5439. 6.1 => { # CSf13
  5440. Name => 'ReverseIndicators',
  5441. Mask => 0x80,
  5442. PrintConv => {
  5443. 0x00 => '+ 0 -',
  5444. 0x80 => '- 0 +',
  5445. },
  5446. },
  5447. 6.2 => { # CSd7-a
  5448. Name => 'RearDisplay',
  5449. Mask => 0x40,
  5450. PrintConv => {
  5451. 0x00 => 'ISO',
  5452. 0x40 => 'Exposures Remaining',
  5453. },
  5454. },
  5455. 6.3 => { # CSd7-b
  5456. Name => 'ViewfinderDisplay',
  5457. Mask => 0x20,
  5458. PrintConv => {
  5459. 0x00 => 'Frame Count',
  5460. 0x20 => 'Exposures Remaining',
  5461. },
  5462. },
  5463. 6.4 => { # CSd10-a
  5464. Name => 'CommandDialsReverseRotation',
  5465. Mask => 0x18,
  5466. PrintConv => {
  5467. 0x00 => 'No',
  5468. 0x08 => 'Shutter Speed & Aperture',
  5469. 0x10 => 'Exposure Compensation',
  5470. 0x18 => 'Exposure Compensation, Shutter Speed & Aperture',
  5471. },
  5472. },
  5473. 6.5 => { # CSb4
  5474. Name => 'EasyExposureCompensation',
  5475. Mask => 0x03,
  5476. PrintConv => {
  5477. 0x00 => 'Off',
  5478. 0x01 => 'On',
  5479. 0x02 => 'On (auto reset)',
  5480. },
  5481. },
  5482. 7.1 => { # CSb2
  5483. Name => 'ExposureControlStepSize',
  5484. Mask => 0xc0,
  5485. PrintConv => {
  5486. 0x00 => '1/3 EV',
  5487. 0x40 => '1/2 EV',
  5488. 0x80 => '1 EV',
  5489. },
  5490. },
  5491. 7.2 => { # CSb1
  5492. Name => 'ISOStepSize',
  5493. Mask => 0x30,
  5494. PrintConv => {
  5495. 0x00 => '1/3 EV',
  5496. 0x10 => '1/2 EV',
  5497. 0x20 => '1 EV',
  5498. },
  5499. },
  5500. 7.3 => { # CSb3
  5501. Name => 'ExposureCompStepSize',
  5502. Mask => 0x0c,
  5503. PrintConv => {
  5504. 0x00 => '1/3 EV',
  5505. 0x04 => '1/2 EV',
  5506. 0x08 => '1 EV',
  5507. },
  5508. },
  5509. 8.1 => { # CSb6 (CSb5 for D4)
  5510. Name => 'CenterWeightedAreaSize',
  5511. Mask => 0xe0,
  5512. PrintConv => {
  5513. 0x00 => '8 mm',
  5514. 0x20 => '12 mm',
  5515. 0x40 => '15 mm',
  5516. 0x60 => '20 mm',
  5517. 0x80 => 'Average',
  5518. },
  5519. },
  5520. 8.2 => { # CSb7-a
  5521. Name => 'FineTuneOptMatrixMetering',
  5522. Mask => 0x0f,
  5523. ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
  5524. ValueConvInv => 'int($val*6+($val>0?0.5:-0.5)) & 0x0f',
  5525. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  5526. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  5527. },
  5528. 9.1 => { # CSb7-b
  5529. Name => 'FineTuneOptCenterWeighted',
  5530. Mask => 0xf0,
  5531. ValueConv => '($val > 0x70 ? $val - 0x100 : $val) / 0x60',
  5532. ValueConvInv => '(int($val*6+($val>0?0.5:-0.5))<<4) & 0xf0',
  5533. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  5534. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  5535. },
  5536. 9.2 => { # CSb7-c
  5537. Name => 'FineTuneOptSpotMetering',
  5538. Mask => 0x0f,
  5539. ValueConv => '($val > 0x7 ? $val - 0x10 : $val) / 6',
  5540. ValueConvInv => 'int($val*6+($val>0?0.5:-0.5)) & 0x0f',
  5541. PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
  5542. PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
  5543. },
  5544. 10.1 => { # CSf1-a
  5545. Name => 'MultiSelectorShootMode',
  5546. Mask => 0xc0,
  5547. PrintConv => {
  5548. 0x00 => 'Select Center Focus Point (Reset)',
  5549. 0x80 => 'Preset Focus Point (Pre)',
  5550. 0xc0 => 'Not Used (None)',
  5551. },
  5552. },
  5553. 10.2 => { # CSf1-b
  5554. Name => 'MultiSelectorPlaybackMode',
  5555. Mask => 0x30,
  5556. PrintConv => {
  5557. 0x00 => 'Thumbnail On/Off',
  5558. 0x10 => 'View Histograms',
  5559. 0x20 => 'Zoom On/Off',
  5560. 0x30 => 'Choose Folder',
  5561. },
  5562. },
  5563. 10.3 => { # CSf2
  5564. Name => 'MultiSelector',
  5565. Mask => 0x01,
  5566. PrintConv => {
  5567. 0x00 => 'Do Nothing',
  5568. 0x01 => 'Reset Meter-off Delay',
  5569. },
  5570. },
  5571. 11.1 => { # CSd4
  5572. Name => 'ExposureDelayMode',
  5573. Mask => 0xc0,
  5574. PrintConv => {
  5575. 0x00 => 'Off',
  5576. 0x40 => '1 s',
  5577. 0x80 => '2 s',
  5578. 0xc0 => '3 s',
  5579. },
  5580. },
  5581. 11.2 => { # CSd2-a
  5582. Name => 'CHModeShootingSpeed',
  5583. Mask => 0x10,
  5584. PrintConv => {
  5585. 0x00 => '10 fps',
  5586. 0x10 => '11 fps',
  5587. },
  5588. },
  5589. 11.3 => { # CSd2-b
  5590. Name => 'CLModeShootingSpeed',
  5591. Mask => 0x0f,
  5592. PrintConv => '"$val fps"',
  5593. PrintConvInv => '$val=~s/\s*fps//i; $val',
  5594. },
  5595. 12 => { # CSd3
  5596. Name => 'MaxContinuousRelease',
  5597. # values: 1-200
  5598. },
  5599. 13.1 => { # CSe6
  5600. Name => 'AutoBracketSet',
  5601. Mask => 0xe0,
  5602. PrintConv => {
  5603. 0x00 => 'AE & Flash',
  5604. 0x20 => 'AE Only',
  5605. 0x40 => 'Flash Only',
  5606. 0x60 => 'WB Bracketing',
  5607. 0x80 => 'Active D-Lighting',
  5608. },
  5609. },
  5610. 13.2 => { # CSe8
  5611. Name => 'AutoBracketOrder',
  5612. Mask => 0x10,
  5613. PrintConv => {
  5614. 0x00 => '0,-,+',
  5615. 0x10 => '-,0,+',
  5616. },
  5617. },
  5618. 13.3 => { # CSe7
  5619. Name => 'AutoBracketModeM',
  5620. Mask => 0x0c,
  5621. PrintConv => {
  5622. 0x00 => 'Flash/Speed',
  5623. 0x04 => 'Flash/Speed/Aperture',
  5624. 0x08 => 'Flash/Aperture',
  5625. 0x0c => 'Flash Only',
  5626. },
  5627. },
  5628. 14.1 => { # CSf3-a
  5629. Name => 'FuncButton',
  5630. Mask => 0xf8,
  5631. PrintConv => {
  5632. 0x00 => 'None',
  5633. 0x08 => 'Preview',
  5634. 0x10 => 'FV Lock',
  5635. 0x18 => 'AE/AF Lock',
  5636. 0x20 => 'AE Lock Only',
  5637. 0x28 => 'AE Lock (reset on release)',
  5638. 0x30 => 'AE Lock (hold)',
  5639. 0x38 => 'AF Lock Only',
  5640. 0x40 => 'AF-On',
  5641. 0x50 => 'Bracketing Burst',
  5642. 0x58 => 'Matrix Metering',
  5643. 0x60 => 'Center-weighted Metering',
  5644. 0x68 => 'Spot Metering',
  5645. 0x70 => 'Playback',
  5646. 0x78 => 'My Menu Top Item',
  5647. 0x80 => '+NEF(RAW)',
  5648. 0x88 => 'Virtual Horizon',
  5649. 0x90 => 'My Menu',
  5650. 0xa0 => 'Grid Display',
  5651. 0xa8 => 'Disable Synchronized Release',
  5652. 0xb0 => 'Remote Release Only',
  5653. 0xd0 => 'Flash Disable/Enable',
  5654. },
  5655. },
  5656. 14.2 => { # CSf3-b
  5657. Name => 'FuncButtonPlusDials',
  5658. Mask => 0x07,
  5659. PrintConv => {
  5660. 0 => 'None',
  5661. 1 => 'Choose Image Area (FX/DX/5:4)',
  5662. 2 => 'Shutter Speed & Aperture Lock',
  5663. 3 => 'One Step Speed / Aperture',
  5664. 4 => 'Choose Non-CPU Lens Number',
  5665. 5 => 'Active D-Lighting',
  5666. 6 => 'Shooting Bank Menu',
  5667. },
  5668. },
  5669. 15.1 => { # CSf4-a
  5670. Name => 'PreviewButton',
  5671. Mask => 0xf8,
  5672. PrintConv => {
  5673. 0x00 => 'None',
  5674. 0x08 => 'Preview',
  5675. 0x10 => 'FV Lock',
  5676. 0x18 => 'AE/AF Lock',
  5677. 0x20 => 'AE Lock Only',
  5678. 0x28 => 'AE Lock (reset on release)',
  5679. 0x30 => 'AE Lock (hold)',
  5680. 0x38 => 'AF Lock Only',
  5681. 0x40 => 'AF-On',
  5682. 0x50 => 'Bracketing Burst',
  5683. 0x58 => 'Matrix Metering',
  5684. 0x60 => 'Center-weighted Metering',
  5685. 0x68 => 'Spot Metering',
  5686. 0x70 => 'Playback',
  5687. 0x78 => 'My Menu Top Item',
  5688. 0x80 => '+NEF(RAW)',
  5689. 0x88 => 'Virtual Horizon',
  5690. 0x90 => 'My Menu',
  5691. 0xa0 => 'Grid Display',
  5692. 0xa8 => 'Disable Synchronized Release',
  5693. 0xb0 => 'Remote Release Only',
  5694. 0xd0 => 'Flash Disable/Enable',
  5695. },
  5696. },
  5697. 15.2 => { # CSf4-b
  5698. Name => 'PreviewButtonPlusDials',
  5699. Mask => 0x07,
  5700. PrintConv => {
  5701. 0 => 'None',
  5702. 1 => 'Choose Image Area (FX/DX/5:4)',
  5703. 2 => 'Shutter Speed & Aperture Lock',
  5704. 3 => 'One Step Speed / Aperture',
  5705. 4 => 'Choose Non-CPU Lens Number',
  5706. 5 => 'Active D-Lighting',
  5707. 6 => 'Shooting Bank Menu',
  5708. },
  5709. },
  5710. 16.1 => { # CSf9
  5711. Name => 'AssignBktButton',
  5712. Mask => 0x07,
  5713. PrintConv => {
  5714. 0 => 'Auto Bracketing',
  5715. 1 => 'Multiple Exposure',
  5716. 2 => 'HDR (high dynamic range)',
  5717. 3 => 'None',
  5718. },
  5719. },
  5720. 18.1 => { # CSf10-b
  5721. Name => 'CommandDialsChangeMainSub',
  5722. Mask => 0xe0,
  5723. PrintConv => {
  5724. 0x00 => 'Autofocus Off, Exposure Off',
  5725. 0x20 => 'Autofocus Off, Exposure On',
  5726. 0x40 => 'Autofocus Off, Exposure On (Mode A)',
  5727. 0x80 => 'Autofocus On, Exposure Off',
  5728. 0xa0 => 'Autofocus On, Exposure On',
  5729. 0xc0 => 'Autofocus On, Exposure On (Mode A)',
  5730. },
  5731. },
  5732. 18.2 => { # CSf10-d
  5733. Name => 'CommandDialsMenuAndPlayback',
  5734. Mask => 0x18,
  5735. PrintConv => {
  5736. 0x00 => 'On',
  5737. 0x08 => 'Off',
  5738. 0x10 => 'On (Image Review Excluded)',
  5739. },
  5740. },
  5741. 18.3 => { # CSf10-c
  5742. Name => 'CommandDialsApertureSetting',
  5743. Mask => 0x04,
  5744. PrintConv => {
  5745. 0x00 => 'Sub-command Dial',
  5746. 0x04 => 'Aperture Ring',
  5747. },
  5748. },
  5749. 18.4 => { # CSc1
  5750. Name => 'ShutterReleaseButtonAE-L',
  5751. Mask => 0x02,
  5752. PrintConv => { 0x00 => 'Off', 0x02 => 'On' },
  5753. },
  5754. 18.5 => { # CSf11
  5755. Name => 'ReleaseButtonToUseDial',
  5756. Mask => 0x01,
  5757. PrintConv => { 0x00 => 'No', 0x01 => 'Yes' },
  5758. },
  5759. 19.1 => { # CSc2
  5760. Name => 'StandbyTimer',
  5761. Mask => 0xf0,
  5762. PrintConv => {
  5763. 0x00 => '4 s',
  5764. 0x10 => '6 s',
  5765. 0x30 => '10 s',
  5766. 0x50 => '30 s',
  5767. 0x60 => '1 min',
  5768. 0x70 => '5 min',
  5769. 0x80 => '10 min',
  5770. 0x90 => '30 min',
  5771. },
  5772. },
  5773. 20.1 => { # CSc3-a
  5774. Name => 'SelfTimerTime',
  5775. Mask => 0xc0,
  5776. PrintConv => {
  5777. 0x00 => '2 s',
  5778. 0x40 => '5 s',
  5779. 0x80 => '10 s',
  5780. 0xc0 => '20 s',
  5781. },
  5782. },
  5783. 20.2 => { # CSc3-b
  5784. Name => 'SelfTimerShotCount',
  5785. Mask => 0x0f,
  5786. },
  5787. 20.3 => { # CSc3-c
  5788. Name => 'SelfTimerShotInterval',
  5789. Mask => 0x30,
  5790. PrintConv => {
  5791. 0x00 => '0.5 s',
  5792. 0x10 => '1 s',
  5793. 0x20 => '2 s',
  5794. 0x30 => '3 s',
  5795. },
  5796. },
  5797. 21.1 => { # CSc4-d
  5798. Name => 'ImageReviewMonitorOffTime',
  5799. Mask => 0xe0,
  5800. PrintConv => {
  5801. 0x00 => '2 s',
  5802. 0x20 => '4 s',
  5803. 0x40 => '10 s',
  5804. 0x60 => '20 s',
  5805. 0x80 => '1 min',
  5806. 0xa0 => '5 min',
  5807. 0xc0 => '10 min',
  5808. },
  5809. },
  5810. 21.2 => { # CSc4-e
  5811. Name => 'LiveViewMonitorOffTime',
  5812. Mask => 0x1c,
  5813. PrintConv => {
  5814. 0x00 => '5 min',
  5815. 0x04 => '10 min',
  5816. 0x08 => '15 min',
  5817. 0x0c => '20 min',
  5818. 0x10 => '30 min',
  5819. 0x14 => 'No Limit',
  5820. },
  5821. },
  5822. 22.1 => { # CSc4-b
  5823. Name => 'MenuMonitorOffTime',
  5824. Mask => 0xe0,
  5825. PrintConv => {
  5826. 0x00 => '4 s',
  5827. 0x20 => '10 s',
  5828. 0x40 => '20 s',
  5829. 0x60 => '1 min',
  5830. 0x80 => '5 min',
  5831. 0xa0 => '10 min',
  5832. },
  5833. },
  5834. 22.2 => { # CSc4-c
  5835. Name => 'ShootingInfoMonitorOffTime',
  5836. Mask => 0x1c,
  5837. PrintConv => {
  5838. 0x00 => '4 s',
  5839. 0x04 => '10 s',
  5840. 0x08 => '20 s',
  5841. 0x0c => '1 min',
  5842. 0x10 => '5 min',
  5843. 0x14 => '10 min',
  5844. },
  5845. },
  5846. 23.1 => { # CSe1
  5847. Name => 'FlashSyncSpeed',
  5848. Mask => 0xf0,
  5849. PrintConv => {
  5850. # 0x00 - seen for D4 (PH)
  5851. 0x10 => '1/250 s (auto FP)',
  5852. 0x20 => '1/250 s',
  5853. 0x30 => '1/200 s',
  5854. 0x40 => '1/160 s',
  5855. 0x50 => '1/125 s',
  5856. 0x60 => '1/100 s',
  5857. 0x70 => '1/80 s',
  5858. 0x80 => '1/60 s',
  5859. },
  5860. },
  5861. 23.2 => { # CSe2
  5862. Name => 'FlashShutterSpeed',
  5863. Mask => 0x0f,
  5864. PrintConvColumns => 2,
  5865. PrintConv => {
  5866. 0x00 => '1/60 s',
  5867. 0x01 => '1/30 s',
  5868. 0x02 => '1/15 s',
  5869. 0x03 => '1/8 s',
  5870. 0x04 => '1/4 s',
  5871. 0x05 => '1/2 s',
  5872. 0x06 => '1 s',
  5873. 0x07 => '2 s',
  5874. 0x08 => '4 s',
  5875. 0x09 => '8 s',
  5876. 0x0a => '15 s',
  5877. 0x0b => '30 s',
  5878. },
  5879. },
  5880. 31.1 => { # CSe5
  5881. Name => 'ModelingFlash',
  5882. Mask => 0x20,
  5883. PrintConv => {
  5884. 0x00 => 'On',
  5885. 0x20 => 'Off',
  5886. },
  5887. },
  5888. 36.1 => { # CSc4-a
  5889. Name => 'PlaybackMonitorOffTime',
  5890. Mask => 0xe0,
  5891. PrintConv => {
  5892. 0x00 => '4 s',
  5893. 0x20 => '10 s',
  5894. 0x40 => '20 s',
  5895. 0x60 => '1 min',
  5896. 0x80 => '5 min',
  5897. 0xa0 => '10 min',
  5898. },
  5899. },
  5900. 37.1 => { # CSf15
  5901. Name => 'PlaybackZoom',
  5902. Mask => 0x01,
  5903. PrintConv => {
  5904. 0x00 => 'Use Separate Zoom Buttons',
  5905. 0x01 => 'Use Either Zoom Button with Command Dial',
  5906. },
  5907. },
  5908. 38.1 => { # CSf8-a
  5909. Name => 'ShutterSpeedLock',
  5910. Mask => 0x80,
  5911. PrintConv => {
  5912. 0x00 => 'Off',
  5913. 0x80 => 'On',
  5914. },
  5915. },
  5916. 38.2 => { # CSf8-b
  5917. Name => 'ApertureLock',
  5918. Mask => 0x40,
  5919. PrintConv => {
  5920. 0x00 => 'Off',
  5921. 0x40 => 'On',
  5922. },
  5923. },
  5924. 38.3 => { # CSg4
  5925. Name => 'MovieShutterButton',
  5926. Mask => 0x30,
  5927. PrintConv => {
  5928. 0x00 => 'Take Photo',
  5929. 0x10 => 'Record Movies',
  5930. 0x20 => 'Live Frame Grab',
  5931. },
  5932. },
  5933. 38.4 => { # CSe4
  5934. Name => 'FlashExposureCompArea',
  5935. Mask => 0x04,
  5936. PrintConv => {
  5937. 0x00 => 'Entire frame',
  5938. 0x04 => 'Background only',
  5939. },
  5940. },
  5941. 41.1 => { # CSg1-a
  5942. Name => 'MovieFunctionButton',
  5943. Mask => 0x70,
  5944. PrintConv => {
  5945. 0x00 => 'None',
  5946. 0x10 => 'Power Aperture (open)', # bit '02' is also toggled on for this setting
  5947. 0x30 => 'Index Marking',
  5948. 0x40 => 'View Photo Shooting Info',
  5949. },
  5950. },
  5951. 41.2 => { # CSg2-a
  5952. Name => 'MoviePreviewButton',
  5953. Mask => 0x07,
  5954. PrintConv => {
  5955. 0x00 => 'None',
  5956. 0x02 => 'Power Aperture (open)', # bit '10' is also toggled on for this setting
  5957. 0x03 => 'Index Marking',
  5958. 0x04 => 'View Photo Shooting Info',
  5959. },
  5960. },
  5961. 42.1 => { # CSf14
  5962. Name => 'VerticalMultiSelector',
  5963. Mask => 0x60,
  5964. PrintConv => {
  5965. 0x00 => 'Same as Multi-Selector with Info(U/D) & Playback(R/L)',
  5966. 0x20 => 'Same as Multi-Selector with Info(R/L) & Playback(U/D)',
  5967. 0x40 => 'Focus Point Selection',
  5968. },
  5969. },
  5970. 42.2 => { # CSf7-a
  5971. Name => 'VerticalFuncButton',
  5972. Mask => 0x1f,
  5973. PrintConv => {
  5974. 0 => 'None',
  5975. 1 => 'Preview',
  5976. 2 => 'FV Lock',
  5977. 3 => 'AE/AF Lock',
  5978. 4 => 'AE Lock Only',
  5979. 5 => 'AE Lock (reset on release)',
  5980. 6 => 'AE Lock (hold)',
  5981. 7 => 'AF Lock Only',
  5982. 10 => 'Bracketing Burst',
  5983. 11 => 'Matrix Metering',
  5984. 12 => 'Center-weighted Metering',
  5985. 13 => 'Spot Metering',
  5986. 14 => 'Playback',
  5987. 15 => 'My Menu Top Item',
  5988. 16 => '+NEF(RAW)',
  5989. 17 => 'Virtual Horizon',
  5990. 18 => 'My Menu',
  5991. 20 => 'Grid Display',
  5992. 26 => 'Flash Disable/Enable',
  5993. },
  5994. },
  5995. 43.1 => { # CSf7-b
  5996. Name => 'VerticalFuncButtonPlusDials',
  5997. Mask => 0xf0,
  5998. PrintConv => {
  5999. 0x00 => 'None',
  6000. 0x10 => 'Choose Image Area (FX/DX/5:4)',
  6001. 0x20 => 'Shutter Speed & Aperture Lock',
  6002. 0x30 => 'One Step Speed / Aperture',
  6003. 0x40 => 'Choose Non-CPU Lens Number',
  6004. 0x50 => 'Active D-Lighting',
  6005. 0x60 => 'Shooting Bank Menu',
  6006. 0x70 => 'ISO Sensitivity',
  6007. 0x80 => 'Exposure Mode',
  6008. 0x90 => 'Exposure Compensation',
  6009. 0xa0 => 'Metering',
  6010. },
  6011. },
  6012. 43.2 => { # CSf16
  6013. Name => 'AssignMovieRecordButton',
  6014. Mask => 0x07,
  6015. PrintConv => {
  6016. 0x00 => 'None',
  6017. 0x01 => 'Choose Image Area (FX/DX/5:4)',
  6018. 0x02 => 'Shutter Speed & Aperture Lock',
  6019. 0x03 => 'ISO Sensitivity',
  6020. 0x04 => 'Shooting Bank Menu',
  6021. },
  6022. },
  6023. 46.1 => { # CSa5-c
  6024. Name => 'DynamicAreaAFDisplay',
  6025. Mask => 0x80,
  6026. PrintConv => {
  6027. 0x00 => 'Off',
  6028. 0x80 => 'On',
  6029. },
  6030. },
  6031. 46.2 => { # CSa5-a
  6032. Name => 'AFPointIllumination',
  6033. Mask => 0x60,
  6034. PrintConv => {
  6035. 0x00 => 'Off',
  6036. 0x20 => 'On in Continuous Shooting Modes',
  6037. 0x40 => 'On During Manual Focusing',
  6038. 0x60 => 'On in Continuous Shooting and Manual Focusing',
  6039. },
  6040. },
  6041. 46.3 => { # CSa10 (D4 is slightly different -- needs checking)
  6042. Name => 'StoreByOrientation',
  6043. Mask => 0x18,
  6044. PrintConv => {
  6045. 0x00 => 'Off',
  6046. 0x08 => 'Focus Point',
  6047. 0x10 => 'Focus Point and AF-area mode',
  6048. },
  6049. },
  6050. 46.4 => { # CSa5-d
  6051. Name => 'GroupAreaAFIllumination',
  6052. Mask => 0x04,
  6053. PrintConv => {
  6054. 0x00 => 'Squares',
  6055. 0x04 => 'Dots',
  6056. },
  6057. },
  6058. 46.5 => { # CSa5-b
  6059. Name => 'AFPointBrightness',
  6060. Mask => 0x03,
  6061. PrintConv => {
  6062. 0x00 => 'Low',
  6063. 0x01 => 'Normal',
  6064. 0x02 => 'High',
  6065. 0x03 => 'Extra High',
  6066. },
  6067. },
  6068. 47.1 => { # CSa8
  6069. Name => 'AFOnButton',
  6070. Mask => 0x70,
  6071. PrintConv => {
  6072. 0x00 => 'AF On',
  6073. 0x10 => 'AE/AF Lock',
  6074. 0x20 => 'AE Lock Only',
  6075. 0x30 => 'AE Lock (reset on release)',
  6076. 0x40 => 'AE Lock (hold)',
  6077. 0x50 => 'AF Lock Only',
  6078. 0x60 => 'None',
  6079. },
  6080. },
  6081. 47.2 => { # CSa9
  6082. Name => 'VerticalAFOnButton',
  6083. Mask => 0x07,
  6084. PrintConv => {
  6085. 0 => 'Same as AF On',
  6086. 1 => 'AF On',
  6087. 2 => 'AE/AF Lock',
  6088. 3 => 'AE Lock Only',
  6089. 4 => 'AE Lock (reset on release)',
  6090. 5 => 'AE Lock (hold)',
  6091. 6 => 'AF Lock Only',
  6092. 7 => 'None',
  6093. },
  6094. },
  6095. 48.1 => { # CSf5
  6096. Name => 'SubSelectorAssignment',
  6097. Mask => 0x80,
  6098. PrintConv => {
  6099. 0x00 => 'Focus Point Selection',
  6100. 0x80 => 'Same As Multi-selector',
  6101. },
  6102. },
  6103. 48.2 => { # CSg3-a
  6104. Name => 'MovieSubSelectorAssignment',
  6105. Mask => 0x07,
  6106. PrintConv => {
  6107. 0 => 'None',
  6108. 1 => 'Index Marking',
  6109. 2 => 'AE/AF Lock',
  6110. 3 => 'AE Lock Only',
  6111. 4 => 'AE Lock (hold)',
  6112. 5 => 'AF Lock Only',
  6113. 6 => 'View Photo Shooting Info',
  6114. },
  6115. },
  6116. 49.1 => { # CSf6-a
  6117. Name => 'SubSelector',
  6118. Mask => 0xf8,
  6119. PrintConv => {
  6120. 0x00 => 'None',
  6121. 0x08 => 'Preview',
  6122. 0x10 => 'FV Lock',
  6123. 0x18 => 'AE/AF Lock',
  6124. 0x20 => 'AE Lock Only',
  6125. 0x28 => 'AE Lock (reset on release)',
  6126. 0x30 => 'AE Lock (hold)',
  6127. 0x38 => 'AF Lock Only',
  6128. 0x40 => 'AF-On',
  6129. # 0x48 - seen for D4 (PH)
  6130. 0x50 => 'Bracketing Burst',
  6131. 0x58 => 'Matrix Metering',
  6132. 0x60 => 'Center-weighted Metering',
  6133. 0x68 => 'Spot Metering',
  6134. 0x70 => 'Playback',
  6135. 0x78 => 'My Menu Top Item',
  6136. 0x80 => '+NEF(RAW)',
  6137. 0x88 => 'Virtual Horizon',
  6138. 0x90 => 'My Menu',
  6139. 0x98 => 'Reset', # value appears to be specific to this control at this time
  6140. 0xa0 => 'Grid Display',
  6141. 0xa8 => 'Disable Synchronized Release',
  6142. 0xb0 => 'Remote Release Only',
  6143. 0xb8 => 'Preview', # value appears to be specific to this control at this time
  6144. 0xd0 => 'Flash Disable/Enable',
  6145. },
  6146. },
  6147. 49.2 => { # CSf6-b
  6148. Name => 'SubSelectorPlusDials',
  6149. Mask => 0x07,
  6150. PrintConv => {
  6151. # (not all values from CSf3-b/CSf4-b are available for CSf6-b)
  6152. 0 => 'None',
  6153. 1 => 'Choose Image Area (FX/DX/5:4)',
  6154. 2 => 'Shutter Speed & Aperture Lock',
  6155. # 3 => 'One Step Speed / Aperture', # (not available)
  6156. 4 => 'Choose Non-CPU Lens Number',
  6157. # 5 => 'Active D-Lighting', # (not available)
  6158. 6 => 'Shooting Bank Menu',
  6159. },
  6160. },
  6161. 50.1 => { # CSb5
  6162. Name => 'MatrixMetering',
  6163. Condition => '$$self{Model} =~ /\bD4S/',
  6164. Notes => 'D4S only',
  6165. Mask => 0x80,
  6166. PrintConv => {
  6167. 0x00 => 'Face Detection On',
  6168. 0x80 => 'Face Detection Off',
  6169. },
  6170. },
  6171. 50.2 => { # CSf17
  6172. Name => 'LiveViewButtonOptions',
  6173. Condition => '$$self{Model} =~ /\bD4S/',
  6174. Notes => 'D4S only',
  6175. Mask => 0x30,
  6176. PrintConv => {
  6177. 0x00 => 'Enable',
  6178. 0x10 => 'Enable (standby time active)',
  6179. 0x20 => 'Disable',
  6180. },
  6181. },
  6182. 50.3 => { # CSa12
  6183. Name => 'AFModeRestrictions',
  6184. Condition => '$$self{Model} =~ /\bD4S/',
  6185. Notes => 'D4S only',
  6186. Mask => 0x03,
  6187. PrintConv => {
  6188. 0x00 => 'Off',
  6189. 0x01 => 'AF-C',
  6190. 0x02 => 'AF-S',
  6191. },
  6192. },
  6193. 51.1 => { # CSa11
  6194. Name => 'LimitAFAreaModeSelection',
  6195. Condition => '$$self{Model} =~ /\bD4S/',
  6196. Notes => 'D4S only',
  6197. Mask => 0x7e,
  6198. PrintConv => {
  6199. 0 => 'No Restrictions',
  6200. BITMASK => {
  6201. 1 => 'Auto-area',
  6202. 2 => 'Group-area',
  6203. 3 => '3D-tracking',
  6204. 4 => 'Dynamic area (51 points)',
  6205. 5 => 'Dynamic area (21 points)',
  6206. 6 => 'Dynamic area (9 points)',
  6207. },
  6208. },
  6209. },
  6210. 52.1 => { # CSg1-b
  6211. Name => 'MovieFunctionButtonPlusDials',
  6212. Mask => 0x10,
  6213. PrintConv => {
  6214. 0x00 => 'None',
  6215. 0x10 => 'Choose Image Area',
  6216. },
  6217. },
  6218. 52.2 => { # CSg2-b
  6219. Name => 'MoviePreviewButtonPlusDials',
  6220. Mask => 0x01,
  6221. PrintConv => {
  6222. 0x00 => 'None',
  6223. 0x01 => 'Choose Image Area',
  6224. },
  6225. },
  6226. 53.1 => { # CSg3-b
  6227. Name => 'MovieSubSelectorAssignmentPlusDials',
  6228. Mask => 0x10,
  6229. PrintConv => {
  6230. 0x00 => 'None',
  6231. 0x10 => 'Choose Image Area',
  6232. },
  6233. },
  6234. 54.1 => { # CSf18
  6235. Name => 'AssignRemoteFnButton',
  6236. Condition => '$$self{Model} =~ /\bD4S/',
  6237. Notes => 'D4S only',
  6238. Mask => 0x1f,
  6239. PrintConv => {
  6240. 0 => 'None',
  6241. 1 => 'Preview',
  6242. 2 => 'FV Lock',
  6243. 3 => 'AE/AF Lock',
  6244. 4 => 'AE Lock Only',
  6245. 5 => 'AE Lock (reset on release)',
  6246. 7 => 'AF Lock Only',
  6247. 8 => 'AF-On',
  6248. 16 => '+NEF(RAW)',
  6249. 25 => 'Live View',
  6250. 26 => 'Flash Disable/Enable',
  6251. },
  6252. },
  6253. 55.1 => { # CSf19
  6254. Name => 'LensFocusFunctionButtons',
  6255. Condition => '$$self{Model} =~ /\bD4S/',
  6256. Notes => 'D4S only',
  6257. Mask => 0x3f,
  6258. PrintConv => {
  6259. 3 => 'AE/AF Lock',
  6260. 4 => 'AE Lock Only',
  6261. 7 => 'AF Lock Only',
  6262. 21 => 'Disable Synchronized Release',
  6263. 22 => 'Remote Release Only',
  6264. 24 => 'Preset focus Point',
  6265. 26 => 'Flash Disable/Enable',
  6266. 32 => 'AF-Area Mode: Single-point AF',
  6267. 33 => 'AF-Area Mode: Dynamic-area AF (9 points)',
  6268. 34 => 'AF-Area Mode: Dynamic-area AF (21 points)',
  6269. 35 => 'AF-Area Mode: Dynamic-area AF (51 points)',
  6270. 36 => 'AF-Area Mode: Group-area AF',
  6271. 37 => 'AF-Area Mode: Auto area AF',
  6272. },
  6273. },
  6274. );
  6275. 1; # end
  6276. __END__
  6277. =head1 NAME
  6278. Image::ExifTool::NikonCustom - Read and Write Nikon custom settings
  6279. =head1 SYNOPSIS
  6280. This module is loaded automatically by Image::ExifTool when required.
  6281. =head1 DESCRIPTION
  6282. The Nikon custom functions are very specific to the camera model (and
  6283. sometimes even change with firmware version). The information is stored as
  6284. unformatted binary data in the ShotInfo record of the Nikon MakerNotes.
  6285. This module contains the definitions necessary for Image::ExifTool to decode
  6286. this information.
  6287. =head1 AUTHOR
  6288. Copyright 2003-2016, Phil Harvey (phil at owl.phy.queensu.ca)
  6289. This library is free software; you can redistribute it and/or modify it
  6290. under the same terms as Perl itself.
  6291. =head1 ACKNOWLEDGEMENTS
  6292. Thanks to Jens Duttke and Warren Hatch for their help decoding the D300 and
  6293. D3 custom settings. And thanks to the customer service personnel at Best
  6294. Buy for not bugging me while I spent lots of time playing with their
  6295. cameras.
  6296. =head1 SEE ALSO
  6297. L<Image::ExifTool::TagNames/Nikon Tags>,
  6298. L<Image::ExifTool(3pm)|Image::ExifTool>
  6299. =cut