这个项目能做什么

libplacebo 是一个独立的 GPU 加速视频处理与渲染算法库,最初源自 mpv。它旨在通过分层 API 隐藏 GPU 编程、色彩空间、子采样和图像元数据方面的细节,同时仍允许大型应用进行底层控制。 其渲染功能包括使用 Jinc 等极性滤波器实现优化放大与缩小,以及抗锯齿、抗振铃和 gamma 校正缩放。它提供动态 HDR 色调映射,具备实时场景直方图测量、场景切换检测、曝光控制、感知色域拉伸和对比度恢复。杜比视界支持包括在使用相关依赖构建时将 Profile 5 转换为 HDR/PQ 或 SDR、读取辅助数据以及重塑。 色彩管理引擎支持软色域映射、ICC 配置文件、ITU-R BT.1886 模拟、黑点补偿和自定义 .cube 3DLUT。自定义着色器系统可以载入 GLSL 或 mpv .hook 着色器,从而使用 RAVU、FSRCNNX 和 Anime4K 等用户着色器。该库还提供 AV1 和 H.274 胶片颗粒合成、去色带、YADIF 风格去隔行,以及包括误差扩散在内的 gamma 校正抖动。 支持的图形后端包括 Vulkan 1.2(含 MoltenVK)、支持 GLSL 130 或更高版本的 OpenGL、OpenGL ES 3.0 或更高版本,以及 Direct3D 11 feature level 9_1 或更高版本。库中还导出了一个仅用于 CPU 的虚拟接口。高级辅助工具包括 pl_render_image,以及与基于 AVFrame 的媒体框架的互操作。 公共 API 按层级组织。Tier 0 提供日志、缓存、色彩空间数学、滤波器、色调映射、色域映射和抖动辅助功能。Tier 1 提供 GPU 与交换链抽象,以及 Vulkan、OpenGL、D3D11 和虚拟实现。Tier 2 公开 GLSL 生成和着色器例程,用于色彩空间转换、自定义着色器、去隔行、抖动、胶片颗粒、ICC 配置文件、LUT、采样、去色带和缩放。Tier 3 调度并缓存完整着色器,而 Tier 4 提供高级渲染器、选项框架、帧队列、纹理上传辅助工具、Dav1dPicture 互操作和 FFmpeg libav 互操作。 该项目在其 demos 和 tests 中包含 plplay 演示程序和示例。VLC 已将其用作可选的基于 Vulkan 的视频输出路径,FFmpeg 则将其用作基于 Vulkan 的视频滤镜。 libplacebo 使用 Meson 构建系统和 Ninja。递归克隆会拉入捆绑的依赖项,但大多数依赖项都是可选的。有用的可选组件包括 glslang 或 shaderc、lcms2、libdovi、带有用于代码生成的 Python Jinja2 的 Vulkan 支持、通过 glad2 实现的 OpenGL 支持,以及 xxhash。测试和基准测试目标是可配置的 Meson 选项。该库以 LGPLv2.1 或更高版本分发,README 指出针对特定用例可以考虑更宽松的 BSD2 许可证。