背景
直播中经常出现绿屏的问题。
原因
因为编码使用的是 NV12 纹理。当纹理全为 0 时,对应的 rgb 为绿色。
C = Y - 16
D = U - 128
E = V - 128
R = clip((298 * C + 409 * E + 128) >> 8)
G = clip((298 * C - 100 * D - 208 * E + 128) >> 8)
B = clip((298 * C + 516 * D + 128) >> 8)
C = -16
D = -128
E = -128
R = clip((298 * -16 + 409 * -128 + 128) >> 8) = 0
G = clip((298 * -16 - 100 * -128 - 208 * -128 + 128) >> 8)
= clip((-4768 + 12800 + 26624 + 128) >> 8) ≈ clip(34784 >> 8) ≈ 136
B = clip((298 * -16 + 516 * -128 + 128) >> 8) = 0
RGB ≈ (0, 136, 0) —— 是一种绿色