Lines Matching refs:cinfo
60 static void initialize_info(jpeg_decompress_struct* cinfo, skjpeg_source_mgr* src_mgr) { in initialize_info() argument
61 SkASSERT(cinfo != nullptr); in initialize_info()
63 jpeg_create_decompress(cinfo); in initialize_info()
64 cinfo->src = src_mgr; in initialize_info()
70 cinfo->err->emit_message = &do_nothing_emit_message; in initialize_info()
77 cinfo->err->output_message = &do_nothing_output_message; in initialize_info()
135 const jpeg_decompress_struct& cinfo) { in recompute_sampleSize() argument
136 return sampleSize * cinfo.output_width / cinfo.image_width; in recompute_sampleSize()
139 static bool valid_output_dimensions(const jpeg_decompress_struct& cinfo) { in valid_output_dimensions() argument
143 return 0 != cinfo.output_width && 0 != cinfo.output_height; in valid_output_dimensions()
146 static bool skip_src_rows(jpeg_decompress_struct* cinfo, void* buffer, int count) { in skip_src_rows() argument
149 int row_count = jpeg_read_scanlines(cinfo, &rowptr, 1); in skip_src_rows()
161 static void print_jpeg_decoder_errors(const jpeg_decompress_struct& cinfo, in print_jpeg_decoder_errors() argument
165 cinfo.err->format_message((const j_common_ptr)&cinfo, buffer); in print_jpeg_decoder_errors()
167 cinfo.err->msg_code, buffer, caller, width, height); in print_jpeg_decoder_errors()
171 static bool return_false(const jpeg_decompress_struct& cinfo, in return_false() argument
173 print_jpeg_decoder_errors(cinfo, 0, 0, caller); in return_false()
177 static SkImageDecoder::Result return_failure(const jpeg_decompress_struct& cinfo, in return_failure() argument
179 print_jpeg_decoder_errors(cinfo, bm.width(), bm.height(), caller); in return_failure()
211 static void set_error_mgr(jpeg_decompress_struct* cinfo, skjpeg_error_mgr* errorManager) { in set_error_mgr() argument
212 SkASSERT(cinfo != nullptr); in set_error_mgr()
214 cinfo->err = jpeg_std_error(errorManager); in set_error_mgr()
221 static void set_dct_method(const SkImageDecoder& decoder, jpeg_decompress_struct* cinfo) { in set_dct_method() argument
222 SkASSERT(cinfo != nullptr); in set_dct_method()
223 cinfo->dct_method = JDCT_ISLOW; in set_dct_method()
226 SkColorType SkJPEGImageDecoder::getBitmapColorType(jpeg_decompress_struct* cinfo) { in getBitmapColorType() argument
227 SkASSERT(cinfo != nullptr); in getBitmapColorType()
230 if (JCS_GRAYSCALE == cinfo->jpeg_color_space) { in getBitmapColorType()
240 if (cinfo->jpeg_color_space != JCS_GRAYSCALE) { in getBitmapColorType()
257 switch (cinfo->jpeg_color_space) { in getBitmapColorType()
264 cinfo->out_color_space = JCS_CMYK; in getBitmapColorType()
268 cinfo->out_color_space = JCS_GRAYSCALE; in getBitmapColorType()
274 cinfo->out_color_space = JCS_RGB; in getBitmapColorType()
284 static void adjust_out_color_space_and_dither(jpeg_decompress_struct* cinfo, in adjust_out_color_space_and_dither() argument
287 SkASSERT(cinfo != nullptr); in adjust_out_color_space_and_dither()
289 cinfo->dither_mode = JDITHER_NONE; in adjust_out_color_space_and_dither()
290 if (JCS_CMYK == cinfo->out_color_space) { in adjust_out_color_space_and_dither()
295 cinfo->out_color_space = JCS_RGBA_8888; in adjust_out_color_space_and_dither()
298 cinfo->out_color_space = JCS_RGB_565; in adjust_out_color_space_and_dither()
300 cinfo->dither_mode = JDITHER_ORDERED; in adjust_out_color_space_and_dither()
324 static bool get_src_config(const jpeg_decompress_struct& cinfo, in get_src_config() argument
328 if (JCS_CMYK == cinfo.out_color_space) { in get_src_config()
333 } else if (3 == cinfo.out_color_components && JCS_RGB == cinfo.out_color_space) { in get_src_config()
337 } else if (JCS_RGBA_8888 == cinfo.out_color_space) { in get_src_config()
340 } else if (JCS_RGB_565 == cinfo.out_color_space) { in get_src_config()
344 } else if (1 == cinfo.out_color_components && in get_src_config()
345 JCS_GRAYSCALE == cinfo.out_color_space) { in get_src_config()
361 jpeg_decompress_struct cinfo; in onDecode() local
365 set_error_mgr(&cinfo, &errorManager); in onDecode()
370 return return_failure(cinfo, *bm, "setjmp"); in onDecode()
373 initialize_info(&cinfo, &srcManager); in onDecode()
374 autoClean.set(&cinfo); in onDecode()
376 int status = jpeg_read_header(&cinfo, true); in onDecode()
378 return return_failure(cinfo, *bm, "read_header"); in onDecode()
387 set_dct_method(*this, &cinfo); in onDecode()
389 SkASSERT(1 == cinfo.scale_num); in onDecode()
390 cinfo.scale_denom = sampleSize; in onDecode()
392 const SkColorType colorType = this->getBitmapColorType(&cinfo); in onDecode()
396 adjust_out_color_space_and_dither(&cinfo, colorType, *this); in onDecode()
403 bool success = bm->setInfo(SkImageInfo::Make(cinfo.image_width, cinfo.image_height, in onDecode()
412 if (!jpeg_start_decompress(&cinfo)) { in onDecode()
422 if (SkImageDecoder::kDecodeBounds_Mode == mode && valid_output_dimensions(cinfo)) { in onDecode()
423 SkScaledBitmapSampler smpl(cinfo.output_width, cinfo.output_height, in onDecode()
424 recompute_sampleSize(sampleSize, cinfo)); in onDecode()
433 return return_failure(cinfo, *bm, "start_decompress"); in onDecode()
436 sampleSize = recompute_sampleSize(sampleSize, cinfo); in onDecode()
438 SkScaledBitmapSampler sampler(cinfo.output_width, cinfo.output_height, sampleSize); in onDecode()
449 return return_failure(cinfo, *bm, "allocPixelRef"); in onDecode()
459 ((kN32_SkColorType == colorType && cinfo.out_color_space == JCS_RGBA_8888) || in onDecode()
460 (kRGB_565_SkColorType == colorType && cinfo.out_color_space == JCS_RGB_565))) in onDecode()
465 while (cinfo.output_scanline < cinfo.output_height) { in onDecode()
466 int row_count = jpeg_read_scanlines(&cinfo, &rowptr, 1); in onDecode()
470 fill_below_level(cinfo.output_scanline, bm); in onDecode()
471 cinfo.output_scanline = cinfo.output_height; in onDecode()
472 jpeg_finish_decompress(&cinfo); in onDecode()
476 return return_failure(cinfo, *bm, "shouldCancelDecode"); in onDecode()
480 jpeg_finish_decompress(&cinfo); in onDecode()
489 if (!get_src_config(cinfo, &sc, &srcBytesPerPixel)) { in onDecode()
490 return return_failure(cinfo, *bm, "jpeg colorspace"); in onDecode()
494 return return_failure(cinfo, *bm, "sampler.begin"); in onDecode()
497 SkAutoTMalloc<uint8_t> srcStorage(cinfo.output_width * srcBytesPerPixel); in onDecode()
501 if (!skip_src_rows(&cinfo, srcRow, sampler.srcY0())) { in onDecode()
502 return return_failure(cinfo, *bm, "skip rows"); in onDecode()
508 int row_count = jpeg_read_scanlines(&cinfo, &rowptr, 1); in onDecode()
509 sk_msan_mark_initialized(srcRow, srcRow + cinfo.output_width * srcBytesPerPixel, in onDecode()
515 cinfo.output_scanline = cinfo.output_height; in onDecode()
516 jpeg_finish_decompress(&cinfo); in onDecode()
520 return return_failure(cinfo, *bm, "shouldCancelDecode"); in onDecode()
523 if (JCS_CMYK == cinfo.out_color_space) { in onDecode()
524 convert_CMYK_to_RGB(srcRow, cinfo.output_width); in onDecode()
534 if (!skip_src_rows(&cinfo, srcRow, sampler.srcDY() - 1)) { in onDecode()
535 return return_failure(cinfo, *bm, "skip rows"); in onDecode()
540 if (!skip_src_rows(&cinfo, srcRow, in onDecode()
541 cinfo.output_height - cinfo.output_scanline)) { in onDecode()
542 return return_failure(cinfo, *bm, "skip rows"); in onDecode()
544 jpeg_finish_decompress(&cinfo); in onDecode()
581 static void update_components_sizes(const jpeg_decompress_struct& cinfo, SkISize componentSizes[3], in update_components_sizes() argument
583 SkASSERT(appears_to_be_yuv(cinfo)); in update_components_sizes()
585 componentSizes[i] = compute_yuv_size(cinfo, i, sizeType); in update_components_sizes()
589 static bool output_raw_data(jpeg_decompress_struct& cinfo, void* planes[3], size_t rowBytes[3]) { in output_raw_data() argument
590 SkASSERT(appears_to_be_yuv(cinfo)); in output_raw_data()
592 SkISize uvSize = compute_yuv_size(cinfo, 1, kSizeForMemoryAllocation_SizeType); in output_raw_data()
593 SkASSERT(uvSize == compute_yuv_size(cinfo, 2, kSizeForMemoryAllocation_SizeType)); in output_raw_data()
600 int yWidth = cinfo.output_width; in output_raw_data()
601 int yHeight = cinfo.output_height; in output_raw_data()
603 int v = cinfo.cur_comp_info[0]->v_samp_factor; in output_raw_data()
619 while (cinfo.output_scanline < cinfo.output_height) { in output_raw_data()
624 int scanline = (cinfo.output_scanline + i); in output_raw_data()
634 int scaledScanline = cinfo.output_scanline / v; in output_raw_data()
650 JDIMENSION scanlinesRead = jpeg_read_raw_data(&cinfo, bufferraw, yScanlinesToRead); in output_raw_data()
665 cinfo.output_scanline = SkMin32(cinfo.output_scanline, cinfo.output_height); in output_raw_data()
682 jpeg_decompress_struct cinfo; in onDecodeYUV8Planes() local
686 set_error_mgr(&cinfo, &errorManager); in onDecodeYUV8Planes()
691 return return_false(cinfo, "setjmp YUV8"); in onDecodeYUV8Planes()
694 initialize_info(&cinfo, &srcManager); in onDecodeYUV8Planes()
695 autoClean.set(&cinfo); in onDecodeYUV8Planes()
697 int status = jpeg_read_header(&cinfo, true); in onDecodeYUV8Planes()
699 return return_false(cinfo, "read_header YUV8"); in onDecodeYUV8Planes()
702 if (!appears_to_be_yuv(cinfo)) { in onDecodeYUV8Planes()
707 cinfo.out_color_space = JCS_YCbCr; in onDecodeYUV8Planes()
708 cinfo.raw_data_out = TRUE; in onDecodeYUV8Planes()
711 update_components_sizes(cinfo, componentSizes, kSizeForMemoryAllocation_SizeType); in onDecodeYUV8Planes()
715 set_dct_method(*this, &cinfo); in onDecodeYUV8Planes()
717 SkASSERT(1 == cinfo.scale_num); in onDecodeYUV8Planes()
718 cinfo.scale_denom = 1; in onDecodeYUV8Planes()
721 cinfo.dither_mode = JDITHER_NONE; in onDecodeYUV8Planes()
728 if (!jpeg_start_decompress(&cinfo)) { in onDecodeYUV8Planes()
729 return return_false(cinfo, "start_decompress YUV8"); in onDecodeYUV8Planes()
734 if (!appears_to_be_yuv(cinfo)) { in onDecodeYUV8Planes()
738 if (!output_raw_data(cinfo, planes, rowBytes)) { in onDecodeYUV8Planes()
739 return return_false(cinfo, "output_raw_data"); in onDecodeYUV8Planes()
742 update_components_sizes(cinfo, componentSizes, kActualSize_SizeType); in onDecodeYUV8Planes()
743 jpeg_finish_decompress(&cinfo); in onDecodeYUV8Planes()
837 jpeg_compress_struct cinfo; in onEncode() local
844 cinfo.err = jpeg_std_error(&sk_err); in onEncode()
856 jpeg_create_compress(&cinfo); in onEncode()
857 cinfo.dest = &sk_wstream; in onEncode()
858 cinfo.image_width = bm.width(); in onEncode()
859 cinfo.image_height = bm.height(); in onEncode()
860 cinfo.input_components = 3; in onEncode()
862 cinfo.in_color_space = JCS_RGB; in onEncode()
865 cinfo.input_gamma = 1; in onEncode()
867 jpeg_set_defaults(&cinfo); in onEncode()
872 cinfo.optimize_coding = TRUE; in onEncode()
873 jpeg_set_quality(&cinfo, quality, TRUE /* limit to baseline-JPEG values */); in onEncode()
875 jpeg_start_compress(&cinfo, TRUE); in onEncode()
883 while (cinfo.next_scanline < cinfo.image_height) { in onEncode()
888 (void) jpeg_write_scanlines(&cinfo, row_pointer, 1); in onEncode()
892 jpeg_finish_compress(&cinfo); in onEncode()
893 jpeg_destroy_compress(&cinfo); in onEncode()