Project

General

Profile

MeasuredEV in CanonSi ยป exiv2-CanonSi-MeasuredEV.patch

Axel Waggershauser, 02 Jul 2010 02:11

View differences:

src/canonmn.hpp (working copy)
91 91
        static std::ostream& printCsLens(std::ostream& os, const Value& value, const ExifData*);
92 92
        //! ISO speed used
93 93
        static std::ostream& printSi0x0002(std::ostream& os, const Value& value, const ExifData*);
94
        //! MeasuredEV
95
        static std::ostream& printSi0x0004(std::ostream& os, const Value& value, const ExifData*);
94 96
        //! Sequence number
95 97
        static std::ostream& printSi0x0009(std::ostream& os, const Value& value, const ExifData*);
96 98
        //! AF point used
......
101 103
        static std::ostream& printSi0x0015(std::ostream& os, const Value& value, const ExifData*);
102 104
        //! Shutter speed
103 105
        static std::ostream& printSi0x0016(std::ostream& os, const Value& value, const ExifData*);
106
        //! MeasuredEV2
107
        static std::ostream& printSi0x0017(std::ostream& os, const Value& value, const ExifData*);
104 108
        //@}
105 109

  
106 110
    private:
src/canonmn.cpp (working copy)
754 754
    const TagInfo CanonMakerNote::tagInfoSi_[] = {
755 755
        TagInfo(0x0001, "0x0001", "0x0001", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
756 756
        TagInfo(0x0002, "ISOSpeed", N_("ISO Speed Used"), N_("ISO speed used"), canonSiIfdId, makerTags, unsignedShort, printSi0x0002),
757
        TagInfo(0x0003, "0x0003", "0x0003", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
757
        TagInfo(0x0003, "MeasuredEV", N_("Measured EV"), N_("Measured EV"), canonSiIfdId, makerTags, unsignedShort, printSi0x0004),
758 758
        TagInfo(0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), canonSiIfdId, makerTags, unsignedShort, printSi0x0015),
759 759
        TagInfo(0x0005, "TargetShutterSpeed", N_("Target Shutter Speed"), N_("Target shutter speed"), canonSiIfdId, makerTags, unsignedShort, printSi0x0016),
760 760
        TagInfo(0x0006, "0x0006", "0x0006", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
......
774 774
        TagInfo(0x0014, "0x0014", "0x0014", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
775 775
        TagInfo(0x0015, "ApertureValue", N_("Aperture Value"), N_("Aperture"), canonSiIfdId, makerTags, unsignedShort, printSi0x0015),
776 776
        TagInfo(0x0016, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed"), canonSiIfdId, makerTags, unsignedShort, printSi0x0016),
777
        TagInfo(0x0017, "0x0017", "0x0017", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
777
        TagInfo(0x0017, "MeasuredEV2", N_("Measured EV 2"), N_("Measured EV 2"), canonSiIfdId, makerTags, unsignedShort, printSi0x0017),
778 778
        TagInfo(0x0018, "0x0018", "0x0018", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
779 779
        TagInfo(0x0019, "0x0019", "0x0019", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
780 780
        TagInfo(0x001a, "0x001a", "0x001a", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
......
1154 1154
        return os << exp(canonEv(value.toLong()) * log(2.0)) * 100.0 / 32.0;
1155 1155
    }
1156 1156

  
1157
    std::ostream& CanonMakerNote::printSi0x0004(std::ostream& os,
1158
                                                const Value& value,
1159
                                                const ExifData*)
1160
    {
1161
        // The offset of '5' seems to be ok for most Canons (see Exiftool)
1162
        // It might be explained by the fakt, that most Canons have a longest
1163
        // exposure of 30s which is 5 EV below 1s
1164
        // see also printSi0x0017
1165
        return os << std::fixed << std::setprecision(2)
1166
                << (double)(short)value.toLong() / 32.0 + 5;
1167
    }
1168

  
1157 1169
    std::ostream& CanonMakerNote::printSi0x0009(std::ostream& os,
1158 1170
                                                const Value& value,
1159 1171
                                                const ExifData*)
......
1230 1242
        return os << " s";
1231 1243
    }
1232 1244

  
1245
    std::ostream& CanonMakerNote::printSi0x0017(std::ostream& os,
1246
                                                const Value& value,
1247
                                                const ExifData*)
1248
    {
1249
        return os << std::fixed << std::setprecision(2)
1250
                << value.toLong() / 8.0 - 6.0;
1251
    }
1252

  
1233 1253
// *****************************************************************************
1234 1254
// free functions
1235 1255

  
    (1-1/1)