Various improvements in the IrixDMJpegCompressor class. Member functions have been declared virtual. The setQuality() function allows compression levels in the range [1..99] now, and calls IrixDMIC_RawToJpeg::setImageQuality() when necessary.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2372 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/common/rfb/IrixDMJpegCompressor.cxx b/common/rfb/IrixDMJpegCompressor.cxx
index 6e155ec..33397f6 100644
--- a/common/rfb/IrixDMJpegCompressor.cxx
+++ b/common/rfb/IrixDMJpegCompressor.cxx
@@ -35,9 +35,7 @@
}
//
-// Set JPEG quality level (1..100)
-//
-// FIXME: Call m_ic.setImageQuality() when necessary.
+// Set JPEG quality level (1..99)
//
void
@@ -45,11 +43,13 @@
{
if (level < 1) {
level = 1;
- } else if (level > 100) {
- level = 100;
+ } else if (level > 99) {
+ level = 99;
}
-
- m_quality = level;
+ if (level != m_quality) {
+ m_quality = level;
+ m_ic.setImageQuality(level);
+ }
}
//
diff --git a/common/rfb/IrixDMJpegCompressor.h b/common/rfb/IrixDMJpegCompressor.h
index 500884a..db24200 100644
--- a/common/rfb/IrixDMJpegCompressor.h
+++ b/common/rfb/IrixDMJpegCompressor.h
@@ -26,15 +26,15 @@
bool isValid() const { return m_ic.isValid(); }
// Set JPEG quality level (0..100).
- void setQuality(int level);
+ virtual void setQuality(int level);
// Actually compress the image.
- void compress(const rdr::U32 *buf, const PixelFormat *fmt,
- int w, int h, int stride);
+ virtual void compress(const rdr::U32 *buf, const PixelFormat *fmt,
+ int w, int h, int stride);
// Access results of the compression.
- size_t getDataLength() { return m_compressedLength; }
- const char *getDataPtr() { return m_compressedData; }
+ virtual size_t getDataLength() { return m_compressedLength; }
+ virtual const char *getDataPtr() { return m_compressedData; }
protected:
// Update image size and make sure that our buffer pools will