Author: post
Date: 2011-10-10 19:05:42 +0200 (Mon, 10 Oct 2011)
New Revision: 383
Modified:
RawSpeed/RawImage.h
RawSpeed/Rw2Decoder.cpp
RawSpeed/Rw2Decoder.h
data/cameras.xml
Log:
Panasonic cameras: Always use aspect ration for mode selection. This enables
"default" crops to always be overridden. Explicit guesses removed, and added as
camera defaults instead.
Modified: RawSpeed/RawImage.h
===================================================================
--- RawSpeed/RawImage.h 2011-10-10 15:54:56 UTC (rev 382)
+++ RawSpeed/RawImage.h 2011-10-10 17:05:42 UTC (rev 383)
@@ -60,6 +60,7 @@
int whitePoint;
vector<BlackArea> blackAreas;
iPoint2D subsampling;
+ string mode;
protected:
RawImageType dataType;
RawImageData(void);
Modified: RawSpeed/Rw2Decoder.cpp
===================================================================
--- RawSpeed/Rw2Decoder.cpp 2011-10-10 15:54:56 UTC (rev 382)
+++ RawSpeed/Rw2Decoder.cpp 2011-10-10 17:05:42 UTC (rev 383)
@@ -168,7 +168,7 @@
string make = data[0]->getEntry(MAKE)->getString();
string model = data[0]->getEntry(MODEL)->getString();
- if (!this->checkCameraSupported(meta, make, model, getMode(model)))
+ if (!this->checkCameraSupported(meta, make, model, guessMode()))
this->checkCameraSupported(meta, make, model, "");
}
@@ -181,41 +181,51 @@
string make = data[0]->getEntry(MAKE)->getString();
string model = data[0]->getEntry(MODEL)->getString();
- string mode = getMode(model);
- if (this->checkCameraSupported(meta, make, model, getMode(model)))
+ string mode = guessMode();
+ if (this->checkCameraSupported(meta, make, model, mode)) {
setMetaData(meta, make, model, mode);
- else
+ } else {
+ mRaw->mode = mode;
+ _RPT1(0, "Mode not found in DB: %s", mode.c_str());
setMetaData(meta, make, model, "");
+ }
}
-bool Rw2Decoder::almostEqualRelative(float A, float B, float maxRelativeError)
{
- if (A == B)
- return true;
- float relativeError = fabs((A - B) / B);
- if (relativeError <= maxRelativeError)
- return true;
- return false;
-}
-std::string Rw2Decoder::getMode(const string model) {
+std::string Rw2Decoder::guessMode() {
float ratio = 3.0f / 2.0f; // Default
- if (mRaw->isAllocated()) {
- ratio = (float)mRaw->dim.x / (float)mRaw->dim.y;
+
+ if (!mRaw->isAllocated())
+ return "";
+
+ ratio = (float)mRaw->dim.x / (float)mRaw->dim.y;
+
+ float min_diff = fabs(ratio - 16.0f / 9.0f);
+ std::string closest_match = "16:9";
+
+ float t = fabs(ratio - 3.0f / 2.0f);
+ if (t < min_diff) {
+ closest_match = "3:2";
+ min_diff = t;
}
- if (almostEqualRelative(ratio, 16.0f / 9.0f, 0.02f))
- return "16:9";
- if (almostEqualRelative(ratio, 3.0f / 2.0f, 0.02f))
- return "3:2";
- if (almostEqualRelative(ratio, 4.0f / 3.0f, 0.02f))
- return "4:3";
- if (almostEqualRelative(ratio, 1.0f, 0.02f))
- return "1:1";
+ t = fabs(ratio - 4.0f / 3.0f);
+ if (t < min_diff) {
+ closest_match = "4:3";
+ min_diff = t;
+ }
- return "";
+ t = fabs(ratio - 1.0f);
+ if (t < min_diff) {
+ closest_match = "1:1";
+ min_diff = t;
+ }
+ _RPT1(0, "Mode guess: '%s'\n", closest_match.c_str());
+ return closest_match;
}
+
PanaBitpump::PanaBitpump(ByteStream* _input) : input(_input), vbits(0) {
}
Modified: RawSpeed/Rw2Decoder.h
===================================================================
--- RawSpeed/Rw2Decoder.h 2011-10-10 15:54:56 UTC (rev 382)
+++ RawSpeed/Rw2Decoder.h 2011-10-10 17:05:42 UTC (rev 383)
@@ -54,9 +54,8 @@
protected:
virtual void decodeThreaded(RawDecoderThread* t);
private:
- string getMode(const string model);
void DecodeRw2();
- bool almostEqualRelative(float A, float B, float maxRelativeError);
+ std::string guessMode();
ByteStream* input_start;
uint32 load_flags;
};
Modified: data/cameras.xml
===================================================================
--- data/cameras.xml 2011-10-10 15:54:56 UTC (rev 382)
+++ data/cameras.xml 2011-10-10 17:05:42 UTC (rev 383)
@@ -1215,13 +1215,21 @@
<Crop x="0" y="0" width="0" height="-2"/>
<Sensor black="55" white="3972"/>
</Camera>
- <Camera make="Panasonic" model = "DMC-FX150" mode = "4:3">
+ <Camera make="Panasonic" model = "DMC-FX150">
<CFA width="2" height="2">
<Color x="0" y="0">BLUE</Color><Color x="1" y="0">GREEN</Color>
<Color x="0" y="1">GREEN</Color><Color x="1" y="1">RED</Color>
</CFA>
<Crop x="0" y="0" width="4429" height="3324"/>
<Sensor black="15" white="3986"/>
+ </Camera>
+ <Camera make="Panasonic" model = "DMC-FX150" mode = "4:3">
+ <CFA width="2" height="2">
+ <Color x="0" y="0">BLUE</Color><Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color><Color x="1" y="1">RED</Color>
+ </CFA>
+ <Crop x="0" y="0" width="4429" height="3324"/>
+ <Sensor black="15" white="3986"/>
</Camera>
<Camera make="Panasonic" model = "DMC-FZ28" mode = "4:3">
<CFA width="2" height="2">
@@ -1231,6 +1239,14 @@
<Crop x="0" y="0" width="3668" height="2754"/>
<Sensor black="15" white="3986"/>
</Camera>
+ <Camera make="Panasonic" model = "DMC-FZ28" mode = "16:9">
+ <CFA width="2" height="2">
+ <Color x="0" y="0">BLUE</Color><Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color><Color x="1" y="1">RED</Color>
+ </CFA>
+ <Crop x="0" y="0" width="3668" height="2754"/>
+ <Sensor black="15" white="3986"/>
+ </Camera>
<Camera make="Panasonic" model = "DMC-FZ28">
<CFA width="2" height="2">
<Color x="0" y="0">BLUE</Color><Color x="1" y="0">GREEN</Color>
@@ -1239,6 +1255,14 @@
<Crop x="0" y="0" width="-56" height="-4"/>
<Sensor black="15" white="3986"/>
</Camera>
+ <Camera make="Panasonic" model = "DMC-G1">
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
+ <Color x="0" y="1">RED</Color><Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="4018" height="3016" />
+ <Sensor black="15" white="3986"/>
+ </Camera>
<Camera make="Panasonic" model = "DMC-G1" mode="4:3">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
@@ -1271,8 +1295,8 @@
<Crop x="0" y="0" width="-44" height="0" />
<Sensor black="0" white="5300"/>
</Camera>
- <Camera make="Panasonic" model = "DMC-G2" mode="3:2">
- <!-- Guess -->
+ <Camera make="Panasonic" model = "DMC-G2">
+ <!-- Default Guess -->
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
<Color x="0" y="1">RED</Color><Color x="1" y="1">GREEN</Color>
@@ -1280,30 +1304,19 @@
<Crop x="0" y="0" width="-44" height="0" />
<Sensor black="0" white="5300"/>
</Camera>
- <Camera make="Panasonic" model = "DMC-G2" mode="16:9">
- <!-- Guess -->
+ <Camera make="Panasonic" model = "DMC-G10">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
<Color x="0" y="1">RED</Color><Color x="1" y="1">GREEN</Color>
</CFA>
<Crop x="0" y="0" width="-44" height="0" />
- <Sensor black="0" white="5300"/>
- </Camera>
- <Camera make="Panasonic" model = "DMC-G2" mode="1:1">
- <!-- Guess -->
+ <Sensor black="0" white="4800"/>
+ </Camera> <Camera make="Panasonic" model = "DMC-G10" mode="4:3">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
<Color x="0" y="1">RED</Color><Color x="1" y="1">GREEN</Color>
</CFA>
<Crop x="0" y="0" width="-44" height="0" />
- <Sensor black="0" white="5300"/>
- </Camera>
- <Camera make="Panasonic" model = "DMC-G10" mode="4:3">
- <CFA width="2" height="2">
- <Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
- <Color x="0" y="1">RED</Color><Color x="1" y="1">GREEN</Color>
- </CFA>
- <Crop x="0" y="0" width="-44" height="0" />
<Sensor black="0" white="4800"/>
</Camera>
<Camera make="Panasonic" model = "DMC-GH1" mode="4:3">
@@ -1314,8 +1327,8 @@
<Crop x="0" y="0" width="-44" height="0"/>
<Sensor black="0" white="5111"/>
</Camera>
- <Camera make="Panasonic" model = "DMC-GH1" mode="3:2">
- <!-- Guess -->
+ <Camera make="Panasonic" model = "DMC-GH1">
+ <!-- Default Guess -->
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
<Color x="0" y="1">RED</Color><Color x="1" y="1">GREEN</Color>
@@ -1323,14 +1336,13 @@
<Crop x="0" y="0" width="-44" height="0"/>
<Sensor black="0" white="5111"/>
</Camera>
- <Camera make="Panasonic" model = "DMC-GH1" mode="1:1">
- <!-- Guess -->
+ <Camera make="Panasonic" model = "DMC-GF1">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
<Color x="0" y="1">RED</Color><Color x="1" y="1">GREEN</Color>
</CFA>
<Crop x="0" y="0" width="-44" height="0"/>
- <Sensor black="0" white="5111"/>
+ <Sensor black="0" white="4096"/>
</Camera>
<Camera make="Panasonic" model = "DMC-GF1" mode="4:3">
<CFA width="2" height="2">
@@ -1364,6 +1376,14 @@
<Crop x="0" y="0" width="-44" height="0"/>
<Sensor black="0" white="4096"/>
</Camera>
+ <Camera make="Panasonic" model = "DMC-GF2">
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
+ <Color x="0" y="1">RED</Color><Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-74" height="0"/>
+ <Sensor black="150" white="4096"/>
+ </Camera>
<Camera make="Panasonic" model = "DMC-GF2" mode="4:3">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
@@ -1404,6 +1424,14 @@
<Crop x="0" y="0" width="-154" height="0"/>
<Sensor black="150" white="4096"/>
</Camera>
+ <Camera make="Panasonic" model = "DMC-G3" mode="4:3">
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color><Color x="1" y="0">RED</Color>
+ <Color x="0" y="1">BLUE</Color><Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-154" height="0"/>
+ <Sensor black="150" white="4096"/>
+ </Camera>
<Camera make="Panasonic" model = "DMC-GF3">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
@@ -1412,6 +1440,14 @@
<Crop x="0" y="0" width="-72" height="0"/>
<Sensor black="150" white="4096"/>
</Camera>
+ <Camera make="Panasonic" model = "DMC-GF3" mode= "4:3">
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
+ <Color x="0" y="1">RED</Color><Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-72" height="0"/>
+ <Sensor black="150" white="4096"/>
+ </Camera>
<Camera make="Panasonic" model = "DMC-GH2">
<CFA width="2" height="2">
<Color x="1" y="0">GREEN</Color><Color x="0" y="0">BLUE</Color>
@@ -1420,6 +1456,22 @@
<Crop x="0" y="0" width="-216" height="0"/>
<Sensor black="0" white="4096"/>
</Camera>
+ <Camera make="Panasonic" model = "DMC-GH2" mode="16:9">
+ <CFA width="2" height="2">
+ <Color x="1" y="0">GREEN</Color><Color x="0" y="0">BLUE</Color>
+ <Color x="1" y="1">RED</Color><Color x="0" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-216" height="0"/>
+ <Sensor black="0" white="4096"/>
+ </Camera>
+ <Camera make="Panasonic" model = "DMC-GH2" mode="4:3">
+ <CFA width="2" height="2">
+ <Color x="1" y="0">GREEN</Color><Color x="0" y="0">BLUE</Color>
+ <Color x="1" y="1">RED</Color><Color x="0" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-140" height="0"/>
+ <Sensor black="0" white="4096"/>
+ </Camera>
<Camera make="Panasonic" model = "DMC-GH1" mode="16:9">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
@@ -1439,8 +1491,8 @@
<Alias>DMC-FZ38</Alias>
</Aliases>
</Camera>
- <Camera make="Panasonic" model = "DMC-FZ35" mode="3:2">
- <!-- Guess -->
+ <Camera make="Panasonic" model = "DMC-FZ35">
+ <!-- Default Guess -->
<CFA width="2" height="2">
<Color x="0" y="0">BLUE</Color><Color x="1" y="0">GREEN</Color>
<Color x="0" y="1">GREEN</Color><Color x="1" y="1">RED</Color>
@@ -1451,16 +1503,15 @@
<Alias>DMC-FZ38</Alias>
</Aliases>
</Camera>
- <Camera make="Panasonic" model = "DMC-FZ35" mode="16:9">
- <!-- Guess -->
+ <Camera make="Panasonic" model = "DMC-FZ45">
<CFA width="2" height="2">
- <Color x="0" y="0">BLUE</Color><Color x="1" y="0">GREEN</Color>
- <Color x="0" y="1">GREEN</Color><Color x="1" y="1">RED</Color>
+ <Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
+ <Color x="0" y="1">RED</Color><Color x="1" y="1">GREEN</Color>
</CFA>
- <Crop x="0" y="0" width="-44" height="0"/>
- <Sensor black="150" white="4800"/>
+ <Crop x="0" y="0" width="-58" height="-10"/>
+ <Sensor black="150" white="4097"/>
<Aliases>
- <Alias>DMC-FZ38</Alias>
+ <Alias>DMC-FZ40</Alias>
</Aliases>
</Camera>
<Camera make="Panasonic" model = "DMC-FZ45" mode = "4:3">
@@ -1490,6 +1541,14 @@
<Crop x="0" y="0" width="-200" height="0"/>
<Sensor black="120" white="5400"/>
</Camera>
+ <Camera make="Panasonic" model = "DMC-FZ100" mode="4:3">
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color><Color x="1" y="0">BLUE</Color>
+ <Color x="0" y="1">RED</Color><Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-200" height="0"/>
+ <Sensor black="120" white="5400"/>
+ </Camera>
<Camera make="Panasonic" model = "DMC-LX3">
<CFA width="2" height="2">
<Color x="0" y="0">BLUE</Color><Color x="1" y="0">GREEN</Color>
@@ -1530,8 +1589,32 @@
<Crop x="0" y="0" width="-200" height="-4"/>
<Sensor black="150" white="4095"/>
</Camera>
- <Camera make="PENTAX Corporation" model="PENTAX K100D">
+ <Camera make="Panasonic" model = "DMC-LX5" mode="4:3">
<CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color><Color x="1" y="0">RED</Color>
+ <Color x="0" y="1">BLUE</Color><Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-200" height="-4"/>
+ <Sensor black="150" white="4095"/>
+ </Camera>
+ <Camera make="Panasonic" model = "DMC-LX5" mode="3:2">
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color><Color x="1" y="0">RED</Color>
+ <Color x="0" y="1">BLUE</Color><Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-74" height="-4"/>
+ <Sensor black="150" white="4095"/>
+ </Camera>
+ <Camera make="Panasonic" model = "DMC-LX5" mode="1:1">
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color><Color x="1" y="0">RED</Color>
+ <Color x="0" y="1">BLUE</Color><Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-220" height="-4"/>
+ <Sensor black="150" white="4095"/>
+ </Camera>
+ <Camera make="PENTAX Corporation" model="PENTAX K100D">
+ <CFA width="2" height="2">
<Color x="0" y="0">RED</Color>
<Color x="1" y="0">GREEN</Color>
<Color x="0" y="1">GREEN</Color>
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit