編碼順序 frame num和POC

2021-08-13 19:47:11 字數 1552 閱讀 8340

一、基本概念

1、編碼順序

h.264的碼流輸出順序便是編碼順序,所以在編碼b幀的時候,由於b是雙向**,需要先編碼後面編碼幀p/i,這時候先輸出i/p,後面才有b幀,我們在解碼段拿到相應的i/p幀後,不能馬上丟到buffer list裡面,還需要等待後面的b幀,解碼b幀後再reorder。

2、frame_num

每個參考幀都有乙個依次連續的frame_num 作為它們的標識,這指明了各影象的解碼順序。在非參考幀的slice header中也會出現frame_num,不過該語法元素只有在參考幀才有意義。h.264 對frame_num 的值作了如下規定: 當引數集中的句法元素gaps_in_frame_num_value_allowed_flag 不為1 時,每個影象的frame_num 值是它前乙個參考幀的frame_num 值增加1。這句話包含有兩層意思。

(1)當gaps_in_frame_num_value_allowed_flag 不為1,即frame_num 連續的情況下,每個影象的frame_num 由前乙個參考幀影象對應的值加1,著重點是「前乙個參考幀」。

(2)當gaps_in_frame_num_value_allowed_flag 等於1,這時若網路阻塞,編碼器可以將編碼後的若干影象丟棄,而不用另行通知解碼器。在這種情況下,解碼器必須有機制將缺失的frame_num 及所對應的影象填補,否則後續影象若將運動向量指向缺失的影象將會產生解碼錯誤。

frame_num 是迴圈計數的,即當它到達maxframenum 後又從0 重新開始新一輪的計數。解碼器必須要有機制檢測這種迴圈,

3、poc

(1)使用時間直接**模式的運動向量推算時;

(2)b片中使用固有模式加權**時;

(3)解碼器一致性檢測時。

poc和frame_num之間存在一定的對映關係,當pic_order_cnt的值為1或者2的時候,可以通過frame_num來獲得poc。

二、簡單的例子

說明:1、影象順序和編碼順序不是對應的關係,比如影象順序為4的p幀,是影象順序為1和2的參考幀,雖然在這兩個幀之後,但是需要在他們在前進行編碼。

2、frame_num按照編碼的順序從0遞增,當達到最大值3後,從0重新開始遞增。每個影象的frame_num為它前乙個參考影象的frame_num + 1。比如:

(1)第4個影象,雖然在第1和2個影象之後,但是它前面的參考影象是第0個影象,因此,其frame_num的值為0 + 1 = 1;

(2)第1和2個影象雖然在第4個影象之後,但是,在編碼順序上,第4個影象在他們之前且是參考幀,因此他們的frame_num的值為1 + 1 = 2。

3、poc標識影象的顯示順序,因此遞增的順序和影象順序是一致的,不過有其自己的迴圈,當達到最大值時,重新開始遞增。poc是針對場而言的,因此每個影象都會包括頂場順序號和底場順序號。表1和表2中只給出了每個影象中乙個場的編號。

from: 

PO和PM的區別

po是product owner,是乙個role,負責與stakeholders打交道,提煉stakeholders的需求,按照需求的價值以及緊急程度安排優先順序。po是乙個角色,對product backlog負責,通俗地講,product backlog上的條條目目應該長什麼樣子,po都有乙個清...

IPB幀 編碼順序 解碼順序 顯示順序

p frame 前向 編碼幀 又稱predictive frame,通過充分將低於影象序列中前面已編碼幀的時間冗餘資訊來壓縮傳輸資料量的編碼影象,也叫 幀 b frame 雙向 內插編碼幀 又稱bi directional interpolated prediction frame,既考慮與源影象序...

IPB幀編碼順序(解碼順序)與顯示順序

通常,更換場景後的第一幀就是i幀,i幀應當全幀傳送。從壓縮的程度來看,i畫面的壓縮量最少 p畫面次之,它是以i畫面為基礎 b畫面壓縮最多。為了加大壓縮比,通常在i幀後面相隔2幀 最多3幀 設定1個p幀,在i p幀之間都是b幀,在兩個p幀之間也是設定2 3幀b幀。b幀傳送它與i幀或p幀之間的差值資訊,...