h263 rtp協議封裝協議英文版:rfc4629:http://tools.ietf.org/html/rfc4629
以下文章是部分參考翻譯:
文章出處: http://blog.csdn.net/zblue78/archive/2009/04/09/4059414.aspx
General H.263 Payload Header
The H.263 payload header is structured as follows:
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- - - - - - - - - - - - - - - -
| RR |P|V| PLEN |PEBIT|
- - - - - - - - - - - - - - - -
RR: 5 bits
Reserved bits. It SHALL be zero and MUST be ignored by receivers.
P: 1 bit
Indicates the picture start or a picture segment (GOB/Slice) start
or a video sequence end (EOS or EOSBS). Two bytes of zero bits
then have to be prefixed to the payload of such a packet to
compose a complete picture/GOB/slice/EOS/EOSBS start code. This
bit allows the omission of the two first bytes of the start codes,
thus improving the compression ratio.
V: 1 bit
Indicates the presence of an 8-bit field containing information
for Video Redundancy Coding (VRC), which follows immediately after
the initial 16 bits of the payload header, if present. For syntax
and semantics of that 8-bit VRC field, see Section 5.2.
PLEN: 6 bits
Length, in bytes, of the extra picture header. If no extra
picture header is attached, PLEN is 0. If PLEN>0, the extra
picture header is attached immediately following the rest of the
payload header. Note that the length reflects the omission of the
first two bytes of the picture start code (PSC). See Section 6.1.
PEBIT: 3 bits
Indicates the number of bits that shall be ignored in the last
byte of the picture header. If PLEN is not zero, the ignored bits
shall be the least significant bits of the byte. If PLEN is zero,
then PEBIT shall also be zero.
H.263是國際電聯ITU-T的一個標準草案,是為低碼流通信而設計的。但實際上這個標準可用在很寬的碼流范圍,而非只用于低碼流應用,它在許多應用中可以認為被用于取代H.261。H.263的編碼算法與H.261一樣,但做了一些改善和改變,以提高性能和糾錯能力。.263標準在低碼率下能夠提供比H.261更好的圖像效果,兩者的區別有:(1)H.263的運動補償使用半象素精度,而H.261則用全象素精度和循環濾波;(2)數據流層次結構的某些部分在H.263中是可選的,使得編解碼可以配置成更低的數據率或更好的糾錯能力;(3)H.263包含四個可協商的選項以改善性能; (4)H.263采用無限制的運動向量以及基于語法的算術編碼;(5)采用事先預測和與MPEG中的P-B幀一樣的幀預測方法;(6)H.263支持5種分辨率,即除了支持H.261中所支持的QCIF和CIF外,還支持SQCIF、4CIF和16CIF,SQCIF相當于QCIF一半的分辨率,而 4CIF和16CIF分別為CIF的4倍和16倍。
??
??? 1998年IUT-T推出的H.263+是H.263建議的第2版,它提供了12個新的可協商模式和其他特征,進一步提高了壓縮編碼性能。如H.263只有5種視頻源格式,H.263+允許使用更多的源格式,圖像時鐘頻率也有多種選擇,拓寬應用范圍;另一重要的改進是可擴展性,它允許多顯示率、多速率及多分辨率,增強了視頻信息在易誤碼、易丟包異構網絡環境下的傳輸。另外,H.263+對H.263中的不受限運動矢量模式進行了改進,加上12個新增的可選模式,不僅提高了編碼性能,而且增強了應用的靈活性。H.263已經基本上取代了H.261。
? H.263 由 ITU 定義,支持用于視頻會議和視頻電話應用程序的視頻壓縮(解碼)。 H.263 基于 H.261 編碼,并且為在最低帶寬為 20K 到 24K bit/sec 上傳輸的視頻流而開發。作為一種一般規則, H.263 只需 H.261 一半的帶寬即可達到與 H.261 相同的視頻質量,所以在很大程度上 H.263 取代了 H.261 。 H.263 使用 RTP 傳輸視頻流。
協議結構
H.263 有效載荷頭定義了三種格式(模式 A、模式 B 和模式 C)。在模式 A 中,在實際壓縮 H.263 視頻比特流之前存在4字節的 H.263 有效載荷頭。這樣允許在 GOB 邊界有分段。在模式 B 中,使用的是8字節的 H.263 有效載荷頭,且每個數據包從MB 邊界開始,沒有 PB 幀選項。最后,模式 C 中使用的是12字節的 H.263 有效載荷頭,采用 PB 幀選項支持在 MB 邊界的幀分段。
模式 A 中的頭格式如下所示:
?
??? 0?????????????????? 1?????????????????? 2?????????????????? 3
??? 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
?? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?? |F|P|SBIT |EBIT | SRC |I|U|S|A|R????? |DBQ| TRB |??? TR???????? |
?? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F ― 標志位,表示有效載荷頭的模式,具有以下幾個值:
0 ― 模式 A;
1 ― 模式 B 或模式 C,取決于 P 位。
P ― P 指定可選的 PB 幀模式。
SBIT ― 起始位,指定最重要位(在第一個數據字節中忽略)的編號。
EBIT ― 結束位,指定最不重要位(在最后一個數據字節中忽略)的編號。
SRC ― 源格式(在 H.263 標準中 PTYPE 的位6、7和8壓縮比特流)表示當前圖片解析。
I ― 圖片編碼類型(在 H.263 標準中 PTYPE 的位9壓縮比特流)。
U ― 在當前圖片頭中,如果無限制運動向量選項值為1,那么該值設置為1(在 H.263 標準中 PTYPE 的位10壓縮比特流),否則
該值為0。
S ― 在當前圖片頭中,如果基于語法的算法編碼選項值為1,那么該值設置為1(在 H.263 標準中 PTYPE 的位11壓縮比特流),
否則該值為0。
A ― 在當前圖片頭中,如果高級預測選項值為1,那么該值設置為1(在 H.263 標準中 PTYPE 的位12壓縮比特流),否則該值為
0。
R ― 預留,值為0。
DBQ ― 用于計算量化值的差分量化參數,當使用 PB 幀選項時,B 幀的量化值基于 P 幀的量化值。該值需要與 H.263 標準壓縮
比特流中的 DBQUANT 相同。如果不是采用的 PB 幀選項,則該值為0。
TRB ― 該字段是作為 H.263 標準壓縮比特流中 B 幀的暫時參考。如果不是采用的 PB 幀選項,則該值為0。
TR ― 該字段是作為 H.263 標準壓縮比特流中 P 幀的暫時參考。如果不是采用的 PB 幀選項,則該值為0。
模式 B 中的頭格式如下所示:
??? 0?????????????????? 1?????????????????? 2?????????????????? 3
??? 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
?? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?? |F|P|SBIT |EBIT | SRC | QUANT?? |? GOBN?? |?? MBA?????????? |R? |
?? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?? |I|U|S|A| HMV1??????? | VMV1??????? | HMV2??????? | VMV2??????? |
?? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
關于 F、P、SBIT、EBIT、SRC、I、U、S 和 A 各定義請參照模式 A。
?
QUANT ― 在數據包起始進行編碼的第一個 MB 的量化值。如果數據包以 GOB 頭開始,那么該值設置為0。
GOBN ― 數據包起始處的 GOB 編號。不同的解析中 GOB 編號不同。
MBA ― 數據包中第一個 MB 的 GOB 內的地址,按照掃描順序從0開始計數。例如任意 GOB 中的第三個 MB 設置為 MBA = 2。
R ― 預留,值為0。
HMV1、VMV1 ― 為數據包中的第一個 MB 設置的水平和垂直運動向量預測。如果有某四個運動向量能為當前 MB 提供高級預測選項功能時,那么這些向量就是 MB 中的1號塊的運動向量預測。
HMV2、 VMV2 ― 為數據包中第一個 MB 的3號塊提供的水平和垂直運動向量預測。如果有某四個運動向量能為當前 MB 提供高級預測選項功能時,需要該字段,這是因為 MB 中的3號塊需要不同于 MB 中其它塊的運動向量預測。當 MB 只具有一個運動向量時,不需要使用這兩個字段。
模式 C 中的頭格式如下所示:?
??? 0?????????????????? 1?????????????????? 2?????????????????? 3
??? 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
?? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?? |F|P|SBIT |EBIT | SRC | QUANT?? |? GOBN?? |?? MBA?????????? |R? |
?? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?? |I|U|S|A| HMV1??????? | VMV1??????? | HMV2??????? | VMV2??????? |
?? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?? | RR????????????????????????????????? |DBQ| TRB |??? TR???????? |
?? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?關于 F、P、SBIT、EBIT、SRC、I、U、S、A、DBQ、TRB 和 TR 各定義請參照模式 A。
?關于 QUANT、GOBN、MBA、HMV1、VMV1、HMV2 和 VNV2 各定義請參照模式 B。