说好的这次讲像素格式

参考:https://ffmpeg.org/doxygen/4.0/pixfmt_8h.html#a9a8e335cf3be472042bc9f0cf80cd4c5
这回先把参考地址放出来。因为太多了,所以不一一赘述。只说一些关键点。具体的像素格式网上遍地是。可以自己查。

这次题目的由来

可以看到里面有色彩空间一项。然而色彩空间确实不是很准确。先看看色彩空间是个啥

由于计算机是采样,所以存下来的数据并不能完全表示真正的色彩。色彩空间和像素格式有一定关系,像素格式+位深度可以表现的色彩区域,一般才被称之为色彩空间。但就yuv420并不能表示。
YUV420 其实就有很多子门类。但是真正影响色彩空间的是 420 还是 444 或者422 + 位深度
举几个YUV420的例子
AV_PIX_FMT_YUV420P
AV_PIX_FMT_YUVJ420P
AV_PIX_FMT_YUV420P16LE
等等

然后讲个故事。
有个视频。有好多好多员工。每三员工都负责屏幕上的像素点。
此时。老板觉得,可以做人员优化。
就把员工从RGB三个部门 重新分成了三个部门 Y部门 U部门 V部门。
仍然是 Y部门一个人 U部门一个人 V部门一个人负责一个像素点。(YUV444)

然后老板发现,U和V的工作不那么关键。就把U和V进行裁员。裁员目标是这俩部门各裁员 50%
剩下UV 各负责两个像素点。
于是就变成了这样:

后来老板又觉得 可以再砍一半。。于是UV部门一个人要负责4个像素点,于是变成这样:

这是网上我认为采样讲的比较清楚的图。白圈是UV。黑圈是Y。可以看一下

那p又是咋回事??存储格式。
有一天公司开大会。老板要求同一部门的同事坐在一起。于是。重新排了一下这帮员工的座位:

然后他们的座次表如图所示。就变成了了最常用的yuv420p
那位深度又是咋回事
老板说:我们虽然减员了。但是我们要增效。。随后每个YUV员工。本来手头只有8个项目要搞(位深度 8) 变成了10个项目(位深度10)然后变成了16个(位深度16)
AV_PIX_FMT_YUV420P16LE 就诞生了
LE又是啥?
数据具体的格式 little-endian 或者 big-endian
这公司本来没那么多活儿的时候属于管理。活多了就引入了OKR或者KPI。也就是little-endian 或者 big-endian了。

不知道讲明白了没有。
至于解码和展现代码,可以参考我之前在字节写得WebGL代码:
https://github.com/bytedance/xgplayer/tree/live-mobile/packages/xgplayer-render/src/fmt

交流群:711929228
本期问题:yuv420p指的是啥?
答案:像素格式。