Intel h264解碼緩存分析

一、問(wèn)題

標(biāo)準(zhǔn)GoP參考關(guān)系

當(dāng)h264流沒(méi)有b幀洽胶、幀參考關(guān)系如上圖所示時(shí),期望輸入1幀數(shù)據(jù)給解碼器后裆馒,解碼器能立即輸出解碼幀姊氓。但事實(shí)上intel解碼器會(huì)緩存若干幀后才輸出解碼幀,引起了延遲喷好。

二翔横、分析結(jié)果

由于解碼器解碼1幀后,不確定后續(xù)是否b幀梗搅、且p幀也可能亂序禾唁,因此默認(rèn)情況下intel解碼器會(huì)等到DPB(Decoded Picture Buffer)滿了才輸出解碼幀。為了降低緩存導(dǎo)致的延遲无切,需要改變編碼器參數(shù):

1荡短、將sps.pic_order_cnt_type設(shè)置為2(pic_order_cnt_type=2時(shí),顯示順序與解碼順序一致哆键,解碼器會(huì)立即輸出解碼幀)? or

2掘托、將MaxDpbSize設(shè)置為1,MaxDpbSize限制了DPB的大小

三洼哎、h264相關(guān)知識(shí)

1烫映、顯示順序與解碼順序

解碼順序由frame_num決定沼本,frame_num存在slice header中噩峦,默認(rèn)情況下frame_num=上一個(gè)參考幀的frame_num+1。

顯示順序由POC決定抽兆,有3種計(jì)算方式:

type 0识补,POC最低有效位記錄在slice header中,最靈活辫红,但是需要的數(shù)據(jù)量最大

type 1凭涂,在sps中指定參考幀與上一個(gè)參考幀的增量祝辣、非參考幀和上一個(gè)參考幀的增量,每個(gè)非參考幀可以指定Delta POC切油。POC offset(和上一個(gè)參考幀的POC的差值) = sps中指定的增量 + Delta POC蝙斜。

例子中參考幀與上一個(gè)參考幀的增量=6,非參考幀和上一個(gè)參考幀的增量=-4

type 2澎胡,POC=frame_num孕荠,顯示順序和解碼順序一樣

2、如何計(jì)算MaxDpbSize

sps.vui_parameters.max_dec_frame_buffering在H.264 Annex E中定義攻谁,為可選參數(shù)稚伍。

如果max_dec_frame_buffering參數(shù)存在,那么MaxDpbSize=max_dec_frame_buffering戚宦。

如果max_dec_frame_buffering參數(shù)不存在个曙,MaxDpbSize可以通過(guò)level和畫(huà)面大小求出,下面例子展示計(jì)算過(guò)程受楼。

不同level的MaxDpbMbs

MaxDpbSize計(jì)算公式:

MaxDpbSize =?min(floor(MaxDpbMbs / (PicWidthInMbs * FrameHeightInMbs)), 16)?

該h264流的level=4.2垦搬,對(duì)應(yīng)的MaxDpbMbs=34816

PicWidthInMbs=(pic_width_in_mbs_minus1+1)= 120

由于frame_mbs_only_flag==1,因此FrameHeightInMbs=pic_height_in_mbs_minus1+1=68

MaxDpbSize =?min(floor(34816 / (120 * 68)), 16) = 4那槽,意味著intel解碼器會(huì)緩存4個(gè)解碼后的幀悼沿。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市骚灸,隨后出現(xiàn)的幾起案子糟趾,更是在濱河造成了極大的恐慌,老刑警劉巖甚牲,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件义郑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡丈钙,警方通過(guò)查閱死者的電腦和手機(jī)非驮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)雏赦,“玉大人劫笙,你說(shuō)我怎么就攤上這事⌒歉冢” “怎么了填大?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)俏橘。 經(jīng)常有香客問(wèn)我允华,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任靴寂,我火速辦了婚禮磷蜀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘百炬。我一直安慰自己褐隆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布剖踊。 她就那樣靜靜地躺著妓灌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜜宪。 梳的紋絲不亂的頭發(fā)上虫埂,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音圃验,去河邊找鬼掉伏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛澳窑,可吹牛的內(nèi)容都是我干的斧散。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼摊聋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鸡捐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起麻裁,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤箍镜,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后煎源,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體色迂,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年手销,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了歇僧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锋拖,死狀恐怖诈悍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情兽埃,我是刑警寧澤侥钳,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站讲仰,受9級(jí)特大地震影響慕趴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鄙陡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一冕房、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧趁矾,春花似錦耙册、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蔓同,卻和暖如春饶辙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斑粱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工弃揽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人则北。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓矿微,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親尚揣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涌矢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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