Lines Matching refs:cinfo
60 void JpegEncoderHelper::initDestination(j_compress_ptr cinfo) { in initDestination() argument
61 destination_mgr* dest = reinterpret_cast<destination_mgr*>(cinfo->dest); in initDestination()
68 boolean JpegEncoderHelper::emptyOutputBuffer(j_compress_ptr cinfo) { in emptyOutputBuffer() argument
69 destination_mgr* dest = reinterpret_cast<destination_mgr*>(cinfo->dest); in emptyOutputBuffer()
78 void JpegEncoderHelper::terminateDestination(j_compress_ptr cinfo) { in terminateDestination() argument
79 destination_mgr* dest = reinterpret_cast<destination_mgr*>(cinfo->dest); in terminateDestination()
84 void JpegEncoderHelper::outputErrorMessage(j_common_ptr cinfo) { in outputErrorMessage() argument
88 (*cinfo->err->format_message) (cinfo, buffer); in outputErrorMessage()
94 jpeg_compress_struct cinfo; in encode() local
97 cinfo.err = jpeg_std_error(&jerr); in encode()
99 cinfo.err->output_message = &outputErrorMessage; in encode()
100 jpeg_create_compress(&cinfo); in encode()
101 setJpegDestination(&cinfo); in encode()
103 setJpegCompressStruct(width, height, jpegQuality, &cinfo, isSingleChannel); in encode()
104 jpeg_start_compress(&cinfo, TRUE); in encode()
107 jpeg_write_marker(&cinfo, JPEG_APP0 + 2, static_cast<const JOCTET*>(iccBuffer), iccSize); in encode()
110 bool status = compress(&cinfo, static_cast<const uint8_t*>(image), isSingleChannel); in encode()
111 jpeg_finish_compress(&cinfo); in encode()
112 jpeg_destroy_compress(&cinfo); in encode()
117 void JpegEncoderHelper::setJpegDestination(jpeg_compress_struct* cinfo) { in setJpegDestination() argument
118 destination_mgr* dest = static_cast<struct destination_mgr *>((*cinfo->mem->alloc_small) ( in setJpegDestination()
119 (j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(destination_mgr))); in setJpegDestination()
124 cinfo->dest = reinterpret_cast<struct jpeg_destination_mgr*>(dest); in setJpegDestination()
128 jpeg_compress_struct* cinfo, bool isSingleChannel) { in setJpegCompressStruct() argument
129 cinfo->image_width = width; in setJpegCompressStruct()
130 cinfo->image_height = height; in setJpegCompressStruct()
132 cinfo->input_components = 1; in setJpegCompressStruct()
133 cinfo->in_color_space = JCS_GRAYSCALE; in setJpegCompressStruct()
135 cinfo->input_components = 3; in setJpegCompressStruct()
136 cinfo->in_color_space = JCS_YCbCr; in setJpegCompressStruct()
138 jpeg_set_defaults(cinfo); in setJpegCompressStruct()
140 jpeg_set_quality(cinfo, quality, TRUE); in setJpegCompressStruct()
141 jpeg_set_colorspace(cinfo, isSingleChannel ? JCS_GRAYSCALE : JCS_YCbCr); in setJpegCompressStruct()
142 cinfo->raw_data_in = TRUE; in setJpegCompressStruct()
143 cinfo->dct_method = JDCT_IFAST; in setJpegCompressStruct()
148 cinfo->comp_info[0].h_samp_factor = 2; in setJpegCompressStruct()
149 cinfo->comp_info[0].v_samp_factor = 2; in setJpegCompressStruct()
150 cinfo->comp_info[1].h_samp_factor = 1; in setJpegCompressStruct()
151 cinfo->comp_info[1].v_samp_factor = 1; in setJpegCompressStruct()
152 cinfo->comp_info[2].h_samp_factor = 1; in setJpegCompressStruct()
153 cinfo->comp_info[2].v_samp_factor = 1; in setJpegCompressStruct()
158 jpeg_compress_struct* cinfo, const uint8_t* image, bool isSingleChannel) { in compress() argument
160 return compressSingleChannel(cinfo, image); in compress()
162 return compressYuv(cinfo, image); in compress()
165 bool JpegEncoderHelper::compressYuv(jpeg_compress_struct* cinfo, const uint8_t* yuv) { in compressYuv() argument
171 size_t y_plane_size = cinfo->image_width * cinfo->image_height; in compressYuv()
176 std::unique_ptr<uint8_t[]> empty = std::make_unique<uint8_t[]>(cinfo->image_width); in compressYuv()
177 memset(empty.get(), 0, cinfo->image_width); in compressYuv()
179 const int aligned_width = ALIGNM(cinfo->image_width, kCompressBatchSize); in compressYuv()
180 const bool is_width_aligned = (aligned_width == cinfo->image_width); in compressYuv()
197 memset(y_intrm[i] + cinfo->image_width, 0, aligned_width - cinfo->image_width); in compressYuv()
203 memset(cb_intrm[i] + cinfo->image_width / 2, 0, in compressYuv()
204 (aligned_width - cinfo->image_width) / 2); in compressYuv()
205 memset(cr_intrm[i] + cinfo->image_width / 2, 0, in compressYuv()
206 (aligned_width - cinfo->image_width) / 2); in compressYuv()
210 while (cinfo->next_scanline < cinfo->image_height) { in compressYuv()
212 size_t scanline = cinfo->next_scanline + i; in compressYuv()
213 if (scanline < cinfo->image_height) { in compressYuv()
214 y[i] = y_plane + scanline * cinfo->image_width; in compressYuv()
219 memcpy(y_intrm[i], y[i], cinfo->image_width); in compressYuv()
224 size_t scanline = cinfo->next_scanline / 2 + i; in compressYuv()
225 if (scanline < cinfo->image_height / 2) { in compressYuv()
226 int offset = scanline * (cinfo->image_width / 2); in compressYuv()
233 memcpy(cb_intrm[i], cb[i], cinfo->image_width / 2); in compressYuv()
234 memcpy(cr_intrm[i], cr[i], cinfo->image_width / 2); in compressYuv()
237 int processed = jpeg_write_raw_data(cinfo, is_width_aligned ? planes : planes_intrm, in compressYuv()
247 bool JpegEncoderHelper::compressSingleChannel(jpeg_compress_struct* cinfo, const uint8_t* image) { in compressSingleChannel() argument
252 std::unique_ptr<uint8_t[]> empty = std::make_unique<uint8_t[]>(cinfo->image_width); in compressSingleChannel()
253 memset(empty.get(), 0, cinfo->image_width); in compressSingleChannel()
255 const int aligned_width = ALIGNM(cinfo->image_width, kCompressBatchSize); in compressSingleChannel()
256 bool is_width_aligned = (aligned_width == cinfo->image_width); in compressSingleChannel()
268 memset(y_intrm[i] + cinfo->image_width, 0, aligned_width - cinfo->image_width); in compressSingleChannel()
272 while (cinfo->next_scanline < cinfo->image_height) { in compressSingleChannel()
274 size_t scanline = cinfo->next_scanline + i; in compressSingleChannel()
275 if (scanline < cinfo->image_height) { in compressSingleChannel()
276 y[i] = y_plane + scanline * cinfo->image_width; in compressSingleChannel()
281 memcpy(y_intrm[i], y[i], cinfo->image_width); in compressSingleChannel()
284 int processed = jpeg_write_raw_data(cinfo, is_width_aligned ? planes : planes_intrm, in compressSingleChannel()