1.1 一個圖像或者一個視頻序列進行壓縮,產生碼流。
對圖像的處理即是:幀內預測編碼
對視頻序列的處理:幀間預測編碼
1.2 場 、幀、圖像
場:隔行掃描的圖像,偶數行成為頂場行。奇數行成為底場行。
所有頂場行稱為頂場。所有底場行稱為底場.
幀:逐行掃描的圖像
圖像:場和幀都可認為是圖像.
1.3 宏塊、片
宏塊(MB):一個宏塊由一個16×16亮度塊、一個8×8Cb和一個8×8Cr組成
片(slice):一個圖像可以劃分成一個或多個片,一個片由一個或多個宏塊組成。
2.1 H.264碼流結構
H.264從框架結構上將NAL與VCL分離,主要有兩個目的:
其一,可以定義VCL視頻壓縮處理與NAL網絡傳輸機制的接口,這樣允許視頻編碼層VCL的設計可以在不同的處理器平臺進行移植,而與NAL層的數據封裝格式無關;
其二,VCL和NAL都被設計成工作于不同的傳輸環境,異構的網絡環境并不需要對VCL比特流進行重構和重編碼。
H264的編碼格式
h264的功能分為兩層,視頻編碼層(VCL)和網絡提取層(NAL)。H.264 的編碼視頻序列包括一系列的NAL 單元,每個NAL 單元包含一個RBSP。一個原始的H.264 NALU 單元常由 [StartCode] [NALU Header] [NALU Payload] 三部分組成,其中 Start Code 用于標示這是一個NALU 單元的開始,必須是"00 00 00 01" 或"00 00 01"。
VCL功能是進行視頻編解碼,包括運動補償預測,變換編碼和熵編碼等功能;
NAL用于采用適當的格式對VCL視頻數據進行封裝打包
1)VCL數據即被壓縮編碼后的視頻數據序列。
在VCL數據要封裝到NAL單元中之后,才可以用來傳輸或存儲。
2)NAL單元格式
NAL單元由1字節的頭,3個定長的字段和一個字節數不定的編碼段組成。
頭標的語法:NALU類型(5bit)、重要性指示位(2bit)、禁止位(1bit)。
NALU類型:1~12由H.264使用,24~31由H.264以外的應用使用。
重要性指示:標志該NAL單元用于重建時的重要性,值越大,越重要。
禁止位:網絡發現NAL單元有比特錯誤時可設置該比特為1,以便接收方丟掉該單元
Nal頭
Rbsp
Nal頭
Rbsp
Nal頭
Rbsp
(1)NAL Units:視頻數據封裝在整數字節的NALU中,它的第一個字節標志該單元中數據的類型。H.264定義了兩種封裝格式。基于包交換的網絡(如H.323系統)可以使用RTP封裝格式封裝NALU。而另外一些系統可能要求將NALU作為順序比特流傳送,為此H.264定義了一種比特流格式的傳輸機制,使用start_code_prefix將NALU封裝起來,從而確定NAL邊界。
(2)參數集:以往視頻編解碼標準中GOB\GOP\圖像等頭信息是至關重要的,包含這些信息的包的丟失常導致與這些信息相關的圖像不能解碼。為此H.264將這些很少變化并且對大量VCL NALU起作用的信息放在參數集中傳送。參數集分為兩種,即序列參數集和圖像參數集。為適應多種網絡環境,參數集可以帶內傳送,也可以采用帶外方式傳送。
序列的參數集(SPS):包括了一個圖像序列的所有信息,
圖像的參數集(PPS):包括了一個圖像所有片的信息。
NAL單元序列
NAL頭? ? ? RBSP? ? ? NAL頭? ? ? RBSP ? ? ?NAL頭? ? ? RBSP
其中RBPS又分為幾種類型:
SPS ? SEI ?PPS ?I片 圖像定界符 ?P片 P片