YUV420格式學習

最初在項目中做實時視頻流的時候,采用的方案是蝶防,設置Camera Preview格式是NV21偎箫,最終MediaCodec需要的格式是I420,由于之前對YUV一無所知缰雇,所以一些旋轉(zhuǎn)算法也是在網(wǎng)上淘的入偷,導致有部分是在NV21的時候進行旋轉(zhuǎn),有部分則是在I420的時候進行旋轉(zhuǎn)寓涨,最終還是實現(xiàn)了功能盯串。

最近時間比較多氯檐,也要在視頻流上增加水印戒良,決定對這部分性能進行優(yōu)化,所以著重學習了解了一下YUV格式冠摄。

在Android文檔糯崎,Camera里面有這樣一句話

If this is never called, the default format will beNV21, which uses the NV21 encoding format.

UsegetSupportedPreviewFormats()to get a list of the available preview formats.

It is strongly recommended that eitherNV21orYV12is used, since they are supported by all camera devices.

在Camera中推薦使用NV21和YV12,因為這兩種格式支持所有的相機設備河泳。

但是在Camera2中沃呢,推薦使用的格式則是YUV_420_888。

總的來說拆挥,在Android里面YUV用得比較多的應該是I420, YV12, NV12和NV21薄霜,其中I420和YV12都是Y420P某抓,NV12和NV21都是Y420SP。

這幾種格式相同點和區(qū)別呢可以這樣看:

YUV420SP格式

YUV420SP:圖中Y1,Y2,Y9,Y10共用一對UV:U1和V1

YUV420P格式

YUV420P:圖中Y1,Y2,Y9,Y10共用一對UV:U1和V1

I420: YYYYYYYY UU VV? ? =>YUV420P

YV12: YYYYYYYY VV UU? ? =>YUV420P

NV12: YYYYYYYY UVUV? ?? =>YUV420SP

NV21: YYYYYYYY VUVU? ?? =>YUV420SP

他們的共同點是一個Y代表一個像素點惰瓜,Y的大小就等于width * height否副,由于它們都說420格式,所以UV總長位width * height / 2崎坊,其中U和V各占一般長度备禀。所以在代碼中新建一個byte[]的時候長度為 width * height * 3 / 2。

YV12:

YV12 is a 4:2:0 YCrCb planar format comprised of a WxH Y plane followed by (W/2) x (H/2) Cr and Cb planes.

所以我針對之前項目的改進方案就是奈揍,預覽輸出使用YV12格式曲尸,通過轉(zhuǎn)換和旋轉(zhuǎn)轉(zhuǎn)成I420格式。

因為YV12和I420的結(jié)構(gòu)很相似男翰,只需要調(diào)換UV分量的位置即可另患,更方便在同一個循環(huán)中同時進行旋轉(zhuǎn)和轉(zhuǎn)換,相比之前的方案旋轉(zhuǎn)和轉(zhuǎn)換是兩個循環(huán)蛾绎,這樣效率更高柴淘。

最終實測,各個方向分別統(tǒng)計了幾百幀的數(shù)據(jù)求算術平均值秘通,YV12->I420比NV21->I420的旋轉(zhuǎn)+轉(zhuǎn)換为严,每幀少花3ms左右,不管各位看管覺得怎么樣肺稀,對我來說是個不錯的鼓舞第股。

我的YV12轉(zhuǎn)NV21的代碼,雖然是Java層的话原,速度還不錯夕吻,每幀耗時小于1ms

下一步優(yōu)化的目標就是把耗時算法放到JNI層去做。

參考:blog.csdn.net/jefry_xdz/article/details/7931018

www.cnblogs.com/samaritan/p/YUV.html

作者:黃河遠去樓依在

鏈接:http://www.reibang.com/p/102b8b0797b7

來源:簡書

著作權歸作者所有繁仁。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權涉馅,非商業(yè)轉(zhuǎn)載請注明出處。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末黄虱,一起剝皮案震驚了整個濱河市稚矿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捻浦,老刑警劉巖晤揣,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異朱灿,居然都是意外死亡昧识,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門盗扒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跪楞,“玉大人缀去,你說我怎么就攤上這事〉榧溃” “怎么了朵耕?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長淋叶。 經(jīng)常有香客問我阎曹,道長,這世上最難降的妖魔是什么煞檩? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任处嫌,我火速辦了婚禮,結(jié)果婚禮上斟湃,老公的妹妹穿的比我還像新娘熏迹。我一直安慰自己,他們只是感情好凝赛,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布注暗。 她就那樣靜靜地躺著,像睡著了一般墓猎。 火紅的嫁衣襯著肌膚如雪捆昏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天毙沾,我揣著相機與錄音骗卜,去河邊找鬼。 笑死左胞,一個胖子當著我的面吹牛寇仓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烤宙,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼遍烦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了躺枕?” 一聲冷哼從身側(cè)響起服猪,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屯远,沒想到半個月后蔓姚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡慨丐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泄私。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片房揭。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡备闲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捅暴,到底是詐尸還是另有隱情恬砂,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布蓬痒,位于F島的核電站泻骤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏梧奢。R本人自食惡果不足惜狱掂,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亲轨。 院中可真熱鬧趋惨,春花似錦、人聲如沸惦蚊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹦锋。三九已至兆沙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間莉掂,已是汗流浹背挤悉。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留巫湘,地道東北人装悲。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像尚氛,于是被迫代替她去往敵國和親诀诊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容