Metal笔记(三)使用Metal渲染YUV420P/NV12
2022-02-04 13:10 jiayayao 阅读(618) 评论(0) 编辑 收藏 举报一、YUV格式介绍
首先,YUV格式有两大类,一类是planar,一类是packed。planar格式是先存储所有像素点的Y,然后是所有像素点的U,最后是所有像素点的V;packed格式是每个像素点的YUV连续交叉存储。
YUV三个分量中,Y表示明亮度(Luminance),表示灰度值;UV表示色度(Chrominance),表示影像色彩及饱和度,用于指定像素的颜色。
RGBA每个像素占用4个字节,最终一张图像的字节数是w*h*4;而YUV420P每个像素占用1.5个字节,一张图像的字节数是w*h*1.5,YUV三个分量的字节数之比是4:1:1。
YUV420P中的Y是每个像素一个字节,每4个像素一个U,一个V。常见的YUV420P和NV12等格式的数据分布如下图所示。
二、Metal渲染YUV
Metal在渲染时,也要根据YUV格式进行调整。
2.1 iOS定义pixel format
kCVPixelFormatType_{长度|序列}{颜色空间}{Planar|BiPlanar}{VideoRange|FullRange}
其中Planar: 平面;BiPlanar:双平面。平面/双平面主要应用在yuv上。uv分开存储的为Planar,反之是BiPlanar。所以,kCVPixelFormatType_420YpCbCr8PlanarFullRange是420p,kCVPixelFormatType_420YpCbCr8BiPlanarFullRange是nv12.
VideoRange和FullRange的区别在于数值的范围,FullRange颜色比VideoRange更丰富一些。
本文来自博客园,作者:jiayayao,邮箱:jiayayao@126.com,转载请注明原文链接:https://www.cnblogs.com/jiayayao/p/15862717.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!