Update libjpeg-turbo to v2.0.1

In order to apply some performance updates from ARM, we need to update
libjpeg-turbo. These performance updates have yielded a 50% speedup on
some devices.

This CL updates our copy of libjpeg-turbo to v2.0.1 and re-applies our
local patches. This patch also deletes some extra files which were not
being used locally.

Update our local patch that was applied to fix http://crbug.com/398235
(https://codereview.appspot.com/229430043/). The original patch
incorrectly removed "& 0xFF" which limited an array index to within
that array's bounds (effectively reverting
https://github.com/libjpeg-turbo/libjpeg-turbo/commit/fa1d18385d904d530b4aec83ab7757a33397de6e).
Restore the mask, making the array access safe and fixing a graphical
glitch which would otherwise be introduced by this change.

Bug:922430
Change-Id: I3860fdb424deecf7a17818ed09a640e632e71f8d
diff --git a/cdjpeg.h b/cdjpeg.h
index a65310e..9868a0b 100644
--- a/cdjpeg.h
+++ b/cdjpeg.h
@@ -3,8 +3,8 @@
  *
  * This file was part of the Independent JPEG Group's software:
  * Copyright (C) 1994-1997, Thomas G. Lane.
- * It was modified by The libjpeg-turbo Project to include only code relevant
- * to libjpeg-turbo.
+ * libjpeg-turbo Modifications:
+ * Copyright (C) 2017, D. R. Commander.
  * For conditions of distribution and use, see the accompanying README.ijg
  * file.
  *
@@ -54,6 +54,14 @@
                           JDIMENSION rows_supplied);
   /* Finish up at the end of the image. */
   void (*finish_output) (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo);
+  /* Re-calculate buffer dimensions based on output dimensions (for use with
+     partial image decompression.)  If this is NULL, then the output format
+     does not support partial image decompression (BMP and RLE, in particular,
+     cannot support partial decompression because they use an inversion buffer
+     to write the image in bottom-up order.) */
+  void (*calc_buffer_dimensions) (j_decompress_ptr cinfo,
+                                  djpeg_dest_ptr dinfo);
+
 
   /* Target file spec; filled in by djpeg.c after object is created. */
   FILE *output_file;
@@ -88,41 +96,42 @@
 
 /* Module selection routines for I/O modules. */
 
-EXTERN(cjpeg_source_ptr) jinit_read_bmp (j_compress_ptr cinfo);
-EXTERN(djpeg_dest_ptr) jinit_write_bmp (j_decompress_ptr cinfo,
-                                        boolean is_os2);
-EXTERN(cjpeg_source_ptr) jinit_read_gif (j_compress_ptr cinfo);
-EXTERN(djpeg_dest_ptr) jinit_write_gif (j_decompress_ptr cinfo);
-EXTERN(cjpeg_source_ptr) jinit_read_ppm (j_compress_ptr cinfo);
-EXTERN(djpeg_dest_ptr) jinit_write_ppm (j_decompress_ptr cinfo);
-EXTERN(cjpeg_source_ptr) jinit_read_rle (j_compress_ptr cinfo);
-EXTERN(djpeg_dest_ptr) jinit_write_rle (j_decompress_ptr cinfo);
-EXTERN(cjpeg_source_ptr) jinit_read_targa (j_compress_ptr cinfo);
-EXTERN(djpeg_dest_ptr) jinit_write_targa (j_decompress_ptr cinfo);
+EXTERN(cjpeg_source_ptr) jinit_read_bmp(j_compress_ptr cinfo,
+                                        boolean use_inversion_array);
+EXTERN(djpeg_dest_ptr) jinit_write_bmp(j_decompress_ptr cinfo, boolean is_os2,
+                                       boolean use_inversion_array);
+EXTERN(cjpeg_source_ptr) jinit_read_gif(j_compress_ptr cinfo);
+EXTERN(djpeg_dest_ptr) jinit_write_gif(j_decompress_ptr cinfo);
+EXTERN(cjpeg_source_ptr) jinit_read_ppm(j_compress_ptr cinfo);
+EXTERN(djpeg_dest_ptr) jinit_write_ppm(j_decompress_ptr cinfo);
+EXTERN(cjpeg_source_ptr) jinit_read_rle(j_compress_ptr cinfo);
+EXTERN(djpeg_dest_ptr) jinit_write_rle(j_decompress_ptr cinfo);
+EXTERN(cjpeg_source_ptr) jinit_read_targa(j_compress_ptr cinfo);
+EXTERN(djpeg_dest_ptr) jinit_write_targa(j_decompress_ptr cinfo);
 
 /* cjpeg support routines (in rdswitch.c) */
 
-EXTERN(boolean) read_quant_tables (j_compress_ptr cinfo, char *filename,
-                                   boolean force_baseline);
-EXTERN(boolean) read_scan_script (j_compress_ptr cinfo, char *filename);
-EXTERN(boolean) set_quality_ratings (j_compress_ptr cinfo, char *arg,
-                                     boolean force_baseline);
-EXTERN(boolean) set_quant_slots (j_compress_ptr cinfo, char *arg);
-EXTERN(boolean) set_sample_factors (j_compress_ptr cinfo, char *arg);
+EXTERN(boolean) read_quant_tables(j_compress_ptr cinfo, char *filename,
+                                  boolean force_baseline);
+EXTERN(boolean) read_scan_script(j_compress_ptr cinfo, char *filename);
+EXTERN(boolean) set_quality_ratings(j_compress_ptr cinfo, char *arg,
+                                    boolean force_baseline);
+EXTERN(boolean) set_quant_slots(j_compress_ptr cinfo, char *arg);
+EXTERN(boolean) set_sample_factors(j_compress_ptr cinfo, char *arg);
 
 /* djpeg support routines (in rdcolmap.c) */
 
-EXTERN(void) read_color_map (j_decompress_ptr cinfo, FILE *infile);
+EXTERN(void) read_color_map(j_decompress_ptr cinfo, FILE *infile);
 
 /* common support routines (in cdjpeg.c) */
 
-EXTERN(void) enable_signal_catcher (j_common_ptr cinfo);
-EXTERN(void) start_progress_monitor (j_common_ptr cinfo,
-                                     cd_progress_ptr progress);
-EXTERN(void) end_progress_monitor (j_common_ptr cinfo);
-EXTERN(boolean) keymatch (char *arg, const char *keyword, int minchars);
-EXTERN(FILE *) read_stdin (void);
-EXTERN(FILE *) write_stdout (void);
+EXTERN(void) enable_signal_catcher(j_common_ptr cinfo);
+EXTERN(void) start_progress_monitor(j_common_ptr cinfo,
+                                    cd_progress_ptr progress);
+EXTERN(void) end_progress_monitor(j_common_ptr cinfo);
+EXTERN(boolean) keymatch(char *arg, const char *keyword, int minchars);
+EXTERN(FILE *) read_stdin(void);
+EXTERN(FILE *) write_stdout(void);
 
 /* miscellaneous useful macros */
 
@@ -143,3 +152,6 @@
 #ifndef EXIT_WARNING
 #define EXIT_WARNING  2
 #endif
+
+#define IsExtRGB(cs) \
+  (cs == JCS_RGB || (cs >= JCS_EXT_RGB && cs <= JCS_EXT_ARGB))