]> source.dussan.org Git - tigervnc.git/commitdiff
Allow parallel decoding of Tight JPEG rects
authorPierre Ossman <ossman@cendio.se>
Fri, 13 Nov 2015 10:16:33 +0000 (11:16 +0100)
committerPierre Ossman <ossman@cendio.se>
Fri, 27 Nov 2015 10:11:03 +0000 (11:11 +0100)
The cost is some more load on malloc(), but it should be small
compared to the gains of spreading the CPU heavy JPEG decoding
over multiple CPUs.

common/rfb/TightDecoder.cxx
common/rfb/TightDecoder.h

index 86bb00698655fc3b68a4dcdecabf670bb2b11574..3a1254a2a66e5fe456db991e8978ac9996f87e46 100644 (file)
@@ -173,11 +173,6 @@ bool TightDecoder::doRectsConflict(const Rect& rectA,
   if (((comp_ctl_a & 0x0f) & (comp_ctl_b & 0x0f)) != 0)
     return true;
 
-  // We have a shared JpegDecompressor, so one at a time
-  if (((comp_ctl_a >> 4) == tightJpeg) &&
-      ((comp_ctl_b >> 4) == tightJpeg))
-    return true;
-
   return false;
 }
 
@@ -229,6 +224,8 @@ void TightDecoder::decodeRect(const Rect& r, const void* buffer,
     int stride;
     rdr::U8 *buf;
 
+    JpegDecompressor jd;
+
     assert(buflen >= 4);
 
     memcpy(&len, bufptr, 4);
index a98788f6da4b6796746bb2931df5d1f3b4829e16..6eb93d2ab078380cb885a5fd8b0ebc0b16736d93 100644 (file)
@@ -67,7 +67,6 @@ namespace rfb {
 
   private:
     rdr::ZlibInStream zis[4];
-    JpegDecompressor jd;
   };
 }