diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-01-20 16:42:16 +0100 |
---|---|---|
committer | Thiago Marcos P. Santos <thiago@mapbox.com> | 2016-04-20 20:55:51 +0300 |
commit | e5c829b38ccaee353cfeca412f17bbd079b593e2 (patch) | |
tree | 855779641e375cd7977391246c6b1fd8d7eceed6 | |
parent | 01b06c230174e1088d1703d67d92072ab72d9a02 (diff) | |
download | qtlocation-mapboxgl-e5c829b38ccaee353cfeca412f17bbd079b593e2.tar.gz |
[Qt] use libjpeg-turbo rather than Qt's built-in JPEG decoding
libjpeg-turbo is typically 2-4x faster than the built-in decoding.
-rw-r--r-- | platform/qt/platform.gyp | 4 | ||||
-rw-r--r-- | platform/qt/scripts/configure.sh | 1 | ||||
-rw-r--r-- | platform/qt/src/image.cpp | 9 |
3 files changed, 14 insertions, 0 deletions
diff --git a/platform/qt/platform.gyp b/platform/qt/platform.gyp index 10f69c4a61..fb73c00ce1 100644 --- a/platform/qt/platform.gyp +++ b/platform/qt/platform.gyp @@ -34,6 +34,7 @@ 'sources': [ '../default/asset_file_source.cpp', '../default/default_file_source.cpp', + '../default/jpeg_reader.cpp', '../default/log_stderr.cpp', '../default/mbgl/storage/offline.cpp', '../default/mbgl/storage/offline_database.cpp', @@ -65,6 +66,7 @@ 'variables': { 'cflags': [ '<@(boost_cflags)', + '<@(libjpeg-turbo_cflags)', '<@(nunicode_cflags)', '<@(opengl_cflags)', '<@(qt_cflags)', @@ -76,6 +78,7 @@ '-fPIC', ], 'ldflags': [ + '<@(libjpeg-turbo_ldflags)', '<@(nunicode_ldflags)', '<@(opengl_ldflags)', '<@(qt_ldflags)', @@ -86,6 +89,7 @@ 'libraries': [ '<@(nunicode_static_libs)', '<@(sqlite_static_libs)', + '<@(libjpeg-turbo_static_libs)', '<@(webp_static_libs)', '<@(zlib_static_libs)', ], diff --git a/platform/qt/scripts/configure.sh b/platform/qt/scripts/configure.sh index 164598e6ff..66ee7f1471 100644 --- a/platform/qt/scripts/configure.sh +++ b/platform/qt/scripts/configure.sh @@ -3,6 +3,7 @@ BOOST_VERSION=1.59.0 GEOJSONVT_VERSION=4.1.2 GTEST_VERSION=1.7.0 +LIBJPEG_TURBO_VERSION=1.4.2 NUNICODE_VERSION=1.6 PIXELMATCH_VERSION=0.9.0 RAPIDJSON_VERSION=1.0.2 diff --git a/platform/qt/src/image.cpp b/platform/qt/src/image.cpp index 96a5eb0eed..816b3d7aee 100644 --- a/platform/qt/src/image.cpp +++ b/platform/qt/src/image.cpp @@ -19,6 +19,7 @@ std::string encodePNG(const PremultipliedImage& pre) { return std::string(array.constData(), array.size()); } +PremultipliedImage decodeJPEG(const uint8_t*, size_t); PremultipliedImage decodeWebP(const uint8_t*, size_t); PremultipliedImage decodeImage(const std::string& string) { @@ -34,6 +35,14 @@ PremultipliedImage decodeImage(const std::string& string) { } } + // Use libjpeg-turbo rather than the built-in version of libjpeg. + if (size >= 2) { + uint16_t magic = ((data[0] << 8) | data[1]) & 0xffff; + if (magic == 0xFFD8) { + return decodeJPEG(data, size); + } + } + QImage image = QImage::fromData(data, size) .rgbSwapped() |