OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2007 The Android Open Source Project | 3 * Copyright 2007 The Android Open Source Project |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 #include "SkImageDecoder.h" | 10 #include "SkImageDecoder.h" |
(...skipping 947 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
958 cinfo.input_components = 3; | 958 cinfo.input_components = 3; |
959 #ifdef WE_CONVERT_TO_YUV | 959 #ifdef WE_CONVERT_TO_YUV |
960 cinfo.in_color_space = JCS_YCbCr; | 960 cinfo.in_color_space = JCS_YCbCr; |
961 #else | 961 #else |
962 cinfo.in_color_space = JCS_RGB; | 962 cinfo.in_color_space = JCS_RGB; |
963 #endif | 963 #endif |
964 cinfo.input_gamma = 1; | 964 cinfo.input_gamma = 1; |
965 | 965 |
966 jpeg_set_defaults(&cinfo); | 966 jpeg_set_defaults(&cinfo); |
967 jpeg_set_quality(&cinfo, quality, TRUE /* limit to baseline-JPEG values
*/); | 967 jpeg_set_quality(&cinfo, quality, TRUE /* limit to baseline-JPEG values
*/); |
| 968 #ifdef DCT_IFAST_SUPPORTED |
968 cinfo.dct_method = JDCT_IFAST; | 969 cinfo.dct_method = JDCT_IFAST; |
| 970 #endif |
969 | 971 |
970 jpeg_start_compress(&cinfo, TRUE); | 972 jpeg_start_compress(&cinfo, TRUE); |
971 | 973 |
972 const int width = bm.width(); | 974 const int width = bm.width(); |
973 uint8_t* oneRowP = (uint8_t*)oneRow.reset(width * 3); | 975 uint8_t* oneRowP = (uint8_t*)oneRow.reset(width * 3); |
974 | 976 |
975 const SkPMColor* colors = ctLocker.lockColors(bm); | 977 const SkPMColor* colors = ctLocker.lockColors(bm); |
976 const void* srcRow = bm.getPixels(); | 978 const void* srcRow = bm.getPixels(); |
977 | 979 |
978 while (cinfo.next_scanline < cinfo.image_height) { | 980 while (cinfo.next_scanline < cinfo.image_height) { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1014 return SkNEW(SkJPEGImageDecoder); | 1016 return SkNEW(SkJPEGImageDecoder); |
1015 } | 1017 } |
1016 | 1018 |
1017 static SkImageEncoder* sk_libjpeg_efactory(SkImageEncoder::Type t) { | 1019 static SkImageEncoder* sk_libjpeg_efactory(SkImageEncoder::Type t) { |
1018 return (SkImageEncoder::kJPEG_Type == t) ? SkNEW(SkJPEGImageEncoder) : NULL; | 1020 return (SkImageEncoder::kJPEG_Type == t) ? SkNEW(SkJPEGImageEncoder) : NULL; |
1019 } | 1021 } |
1020 | 1022 |
1021 | 1023 |
1022 static SkTRegistry<SkImageDecoder*, SkStream*> gDReg(sk_libjpeg_dfactory); | 1024 static SkTRegistry<SkImageDecoder*, SkStream*> gDReg(sk_libjpeg_dfactory); |
1023 static SkTRegistry<SkImageEncoder*, SkImageEncoder::Type> gEReg(sk_libjpeg_efact
ory); | 1025 static SkTRegistry<SkImageEncoder*, SkImageEncoder::Type> gEReg(sk_libjpeg_efact
ory); |
OLD | NEW |