Title: [149033] trunk/Source/WebCore
Revision
149033
Author
[email protected]
Date
2013-04-24 07:10:47 -0700 (Wed, 24 Apr 2013)

Log Message

[BlackBerry] Add support for JPEG image quality during encoding.
https://bugs.webkit.org/show_bug.cgi?id=105773

Patch by George Staikos <[email protected]> on 2013-04-24
Reviewed by Xan Lopez.

PR 271611
Internally reviewed by Liam Quinn.

Pass the quality flag into the encoder, with a default of 65

Covered by existing tests.

* platform/image-encoders/JPEGImageEncoder.cpp:
(WebCore::compressRGBABigEndianToJPEG):
* platform/image-encoders/JPEGImageEncoder.h:
(WebCore):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (149032 => 149033)


--- trunk/Source/WebCore/ChangeLog	2013-04-24 13:54:27 UTC (rev 149032)
+++ trunk/Source/WebCore/ChangeLog	2013-04-24 14:10:47 UTC (rev 149033)
@@ -1,3 +1,22 @@
+2013-04-24  George Staikos  <[email protected]>
+
+        [BlackBerry] Add support for JPEG image quality during encoding.
+        https://bugs.webkit.org/show_bug.cgi?id=105773
+
+        Reviewed by Xan Lopez.
+
+        PR 271611
+        Internally reviewed by Liam Quinn.
+
+        Pass the quality flag into the encoder, with a default of 65
+
+        Covered by existing tests.
+
+        * platform/image-encoders/JPEGImageEncoder.cpp:
+        (WebCore::compressRGBABigEndianToJPEG):
+        * platform/image-encoders/JPEGImageEncoder.h:
+        (WebCore):
+
 2013-04-24  Csaba Osztrogonác  <[email protected]>
 
         Fix cast-align WebCore/platform/graphics/GraphicsContext3D.cpp on ARM

Modified: trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.cpp (149032 => 149033)


--- trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.cpp	2013-04-24 13:54:27 UTC (rev 149032)
+++ trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.cpp	2013-04-24 14:10:47 UTC (rev 149033)
@@ -83,7 +83,7 @@
     longjmp(err->m_setjmpBuffer, -1);
 }
 
-bool compressRGBABigEndianToJPEG(unsigned char* rgbaBigEndianData, const IntSize& size, Vector<char>& jpegData)
+bool compressRGBABigEndianToJPEG(unsigned char* rgbaBigEndianData, const IntSize& size, Vector<char>& jpegData, const double* quality)
 {
     struct jpeg_compress_struct compressData;
     JPEGCompressErrorMgr err;
@@ -103,7 +103,10 @@
     compressData.input_components = 3;
     compressData.in_color_space = JCS_RGB;
     jpeg_set_defaults(&compressData);
-    jpeg_set_quality(&compressData, 65, FALSE);
+    int compressionQuality = 65;
+    if (quality && *quality >= 0.0 && *quality <= 1.0)
+        compressionQuality = static_cast<int>(*quality * 100 + 0.5);
+    jpeg_set_quality(&compressData, compressionQuality, FALSE);
 
     // rowBuffer must be defined here so that its destructor is always called even when "setjmp" catches an error.
     Vector<JSAMPLE, 600 * 3> rowBuffer;

Modified: trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.h (149032 => 149033)


--- trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.h	2013-04-24 13:54:27 UTC (rev 149032)
+++ trunk/Source/WebCore/platform/image-encoders/JPEGImageEncoder.h	2013-04-24 14:10:47 UTC (rev 149033)
@@ -26,7 +26,7 @@
 namespace WebCore {
 
 class IntSize;
-bool compressRGBABigEndianToJPEG(unsigned char* rgbaBigEndianData, const IntSize& size, Vector<char>& jpegData);
+bool compressRGBABigEndianToJPEG(unsigned char* rgbaBigEndianData, const IntSize&, Vector<char>& jpegData, const double* quality = 0);
 
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to