aboutsummaryrefslogtreecommitdiffstats
path: root/java/com/tigervnc/rfb/TightDecoder.java
diff options
context:
space:
mode:
authorBrian Hinz <bphinz@users.sourceforge.net>2011-12-04 22:06:21 +0000
committerBrian Hinz <bphinz@users.sourceforge.net>2011-12-04 22:06:21 +0000
commit57e6143f0856fa8708fe37b4b44eefde4ac7848b (patch)
tree4d7ea84bd865d813ad49830a3176dc385f25f61b /java/com/tigervnc/rfb/TightDecoder.java
parent16ec1a0e4a020eafde41b183d240757751caa417 (diff)
downloadtigervnc-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.java11
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);
}