[Rawstudio-commit] rawspeed r193 - RawSpeed

Klaus Post klauspost at gmail.com
Sat Feb 6 23:09:37 CET 2010


Author: post
Date: 2010-02-06 23:09:37 +0100 (Sat, 06 Feb 2010)
New Revision: 193

Modified:
   RawSpeed/BitPumpJPEG.cpp
   RawSpeed/BitPumpJPEG.h
   RawSpeed/BitPumpMSB.cpp
   RawSpeed/BitPumpMSB.h
   RawSpeed/RawSpeed.vcproj
Log:
- Don't use tables for bitmasks, but calculate them instead. Faster mostly on Atom platforms, but also allows more inlining.
- Update MSVC project files.

Modified: RawSpeed/BitPumpJPEG.cpp
===================================================================
--- RawSpeed/BitPumpJPEG.cpp	2010-02-06 16:08:56 UTC (rev 192)
+++ RawSpeed/BitPumpJPEG.cpp	2010-02-06 22:09:37 UTC (rev 193)
@@ -100,7 +100,7 @@
     fill();
   }
 
-  return ((mCurr >> (mLeft -= (nbits)))) & masks[nbits];
+  return ((mCurr >> (mLeft -= (nbits)))) & ((1 << nbits) - 1);
 }
 
 
@@ -114,7 +114,7 @@
   if (mLeft < nbits) {
     fill();
   }
-  return ((mCurr >> (mLeft - nbits))) & masks[nbits];
+  return ((mCurr >> (mLeft - nbits))) & ((1 << nbits) - 1);
 }
 
 
@@ -149,7 +149,7 @@
     if (off > size)
       throw IOException("Out of buffer read");
   }
-  return ((mCurr >> (mLeft -= (nbits)))) & masks[nbits];
+  return ((mCurr >> (mLeft -= (nbits)))) & ((1 << nbits) - 1);
 }
 
 

Modified: RawSpeed/BitPumpJPEG.h
===================================================================
--- RawSpeed/BitPumpJPEG.h	2010-02-06 16:08:56 UTC (rev 192)
+++ RawSpeed/BitPumpJPEG.h	2010-02-06 22:09:37 UTC (rev 193)
@@ -48,8 +48,8 @@
   guint getOffset() { return off-(mLeft>>3)+stuffed;}
   __inline guint getBitNoFill() {return (mCurr >> (--mLeft)) & 1;}
   __inline guint peekByteNoFill() {return ((mCurr >> (mLeft-8))) & 0xff; }
-  __inline guint peekBitsNoFill(guint nbits) {return ((mCurr >> (mLeft-nbits))) &masks[nbits]; }
-  __inline guint getBitsNoFill(guint nbits) {_ASSERTE(nbits<24);return ((mCurr >> (mLeft -= (nbits)))) & masks[nbits];}
+  __inline guint peekBitsNoFill(guint nbits) {return ((mCurr >> (mLeft-nbits))) & ((1 << nbits) - 1); }
+  __inline guint getBitsNoFill(guint nbits) { return ((mCurr >> (mLeft -= (nbits)))) & ((1 << nbits) - 1);}
   void fill();  // Fill the buffer with at least 24 bits
 
 

Modified: RawSpeed/BitPumpMSB.cpp
===================================================================
--- RawSpeed/BitPumpMSB.cpp	2010-02-06 16:08:56 UTC (rev 192)
+++ RawSpeed/BitPumpMSB.cpp	2010-02-06 22:09:37 UTC (rev 193)
@@ -67,7 +67,7 @@
       throw IOException("Out of buffer read");
   }
 
-  return ((mCurr >> (mLeft -= (nbits)))) & masks[nbits];
+  return ((mCurr >> (mLeft -= (nbits)))) & ((1 << nbits) - 1);
 }
 
 

Modified: RawSpeed/BitPumpMSB.h
===================================================================
--- RawSpeed/BitPumpMSB.h	2010-02-06 16:08:56 UTC (rev 192)
+++ RawSpeed/BitPumpMSB.h	2010-02-06 22:09:37 UTC (rev 193)
@@ -42,8 +42,8 @@
   __inline void checkPos()  { if (off>size) throw IOException("Out of buffer read");};        // Check if we have a valid position
   __inline guint getBitNoFill() {return (mCurr >> (--mLeft)) & 1;}
   __inline guint peekByteNoFill() {return ((mCurr >> (mLeft-8))) & 0xff; }
-  __inline guint getBitsNoFill(guint nbits) {return ((mCurr >> (mLeft -= (nbits)))) & masks[nbits];}
-  __inline guint peekBitsNoFill(guint nbits) {return ((mCurr >> (mLeft-nbits))) &masks[nbits]; }
+  __inline guint getBitsNoFill(guint nbits) {return ((mCurr >> (mLeft -= (nbits)))) & ((1 << nbits) - 1);}
+  __inline guint peekBitsNoFill(guint nbits) {return ((mCurr >> (mLeft-nbits))) & ((1 << nbits) - 1); }
 
   // Fill the buffer with at least 24 bits
   __inline void fill() {
@@ -71,7 +71,7 @@
       fill();
     }
 
-    return ((mCurr >> (mLeft -= (nbits)))) & masks[nbits];
+    return ((mCurr >> (mLeft -= (nbits)))) & ((1 << nbits) - 1);
   }
 
   __inline guint peekBit() {
@@ -88,7 +88,7 @@
       fill();
     }
 
-    return ((mCurr >> (mLeft - nbits))) & masks[nbits];
+    return ((mCurr >> (mLeft - nbits))) & ((1 << nbits) - 1);
   }
 
   __inline guint peekByte() {

Modified: RawSpeed/RawSpeed.vcproj
===================================================================
--- RawSpeed/RawSpeed.vcproj	2010-02-06 16:08:56 UTC (rev 192)
+++ RawSpeed/RawSpeed.vcproj	2010-02-06 22:09:37 UTC (rev 193)
@@ -198,46 +198,6 @@
 				>
 			</File>
 			<File
-				RelativePath=".\rawstudio-plugin-api.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\rawstudio-plugin.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
 				RelativePath=".\stdafx.cpp"
 				>
 				<FileConfiguration




More information about the Rawstudio-commit mailing list