libjpeg-turbo 3.0.0 发布


libjpeg-turbo 3.0.0 现已正式发布。libjpeg-turbo 是一个 JPEG 图像编解码器,它使用 SIMD 指令(MMX、SSE2、AVX2、Neon、AltiVec)来加速 x86、x86-64、Arm 和 PowerPC 系统上的基线 JPEG 压缩和解压缩,以及 x86、x86-64 和 Arm 系统的渐进式 JPEG 压缩。

相对于 3.0 beta2 的重大变化:

  • TurboJPEG API 现在支持 4:4:1(transposed  4:1:1)色度子采样,允许无损转置或旋转 4:1:1 JPEG 图像进行无损裁剪、部分解压缩或解压缩为平面 YUV 图像。

  • 修复了各种 segfaults 和缓冲区溢出 (CVE-2023-2804)在尝试使用颜色量化或合并色度上采样/颜色转换来解压缩各种特制的格式错误的每分量 12 位和每分量 16 位无损 JPEG 图像时发生。这些问题的根本原因是颜色量化和合并色度上采样/颜色转换算法在设计时并未考虑到无损解压缩。由于 libjpeg-turbo 在压缩或解压缩无损 JPEG 图像时明确不支持颜色转换,因此不应为此类图像启用合并色度上采样/颜色转换。颜色量化是一项传统功能,对于无损 JPEG 图像几乎没有作用,因此现在在解压缩此类图像时也被禁用。(因此,djpeg 无法再将无损 JPEG 图像解压缩为 GIF 图像。)

  • 修复了 1.4 beta1[8] 中的一个疏忽,该疏忽在尝试使用启用了颜色量化和 RGB565 颜色转换的 djpeg 解压缩各种特制的格式错误的每组件 12 位 JPEG 图像时导致各种 segfaults 和缓冲区溢出。

  • 修复了以下问题:如果启用了解压缩放,jpeg_crop_scanline()有时会错误计算具有 4x2 或 2x4 子采样因子的组件的下采样宽度。这导致组件上采样不完全,从而导致颜色转换器从未初始化的内存中读取。对于 12 位数据精度,如果从未初始化的内存读取的样本值超出了有效样本范围,则会导致缓冲区溢出或欠载以及随后的 segfault。

  • 修复了一个长期存在的问题,即tj3Transform()函数与TJXOP_TRANSPOSETJXOP_TRANSVERSETJXOP_ROT90 TJXOP_ROT270转换操作一起使用时,在没有自动的 JPEG 目标缓冲区(重新)分配或无损裁剪的情况下,基于源图像尺寸而不是转换后的图像尺寸计算最坏情况下转换的 JPEG 图像大小。如果一个调用程序按照 API 文档的指示,根据转换后的图像尺寸分配 JPEG 目标缓冲区,并试图转换一个特别制作的 4:2:2、4:4:0、4:1:1 或 4:4:1 的包含大量元数据的 JPEG 源图像,这个问题导致tj3Transform()溢出 JPEG 目标缓冲区而不是正常失败。这个问题可以通过设置TJXOPT_COPYNONE来解决。请注意,不管这个问题如何,tj3Transform()都能不可靠地转换包含大量元数据的 JPEG 源图像,除非使用自动 JPEG 目标缓冲区(重新)分配或设置TJXOPT_COPYNONE

  • 修复了 3.0 beta2[6] 引入的一个回归问题,该回归使得 djpeg -map选项在解压 12-bit-per-component 有损的 JPEG 图像时无法工作。

  • 修复了在尝试将特制格式错误的算术编码 JPEG 源图像转换为 baseline Huffman-coded JPEG 目标时导致 C Huffman encoder (默认情况下在 x86 和 Arm CPU 上不使用)从未初始化的内存中读取的问题图像。

更新说明:https://github.com/libjpeg-turbo/libjpeg-turbo/releases/tag/3.0.0


相關推薦

2023-03-17

r.h 移动 QTypeInfo 到 qtypeinfo.h ,以避免违反 ODR 将捆绑的 libjpeg-turbo 更新到版本 2.1.5 QVarLengthArray:clear() 不再要求 value_type 是默认可构造的。 QFileSystemWatcher/Win:删除 QFileInfo 之前的路径 CMake:修复位置独立代码链接器标志未

2022-12-06

Spring Shell 2.1.4 和 3.0.0-M3 已发布。 Spring Shell 是基于 Spring 的交互式 Shell,可让开发者使用简单的基于 Spring 的编程模型来开发命令。 Spring Shell 3.0.0-M3 是建立在 Spring Boot 3.0.0 GA 版本之上的第一个里程碑。 Spring Shell 2.1.4 版

2022-11-03

OpenSSL 已发布 3.0.7 修复两个高危漏洞:CVE-2022-3786 和 CVE-2022-3602。官方建议 OpenSSL 3.0.x 用户应升级到 OpenSSL 3.0.7,因为这两个漏洞影响 OpenSSL 3.0.0 至 3.0.6 版本,不影响 OpenSSL 1.1.1 和 1.0.2。 OpenSSL 团队表示,目前尚未发现利用

2022-09-24

Spring Batch 5.0.0-M6 和 4.3.7 已发布。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 Spring Batch 5.0.0-M6 的

2023-01-16

Spring Shell 2.1.5 和 3.0.0-RC1 已发布。 Spring Shell 是基于 Spring 的交互式 Shell,可让开发者使用简单的基于 Spring 的编程模型来开发命令。 Spring Shell 3.0.0-RC1 是 3.0 系列的首个 RC 预览版,它基于 Spring Boot 3.0.1 构建,要求使

2023-01-26

Spring Shell 2.1.6 和 3.0.0 已发布。 Spring Shell 是基于 Spring 的交互式 Shell,可让开发者使用简单的基于 Spring 的编程模型来开发命令。 Spring Shell 3.0.0 版本使用 Spring Boot 3.0.2 ,并包含一些显着更改: 更好地处理位置参数

2023-09-18

【视频演示】Easy Retry 2.3.0 & 3.0.0发布 支持Spring Boot 等多个新功能 Easy Retry  致力提高分布式业务系统一致性的分布式重试平台 易用性 业务接入成本小。避免依赖研发人员的技术水平,保障重试的稳定性 灵活

2022-09-20

pg_activity 3.0.0 现已发布。pg_activity 是一个用于监控 PostgreSQL 服务器活动的交互式终端应用程序。具体更新内容包括: Breaking change 放弃对 Python 3.6 的支持 Attr 18.1 是必需的 Change log 向 header 添加更多信息(实例和进

2023-02-21

继腾讯 QQ 团队官方去年底发布了 QQ Linux 版 3.0.0 后,近期腾讯 QQ Linux 版 3.1.0 测试版已推出,带来了众多的新功能和体验及优化内容,另外还新增支持了龙芯 Loongarch64 架构。 更新日志如下: 1、新功能 支持多帐

2022-12-21

合性案例,助力开发人员对新兴技术的学习和掌握。 发布背景 自11月24日,Spring Boot 3.0 以及 Spring Cloud 2022.0.0、Spring Cloud Tencent 等全新版本发布,整个Java 社区也步入的 Java 17 和 Spring Boot 3 的新时代。紧跟 Java 技术和 Spring 社

2022-10-08

Spring Cloud 2022.0.0 发布了第 5 个里程碑版本。 值得关注的变化 Spring Cloud Netflix 升级到 Eureka 2.0.0-rc.3。Eureka 2.0.0 是 Eureka 的一个新分支,与 7 年前的旧 2.x-archive 分支实验无关。新的 2.x 分支是为了与 JakartaEE 兼容,这也

2022-08-04

Spring Cloud 2022.0.0-M4 现已发布,代号 Kilburn。Spring Cloud 2022.0.0-M4 与 Spring Boot 3.0.0-M4 兼容,一些值得关注的变化包括: Spring Cloud Stream 完全反应式 Kafka binder 的初始版本 通过 BiFunction 改进了对 Kafka tombstone records 录的支持 Sprin

2022-09-25

Spring Boot 3.0.0-M5 和 2.6.12 已发布。更新内容主要是功能增强、文档优化、依赖升级和错误修复。 Spring Boot 3.0.0-M5 改进 Ahead-of-Time (AOT) 处理和原生镜像支持 优化 actuator 端点清理 Jersey 支持 re-instated Release Note。 Spring Boot 2

2023-03-07

v-region v3.0.0-beta.3 版本更新内容 使用 vue3 composition api 重构 v-region 工具链从 webpack 更换为 vite 单元测试库从 mocha 更换为 vitest RegionGroupCore 与 RegionColumnsCore 核心模块增加 comp