Switch ChromeOS Chromium login to use IJG libjpeg
The default libjpeg library is libjpeg_turbo, except for Chrome OS. This
change switches the Chrome OS build to use IJG jpeg for the login screen.
The intended outcome is to have everything use libjpeg_turbo except for
JPEGCodec in ui/gfx.
ChromeUtilityMsg_RobustJPEGDecodeImage:
Send decodes to JPEGCodec which then uses chromium_ijg_ mangled libjpeg to
decode JPEGs.
ChromeUtilityMsg_DecodeImage:
Send decodes to blink WebImage. Any JPEGs would then be decoded with
libjpeg_turbo mangled with chromium_jpeg_.
User login code avatar/user_image_manager_impl.cc and
wallpaper/wallpaper_manager.cc currently setup UserImageLoader with
ImageDecoder::ROBUST_JPEG_DECODE.
Tests were run on a Peppy (Haswell 2955U), using the image_decoding benchmark
in telemetry.
ImageDecoding_avg.image_decoding.html?jpg:
Stock (ms): 166.98 166.80 163.03
Patch (ms): 78.95 73.27 78.23
[email protected]
BUG=413712
TEST=
$ cd ./tools/perf
$ ./run_benchmark --remote=${IP} \
--browser=cros-chrome-guest \
run image_decoding.image_decoding_measurement
Review URL: https://codereview.chromium.org/569623002
Cr-Commit-Position: refs/heads/master@{#328812}
diff --git a/chrome/browser/image_decoder.cc b/chrome/browser/image_decoder.cc
index cb758e5..a596bc5 100644
--- a/chrome/browser/image_decoder.cc
+++ b/chrome/browser/image_decoder.cc
@@ -134,10 +134,12 @@
batch_mode_timer_->Reset();
switch (image_codec) {
+#if defined(OS_CHROMEOS)
case ROBUST_JPEG_CODEC:
utility_process_host_->Send(new ChromeUtilityMsg_RobustJPEGDecodeImage(
image_data, request_id));
break;
+#endif // defined(OS_CHROMEOS)
case DEFAULT_CODEC:
utility_process_host_->Send(new ChromeUtilityMsg_DecodeImage(
image_data, shrink_to_fit, request_id));