H264編碼器11( H.264 探索 第二部分 H264碼流格式)
來自:https://segmentfault.com/a/1190000006698552
表1中描述了所有可能的資料包型別。
Type | Definition |
---|---|
0 | Undefined |
1 | Slice layer without partitioning non IDR |
2 | Slice data partition A layer |
3 | Slice data partition B layer |
4 | Slice data partition C layer |
5 | Slice layer without partitioning IDR |
6 | Additional information (SEI) |
7 | Sequence parameter set |
8 | Picture parameter set |
9 | Access unit delimiter |
10 | End of sequence |
11 | End of stream |
12 | Filler data |
13..23 | Reserved |
24..31 | Undefined |
NAL型別定義了當前NAL-packet資料結構。它可以是slice,parameter set,filler等等。
如從圖中可以看出, NAL-packet的有效載荷被定義為RBSP(Raw Byte Sequence Payload)。
RBSP描述了一行被定義為SODB(String Of Data Bits)的位元組集。所以RBSP包含SODB。
根據ITU-T規範,如果SODB為空(0位元長度),RBSP也為空。
RBSP的第一位元組(最顯著,最左邊)包含八位SODB; RBSP的下一個位元組應該也包括以下八個SODB等等,直到有少於8位SODB。接著是一個停止位和均衡位(如下圖)
任何已編碼圖片都包含slice(切片),slice包含macroblocks(巨集塊)。大多數情況下,一個已編碼影象對應於一個切片。此外,一個影象可以有多個切片。所述切片被分為以下型別:
Type | Description |
---|---|
0 | P-slice. Consists of P-macroblocks (each macro block is predicted using one reference frame) and / or I-macroblocks. |
1 | B-slice. Consists of B-macroblocks (each macroblock is predicted using one or two reference frames) and / or I-macroblocks. |
2 | I-slice. Contains only I-macroblocks. Each macroblock is predicted from previously coded blocks of the same slice. |
3 | SP-slice. Consists of P and / or I-macroblocks and lets you switch between encoded streams. |
4 | SI-slice. It consists of a special type of SI-macroblocks and lets you switch between encoded streams. |
5 | P-slice. |
6 | B-slice. |
7 | I-slice. |
8 | SP-slice. |
9 | SI-slice. |
看起來像上表包含了一些冗餘資料,但事實並非如此:
型別5 - 9意味著當前影象的所有其他切片將是同一型別。正如你所看到的每個切片都由header和data組成。切片頭包含了關於切片型別,切片巨集塊的型別,切片幀的數量的資訊。當然切片頭也包含了參照幀的設定(the reference frame settings)和量化引數(quantification parameters)的資訊。最好,我們來檢視切片data,這是儲存畫素資料的地方。巨集塊是資訊的主要載體,因為它們包含將對應於單個畫素的亮度和色度分量的集合。無需進入細節可以得出結論,不考慮細節可以得出的結論是,視訊解碼最終可以簡化為從位元流中對巨集塊的搜尋和提取,以及後續藉助亮度和色度分量對畫素顏色的恢復。巨集塊組成如下圖:
在這裡,我們有巨集塊型別,預測型別(這是下一文章的主題),編碼塊模式(Coded Block Pattern),量化引數(Quantization Parameter )(如果我們有CPB),最後資料(data):亮度和色度分量的集合。