JPEG
jpeg_start_compress. (This would never happen in a correctly-written program, because jpeg_add_quant_table clamps all values less than 1.)tj3Transform whereby, if TJPARAM_SAVEMARKERS was set to 2 or 4, TJXOPT_COPYNONE was not specified, an ICC profile was extracted from the source image, and another ICC profile was associated with the TurboJPEG instance using tj3SetICCProfile, both profiles were embedded in the destination image. The documented API behavior is for TJXOPT_COPYNONE to take precedence over TJPARAM_SAVEMARKERS and for TJPARAM_SAVEMARKERS to take precedence over the associated ICC profile. Thus, tj3Transform now ignores the associated ICC profile unless TJXOPT_COPYNONE is specified or TJPARAM_SAVEMARKERS is set to something other than 2 or 4.cinfo.Ss (the predictor selection value) to a value less than 1 or greater than 7 after calling jpeg_enable_lossless and prior to calling jpeg_start_compress, an incorrect (all white) lossless JPEG image was silently generated.PNG
TYuPngImage:png_set_tRNS and png_set_PLTE.png_set_PLTE, png_set_tRNS and png_set_hIST leading to corrupted chunk data and potential heap information disclosure. Also hardened the append-style setters (png_set_text, png_set_sPLT, png_set_unknown_chunks) against a theoretical variant of the same aliasing pattern.num_trans in trans_alpha buffers.info_ptr->palette after in-place gamma and background transforms.png_image_read_and_map RGB_ALPHA path.png_set_shift to prevent infinite loop.PNG
png_set_quantize.Little CMS
cmsCreateExtendedTransform.cmsCreateLab4Profile to reference the media white point instead of the illuminant.PNG
JPEG
TJPARAM_LOSSLESS or TJPARAM_COLORSPACE prior to calling tj3EncodeYUV*8() or tj3CompressFromYUV*8(). tj3EncodeYUV*8() and tj3CompressFromYUV*8() now ignore TJPARAM_LOSSLESS and TJPARAM_COLORSPACE.PNG
TYuPngImage was not affected, as it does not use the simplified API.JPEG
YuJpegTurbo Huffman coding for Win32 Delphi.PNG
png_write_image_8bit with 8-bit input and convert_to_8bit enabled.png_combine_row triggered via png_image_finish_read.png_set_quantize.WebP:
YuWebP for Win32 Delphi XE2 and later. This optimization delivers about 2–3× faster WebP image encoding and decoding, sometimes even more.WebPAnimEncoderAdd for Win32. Win64 was not affected.jpeg_compress_struct.data_precision or jpeg_decompress_struct.data_precision after calling jpeg_start_compress or jpeg_start_decompress.png_set_mDCv.WebPValidateDecoderConfig.cmsDupContext with nil ContextID.cmsMD5computeID to the latest ICC 4.4 specification.YuJpegTurbo.WebPAuxStats.TYuJpegImage: A TGraphic descendant to load and display JPEG images, and optionally apply embedded ICC color profiles.YuJpegTurbo unit featuring the libjpeg v8 API.YuTurboJpeg unit for generating, decoding, and transforming planar YUV and JPEG images in memory.TBitmap toTBitmap_SaveAsPngTBitmap_SaveAsJpegTBitmap_SaveAsWebPpng_get_IHDR.WebPAnimEncoderSetChunk, WebPAnimEncoderGetChunk, WebPAnimEncoderDeleteChunkUpdate Little CMS to v2.16:
WebPPicture error codes.png_get_valid to not report a tRNS chunk as valid if it was canceled.Initial release as YuImage. YuImage supersedes YuPng and adds the following:
YuWebP unit based on libwebp v1.3.31-rc1:YuWebPImage unit with TYuWebPImage class, a TGraphic descendant to display WebP images: