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

Reply via email to