Optimization in image decoding
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Dec 2012 18:18:22 +0000 (18:18 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Dec 2012 18:18:22 +0000 (18:18 +0000)
https://bugs.webkit.org/show_bug.cgi?id=88424

Patch by Viatcheslav Ostapenko <v.ostapenko@samsung.com> on 2012-12-03
Reviewed by Brent Fulgham.

Replace int with J_COLOR_SPACE in parameters of templates setPixel and
outputScanlines to avoid casting from int to enum. It required move
inclusion of jpeglib.h and related #if to JPEGImageDecoder.h .

* platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
(WebCore):
(WebCore::setPixel):
(WebCore::JPEGImageDecoder::outputScanlines):
* platform/image-decoders/jpeg/JPEGImageDecoder.h:
(JPEGImageDecoder):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@136410 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp
Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.h

index b17c275..752f82f 100644 (file)
@@ -1,3 +1,21 @@
+2012-12-03  Viatcheslav Ostapenko  <v.ostapenko@samsung.com>
+
+        Optimization in image decoding
+        https://bugs.webkit.org/show_bug.cgi?id=88424
+
+        Reviewed by Brent Fulgham.
+
+        Replace int with J_COLOR_SPACE in parameters of templates setPixel and
+        outputScanlines to avoid casting from int to enum. It required move 
+        inclusion of jpeglib.h and related #if to JPEGImageDecoder.h .
+
+        * platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
+        (WebCore):
+        (WebCore::setPixel):
+        (WebCore::JPEGImageDecoder::outputScanlines):
+        * platform/image-decoders/jpeg/JPEGImageDecoder.h:
+        (JPEGImageDecoder):
+
 2012-12-03  Tony Chang  <tony@chromium.org>
 
         [mathml] Improve performance of nested sup or sub elements
index ad481c1..f182c13 100644 (file)
 #include "config.h"
 #include "JPEGImageDecoder.h"
 #include "PlatformInstrumentation.h"
-#include <stdio.h>  // Needed by jpeglib.h for FILE.
 #include <wtf/PassOwnPtr.h>
 
-#if OS(WINCE)
-// Remove warning: 'FAR' macro redefinition
-#undef FAR
-
-// jmorecfg.h in libjpeg checks for XMD_H with the comment: "X11/xmd.h correctly defines INT32"
-// fix INT32 redefinition error by pretending we are X11/xmd.h
-#define XMD_H
-#endif
-
 extern "C" {
-#include "jpeglib.h"
 #if USE(ICCJPEG)
 #include "iccjpeg.h"
 #endif
@@ -646,12 +635,12 @@ bool JPEGImageDecoder::setFailed()
     return ImageDecoder::setFailed();
 }
 
-template <int colorSpace>
+template <J_COLOR_SPACE colorSpace>
 void setPixel(ImageFrame& buffer, ImageFrame::PixelData* currentAddress, JSAMPARRAY samples, int column)
 {
-    JSAMPLE* jsample = *samples + column * (static_cast<J_COLOR_SPACE>(colorSpace) == JCS_RGB ? 3 : 4);
+    JSAMPLE* jsample = *samples + column * (colorSpace == JCS_RGB ? 3 : 4);
 
-    switch (static_cast<J_COLOR_SPACE>(colorSpace)) {
+    switch (colorSpace) {
 #if defined(TURBO_JPEG_RGB_SWIZZLE)
     case JCS_EXT_BGRA:
         buffer.setRGBA(currentAddress, jsample[2], jsample[1], jsample[0], 0xFF);
@@ -677,7 +666,7 @@ void setPixel(ImageFrame& buffer, ImageFrame::PixelData* currentAddress, JSAMPAR
     }
 }
 
-template <int colorSpace, bool isScaled>
+template <J_COLOR_SPACE colorSpace, bool isScaled>
 bool JPEGImageDecoder::outputScanlines(ImageFrame& buffer)
 {
     JSAMPARRAY samples = m_reader->samples();
@@ -712,7 +701,7 @@ bool JPEGImageDecoder::outputScanlines(ImageFrame& buffer)
     return true;
 }
 
-template <int colorSpace>
+template <J_COLOR_SPACE colorSpace>
 bool JPEGImageDecoder::outputScanlines(ImageFrame& buffer)
 {
     return m_scaled ? outputScanlines<colorSpace, true>(buffer) : outputScanlines<colorSpace, false>(buffer);
index 0badfd4..af76c6a 100644 (file)
 #define JPEGImageDecoder_h
 
 #include "ImageDecoder.h"
+#include <stdio.h> // Needed by jpeglib.h for FILE.
 #include <wtf/OwnPtr.h>
 
+#if OS(WINCE)
+// Remove warning: 'FAR' macro redefinition
+#undef FAR
+
+// jmorecfg.h in libjpeg checks for XMD_H with the comment: "X11/xmd.h correctly defines INT32"
+// fix INT32 redefinition error by pretending we are X11/xmd.h
+#define XMD_H
+#endif
+
+extern "C" {
+#include "jpeglib.h"
+}
+
 namespace WebCore {
 
     class JPEGImageReader;
@@ -62,10 +76,10 @@ namespace WebCore {
         // data coming, sets the "decode failure" flag.
         void decode(bool onlySize);
 
-        template <int colorSpace>
+        template <J_COLOR_SPACE colorSpace>
         bool outputScanlines(ImageFrame& buffer);
 
-        template <int colorSpace, bool isScaled>
+        template <J_COLOR_SPACE colorSpace, bool isScaled>
         bool outputScanlines(ImageFrame& buffer);
 
         OwnPtr<JPEGImageReader> m_reader;