diff options
author | Constantin Kaplinsky <const@tightvnc.com> | 2007-10-10 04:44:54 +0000 |
---|---|---|
committer | Constantin Kaplinsky <const@tightvnc.com> | 2007-10-10 04:44:54 +0000 |
commit | 4803946f8cbf04e0aadcd6beebf4ce9d0453fef9 (patch) | |
tree | 189f52b74ebfa80e6d2fad48949a907f7bdb0c2e /common/rfb/JpegEncoder.cxx | |
parent | 9f532270bd1fee20add190c26743ee4ddce1d116 (diff) | |
download | tigervnc-4803946f8cbf04e0aadcd6beebf4ce9d0453fef9.tar.gz tigervnc-4803946f8cbf04e0aadcd6beebf4ce9d0453fef9.zip |
Added support for new UseHardwareJPEG parameter ("Use hardware-accelerated JPEG compressor for video if available") which is 'true' by default. Also, in IRIX, if IrixDMJpegCompressor fails to initialize, we use StandardJpegCompressor instead. This way, video will be transmitted even if we could not open hardware JPEG compressor.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2358 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'common/rfb/JpegEncoder.cxx')
-rw-r--r-- | common/rfb/JpegEncoder.cxx | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/common/rfb/JpegEncoder.cxx b/common/rfb/JpegEncoder.cxx index b2be63f3..51d48f16 100644 --- a/common/rfb/JpegEncoder.cxx +++ b/common/rfb/JpegEncoder.cxx @@ -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> @@ -26,17 +27,40 @@ 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]); } |