</pre><pre name="code" class="html">ITU-T H.263 Stream Format:
5.1 图像层(picture layer)
[PSC][TR][PTYPE][PQUANT][CPM][PSBI][TRB][DBQUANT][PEI] {[PSUPP][PEI]} [GOBS][ESTUF][EOS][PSTUF]
1)图像层结构(无任选的PLUSHTYPE相关场)
5.1.1[PSC] [22-bit] /* 图像起始码 */
5.1.2[TR] [8-bit] /* 时域参考 */
5.1.3[PTYPE] [13-bit] /* 图像信息*/
(PTYPE&0x1000):总为1,为避免起始码仿真
(PTYPE&0x800):总为0,同ITU-T H.261区分
(PTYPE&0x400):分屏指示符,为0表示断,为1表示通
(PTYPE&0x200):文件摄像指示符,为0表示断,为1表示通
(PTYPE&0x100):全图像冻结释放,为0表示断,为1表示通
(PTYPE&0xd0):图像格式
000:禁用,001:SQCIF,010:QCIF,011:CIF,100:4CIF,101:16CIF,110:reserved 111:Extend-PTYPE(PLUSHTYPE)
(PTYPE&0x10):图像编码类型
0:I帧图像(INTRA),1:P帧图像(INTER)
(PTYPE&0x8):非受限运动矢量模式,为0表示断,为1表示通
(PTYPE&0x4):基于句法的算术编码模式,为0表示断,为1表示通
(PTYPE&0x2):预测模式,为0表示断,为1表示通
(PTYPE&0x1):PB帧模式
0:正常的I或P图像 1:PB帧
5.1.4[PQUANT] [5-bit] /* 量化器信息 值为1-31*/
5.1.5[CPM] [1-bit] /* 1比特的码字标示任选的连续出现多点和视频多路复用(CPM)的使用,为0表示断,为1表示通 */
5.1.6[PSBI] [2-bit] /* CPM为1 该值存在有效*/
if( PTYPE&0x1==1 ) next two attributes(5.1.7&5.1.8) exist;
5.1.7[TRB] [3-bit/5-bit] /* PB帧中B图像的时域参考 */
{
对标准CIF图像时钟频率它为3比特长并且当惯例图像时钟频率在使用时扩展为5比特。
}
5.1.8[DBQUANT] [2-bit] /* PB帧中B图像的量化信息 */
{
DBQUANT代码和QUANT与BQUANT间的关系
DBQUANT BQUANT
00 (5*QUANT)/4
01 (6*QUANT)/4
10 (7*QUANT)/4
11 (8*QUANT)/4
}
5.1.9/5.1.10 while(1)
{
[PEI] [1-bit] /* 额外插入信息 */
if(PEI==1){
[PSUPP] [8-bit] /* 增补的增强信息 */
}else
{break;}
}
[GOBS] [varies] /* 块组层 */
5.1.11 [ESTUF] [varies] /* 填充 */
5.1.12 [EOS] [22-bit] /* 序列结束 值:0000 0000 0000 0000 1 11111*/
5.1.13 [PSTUF] [varies] /* 填充 */
5.2 块组层(block group layer)
[GSTUF][GBSC][GN][GSBI][GFID][GQUANT][宏块数据]
5.2.1[GSTUF] [varies] /* 填充 */
5.2.2[GBSC] [17-bit] /* 块组起始码 值:0000 0000 0000 0000 1 (该处字节对齐) */
5.2.3[GN] [5-bit] /* 块组编号 */
5.2.4[GSBI] [2-bit] /* GOB子比特流指示符 */
5.2.5[GFID] [2-bit] /* GOB帧ID */
5.2.6[GQUANT] [5-bit] /* 量化信息 */
5.3 宏块层
[COD][MCBPC][MODB][CBPB][CBPY][DQUANT][MVD][MVD2][MVD3][MVD4][MVDB][块数据]
5.3.1[COD] [1-bit] /* 编码的宏块指示,0表示有进一步的该宏块数据,为1表示接下来没有该宏块数据 */
{
if( PTYPE&0x10 != 0(非关键帧/P帧) ) COD才存在;
}
5.3.2[MCBPC] [varies] /* 色度宏块类型和编码块模式 */
{
if( PTYPE&0x10==1(关键帧) || COD exist ) MCBPC exist(一定存在);
{
if( PTYPE&0x10==1/* I帧 */ )
{
:
<span style="white-space:pre"> </span>}
else if( PTYPE&0x10==0/*P帧*/ )
{
}
}
}
5.3.3[MODB] [varies] /* B块的宏块模式 */
{
if( PTYPE&0x1==1(PB帧模式) && MCBPC指示的宏块类型为0-4 ) MODB exist;
{
}
}
5.3.4[CBPB] [6-bit] /* B块的编码块模型 */
{
if( MCBPC exist ) next four(CBPY,DQUANT,MVD,MVD2-4) attributes exist;
}
5.3.5[CBPY] [varies] /* 亮度信号的编码块模型 */
{
|CBPY值表|0011|00101|00100|1001|00011|0111|000010|1011|00010|000011|0101|1010|0100|1000|0110|11|
}
5.3.6[DQUANT] [2-bit/varies] /* 量化器信息 */
{
if(修正量化模式未使用|2-bit)
|DQUANT值表|00|01|10|11|
else /* varies */
if( first bit==1 ) [DQUANT 2-bit]
else [DQUANT 6-bit]
}
5.3.7[MVD] [varies] /* 运动矢量数据 */
{
1个变长码字(取值为如下变长码字表之一)
}
5.3.8[MVD2-4] [varies] /* 运动矢量数据 */
{
3个变长码字(取值为如下变长码字表之一)
}
5.3.9[MVDB] [varies] /* B宏块的运动矢量数据 */
{
if( MCBPC set && CBPY set ) MVDB exist;
{
1个变长码字(取值为如下变长码字表之一)
}
}
变长码字表值表:
5.4 块数据
在正常模式下,宏块由4个亮度块和2个色度块组成;
在PB帧模式下,寄卖由6个P帧块和6个B帧块组成.