346 {
348 if (setjmp(jmp)) {
349 return false;
350 }
351
352 if (fSrcYUVA) {
353
354 for (int i = 0; i < numRows; i++) {
357 jpeg_write_scanlines(fEncoderMgr->cinfo(), &jpegSrcRow, 1);
358 }
359 } else {
361 const size_t jpegSrcBytes = fEncoderMgr->cinfo()->input_components *
fSrc.
width();
363 for (int i = 0; i < numRows; i++) {
364 JSAMPLE* jpegSrcRow = (JSAMPLE*)(const_cast<void*>(srcRow));
365 if (fEncoderMgr->proc()) {
368 (const char*)srcRow,
370 fEncoderMgr->cinfo()->input_components);
373 SkTAddOffset<const void>(jpegSrcRow, jpegSrcBytes));
374 } else {
375
376
378 SkTAddOffset<const void>(jpegSrcRow, jpegSrcBytes));
379 }
380
381 jpeg_write_scanlines(fEncoderMgr->cinfo(), &jpegSrcRow, 1);
382 srcRow = SkTAddOffset<const void>(srcRow,
fSrc.
rowBytes());
383 }
384 }
385
388 jpeg_finish_compress(fEncoderMgr->cinfo());
389 }
390
391 return true;
392}
SK_API int SkColorTypeBytesPerPixel(SkColorType ct)
static void yuva_copy_row(const SkYUVAPixmaps *src, int row, uint8_t *dst)
static void sk_msan_assert_initialized(const void *begin, const void *end)
skia_private::AutoTMalloc< uint8_t > fStorage
SkColorType colorType() const
const void * addr() const