From e02d142e4df803cffcc2eeec96f78d5bbcd20c44 Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Mon, 18 Jan 2016 08:30:17 +0000 Subject: [PATCH] #1155. Fix summitted. --- src/pentaxmn.cpp | 64 +++++++++++++++++++++++++++++++++-- test/bugfixes-test.sh | 34 ++++++++++++++++--- test/data/bugfixes-test.out | Bin 1853751 -> 1855181 bytes test/data/exiv2-bug1155a.exv | Bin 0 -> 19065 bytes test/data/exiv2-bug1155b.exv | Bin 0 -> 19065 bytes test/data/exiv2-bug1155c.exv | Bin 0 -> 19065 bytes 6 files changed, 91 insertions(+), 7 deletions(-) create mode 100644 test/data/exiv2-bug1155a.exv create mode 100644 test/data/exiv2-bug1155b.exv create mode 100644 test/data/exiv2-bug1155c.exv diff --git a/src/pentaxmn.cpp b/src/pentaxmn.cpp index e10289e7..eba7e843 100644 --- a/src/pentaxmn.cpp +++ b/src/pentaxmn.cpp @@ -711,6 +711,7 @@ namespace Exiv2 { { 0x0319, "Sigma AF 28-300mm F3.5-5.6 DL IF" }, //3 { 0x0319, "Sigma AF 28-300mm F3.5-6.3 DG IF Macro" }, //4 { 0x0319, "Tokina 80-200mm F2.8 ATX-Pro" }, //5 + { 0x0319, "Sigma Zoom 70-210mm F4-5.6 UC-II" }, //6 { 0x031a, "smc PENTAX-F* 250-600mm F5.6 ED[IF]" }, { 0x031b, "smc PENTAX-F 28-80mm F3.5-4.5" }, //0 { 0x031b, "Tokina AT-X Pro AF 28-70mm F2.6-2.8" }, //1 @@ -939,6 +940,7 @@ namespace Exiv2 { { 0x08ff, "Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye" }, //4 { 0x08ff, "Sigma 50-200mm F4-5.6 DC OS" }, //5 { 0x08ff, "Sigma 24-70mm F2.8 EX DG HSM" }, //6 + { 0x08ff, "Sigma 18-50mm F2.8-4.5 HSM OS" }, //7 { 0x0900, "645 Manual Lens" }, { 0x0a00, "645 A Series Lens" }, { 0x0b01, "smc PENTAX-FA 645 75mm F2.8" }, @@ -1235,8 +1237,64 @@ namespace Exiv2 { } else if ( value.count() == 4 ) { // http://dev.exiv2.org/attachments/download/868/IMGP2221.JPG // 0x0207 PentaxDng LensInfo Undefined 128 0 131 128 0 0 255 1 184 0 0 0 0 0 - // 0 1 2 3 4 5 6 + // 0 1 2 3 4 5 6 if ( lensInfo->count() == 128 && lensInfo->toLong(1) == 131 && lensInfo->toLong(2) == 128 ) index = 8; + // #1155 + if ( lensInfo->toLong(6) == 5 ) index = 7; + } + + if ( index > 0 ) { + const TagDetails* td = find(pentaxLensType, lensID); + os << exvGettext(td[index].label_); + return os; + } + } catch (...) {} + return EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)(os, value, metadata); + } + + // #1155 + std::ostream& resolveLens0x8ff(std::ostream& os, const Value& value, + const ExifData* metadata) + // ---------------------------------------------------------------------- + { + try { + unsigned long lensID = 0x8ff; + unsigned long index = 0; + + const ExifData::const_iterator lensInfo = metadata->findKey(ExifKey("Exif.PentaxDng.LensInfo")) != metadata->end() + ? metadata->findKey(ExifKey("Exif.PentaxDng.LensInfo")) + : metadata->findKey(ExifKey("Exif.Pentax.LensInfo")) + ; + if ( value.count() == 4 ) { + std::string model = getKeyString("Exif.Image.Model" ,metadata); + if ( model.find("PENTAX K-3")==0 && lensInfo->count() == 128 && lensInfo->toLong(1) == 168 && lensInfo->toLong(2) == 144 ) index = 7; + } + + if ( index > 0 ) { + const TagDetails* td = find(pentaxLensType, lensID); + os << exvGettext(td[index].label_); + return os; + } + } catch (...) {} + return EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)(os, value, metadata); + } + + // #1155 + std::ostream& resolveLens0x319(std::ostream& os, const Value& value, + const ExifData* metadata) + // ---------------------------------------------------------------------- + { + try { + unsigned long lensID = 0x319; + unsigned long index = 0; + + const ExifData::const_iterator lensInfo = metadata->findKey(ExifKey("Exif.PentaxDng.LensInfo")) != metadata->end() + ? metadata->findKey(ExifKey("Exif.PentaxDng.LensInfo")) + : metadata->findKey(ExifKey("Exif.Pentax.LensInfo")) + ; + if ( value.count() == 4 ) { + std::string model = getKeyString("Exif.Image.Model" ,metadata); + if ( model.find("PENTAX K-3")==0 && lensInfo->count() == 128 && lensInfo->toLong(1) == 131 && lensInfo->toLong(2) == 128 ) index = 6; } if ( index > 0 ) { @@ -1264,7 +1322,7 @@ namespace Exiv2 { //! List of lens ids which require special treatment using resolveLensType const LensIdFct lensIdFct[] = { { 0x0317, resolveLensType }, - { 0x0319, resolveLensType }, + { 0x0319, resolveLens0x319}, { 0x031b, resolveLensType }, { 0x031c, resolveLensType }, { 0x031d, resolveLensType }, @@ -1276,7 +1334,7 @@ namespace Exiv2 { { 0x03ff, resolveLens0x3ff}, { 0x041a, resolveLensType }, { 0x042d, resolveLensType }, - { 0x08ff, resolveLensType }, + { 0x08ff, resolveLens0x8ff}, }; //! A lens id and a pretty-print function for special treatment of the id. diff --git a/test/bugfixes-test.sh b/test/bugfixes-test.sh index 89d87cac..a14e1d51 100755 --- a/test/bugfixes-test.sh +++ b/test/bugfixes-test.sh @@ -457,10 +457,27 @@ source ./functions.source runTest exiv2 -PkV --grep GPSL http://dev.exiv2.org/attachments/download/805/DSC_7154.jpg | runTest exiv2 -m- $filename runTest exiv2 -pa $filename - for num in 1140 1144a 1144b 1144c 1144d 1144e 1144f 1144g 1145a 1145b 1145c 1145d 1145e; do - filename=exiv2-bug$num.exv - printf "$num " >&3 - echo '------>' Bug $num '<-------' >&2 + num=1140 + printf "$num " >&3 + filename=exiv2-bug$num.exv + echo '------>' Bug $num '<-------' >&2 + copyTestFile $filename + runTest exiv2 -pa -g Lens $filename + + num=1144 + printf "$num " >&3 + for i in a b c d e f g; do + filename=exiv2-bug$num$i.exv + echo '------>' Bug $num$i '<-------' >&2 + copyTestFile $filename + runTest exiv2 -pa -g Lens $filename + done + + num=1145 + printf "$num " >&3 + for i in a b c d e; do + filename=exiv2-bug$num$i.exv + echo '------>' Bug $num$i '<-------' >&2 copyTestFile $filename runTest exiv2 -pa -g Lens $filename done @@ -474,6 +491,15 @@ source ./functions.source runTest exiv2 -pa -g Lens $filename done;done + num=1155 + printf "$num " >&3 + for i in a b c; do + filename=exiv2-bug$num${i}.exv + echo '------>' Bug $num${i} '<-------' >&2 + copyTestFile $filename + runTest exiv2 -pa -g Lens $filename + done + ) 3>&1 > $results 2>&1 printf "\n" diff --git a/test/data/bugfixes-test.out b/test/data/bugfixes-test.out index 84ecda792a2f035c52d10a30893898dd2b18c2cb..16221152a79d378620a5965b0ca0cdbfe6ec2386 100644 GIT binary patch delta 567 zcmZ9IyGjE=6o%QTF&i&Y6B82`IbgkUu6t?35WGYQ3cPg8iB+uO7S^$W+aF%oF<<*$DX06U#k}^80_fe|4Eqo=Uotiv!jbZIGk|V?a5pkz z-#a@LT7w3m82mr9;wl2p83Y=F7y=M7vU5mVEg@oHH4sYkHgW2ORAO4L^KSN-SDMrM zI*9^V6dw6HNg|q&ubLW8dR;j0*)Ru{fQ*%*Cl#f!$vAK`ojB!tdPvY#($B`C33v>g z#SoFkD!BwH=mMqSETY>yaj-7wr%0M!B^NRXAr7*w{ZKU!iE;c7N!>F7M2#)7Pc1l7LFFq7OocV7M>Q~7QPn#7J(MQ7NHj57LgXw U7O@ub7Ks+g7O58LEi&ew0O05p%m4rY diff --git a/test/data/exiv2-bug1155a.exv b/test/data/exiv2-bug1155a.exv new file mode 100644 index 0000000000000000000000000000000000000000..5f4ae9958fa9716adae62b7122ecdd4b51b01b85 GIT binary patch literal 19065 zcmeHP33QZ2wyy4M-ASOckq|)A*~1QD6+w0hAe#gYYZAyxl1@7Np6=}X#;T|!>WGiX zxG{)~N
hIukF>NpBnAduY%f@JIW-TMEAeuADk?>v3yypu}$|G%!fb?erxd%tS> zFQStyOAb%;)-|qF0faENV#RnSV~n}5L1xS(K=fh~0oM=|aWb$}V#JJae-%PTzo-^TdhbZ$B@nzugkbzn3Ht+=06CMPfC}LAgc(RCx1J5{T#%?TQ%pQ32 zIl+h4=(9z{BY;PJBG?QyyvVRdGWOJpC2M_@D^@RBzGBUC<&w3l*DYGJX`=E;-=&k4 zO15s<8s9~J%2ku5EA@pr_EM+Pn`=q za~AUnRH+h_PbWl22F3-3MH}d6?3EreOTwNi)amFxr9-%DUls1B`-JunqJ;acUZK9! zTzG%8UbxTwhj6bvCA7yj3-=Sx3isBzWW9vBPZi|Wwg~l>lZ5w6>V!L=q#!Cx*Z|v* z6Aj+)19prT^cYkdisO;ju%$NEp5@yQGcwCt^NUY6(DaP%r z=3vbPdFpQoESR!@4HN4rc881gWRXJDiE62hh$oKu?&yFY3d^zN9STUf(%$BH?Gf4N(SIWq_k0Pj*p>G0>?Nu?`Ai z#q}bYIMD`L_jm)GD9W2aCJFWWagz;jiYOz6<5Tq*@@c?&8!~|O>yjz1d+&V4vJA%3 zi1O4Y$DnVXLEn6X`f39knAC{tw}YV)5sv{jk(wcf7;^(Q1*X(}0@w^#1Dpsf19k(x z4J-%#y8@hN%9uGY$#x*PEkx`+8hZyOifWduM695m_LoxNQNRJ1WDW3W;7FQ?JN6M^ z8^A~p#vT!ICh%Bb+KVcIoq%Zq2Y{8pkD>kmV%r(G82A#f3oz-~J^}LqUI-im>;X)1 z^d_*USpOlgmxu>}$4P~K@bQVXub8n-u)^17z>|TG0Z#&s0&W7HCi-(7 z8fT!s2K9cxvw$Oje*&HZJRCS^3id%@@<}Z4JYbqvKJa|8K7TrL5SYe&4tOE32KKxJ ztTTc<2+L(Ax*3}>4+y!;!5SG$SPh)+vk;w7D8nea7A|H=rmXiS?vj{77c!S62gSGK?kr?R%93hA*oyqt54qkgyiO3rlsfQp+{O;dS+HyN^(+SN-{2~ zxF)Bkr>6-eB?XcR35khG8m%@v2c0r9Q<4%B;^Sh~>X^jDgoOAsNTj5sB;z+3m$>-& zgajzf$l$_|i;0d_MMXx$#iC1cQc_YPUbsSMQjA(18;ee<7!8^ss)~x(6&@Bw+GC(R zKAy|to{*r5j*d|$B_%^TJv}2UCORrA5~86Y5LU-<^)M(gF)j`^L`A7o(J(wIi4ji43@%J2 zhmu$n%{H0~W9Z~$t~n0IC&J{+tXP^Lspb=mhHqkG_$xLxHZBfEsG>$CZg6YM^VvO)`E*wer?uvjRq&OLiugxYy$rs__ zScZgz&=8cJRA5ewsF|cQvozXlT0j-|2Vb;cDnUU(!9h@>Qeg$vv5*yo$zLkc9tk62 zV<8t5w1W!Fh>S!FoI`%e(rB`CX!_BS5xaJU)0)I_&D@MIDiLHeL{n0@%@lI6uz6QF zHzSnFW-45mYbM!LXx8SCtQzi$jNqDSejyN{;qePcs#KH#X<0NuE-Wq{R*zfCm2z*u zdr>Ngrl)gZBuY{uW~Nqi&6vGf4ND^;IHEbnk!-q#%%BuZArJGQLsat6M9}d&$;M@5 zWM*b+wc4CqO4SUZjeN(0A4!r(qtTM$0-f6I?3^6rdR}gBP9{2}lQ-agjDhq^PR2bU zfn?)zAeTq4{Nkd*!h!;@KpxN4G`jNiM%t#NA{UdBId|lN5DH66ONxs?6eT6)#2IA( zCB;-=WOg=pL?O{k9(6%$aWTo2R#sG$m(xq=MT4V2BV>z;xf$hU&;-%a5-yBO1@$Z| z17($z78T=0vc;U1$}w&+HA6FWR+2QaS1BwJH;|h)2wxKRc6-?nn2_+PydRQ25pj?j* z2n+}a09S;D5Q`vu&;#*>)SzZQ8gh*XNK6dnPB6)aAn{}4Aft|@ZYl&^csLg(%~3>Y zYUDoATS#y)7=$7LOT_^ag9^+g1HfDe7RqPJ`miuCO-2R}LXc}*Tr>}3y70K;Apps+ zP@czX;%mrfWN=~P<5*G}EeO*-z{vt02o6SmrKHl1kjhye%Ef?2r&x6wgj1u)4!AHd zFfI^H#Kbu$;q6_d1NEyl9P#9qKP6x5w;o)k9Q)eB_-d41OWGu#FpiH*6qB zB+=%Tfb0kfflAs9_z#ww)Mrt)?4ZyHR?%9JjaqC@F)_&eygbfGyLKTk$?!yy-LY-k zwyj%97z>0Re1c?TI`7LZAlXC;*cdD~{RZyXK{1p-8+$yT7M}v8OH?9#lHiFG6cn^` zCoaLke32;!qY=+)HBT0brWl?ie$SvFX9EH_3-Ejk2@MSk=fbo)6geTmMDl9r3kuqf zvW+7iQulL}FD~EL^x?{ybtLumqI|%pK-z-%cF@ zxIQw^pExFrCb*psNmc%wNJv&Fyly2GilDHqREX%y_fRP=tEjA^#p6MjO?yV!?rN0X zdv@>M4XKI>;^1QX$jX_yf{T=K4V?^RGb}($2MTPmK8lb31u%3qG3Mm!xNr5nZ$l*O*Fd}VubfIos zUp}cOGscY5$_97Qi46Wpb)dI zC?}s*b8qlgj9*xQ&jLAou0LK1ESfpch4TKitDPR zp(?8|U;Xs=?IRasJp3M@!qb2Z61t&@&lfW$Mj-7~Ts>X(l8J(1J_cDNw31vk*GF@# zBz?R2T5?oQTDfMjau1i=kG0sxyYU(Q{Ga$k?}t1vhCJ|l zd4SFmT$nhWj;G*B8_o<|+Qoj@C~cR1NES$&rMYzX#aRM+8b{AxP59XZ8BVO2GY!)+ zJS;_<@Pp@Ncwk0FxKph$ek6E*zlFx3=lBoyAuFsO+J~O;**vrl9z5bnq=Y}MrBQS` zs-Z&9Zyor^!uaHGqnuh3g9JS^1d=t-t6q{(X1q#s46 z!(&MCNu|(se;n#d=P@4i0nLX-c+dxEfaO%Lw}5KMqvSWT{J}mnj@d8vp%WVqT0q+5 zXpwTA=Ndf#gDsQoYY z8Fg=k4EqRcxHgrs9}*ZVR%0D;=i-ELh&> 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 L`hE<_^yU8mpX!lK literal 0 HcmV?d00001 diff --git a/test/data/exiv2-bug1155c.exv b/test/data/exiv2-bug1155c.exv new file mode 100644 index 0000000000000000000000000000000000000000..fcd64d4a926a78d14b9c3f7bc37197dfc657de67 GIT binary patch literal 19065 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