IDR、CRA、BLA、RASL、RADL、closed-gop、open-gop
相對于H.264編碼的每個GOP是相互獨立的,GOP切換用I幀,幀間搜索不再參考前一個GOP。而HEVC切換則可以“軟切換”。
?BLA、CRA、IDR是文獻中提到過的三種隨機接入點(RAP),在文獻中的解釋的確不是很容易理解。
?(1)關于GOP。這是圖像組(Group of Pictures)的意思,表示編碼的視頻序列分成了一組一組的有序的幀的集合進行編碼。每個GOP一定是以一個I幀開始的,但是卻不一定指代的是兩個I幀之間的距離。因為一個GOP內可能包含幾個I幀,只有第一個I幀(也就是第一幀)才是關鍵幀。在程序cfg中,GOP的長度和兩個I幀的距離也是兩個不同參數指定的(如IntraPeriod和GOP Size或者類似的參數)。所以,兩個I幀的間距不可能大于GOP的長度,一般情況是更小的。
?
(2)關于IDR。這個詞兒的全稱是Instantaneous Decoding Refresh,是在H.264中定義的結構。在H.264中,IDR幀一定是I幀,而且一定是GOP的開始,也是H.264 GOP的關鍵幀。但是反過來卻不成立,I幀不一定是IDR幀。GOP的長度不是定死不變的,在H.264的編碼器中,如果判定場景發生變化,那么及時不到原定GOP的末尾,也會在這個位置加入一個IDR,作為新一個GOP的開始。此時這個GOP的長度就被縮小了。
?
(3)閉合GOP和開放GOP(closed GOP/open GOP),CRA。閉合GOP是H.264中GOP的格式。在H.264的GOP中,所有的GOP都是獨立解碼的,與其他GOP無關,即它們都是“封閉”的。但是在HEVC中,GOP的結構發生了變化,采用了“開放”的結構,在解碼過程過可能會參考其他GOP的數據。這時,一個GOP的起始幀命名為CRA, clean random access,同樣采用幀內編碼,但是這個GOP內的幀間編碼幀可以越過CRA參考前一個GOP的數據,這便是GOP的open。
?
(4)關于BLA。BLA只是CRA在視頻流切換情況下的一種特例。視頻流在某個RAP上要求切換到另一個視頻流繼續解碼,則直接將該CRA同另一個視頻流中的接入CRA連接,后者便是BLA。由于BLA之前解碼到緩存的視頻流與當前視頻流無關,因此其特性類似于直接從該點進行隨機存取后的CRA。
?
(5)RASL和RADL。這是兩種GOP間的圖像類型。如果解碼器從某個CRA隨機接入,則按照顯示順序的后面幾幀數據由于缺少參考幀而不能解碼,這些圖像將被解碼器拋棄,即skip leading。而對于沒有從當前CRA接入的數據,這些圖像可以被正常解碼顯示,因此稱為decodable leading。由于這些數據是有可能舍棄的,因此其他圖像(trailing pictures)不能參考這些數據,否則萬一這些圖像被舍棄,將會有更多的圖像受其影響而不能正常解碼。
?
另外:談一談我的理解。之所以引入CRA是因為它可以比IDR提高更好的壓縮效率,因為CRA是open GOP,open GOP structure usually provides better coding efficiency and peak-less bit-rate. 那么CRA引入之后遺留的 問題,就是解碼器一旦從CRA接入(比如快進快退?),那些CRA之后的要從previous GOP尋找參考圖像的幀怎么辦?只能丟棄,這些幀就是RASL幀(skip leading)了。那如果不是從CRA接入(即我沒快進快退而是正常解碼),這些幀又是可解碼的(decodable
leading),也就變成RADL幀了。還有一個問題,就是當前GOP剩下的幀(trailing pictures)怎么辦呢?它們一定不能用RASL幀做參考幀,因為這些幀可能被丟棄(從CRA接入時)。什么是BLA?應該是視頻流切換情況下另一個流的CRA吧!
總結
以上是生活随笔為你收集整理的IDR、CRA、BLA、RASL、RADL、closed-gop、open-gop的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不锈钢水槽价格贵吗不锈钢水槽价格多少
- 下一篇: Android设计模式之——迭代器模式