diff options
author | Brian Hinz <bphinz@users.sourceforge.net> | 2011-12-04 22:06:21 +0000 |
---|---|---|
committer | Brian Hinz <bphinz@users.sourceforge.net> | 2011-12-04 22:06:21 +0000 |
commit | 57e6143f0856fa8708fe37b4b44eefde4ac7848b (patch) | |
tree | 4d7ea84bd865d813ad49830a3176dc385f25f61b /java/com/tigervnc/rfb/TightDecoder.java | |
parent | 16ec1a0e4a020eafde41b183d240757751caa417 (diff) | |
download | tigervnc-57e6143f0856fa8708fe37b4b44eefde4ac7848b.tar.gz tigervnc-57e6143f0856fa8708fe37b4b44eefde4ac7848b.zip |
Grabbing the RGB components from the BufferedImage one at a time and converting the to a 24bpp RGB color manually is about 25% faster than using BufferedImage.getRGB().
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4821 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'java/com/tigervnc/rfb/TightDecoder.java')
-rw-r--r-- | java/com/tigervnc/rfb/TightDecoder.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/java/com/tigervnc/rfb/TightDecoder.java b/java/com/tigervnc/rfb/TightDecoder.java index c029d690..3e894c0b 100644 --- a/java/com/tigervnc/rfb/TightDecoder.java +++ b/java/com/tigervnc/rfb/TightDecoder.java @@ -25,7 +25,6 @@ import java.util.ArrayList; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import javax.imageio.ImageIO; -import com.sun.image.codec.jpeg.*; import java.io.InputStream; public class TightDecoder extends Decoder { @@ -261,8 +260,14 @@ public class TightDecoder extends Decoder { e.printStackTrace(); } int[] buf = reader.getImageBuf(w*h); - jpeg.getRGB(0, 0, w, h, buf, 0, w); - jpeg = null; + int[] pix = new int[3]; + for (int y=0; y < h; y++) { + for (int x=0; x < w; x++) { + jpeg.getRaster().getPixel(x, y, pix); + buf[y*w+x] = (0xff << 24) | (pix[0] & 0xff) << 16 | (pix[1] & 0xff) << 8 | pix[2]; + } + } + jpeg.flush(); handler.imageRect(r, buf); } |