說好的這次講像素格式

參考:https://ffmpeg.org/doxygen/4.0/pixfmt_8h.html#a9a8e335cf3be472042bc9f0cf80cd4c5
這回先把參考地址放出來。因?yàn)樘嗔耍圆灰灰毁樖?。只說一些關(guān)鍵點(diǎn)。具體的像素格式網(wǎng)上遍地是??梢宰约翰?。

這次題目的由來?

可以看到里面有色彩空間一項(xiàng)。然而色彩空間確實(shí)不是很準(zhǔn)確。先看看色彩空間是個(gè)啥

由于計(jì)算機(jī)是采樣,所以存下來的數(shù)據(jù)并不能完全表示真正的色彩。色彩空間和像素格式有一定關(guān)系,像素格式+位深度可以表現(xiàn)的色彩區(qū)域,一般才被稱之為色彩空間。但就yuv420并不能表示。
YUV420 其實(shí)就有很多子門類。但是真正影響色彩空間的是 420 還是 444 或者422 + 位深度
舉幾個(gè)YUV420的例子
AV_PIX_FMT_YUV420P?
AV_PIX_FMT_YUVJ420P?
AV_PIX_FMT_YUV420P16LE?
等等

然后講個(gè)故事。
有個(gè)視頻。有好多好多員工。每三員工都負(fù)責(zé)屏幕上的像素點(diǎn)。
此時(shí)。老板覺得,可以做人員優(yōu)化。
就把員工從RGB三個(gè)部門 重新分成了三個(gè)部門 Y部門 U部門 V部門。
仍然是 Y部門一個(gè)人 U部門一個(gè)人 V部門一個(gè)人負(fù)責(zé)一個(gè)像素點(diǎn)。(YUV444)

然后老板發(fā)現(xiàn),U和V的工作不那么關(guān)鍵。就把U和V進(jìn)行裁員。裁員目標(biāo)是這倆部門各裁員 50%
剩下UV 各負(fù)責(zé)兩個(gè)像素點(diǎn)。
于是就變成了這樣:

后來老板又覺得 可以再砍一半。。于是UV部門一個(gè)人要負(fù)責(zé)4個(gè)像素點(diǎn),于是變成這樣:

這是網(wǎng)上我認(rèn)為采樣講的比較清楚的圖。白圈是UV。黑圈是Y??梢钥匆幌?/p>
那p又是咋回事??存儲(chǔ)格式。
有一天公司開大會(huì)。老板要求同一部門的同事坐在一起。于是。重新排了一下這幫員工的座位:

然后他們的座次表如圖所示。就變成了了最常用的yuv420p
那位深度又是咋回事
老板說:我們雖然減員了。但是我們要增效。。隨后每個(gè)YUV員工。本來手頭只有8個(gè)項(xiàng)目要搞(位深度 8) 變成了10個(gè)項(xiàng)目(位深度10)然后變成了16個(gè)(位深度16)
AV_PIX_FMT_YUV420P16LE? 就誕生了
LE又是啥?
數(shù)據(jù)具體的格式?little-endian 或者 big-endian
這公司本來沒那么多活兒的時(shí)候?qū)儆诠芾??;疃嗔司鸵肓薕KR或者KPI。也就是little-endian 或者 big-endian了。

不知道講明白了沒有。
至于解碼和展現(xiàn)代碼,可以參考我之前在字節(jié)寫得WebGL代碼:
https://github.com/bytedance/xgplayer/tree/live-mobile/packages/xgplayer-render/src/fmt

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