Author: post
Date: 2012-07-09 16:27:22 +0200 (Mon, 09 Jul 2012)
New Revision: 431
Modified:
RawSpeed/Cr2Decoder.cpp
RawSpeed/Cr2Decoder.h
data/cameras.xml
Log:
Take slight hue shift into consideration for Canon sRAW/mRAW, and output in
full 16 bit precision. The latter bumps decoderversion for all Canon cameras
with support for that.
Modified: RawSpeed/Cr2Decoder.cpp
===================================================================
--- RawSpeed/Cr2Decoder.cpp 2012-07-08 18:25:59 UTC (rev 430)
+++ RawSpeed/Cr2Decoder.cpp 2012-07-09 14:27:22 UTC (rev 431)
@@ -28,7 +28,7 @@
Cr2Decoder::Cr2Decoder(TiffIFD *rootIFD, FileMap* file) :
RawDecoder(file), mRootIFD(rootIFD) {
-
+ decoderVersion = 1;
}
Cr2Decoder::~Cr2Decoder(void) {
@@ -168,6 +168,18 @@
}
+int Cr2Decoder::getHue() {
+ if (hints.find("old_sraw_hue") != hints.end())
+ return (mRaw->subsampling.y * mRaw->subsampling.x);
+
+ uint32 model_id = mRootIFD->getEntryRecursive((TiffTag)0x10)->getInt();
+ if (model_id >= 0x80000281 || model_id == 0x80000218 ||
(hints.find("force_new_sraw_hue") != hints.end()))
+ return ((mRaw->subsampling.y * mRaw->subsampling.x) - 1) >> 1;
+
+ return (mRaw->subsampling.y * mRaw->subsampling.x);
+
+}
+
// Interpolate and convert sRaw data.
void Cr2Decoder::sRawInterpolate() {
vector<TiffIFD*> data = mRootIFD->getIFDsWithTag((TiffTag)0x4001);
@@ -183,14 +195,8 @@
sraw_coeffs[1] = (wb_data[1] + wb_data[2] + 1) >> 1;
sraw_coeffs[2] = wb_data[3];
- // Check if sRaw2 is using old coefficients
- data = mRootIFD->getIFDsWithTag(MODEL);
-
- if (data.empty())
- ThrowRDE("CR2 sRaw Decoder: Model name not found");
-
- string model = data[0]->getEntry(MODEL)->getString();
- bool isOldSraw = (model.compare("Canon EOS 40D") == 0);
+ /* Determine sRaw coefficients */
+ bool isOldSraw = hints.find("sraw_40d") != hints.end();
bool isNewSraw = hints.find("sraw_new") != hints.end();
if (mRaw->subsampling.y == 1 && mRaw->subsampling.x == 2) {
@@ -208,10 +214,10 @@
}
}
-#define YUV_TO_RGB(Y, Cb, Cr) r = sraw_coeffs[0] * ((int)Y + (( 200*(int)Cb +
22929*(int)Cr) >> 12));\
+#define YUV_TO_RGB(Y, Cb, Cr) r = sraw_coeffs[0] * ((int)Y + (( 50*(int)Cb +
22929*(int)Cr) >> 12));\
g = sraw_coeffs[1] * ((int)Y + ((-5640*(int)Cb - 11751*(int)Cr) >> 12));\
b = sraw_coeffs[2] * ((int)Y + ((29040*(int)Cb - 101*(int)Cr) >> 12));\
- r >>= 10; g >>=10; b >>=10;
+ r >>= 8; g >>=8; b >>=8;
#define STORE_RGB(X,A,B,C) X[A] = clampbits(r,16); X[B] = clampbits(g,16);
X[C] = clampbits(b,16);
@@ -225,30 +231,30 @@
// Current line
ushort16* c_line;
-
+ const int hue = -getHue() + 16384;
for (int y = start_h; y < end_h; y++) {
c_line = (ushort16*)mRaw->getData(0, y);
int r, g, b;
int off = 0;
for (int x = 0; x < w; x++) {
int Y = c_line[off];
- int Cb = c_line[off+1] - 16384;
- int Cr = c_line[off+2] - 16384;
+ int Cb = c_line[off+1] - hue;
+ int Cr = c_line[off+2] - hue;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(c_line, off, off + 1, off + 2);
off += 3;
Y = c_line[off];
- int Cb2 = (Cb + c_line[off+1+3] - 16384) >> 1;
- int Cr2 = (Cr + c_line[off+2+3] - 16384) >> 1;
+ int Cb2 = (Cb + c_line[off+1+3] - hue) >> 1;
+ int Cr2 = (Cr + c_line[off+2+3] - hue) >> 1;
YUV_TO_RGB(Y, Cb2, Cr2);
STORE_RGB(c_line, off, off + 1, off + 2);
off += 3;
}
// Last two pixels
int Y = c_line[off];
- int Cb = c_line[off+1] - 16384;
- int Cr = c_line[off+2] - 16384;
+ int Cb = c_line[off+1] - hue;
+ int Cr = c_line[off+2] - hue;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(c_line, off, off + 1, off + 2);
@@ -280,6 +286,7 @@
int off;
int r, g, b;
+ const int hue = -getHue() + 16384;
for (int y = start_h; y < end_h; y++) {
c_line = (ushort16*)mRaw->getData(0, y * 2);
@@ -288,34 +295,34 @@
off = 0;
for (int x = 0; x < w; x++) {
int Y = c_line[off];
- int Cb = c_line[off+1] - 16384;
- int Cr = c_line[off+2] - 16384;
+ int Cb = c_line[off+1] - hue;
+ int Cr = c_line[off+2] - hue;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(c_line, off, off + 1, off + 2);
Y = c_line[off+3];
- int Cb2 = (Cb + c_line[off+1+6] - 16384) >> 1;
- int Cr2 = (Cr + c_line[off+2+6] - 16384) >> 1;
+ int Cb2 = (Cb + c_line[off+1+6] - hue) >> 1;
+ int Cr2 = (Cr + c_line[off+2+6] - hue) >> 1;
YUV_TO_RGB(Y, Cb2, Cr2);
STORE_RGB(c_line, off + 3, off + 4, off + 5);
// Next line
Y = n_line[off];
- int Cb3 = (Cb + nn_line[off+1] - 16384) >> 1;
- int Cr3 = (Cr + nn_line[off+2] - 16384) >> 1;
+ int Cb3 = (Cb + nn_line[off+1] - hue) >> 1;
+ int Cr3 = (Cr + nn_line[off+2] - hue) >> 1;
YUV_TO_RGB(Y, Cb3, Cr3);
STORE_RGB(n_line, off, off + 1, off + 2);
Y = n_line[off+3];
- Cb = (Cb + Cb2 + Cb3 + nn_line[off+1+6] - 16384) >> 2; //Left + Above +
Right +Below
- Cr = (Cr + Cr2 + Cr3 + nn_line[off+2+6] - 16384) >> 2;
+ Cb = (Cb + Cb2 + Cb3 + nn_line[off+1+6] - hue) >> 2; //Left + Above +
Right +Below
+ Cr = (Cr + Cr2 + Cr3 + nn_line[off+2+6] - hue) >> 2;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(n_line, off + 3, off + 4, off + 5);
off += 6;
}
int Y = c_line[off];
- int Cb = c_line[off+1] - 16384;
- int Cr = c_line[off+2] - 16384;
+ int Cb = c_line[off+1] - hue;
+ int Cr = c_line[off+2] - hue;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(c_line, off, off + 1, off + 2);
@@ -325,8 +332,8 @@
// Next line
Y = n_line[off];
- Cb = (Cb + nn_line[off+1] - 16384) >> 1;
- Cr = (Cr + nn_line[off+2] - 16384) >> 1;
+ Cb = (Cb + nn_line[off+1] - hue) >> 1;
+ Cr = (Cr + nn_line[off+2] - hue) >> 1;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(n_line, off, off + 1, off + 2);
@@ -343,8 +350,8 @@
// Last line
for (int x = 0; x < w; x++) {
int Y = c_line[off];
- int Cb = c_line[off+1] - 16384;
- int Cr = c_line[off+2] - 16384;
+ int Cb = c_line[off+1] - hue;
+ int Cr = c_line[off+2] - hue;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(c_line, off, off + 1, off + 2);
@@ -370,7 +377,7 @@
#define YUV_TO_RGB(Y, Cb, Cr) r = sraw_coeffs[0] * (Y + Cr -512 );\
g = sraw_coeffs[1] * (Y + ((-778*Cb - (Cr << 11)) >> 12) - 512);\
b = sraw_coeffs[2] * (Y + (Cb - 512));\
- r >>= 10; g >>=10; b >>=10;
+ r >>= 8; g >>=8; b >>=8;
// Note: Thread safe.
@@ -381,6 +388,7 @@
// Current line
ushort16* c_line;
+ const int hue = -getHue() + 16384;
for (int y = start_h; y < end_h; y++) {
c_line = (ushort16*)mRaw->getData(0, y);
@@ -388,15 +396,15 @@
int off = 0;
for (int x = 0; x < w; x++) {
int Y = c_line[off];
- int Cb = c_line[off+1] - 16384;
- int Cr = c_line[off+2] - 16384;
+ int Cb = c_line[off+1] - hue;
+ int Cr = c_line[off+2] - hue;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(c_line, off, off + 1, off + 2);
off += 3;
Y = c_line[off];
- int Cb2 = (Cb + c_line[off+1+3] - 16384) >> 1;
- int Cr2 = (Cr + c_line[off+2+3] - 16384) >> 1;
+ int Cb2 = (Cb + c_line[off+1+3] - hue) >> 1;
+ int Cr2 = (Cr + c_line[off+2+3] - hue) >> 1;
YUV_TO_RGB(Y, Cb2, Cr2);
STORE_RGB(c_line, off, off + 1, off + 2);
off += 3;
@@ -421,7 +429,7 @@
#define YUV_TO_RGB(Y, Cb, Cr) r = sraw_coeffs[0] * (Y + Cr);\
g = sraw_coeffs[1] * (Y + ((-778*Cb - (Cr << 11)) >> 12) );\
b = sraw_coeffs[2] * (Y + Cb);\
- r >>= 10; g >>=10; b >>=10;
+ r >>= 8; g >>=8; b >>=8;
void Cr2Decoder::interpolate_422_new(int w, int h, int start_h , int end_h) {
// Last pixel should not be interpolated
@@ -429,6 +437,7 @@
// Current line
ushort16* c_line;
+ const int hue = -getHue() + 16384;
for (int y = start_h; y < end_h; y++) {
c_line = (ushort16*)mRaw->getData(0, y);
@@ -436,15 +445,15 @@
int off = 0;
for (int x = 0; x < w; x++) {
int Y = c_line[off];
- int Cb = c_line[off+1] - 16384;
- int Cr = c_line[off+2] - 16384;
+ int Cb = c_line[off+1] - hue;
+ int Cr = c_line[off+2] - hue;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(c_line, off, off + 1, off + 2);
off += 3;
Y = c_line[off];
- int Cb2 = (Cb + c_line[off+1+3] - 16384) >> 1;
- int Cr2 = (Cr + c_line[off+2+3] - 16384) >> 1;
+ int Cb2 = (Cb + c_line[off+1+3] - hue) >> 1;
+ int Cr2 = (Cr + c_line[off+2+3] - hue) >> 1;
YUV_TO_RGB(Y, Cb2, Cr2);
STORE_RGB(c_line, off, off + 1, off + 2);
off += 3;
@@ -481,6 +490,7 @@
ushort16* n_line;
// Next line again
ushort16* nn_line;
+ const int hue = -getHue() + 16384;
int off;
int r, g, b;
@@ -492,34 +502,34 @@
off = 0;
for (int x = 0; x < w; x++) {
int Y = c_line[off];
- int Cb = c_line[off+1] - 16384;
- int Cr = c_line[off+2] - 16384;
+ int Cb = c_line[off+1] - hue;
+ int Cr = c_line[off+2] - hue;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(c_line, off, off + 1, off + 2);
Y = c_line[off+3];
- int Cb2 = (Cb + c_line[off+1+6] - 16384) >> 1;
- int Cr2 = (Cr + c_line[off+2+6] - 16384) >> 1;
+ int Cb2 = (Cb + c_line[off+1+6] - hue) >> 1;
+ int Cr2 = (Cr + c_line[off+2+6] - hue) >> 1;
YUV_TO_RGB(Y, Cb2, Cr2);
STORE_RGB(c_line, off + 3, off + 4, off + 5);
// Next line
Y = n_line[off];
- int Cb3 = (Cb + nn_line[off+1] - 16384) >> 1;
- int Cr3 = (Cr + nn_line[off+2] - 16384) >> 1;
+ int Cb3 = (Cb + nn_line[off+1] - hue) >> 1;
+ int Cr3 = (Cr + nn_line[off+2] - hue) >> 1;
YUV_TO_RGB(Y, Cb3, Cr3);
STORE_RGB(n_line, off, off + 1, off + 2);
Y = n_line[off+3];
- Cb = (Cb + Cb2 + Cb3 + nn_line[off+1+6] - 16384) >> 2; //Left + Above +
Right +Below
- Cr = (Cr + Cr2 + Cr3 + nn_line[off+2+6] - 16384) >> 2;
+ Cb = (Cb + Cb2 + Cb3 + nn_line[off+1+6] - hue) >> 2; //Left + Above +
Right +Below
+ Cr = (Cr + Cr2 + Cr3 + nn_line[off+2+6] - hue) >> 2;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(n_line, off + 3, off + 4, off + 5);
off += 6;
}
int Y = c_line[off];
- int Cb = c_line[off+1] - 16384;
- int Cr = c_line[off+2] - 16384;
+ int Cb = c_line[off+1] - hue;
+ int Cr = c_line[off+2] - hue;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(c_line, off, off + 1, off + 2);
@@ -529,8 +539,8 @@
// Next line
Y = n_line[off];
- Cb = (Cb + nn_line[off+1] - 16384) >> 1;
- Cr = (Cr + nn_line[off+2] - 16384) >> 1;
+ Cb = (Cb + nn_line[off+1] - hue) >> 1;
+ Cr = (Cr + nn_line[off+2] - hue) >> 1;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(n_line, off, off + 1, off + 2);
@@ -547,8 +557,8 @@
// Last line
for (int x = 0; x < w; x++) {
int Y = c_line[off];
- int Cb = c_line[off+1] - 16384;
- int Cr = c_line[off+2] - 16384;
+ int Cb = c_line[off+1] - hue;
+ int Cr = c_line[off+2] - hue;
YUV_TO_RGB(Y, Cb, Cr);
STORE_RGB(c_line, off, off + 1, off + 2);
Modified: RawSpeed/Cr2Decoder.h
===================================================================
--- RawSpeed/Cr2Decoder.h 2012-07-08 18:25:59 UTC (rev 430)
+++ RawSpeed/Cr2Decoder.h 2012-07-09 14:27:22 UTC (rev 431)
@@ -41,6 +41,7 @@
int sraw_coeffs[3];
void sRawInterpolate();
+ int Cr2Decoder::getHue();
void interpolate_420(int w, int h, int start_h , int end_h);
void interpolate_422(int w, int h, int start_h , int end_h);
void interpolate_422_old(int w, int h, int start_h , int end_h);
Modified: data/cameras.xml
===================================================================
--- data/cameras.xml 2012-07-08 18:25:59 UTC (rev 430)
+++ data/cameras.xml 2012-07-09 14:27:22 UTC (rev 431)
@@ -108,7 +108,7 @@
<Alias>Canon EOS 350D</Alias>
</Aliases>
</Camera>
- <Camera make="Canon" model="Canon EOS 40D">
+ <Camera make="Canon" model="Canon EOS 40D" decoder_version="1">
<CFA width="2" height="2">
<Color x="0" y="0">RED</Color>
<Color x="1" y="0">GREEN</Color>
@@ -117,14 +117,17 @@
</CFA>
<Crop x="30" y="18" width="3908" height="2602"/>
<Sensor black="1021" white="13600"/>
- <BlackAreas>
- <Vertical x="0" width="28"/>
- <Horizontal y="4" height="12"/>
- </BlackAreas>
+ <BlackAreas>
+ <Vertical x="0" width="28"/>
+ <Horizontal y="4" height="12"/>
+ </BlackAreas>
+ <Hints>
+ <Hint name="sraw_40d" value=""/>
+ </Hints>
</Camera>
<Camera make="Canon" model="Canon EOS 40D" mode="sRaw2">
<Crop x="0" y="0" width="1944" height="1296"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS 450D">
<CFA width="2" height="2">
@@ -140,7 +143,7 @@
<Alias>Canon EOS Kiss Digital X2</Alias>
</Aliases>
</Camera>
- <Camera make="Canon" model="Canon EOS 50D">
+ <Camera make="Canon" model="Canon EOS 50D" decoder_version="1">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color>
<Color x="1" y="0">BLUE</Color>
@@ -156,13 +159,13 @@
</Camera>
<Camera make="Canon" model="Canon EOS 50D" mode="sRaw1">
<Crop x="0" y="0" width="3272" height="2178"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS 50D" mode="sRaw2">
<Crop x="0" y="0" width="2376" height="1584"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
- <Camera make="Canon" model="Canon EOS 60D">
+ <Camera make="Canon" model="Canon EOS 60D" decoder_version="1">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color>
<Color x="1" y="0">BLUE</Color>
@@ -171,18 +174,19 @@
</CFA>
<Crop x="146" y="54" width="0" height="0"/>
<Sensor black="2026" white="14200"/>
- <BlackAreas>
- <Vertical x="0" width="140"/>
- <Horizontal y="4" height="46"/>
- </BlackAreas>
+ <BlackAreas>
+ <Vertical x="0" width="140"/>
+ <Horizontal y="4" height="46"/>
+ </BlackAreas>
+
</Camera>
<Camera make="Canon" model="Canon EOS 60D" mode="sRaw1">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS 60D" mode="sRaw2">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS 500D">
<CFA width="2" height="2">
@@ -272,7 +276,7 @@
<Horizontal y="2" height="30"/>
</BlackAreas>
</Camera>
- <Camera make="Canon" model="Canon EOS 5D Mark II">
+ <Camera make="Canon" model="Canon EOS 5D Mark II" decoder_version="1">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color>
<Color x="1" y="0">BLUE</Color>
@@ -288,13 +292,13 @@
</Camera>
<Camera make="Canon" model="Canon EOS 5D Mark II" mode="sRaw1">
<Crop x="0" y="0" width="3872" height="2574"/>
- <Sensor black="0" white="15600"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS 5D Mark II" mode="sRaw2">
<Crop x="0" y="0" width="2808" height="1872"/>
- <Sensor black="0" white="15600"/>
+ <Sensor black="0" white="65535"/>
</Camera>
- <Camera make="Canon" model="Canon EOS 5D Mark III">
+ <Camera make="Canon" model="Canon EOS 5D Mark III" decoder_version="1">
<CFA width="2" height="2">
<Color x="0" y="0">RED</Color>
<Color x="1" y="0">GREEN</Color>
@@ -311,17 +315,15 @@
<Hint name="sraw_new" value=""/>
</Hints>
</Camera>
- <!-- Unconfirmed: -->
<Camera make="Canon" model="Canon EOS 5D Mark III" mode="sRaw1">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
- <!-- Unconfirmed: -->
<Camera make="Canon" model="Canon EOS 5D Mark III" mode="sRaw2">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
- <Camera make="Canon" model="Canon EOS 7D">
+ <Camera make="Canon" model="Canon EOS 7D" decoder_version="1">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color>
<Color x="1" y="0">BLUE</Color>
@@ -338,11 +340,11 @@
</Camera>
<Camera make="Canon" model="Canon EOS 7D" mode="sRaw1">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS 7D" mode="sRaw2">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS 1000D">
<CFA width="2" height="2">
@@ -426,7 +428,7 @@
<Horizontal y="2" height="8"/>
</BlackAreas>
</Camera>
- <Camera make="Canon" model="Canon EOS-1D Mark III">
+ <Camera make="Canon" model="Canon EOS-1D Mark III" decoder_version="1">
<CFA width="2" height="2">
<Color x="0" y="0">RED</Color>
<Color x="1" y="0">GREEN</Color>
@@ -442,13 +444,13 @@
</Camera>
<Camera make="Canon" model="Canon EOS-1D Mark III" mode="sRaw1">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS-1D Mark III" mode="sRaw2">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
- <Camera make="Canon" model="Canon EOS-1D Mark IV">
+ <Camera make="Canon" model="Canon EOS-1D Mark IV" decoder_version="1">
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color>
<Color x="1" y="0">BLUE</Color>
@@ -464,11 +466,11 @@
</Camera>
<Camera make="Canon" model="Canon EOS-1D Mark IV" mode="sRaw1">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS-1D Mark IV" mode="sRaw2">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS-1Ds Mark II">
<CFA width="2" height="2">
@@ -484,7 +486,7 @@
<Horizontal y="2" height="10"/>
</BlackAreas>
</Camera>
- <Camera make="Canon" model="Canon EOS-1Ds Mark III">
+ <Camera make="Canon" model="Canon EOS-1Ds Mark III" decoder_version="1">
<CFA width="2" height="2">
<Color x="0" y="0">RED</Color>
<Color x="1" y="0">GREEN</Color>
@@ -500,13 +502,13 @@
</Camera>
<Camera make="Canon" model="Canon EOS-1Ds Mark III" mode="sRaw1">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS-1Ds Mark III" mode="sRaw2">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
- <Camera make="Canon" model="Canon EOS-1D X">
+ <Camera make="Canon" model="Canon EOS-1D X" decoder_version="1">
<CFA width="2" height="2">
<Color x="0" y="0">RED</Color>
<Color x="1" y="0">GREEN</Color>
@@ -522,11 +524,11 @@
</Camera>
<Camera make="Canon" model="Canon EOS-1D X" mode="sRaw1">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon EOS-1D X" mode="sRaw2">
<Crop x="0" y="0" width="0" height="0"/>
- <Sensor black="0" white="16383"/>
+ <Sensor black="0" white="65535"/>
</Camera>
<Camera make="Canon" model="Canon PowerShot G1 X">
<CFA width="2" height="2">
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit