Author: nick
Date: Mon Dec 22 02:42:58 2014
New Revision: 1647235

URL: http://svn.apache.org/r1647235
Log:
Update the BPG parser following spec updates TIKA-1495

Modified:
    
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/BPGParser.java

Modified: 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/BPGParser.java
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/BPGParser.java?rev=1647235&r1=1647234&r2=1647235&view=diff
==============================================================================
--- 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/BPGParser.java
 (original)
+++ 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/BPGParser.java
 Mon Dec 22 02:42:58 2014
@@ -80,8 +80,8 @@ public class BPGParser extends AbstractP
         // TODO Identify a suitable metadata key for this
 
         // Is there an alpha plane as well as a colour plane?
-        boolean hasAlphaPlane = (pdf & 0x8) == 0x8;
-        // TODO Identify a suitable metadata key for this
+        boolean hasAlphaPlane1 = (pdf & 0x8) == 0x8;
+        // TODO Identify a suitable metadata key for this+hasAlphaPlane2
         
         // Bit depth minus 8
         int bitDepth = (pdf >> 4) + 8;
@@ -91,7 +91,7 @@ public class BPGParser extends AbstractP
         int cer = stream.read();
         
         // Colour Space: YCbCr / RGB / YCgCo / YCbCrK / CMYK
-        int colourSpace = cer & 0x7;
+        int colourSpace = cer & 0x15;
         switch (colourSpace) {
             case 0:
                 metadata.set(Photoshop.COLOR_MODE, "YCbCr Colour");
@@ -111,7 +111,12 @@ public class BPGParser extends AbstractP
         }
         
         // Are there extensions or not?
-        boolean hasExtensions = (cer & 0x8) == 0x8;
+        boolean hasExtensions = (cer & 16) == 16;
+
+        // Is the Alpha Plane 2 flag set?
+        boolean hasAlphaPlane2 = (cer & 32) == 32;
+
+        // cer then holds 2 more booleans - limited range, reserved
         
         // Width and height next
         int width  = (int)EndianUtils.readUE7(stream);
@@ -129,7 +134,7 @@ public class BPGParser extends AbstractP
         
         // Alpha Data Length, if alpha used
         long alphaDataLength = 0;
-        if (hasAlphaPlane)
+        if (hasAlphaPlane1 || hasAlphaPlane2)
             alphaDataLength = EndianUtils.readUE7(stream);
         
         // Extension Data


Reply via email to