【发布时间】:2021-06-28 21:45:55
【问题描述】:
我有一个自定义 Metal Core Image 内核(使用 CIImageProcessorKernel 编写),我正在尝试使其与 HDR 视频(HDR10 PQ 开始)正常工作。
我了解对于 HDR 视频,进入着色器的 rgb 值可能低于 0.0 或高于 1.0。但是,我不明白视频中的 10 位整数值(即 0-1023)是如何映射到浮点数的。
浮点的最小值和最大值是多少? IE。 1023(纯白色)像素在着色器中的浮点数会是什么。
在 WWDC20 session 10009, 11:32 使用 AVFoundation 编辑和播放 HDR 视频,有一个 Core Image Metal 内核的示例,它不支持 HDR,因此无法工作。它通过从 1.0 中减去它们来反转输入的值,当 1.0 不是最大可能值时,这显然会崩溃。这应该如何实现以支持 HDR?
extern “C” float4 ColorInverter(coreimage::sample_t s, coreimage::destination dest) {
return float4(1.0 - s.r, 1.0 - s.g, 1.0 - s.b, 1.0);
}
【问题讨论】:
标签: ios video-processing metal core-image hdr