]> source.dussan.org Git - tigervnc.git/commitdiff
Added support for new UseHardwareJPEG parameter ("Use hardware-accelerated JPEG compr...
authorConstantin Kaplinsky <const@tightvnc.com>
Wed, 10 Oct 2007 04:44:54 +0000 (04:44 +0000)
committerConstantin Kaplinsky <const@tightvnc.com>
Wed, 10 Oct 2007 04:44:54 +0000 (04:44 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2358 3789f03b-4d11-0410-bbf8-ca57d06f2519

common/rfb/JpegEncoder.cxx
common/rfb/JpegEncoder.h

index b2be63f3b5c4db951abe183b4a7ef4e89ffefb2c..51d48f16bd39ed390f3fe0fb173f6a39195f463a 100644 (file)
@@ -19,6 +19,7 @@
 #include <rfb/JpegEncoder.h>
 #include <rdr/OutStream.h>
 #include <rfb/encodings.h>
+#include <rfb/LogWriter.h>
 
 #ifdef HAVE_DMEDIA
 #include <rfb/IrixDMJpegCompressor.h>
 
 using namespace rfb;
 
+static LogWriter vlog("JpegEncoder");
+
+BoolParameter JpegEncoder::useHardwareJPEG
+("UseHardwareJPEG",
+ "Use hardware-accelerated JPEG compressor for video if available",
+ true);
+
 const int JpegEncoder::qualityMap[10] = {
   5, 10, 15, 25, 37, 50, 60, 70, 75, 80
 };
 
-JpegEncoder::JpegEncoder(SMsgWriter* writer_) : writer(writer_)
+JpegEncoder::JpegEncoder(SMsgWriter* writer_) : writer(writer_), jcomp(0)
 {
 #ifdef HAVE_DMEDIA
-  jcomp = new IrixDMJpegCompressor;
+  if (useHardwareJPEG) {
+    vlog.debug("trying IRIX DM JPEG compressor");
+    IrixDMJpegCompressor *irixComp = new IrixDMJpegCompressor;
+    if (irixComp->isValid()) {
+      vlog.debug("initialized IRIX DM JPEG compressor successfully");
+      jcomp = irixComp;
+    } else {
+      vlog.error("warning: could not create IRIX DM JPEG compressor");
+      delete irixComp;
+    }
+  }
 #else
-  jcomp = new StandardJpegCompressor;
+  if (useHardwareJPEG) {
+    vlog.info("no hardware JPEG compressor available");
+  }
 #endif
+  if (!jcomp) {
+    vlog.debug("using software JPEG compressor");
+    jcomp = new StandardJpegCompressor;
+  }
   jcomp->setQuality(qualityMap[6]);
 }
 
index 14fa1045bc86249e9b52350522b31b7ca707d61c..78e08facd73e30436dc1becd3463ee921b5881fc 100644 (file)
@@ -21,6 +21,7 @@
 #include <rfb/SMsgWriter.h>
 #include <rfb/PixelBuffer.h>
 #include <rfb/JpegCompressor.h>
+#include <rfb/Configuration.h>
 
 //
 // JPEG Encoder.
@@ -39,6 +40,8 @@ namespace rfb {
     virtual void setQualityLevel(int level);
     virtual bool writeRect(PixelBuffer* pb, const Rect& r);
 
+    static BoolParameter useHardwareJPEG;
+
   private:
     SMsgWriter* writer;
     JpegCompressor* jcomp;