File: rawspeed.samsung-decoder.patch

package info (click to toggle)
libraw 0.21.4-3~exp1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 3,476 kB
  • sloc: cpp: 53,067; ansic: 2,430; makefile: 133; sh: 82; perl: 58
file content (39 lines) | stat: -rw-r--r-- 1,760 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
diff --git a/RawSpeed/SrwDecoder.cpp b/RawSpeed/SrwDecoder.cpp
index fa46499..1aff689 100644
--- a/RawSpeed/SrwDecoder.cpp
+++ b/RawSpeed/SrwDecoder.cpp
@@ -141,7 +141,7 @@ void SrwDecoder::decodeCompressed( TiffIFD* raw )
         // First we decode even pixels
         for (int c = 0; c < 16; c += 2) {
           int b = len[(c >> 3)];
-          int32 adj = ((int32) bits.getBits(b) << (32-b) >> (32-b));
+          int32 adj = b > 0 ? ((int32) bits.getBits(b) << (32-b) >> (32-b)) :0;
           img[c] = adj + img_up[c];
         }
         // Now we decode odd pixels
@@ -149,7 +149,7 @@ void SrwDecoder::decodeCompressed( TiffIFD* raw )
         // is beyond me, it will hurt compression a deal.
         for (int c = 1; c < 16; c += 2) {
           int b = len[2 | (c >> 3)];
-          int32 adj = ((int32) bits.getBits(b) << (32-b) >> (32-b));
+          int32 adj = b > 0 ? ((int32) bits.getBits(b) << (32-b) >> (32-b)) :0;
           img[c] = adj + img_up2[c];
         }
       } else {
@@ -158,14 +158,14 @@ void SrwDecoder::decodeCompressed( TiffIFD* raw )
         int pred_left = x ? img[-2] : 128;
         for (int c = 0; c < 16; c += 2) {
           int b = len[(c >> 3)];
-          int32 adj = ((int32) bits.getBits(b) << (32-b) >> (32-b));
+          int32 adj = b > 0 ? ((int32) bits.getBits(b) << (32-b) >> (32-b)) :0;
           img[c] = adj + pred_left;
         }
         // Now we decode odd pixels
         pred_left = x ? img[-1] : 128;
         for (int c = 1; c < 16; c += 2) {
           int b = len[2 | (c >> 3)];
-          int32 adj = ((int32) bits.getBits(b) << (32-b) >> (32-b));
+          int32 adj = b > 0 ? ((int32) bits.getBits(b) << (32-b) >> (32-b)) :0;
           img[c] = adj + pred_left;
         }
       }