Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(363)

Side by Side Diff: src/images/SkImageDecoder_libjpeg.cpp

Issue 1180983002: Switch SkJpegCode to libjpeg-turbo (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2007 The Android Open Source Project 2 * Copyright 2007 The Android Open Source Project
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 8
9 #include "SkImageDecoder.h" 9 #include "SkImageDecoder.h"
10 #include "SkImageEncoder.h" 10 #include "SkImageEncoder.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 } 78 }
79 /* To suppress error messages with a SK_DEBUG binary, set the 79 /* To suppress error messages with a SK_DEBUG binary, set the
80 * environment variable "skia_images_jpeg_suppressDecoderErrors" 80 * environment variable "skia_images_jpeg_suppressDecoderErrors"
81 * to "true". Inside a program that links to skia: 81 * to "true". Inside a program that links to skia:
82 * SK_CONF_SET("images.jpeg.suppressDecoderErrors", true); */ 82 * SK_CONF_SET("images.jpeg.suppressDecoderErrors", true); */
83 if (c_suppressJPEGImageDecoderErrors) { 83 if (c_suppressJPEGImageDecoderErrors) {
84 cinfo->err->output_message = &do_nothing_output_message; 84 cinfo->err->output_message = &do_nothing_output_message;
85 } 85 }
86 } 86 }
87 87
88 #ifdef SK_BUILD_FOR_ANDROID 88 #if 0
scroggo 2015/06/16 20:39:23 Derek knows the magic to make SkCodec using libjpe
msarett 2015/06/18 21:06:10 Done.
89 class SkJPEGImageIndex { 89 class SkJPEGImageIndex {
90 public: 90 public:
91 // Takes ownership of stream. 91 // Takes ownership of stream.
92 SkJPEGImageIndex(SkStreamRewindable* stream, SkImageDecoder* decoder) 92 SkJPEGImageIndex(SkStreamRewindable* stream, SkImageDecoder* decoder)
93 : fSrcMgr(stream, decoder) 93 : fSrcMgr(stream, decoder)
94 , fStream(stream) 94 , fStream(stream)
95 , fInfoInitialized(false) 95 , fInfoInitialized(false)
96 , fHuffmanCreated(false) 96 , fHuffmanCreated(false)
97 , fDecompressStarted(false) 97 , fDecompressStarted(false)
98 { 98 {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 huffman_index fHuffmanIndex; 196 huffman_index fHuffmanIndex;
197 bool fInfoInitialized; 197 bool fInfoInitialized;
198 bool fHuffmanCreated; 198 bool fHuffmanCreated;
199 bool fDecompressStarted; 199 bool fDecompressStarted;
200 SkDEBUGCODE(bool fReadHeaderSucceeded;) 200 SkDEBUGCODE(bool fReadHeaderSucceeded;)
201 }; 201 };
202 #endif 202 #endif
203 203
204 class SkJPEGImageDecoder : public SkImageDecoder { 204 class SkJPEGImageDecoder : public SkImageDecoder {
205 public: 205 public:
206 #ifdef SK_BUILD_FOR_ANDROID 206 #if 0
207 SkJPEGImageDecoder() { 207 SkJPEGImageDecoder() {
208 fImageIndex = NULL; 208 fImageIndex = NULL;
209 fImageWidth = 0; 209 fImageWidth = 0;
210 fImageHeight = 0; 210 fImageHeight = 0;
211 } 211 }
212 212
213 virtual ~SkJPEGImageDecoder() { 213 virtual ~SkJPEGImageDecoder() {
214 SkDELETE(fImageIndex); 214 SkDELETE(fImageIndex);
215 } 215 }
216 #endif 216 #endif
217 217
218 Format getFormat() const override { 218 Format getFormat() const override {
219 return kJPEG_Format; 219 return kJPEG_Format;
220 } 220 }
221 221
222 protected: 222 protected:
223 #ifdef SK_BUILD_FOR_ANDROID 223 #if 0
224 bool onBuildTileIndex(SkStreamRewindable *stream, int *width, int *height) o verride; 224 bool onBuildTileIndex(SkStreamRewindable *stream, int *width, int *height) o verride;
225 bool onDecodeSubset(SkBitmap* bitmap, const SkIRect& rect) override; 225 bool onDecodeSubset(SkBitmap* bitmap, const SkIRect& rect) override;
226 #endif 226 #endif
227 Result onDecode(SkStream* stream, SkBitmap* bm, Mode) override; 227 Result onDecode(SkStream* stream, SkBitmap* bm, Mode) override;
228 bool onDecodeYUV8Planes(SkStream* stream, SkISize componentSizes[3], 228 bool onDecodeYUV8Planes(SkStream* stream, SkISize componentSizes[3],
229 void* planes[3], size_t rowBytes[3], 229 void* planes[3], size_t rowBytes[3],
230 SkYUVColorSpace* colorSpace) override; 230 SkYUVColorSpace* colorSpace) override;
231 231
232 private: 232 private:
233 #ifdef SK_BUILD_FOR_ANDROID 233 #if 0
234 SkJPEGImageIndex* fImageIndex; 234 SkJPEGImageIndex* fImageIndex;
235 int fImageWidth; 235 int fImageWidth;
236 int fImageHeight; 236 int fImageHeight;
237 #endif 237 #endif
238 238
239 /** 239 /**
240 * Determine the appropriate bitmap colortype and out_color_space based on 240 * Determine the appropriate bitmap colortype and out_color_space based on
241 * both the preference of the caller and the jpeg_color_space on the 241 * both the preference of the caller and the jpeg_color_space on the
242 * jpeg_decompress_struct passed in. 242 * jpeg_decompress_struct passed in.
243 * Must be called after jpeg_read_header. 243 * Must be called after jpeg_read_header.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 for (int i = 0; i < count; i++) { 290 for (int i = 0; i < count; i++) {
291 JSAMPLE* rowptr = (JSAMPLE*)buffer; 291 JSAMPLE* rowptr = (JSAMPLE*)buffer;
292 int row_count = jpeg_read_scanlines(cinfo, &rowptr, 1); 292 int row_count = jpeg_read_scanlines(cinfo, &rowptr, 1);
293 if (1 != row_count) { 293 if (1 != row_count) {
294 return false; 294 return false;
295 } 295 }
296 } 296 }
297 return true; 297 return true;
298 } 298 }
299 299
300 #ifdef SK_BUILD_FOR_ANDROID 300 #if 0
301 static bool skip_src_rows_tile(jpeg_decompress_struct* cinfo, 301 static bool skip_src_rows_tile(jpeg_decompress_struct* cinfo,
302 huffman_index *index, void* buffer, int count) { 302 huffman_index *index, void* buffer, int count) {
303 for (int i = 0; i < count; i++) { 303 for (int i = 0; i < count; i++) {
304 JSAMPLE* rowptr = (JSAMPLE*)buffer; 304 JSAMPLE* rowptr = (JSAMPLE*)buffer;
305 int row_count = jpeg_read_tile_scanline(cinfo, index, &rowptr); 305 int row_count = jpeg_read_tile_scanline(cinfo, index, &rowptr);
306 if (1 != row_count) { 306 if (1 != row_count) {
307 return false; 307 return false;
308 } 308 }
309 } 309 }
310 return true; 310 return true;
(...skipping 13 matching lines...) Expand all
324 cinfo.err->msg_code, buffer, caller, width, height); 324 cinfo.err->msg_code, buffer, caller, width, height);
325 } 325 }
326 } 326 }
327 327
328 static bool return_false(const jpeg_decompress_struct& cinfo, 328 static bool return_false(const jpeg_decompress_struct& cinfo,
329 const char caller[]) { 329 const char caller[]) {
330 print_jpeg_decoder_errors(cinfo, 0, 0, caller); 330 print_jpeg_decoder_errors(cinfo, 0, 0, caller);
331 return false; 331 return false;
332 } 332 }
333 333
334 #ifdef SK_BUILD_FOR_ANDROID 334 #if 0
335 static bool return_false(const jpeg_decompress_struct& cinfo, 335 static bool return_false(const jpeg_decompress_struct& cinfo,
336 const SkBitmap& bm, const char caller[]) { 336 const SkBitmap& bm, const char caller[]) {
337 print_jpeg_decoder_errors(cinfo, bm.width(), bm.height(), caller); 337 print_jpeg_decoder_errors(cinfo, bm.width(), bm.height(), caller);
338 return false; 338 return false;
339 } 339 }
340 #endif 340 #endif
341 341
342 static SkImageDecoder::Result return_failure(const jpeg_decompress_struct& cinfo , 342 static SkImageDecoder::Result return_failure(const jpeg_decompress_struct& cinfo ,
343 const SkBitmap& bm, const char call er[]) { 343 const SkBitmap& bm, const char call er[]) {
344 print_jpeg_decoder_errors(cinfo, bm.width(), bm.height(), caller); 344 print_jpeg_decoder_errors(cinfo, bm.width(), bm.height(), caller);
(...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 934
935 if (NULL != colorSpace) { 935 if (NULL != colorSpace) {
936 *colorSpace = kJPEG_SkYUVColorSpace; 936 *colorSpace = kJPEG_SkYUVColorSpace;
937 } 937 }
938 938
939 return true; 939 return true;
940 } 940 }
941 941
942 /////////////////////////////////////////////////////////////////////////////// 942 ///////////////////////////////////////////////////////////////////////////////
943 943
944 #ifdef SK_BUILD_FOR_ANDROID 944 #if 0
945 bool SkJPEGImageDecoder::onBuildTileIndex(SkStreamRewindable* stream, int *width , int *height) { 945 bool SkJPEGImageDecoder::onBuildTileIndex(SkStreamRewindable* stream, int *width , int *height) {
946 946
947 SkAutoTDelete<SkJPEGImageIndex> imageIndex(SkNEW_ARGS(SkJPEGImageIndex, (str eam, this))); 947 SkAutoTDelete<SkJPEGImageIndex> imageIndex(SkNEW_ARGS(SkJPEGImageIndex, (str eam, this)));
948 948
949 skjpeg_error_mgr sk_err; 949 skjpeg_error_mgr sk_err;
950 set_error_mgr(imageIndex->cinfo(), &sk_err); 950 set_error_mgr(imageIndex->cinfo(), &sk_err);
951 951
952 // All objects need to be instantiated before this setjmp call so that 952 // All objects need to be instantiated before this setjmp call so that
953 // they will be cleaned up properly if an error occurs. 953 // they will be cleaned up properly if an error occurs.
954 if (setjmp(sk_err.fJmpBuf)) { 954 if (setjmp(sk_err.fJmpBuf)) {
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
1449 return SkImageDecoder::kUnknown_Format; 1449 return SkImageDecoder::kUnknown_Format;
1450 } 1450 }
1451 1451
1452 static SkImageEncoder* sk_libjpeg_efactory(SkImageEncoder::Type t) { 1452 static SkImageEncoder* sk_libjpeg_efactory(SkImageEncoder::Type t) {
1453 return (SkImageEncoder::kJPEG_Type == t) ? SkNEW(SkJPEGImageEncoder) : NULL; 1453 return (SkImageEncoder::kJPEG_Type == t) ? SkNEW(SkJPEGImageEncoder) : NULL;
1454 } 1454 }
1455 1455
1456 static SkImageDecoder_DecodeReg gDReg(sk_libjpeg_dfactory); 1456 static SkImageDecoder_DecodeReg gDReg(sk_libjpeg_dfactory);
1457 static SkImageDecoder_FormatReg gFormatReg(get_format_jpeg); 1457 static SkImageDecoder_FormatReg gFormatReg(get_format_jpeg);
1458 static SkImageEncoder_EncodeReg gEReg(sk_libjpeg_efactory); 1458 static SkImageEncoder_EncodeReg gEReg(sk_libjpeg_efactory);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698