未经作者(微信ID:Byte-Flow)允许,禁止转载
文章首发于公众号:字节流动
前面文章已经介绍过如何渲染 16bit 灰度图,本篇基于同样的思路来实现 P010、P016 格式图像的渲染。
P010 最早是微软定义的格式,表示的是 YUV 4:2:0 的采样方式,也就是说 P010 表示的是一类 YUV 格式,它的内存排布方式可能是 NV21、NV12、YU12、YV12 。
P016 也表示的是 YUV 4:2:0 的采样方式,与 P010 的差异只是有效位不同,P010 的有效位是 10bit , P016 有效位为 16bit 。
微软定义的其他 10bit 和 16bit YUV 格式:

下面我们讨论的 P010、P016 格式的内存排布方式跟 NV21 格式类似,只是每个 Y、U、V 分量分别占用 2 个字节。
(0 ~ 3) Y00 Y01 Y0
本文介绍了如何使用OpenGL ES直接渲染P010和P016格式的YUV图像。这两种格式都是4:2:0采样,区别在于有效位数,P010为10bit,P016为16bit。文章提到,渲染过程涉及到将数据加载到纹理,并在Shader中进行yuv2rgb转换。针对Y和UV平面的数据,分别采用了不同的纹理格式和处理方式,最终实现了与原图一致的渲染效果。源码可在GitHub的NDK_OpenGLES_3_0项目中找到。
订阅专栏 解锁全文



被折叠的 条评论
为什么被折叠?



