ITU-T H.263是H.261的升级版,提供了更高的视频质量和更低的码率。
视频编码器提供了自包含数字比特流,它们融合了其它信号(如H.223)。视频解码器执行相反的处理。H.263的基本规范是处理YCbCr视频数据,如表10.9所示。它也可能处理一个普通图像的尺寸。4:2:0YCbCr采样如图3.7所示。
H.263版本2(正式叫做H.263+),现在支持7种类型的帧(或图像),前两个强制性的(baseline H.263):
帧内或I帧:一个没有参考预测的帧。
帧间或P帧:一个基于前面的帧。
PB帧和改进的PB帧:一帧表示成两帧,基于前面的帧。
B帧:一个基于两个参考帧的帧,一个是前面的,一个是后面的。
EI帧:时间上有一同步帧的帧,同步帧有相同或更小的尺寸。
EP帧:一个有两个参考帧的帧,一个是前面的,一个是同步的。
一个典型的编码框图如图10.8所示。它的基本功能是预测,块变换和量化。
预测误差(间模式)或输入图像(内模式)被分解成8采样点×8行的块,分段成发送或非发送。4个亮度块和2个空间相关的色彩块组合成一个16采样点×16行的宏块,如图10.9所示。
模式和传输块的准则没有被推荐,作为编码策略的一部分可以动态变化。传输块被变换以及由此产生的量化系数和可变长编码。
图10.8典型H.263 Baseline编码器
图10.9 H.263的组块,宏块和块的排列
预测是图片之间的,可能包括运动补偿。使用预测的编码模式叫做帧间,没有使用预测的编码模式叫做帧内。
帧内编码信号位于图像层(I帧是帧内,P帧是帧间)或P帧内的宏块层。在可选的PB帧模式中,B帧通常使用帧间模式。
运动补偿在编码器中是可选的。解码器必须支持接受每个宏块(在可选的高级预测或区块滤波器 模式中,每个宏块1个或4个运动向量)一个运动向量。
在可选的PB帧模式,么个宏块可能有一个额外的向量。在可选的改进型PB帧模式中,每个宏块可以包括一个额外的前向运动矢量。在可选的B帧模式中,宏块可以传送同时包括一个前向和一个后向的运动矢量。
对于baseline的H.263,运动向量是受限的——所有以它们参考的采样点必须包含在解码的图像区域中。许多可选模型删除了这个限制。水平和垂直分量的运动向量有一个整数或半整数的值,不超过-16~15.5。一些可选模式增加范围到[-31.5,31.5]或[-31.5,31.5]。
运动向量的一个正的水平和垂直分量值指示从前一图像样本点形成的预测是空间上向右或向下的样本点被预测。然而,对于B帧中的后向运动向量,一个正的水平或垂直分量的运动向量值指示预测由下一帧的空间上左或向上的采样点的预测。
第一个帧内系数的量化数是1,其它的所有系数都是31。在一个宏块内部,除了第一个帧内块之外,所有的系数都是用相同的量化。第一个帧内系数通常使用一个步长为8没有死区的线性量化DC变换值。其它31个量化也是线性的,但是在0的周围有一个中央死区,一个范围2~62的偶数补偿。
虽然不是H.263的一部分,但是几个参数可能多用于控制编码的视频数据速率。这些包括预编码处理,量化,块意义准则,时间欠采样。
这是通过强制使用帧内模式的编码算法实现的。为了控制逆变换不匹配误差的叠加,一个宏块应该在它每传送132次至少被强制更新。
参数 |
16CIF |
4CIF |
CIF |
QCIF |
SQCIF |
有效分辨率(Y) |
1408×1152 |
704×576 |
352×288 |
176×144 |
128×96 |
帧刷新率 |
29.97Hz |
||||
YCbCr采样结构 |
4:2:0 |
||||
YCbCr编码模式 |
PCM均匀量化,每采样点8位 |
表10.9 H.263 Baseline YCbCr参数
除非另外指定,最高比特被首先传送。这是第1位,在编码表中的最左端位。除非另有规定,所有未使用或空闲位被设置成“1”。
视频比特流是一个4层的层次化结构。由高到底的层次是:
图像
组块(GOB),即分片
宏块(MB)
块
每个图像数据包括一个图像头,跟随其后的组块(GOBs),接下来是一个序列结束(EOS)和填充位(PSTUF)。Baseline的结构如图10.10所示。删除图像的图像头不传送。
图像开始码(PSC)
PCS是一个22-比特的字,值是0000 0000 0000 0000 1 00000。它必须是字节对齐的;所以0~7个0比特被加在开始码的前面以保证开始码的第一个比特在最前,是一个字节的最高有效位。
时间参考(TR)
TR是一个8-比特的二进制数,表示256个可能值。它是由前面传送的图片的图片头的值加1得到,自上次传输的一个非传送图片29.97Hz图片增加数。算术仅处理最低8位。
如果一个用户图像的时钟频率(PCF)被指定,扩展TR(ETR)和TR形式是10-比特数字,TR存储8个最低位,ETR存储2个最高位。算术仅处理最低10位。
在PB帧和改进PB帧模式中,TR仅处理P帧。
图10.10 Baseline H.263比特流层次结构
(图像层中没有可选的PLUSPTYPE字段)
类型信息(PTYPE)
图像的13位信息是:
位1 “1”
位2 “0”
位3 画面分割指标:“0”= 关毕,“1”= 开启
位4 摄像机文件指标:“0”= 关闭,“1”= 开启
位5 冻结图像释放:“0”= 关闭,“1”= 开启
位6~8 源格式:
“000”= 保留
“001”= SQCIF
“010”= QCIF
“011”= CIF
“100”= 4CIF
“101”= 16CIF
“110”= 保留
“111”= 扩展PTYPE
如果比特6~8不是“111”,接下来的5比特表示PTYPE:
位9 图像编码类型:“0”= 帧内,“1”= 帧间
位10 可选的非受限的运动向量模式:“0”= 关闭,“1”= 开启
位11 可选的基于语法的算术编码模式:“0”= 关闭,“1”= 开启
位12 可选的先进预测模式:“0”= 关闭,“1”= 开启
位13 可选的PB帧模式:“0”= 普通图像,“1”= PB帧
如果比特9被设置成0,那么比特13必须设置成0。比特10~13是可选模式,编码器和解码器要交互。
量化信息(CQUANT)
CQUANT是一个5-比特的二进制值指示组块所使用的量化,直到被任何接下来的GQUANT或DQUANT重写。允许值是1~31。
持续存在多点(CPM)
CPM是一个1-比特的值,信号使用它来可选持续存在多点和视频复用模式;“0” = 关闭,“1”= 开启。如果不存在PLUSPTYPE,那么CPM之后紧随PQUANT。如果存在PLUSPTYPE,那么CPM之后紧随PLUSPTYPE。
图像子比特流指示(PSBI)
PSBI是一个可选的2-比特二进制数,只有在CPM指示存在持续存在多点和视频复用模式时才存在。
PB帧中的时间参考B帧(TRB)
如果PTYPE或PLUSTYPE指示一个PB帧或改进型PB帧,那么存在TRB。TRB是一个3-比特或5-比特的二进制数,由于最后的I或P帧,或PB帧或改进型PB帧的P部分和PB帧或改进型PB帧的B部分,所以是非传送图像(29.97Hz或CPCFC指示的用户图像频率)的[N + 1]。当使用用户图像时钟频率时,TRB扩展成5位。
对于29.97Hz,最大非传送图像数是6,当使用用户图像时钟频率时是30。
PB帧中B帧的量化信息(DBQUANT)
如果PTYPE或PLUSTYPE指示一个PB帧或改进型PB帧,那么存在DBQUANT。DBQUANT是一个2-比特的编码字指示QUANT和BQUANT之间的关系,如表10.10所示。该部分使用截断法。BQUANT的范围是1~31。如果结果小于1或大于31,BQUANT分别剪切到1和31。
DBQUANT |
BQUANT |
00 |
(5×QUANT)/4 |
01 |
(6×QUANT)/4 |
10 |
(7×QUANT)/4 |
11 |
(8×QUANT)/4 |
表10.10 H.263DBQUANT码和QUANT/BQUANT的关系
额外插入信息(PEI)
PEI是一个位,当被置“1”时,表示存在存在PSUPP字段。
补充增强信息(PSUPP)
如果PEI被置“1”,那么跟随的这9比特包括8比特数据(PSUPP)和另一个PEI位以指示是否还跟随另一个9比特,以此类推。
序列结束(EOS)
EOS是一个22-比特的字,值是0000 0000 0000 1 11111。EOS必须在开始码的前面插入0~7个0比特以使字节对齐,所以EOS的第一个比特在最前,是一个字节的最高有效位。
如图10.9所示,每个图像被分成组块(GOB)。一个GOB包含SQCIF,QCIF和CIF分辨率的16行,包含4CIF分辨率的32行和16CIF分辨率的64行。所以,一个SQCIF的图像包含6个GOBs(96/16),每个包括1行宏块数据。一个QCIF的图像包含9个GOBs(144/16),每个包括1行宏块数据。一个CIF的图像包含18个GOBs(288/16),每个包括1行宏块数据。一个4CIF的图像包含18个GOBs(576/32),每个包括2行宏块数据。一个16CIF的图像包含18个GOBs(1152/64),每个包括4行宏块数据。GOB在图像顶端从0开始编号,随着垂直向下增加。
每个GOB数据包含GOB头,跟随其后的是宏块数据,如图10.10所示。宏块数据随着宏块序号的增加顺序发送。对于每个图像中编号为0的GOB,GOB头不传送。一个解码器仅可以处理一个编码器传送的非空GOB头。
组块开始码(GBSC)
GBSC是一个17比特字,值是0000 0000 0000 0000 1。它必须是字节对齐的;所以0~7个0比特被加在开始码的前面以保证开始码的第一个比特在最前,是一个字节的最高有效位。
组块编号(GN)
GN是一54位的二进制值,指示组块的位置。组编号1~17被用于标准图像格式。组编号1~24被用于用户图像格式。组编号16~29在分片头中用于仿真。组编号30被用于子比特流的结束指示(EOSBS)编码,组编号31用于序列结束(EOS)编码。
GOB字比特流指示(GSBI)
GSBI是一个2-比特的二进制数字表示子比特流序号,直到下一个图像或GOB的开始码为止。如果使能持续存在多点和视频复用(CPM)模式,那么存在GSBI。
GOB帧ID(GFID)
GSBI是一个2-比特的值表示帧ID。它在给定帧的每个GOB(或分片)头部中有相同的值。通常,如果PTYPE和前面的图像头一样,那么GFID值必须和前面帧相同。如果前面的图像头的PTYPE改变了,那么GFID值必须和前面帧不同。
量化信息(CQUANT)
CQUANT是一个5-比特的二进制值指示组块所使用的量化,直到被任何接下来的CQUANT或DQUANT重写。码字以二进制表示,允许值是1~31。
每个GOB被分成宏块,如图10.9所示。一个宏块对应16个采样×16行的Y和8×8阵列的Cb和Cr数据。宏块的编号从左到右,从上到下递增。宏块数据随着编号递增的顺序被传送。
宏块数据包括一个宏块头MB,跟随块数据(见图10.10)。
编码宏块指示(COD)
COD是一个单比特指示宏块是否被编码。“0”指示编码的;“1”指示非编码的,剩下的宏块层是空的。COD仅存在于非帧内图像中。
如果是非编码的,解码器将宏块作为一个帧间块处理,整个块中的运动矢量等于0,没有系数数据。
宏块类型和块色度编码模式(MCBPC)
MCBPC是一个可变长的码字指示宏块类型和Cb和Cr的块编码模式。
MCBPC的码字列举于表10.11和10.12中。一个码字可提供比特填充,应该被解码器丢弃。在某些情况下,比特填充必须出现在图像的第一个宏块之前以避免与起始码竞争。宏块的类型(MB类型)列举于表10.13和10.14中。
当一个非帧内DC变换系数为Cb或Cr传送时,色度的块编码模式(CBPC)被指示。“1”指示块中存在非帧内DC系数。
MB类型 |
CBPC(Cb,Cr) |
编码 |
||
3 |
0,0 |
1 |
|
|
3 |
0,1 |
001 |
|
|
3 |
1,0 |
010 |
|
|
3 |
1,1 |
011 |
|
|
4 |
0,0 |
0001 |
|
|
4 |
0,1 |
0000 |
01 |
|
4 |
1,0 |
0000 |
10 |
|
4 |
1,1 |
0000 |
11 |
|
填充 |
0000 |
0000 |
1 |
表10.11 H.263 Baseline I帧的MCBPC可变长编码
B块的宏块模式(MODB)
如果PTYPE指示的是PB帧,那么MODB存在于宏块类型的0~4。它是一个可变长码字指示本宏块传送的B系数和/或运动向量。表10.15列举了MODB的码字。MODB在改进型PB帧中的编码和这儿的不同。
B块的块编码模式(CBPB)
如果指示为MODB,那么存在6-比特的CBPB。它指示宏块中的哪个块有至少一个变换系数被传送。编号模式表示为:
P0P1P2P3P4P5
这儿对于任何存在系数的块[n],Pn =“1”,否则Pn =“0”。块序号(10进制格式)由表10.9给出。
亮度块编码模式(CBPY)
CBPY是一个可变长的编码字指示宏块中的Y块,它至少一个非帧内DC变换系数被传送。然而,在高级帧内编码模式中,帧内DC指示的是和其它系数一样的方式。
表10.16列举了CBPY的编码。如果任何非帧内DC系数存在于那个Y块中,那么YN是“1”。Y块的编号(10进制格式)如表10.9所示。
量化(MQUANT)
DQUANT是一个2-比特的码字指示QUANT的变化。表10.17列举了码字的不同值。
QUANT的范围是1~31。如果指示的QUANT的值的范围变成小于1或者大于31,那么它分别被设置成1和31。
MB类型 |
CBPC (Cb,Cr) |
编码 |
|||
0 |
0,0 |
1 |
|
|
|
0 |
0,1 |
0011 |
|
|
|
0 |
1,0 |
0010 |
|
|
|
0 |
1,1 |
0001 |
01 |
|
|
1 |
0,0 |
011 |
|
|
|
1 |
0,1 |
0000 |
111 |
|
|
1 |
1,0 |
0000 |
110 |
|
|
1 |
1,1 |
0000 |
0010 |
1 |
|
2 |
0,0 |
010 |
|
|
|
2 |
0,1 |
0000 |
101 |
|
|
2 |
1,0 |
0000 |
100 |
|
|
2 |
1,1 |
0000 |
0101 |
|
|
3 |
0,0 |
0001 |
1 |
|
|
3 |
0,1 |
0000 |
0100 |
|
|
3 |
1,0 |
0000 |
0011 |
|
|
3 |
1,1 |
0000 |
011 |
|
|
4 |
0,0 |
0001 |
00 |
|
|
4 |
0,1 |
0000 |
0010 |
0 |
|
4 |
1,0 |
0000 |
0001 |
1 |
|
4 |
1,1 |
0000 |
0001 |
0 |
|
填充 |
0000 |
0000 |
1 |
|
|
5 |
0,0 |
0000 |
0000 |
010 |
|
5 |
0,1 |
0000 |
0000 |
0110 |
0 |
5 |
1,0 |
0000 |
0000 |
0111 |
0 |
5 |
1,1 |
0000 |
0000 |
0111 |
1 |
表10.12 H.263 Baseline P帧的MCBPC可变长编码
运动向量数据(MVD)
当在PB帧模式时,运动向量数据包括所有帧间宏块和帧内块。
运动向量数据包括一个可变长的水平分量码字,跟随一个可变长的垂直分量码字。可变长码字列举于表10.18中。对于非受控的运动向量模式,可能使用其它的运动向量。
帧类型 |
MB类型 |
名称 |
COD |
MCBPC |
CBPY |
DQUANT |
MVD |
MVD2-4 |
帧间 |
未编码 |
- |
× |
|
|
|
|
|
帧间 |
0 |
帧间 |
× |
× |
× |
|
× |
|
帧间 |
1 |
帧间+q |
× |
× |
× |
× |
× |
|
帧间 |
2 |
帧间4v |
× |
× |
× |
|
× |
× |
帧间 |
3 |
帧内 |
× |
× |
× |
|
|
|
帧间 |
4 |
帧内+q |
× |
× |
× |
× |
|
|
帧间 |
5 |
帧间4v+q |
× |
× |
× |
× |
× |
× |
帧间 |
填充 |
- |
× |
× |
|
|
|
|
帧内 |
3 |
帧内 |
|
× |
× |
|
|
|
帧内 |
4 |
帧内+q |
|
× |
× |
× |
|
|
帧内 |
填充 |
- |
|
× |
|
|
|
|
表10.13 H.263宏块类型和普通帧包括的数据
帧类型 |
MB类型 |
名称 |
COD |
MCBPC |
MODB |
CBPY |
帧间 |
未编码 |
- |
× |
|
|
|
帧间 |
0 |
帧间 |
× |
× |
× |
|
帧间 |
1 |
帧间+q |
× |
× |
× |
× |
帧间 |
2 |
帧间4v |
× |
× |
× |
× |
帧间 |
3 |
帧内 |
× |
× |
× |
× |
帧间 |
4 |
帧内+q |
× |
× |
× |
× |
帧间 |
5 |
帧间4v+q |
× |
× |
× |
× |
帧间 |
填充 |
- |
× |
× |
|
|
10.14a H.263 Baseline宏块类型和PB帧包括的数据
帧类型 |
MB类型 |
名称 |
CBPB |
DQUANT |
MVD |
MVDB |
MVD2-4 |
帧间 |
未编码 |
- |
|
|
|
|
|
帧间 |
0 |
帧间 |
× |
|
× |
× |
|
帧间 |
1 |
帧间+q |
× |
× |
× |
× |
|
帧间 |
2 |
帧间4v |
× |
|
× |
× |
× |
帧间 |
3 |
帧内 |
× |
|
× |
× |
|
帧间 |
4 |
帧内+q |
× |
× |
× |
× |
|
帧间 |
5 |
帧间4v+q |
× |
× |
× |
× |
× |
帧间 |
填充 |
- |
|
|
|
|
|
表10.14b H.263 Baseline宏块类型和普通帧包括的数据
运动向量数据(MVD2-4)
在在高级预测或块删除滤波器模式期间,如果被PTYPE和MCBPC指示,那么存在MVD2,MVD2和MVD23个码字。每一个包括一个可变长的水平分量码字,跟随一个可变长的垂直分量码字。可变长的码字列举于表10.18中。
B宏块的运动向量数据(MVDB)
在PB帧和改进型PB帧模式期间,如果有MODB指示,那么存在MVDB。它包括一个可变长的水平分量码字,跟随一个可变长的垂直分量码字。可变长的码字列举于表10.18中。
CBPB |
MVDB |
编码 |
|
|
0 |
|
× |
10 |
× |
× |
11 |
表10.15 H.263 Baseline MODB可变长编码表
CBPY(Y0,Y1,Y2,Y3) |
编码 |
||
帧内 |
帧间 |
||
0,0,0,0 |
1,1,1,1 |
0011 |
|
0,0,0,1 |
1,1,1,0 |
0010 |
1 |
0,0,1,0 |
1,1,0,1 |
0010 |
0 |
0,0,1,1 |
1,1,0,0 |
1001 |
|
0,1,0,0 |
1,0,1,1 |
0001 |
1 |
0,1,0,1 |
1,0,1,0 |
0111 |
|
0,1,1,0 |
1,0,0,1 |
0000 |
10 |
0,1,1,1 |
1,0,0,0 |
1011 |
|
1,0,0,0 |
0,1,1,1 |
0001 |
0 |
1,0,0,1 |
0,1,1,0 |
0000 |
11 |
1,0,1,0 |
0,1,0,1 |
0101 |
|
1,0,1,1 |
0,1,0,0 |
1010 |
|
1,1,0,0 |
0,0,1,1 |
0100 |
|
1,1,0,1 |
0,0,1,0 |
1000 |
|
1,1,1,0 |
0,0,0,1 |
0110 |
|
1,1,1,1 |
0,0,0,0 |
11 |
|
表10.16 H.263 Baseline CBPY可变长编码表
QUANT的不同值 |
DQUANT |
-1 |
00 |
-2 |
01 |
1 |
10 |
2 |
11 |
表10.17 H.263 Baseline不同QUANT值的DQUANT编码
不同向量 |
编码 |
||||
-16 |
16 |
0000 |
0000 |
0010 |
1 |
-15.5 |
16.5 |
0000 |
0000 |
0011 |
1 |
-15 |
17 |
0000 |
0000 |
0101 |
|
-14.5 |
17.5 |
0000 |
0000 |
0111 |
|
-14 |
18 |
0000 |
0000 |
1001 |
|
-13.5 |
18.5 |
0000 |
0000 |
1011 |
|
-13 |
19 |
0000 |
0000 |
1101 |
|
-12.5 |
19.5 |
0000 |
0000 |
1111 |
|
-12 |
20 |
0000 |
0001 |
001 |
|
-11.5 |
20.5 |
0000 |
0001 |
011 |
|
-11 |
21 |
0000 |
0001 |
101 |
|
-10.5 |
21.5 |
0000 |
0001 |
111 |
|
-10 |
22 |
0000 |
0010 |
001 |
|
-9.5 |
22.5 |
0000 |
0010 |
011 |
|
-9 |
23 |
0000 |
0010 |
101 |
|
-8.5 |
23.5 |
0000 |
0010 |
111 |
|
-8 |
24 |
0000 |
0011 |
001 |
|
-7.5 |
24.5 |
0000 |
0011 |
011 |
|
-7 |
25 |
0000 |
0011 |
101 |
|
-6.5 |
25.5 |
0000 |
0011 |
111 |
|
-6 |
26 |
0000 |
0100 |
001 |
|
-5.5 |
26.5 |
0000 |
0100 |
011 |
|
-5 |
27 |
0000 |
0100 |
11 |
|
-4.5 |
27.5 |
0000 |
0101 |
01 |
|
-4 |
28 |
0000 |
0101 |
11 |
|
-3.5 |
28.5 |
0000 |
0111 |
|
|
-3 |
29 |
0000 |
1001 |
|
|
-2.5 |
29.5 |
0000 |
1011 |
|
|
-2 |
30 |
0000 |
111 |
|
|
-1.5 |
30.5 |
0001 |
1 |
|
|
-1 |
31 |
0011 |
|
|
|
-0.5 |
31.5 |
011 |
|
|
|
0 |
|
1 |
|
|
|
表10.18a H.263 Baseline MVD,MVD2~4和MVDB的可变长编码表
不同向量 |
编码 |
||||
0.5 |
-31.5 |
010 |
|
|
|
1 |
-31 |
0010 |
|
|
|
1.5 |
-30.5 |
0001 |
0 |
|
|
2 |
-30 |
0000 |
110 |
|
|
2.5 |
-29.5 |
0000 |
1010 |
|
|
3 |
-29 |
0000 |
1000 |
|
|
3.5 |
-28.5 |
0000 |
0110 |
|
|
4 |
-28 |
0000 |
0101 |
10 |
|
4.5 |
-27.5 |
0000 |
0101 |
00 |
|
5 |
-27 |
0000 |
0100 |
10 |
|
5.5 |
-26.5 |
0000 |
0100 |
010 |
|
6 |
-26 |
0000 |
0100 |
000 |
|
6.5 |
-25.5 |
0000 |
0011 |
110 |
|
7 |
-25 |
0000 |
0011 |
100 |
|
7.5 |
-24.5 |
0000 |
0011 |
010 |
|
8 |
-24 |
0000 |
0011 |
000 |
|
8.5 |
-23.5 |
0000 |
0010 |
110 |
|
9 |
-23 |
0000 |
0010 |
100 |
|
9.5 |
-22.5 |
0000 |
0010 |
010 |
|
10 |
-22 |
0000 |
0010 |
000 |
|
10.5 |
-21.5 |
0000 |
0001 |
110 |
|
11 |
-21 |
0000 |
0001 |
100 |
|
11.5 |
-20.5 |
0000 |
0001 |
010 |
|
12 |
-20 |
0000 |
0001 |
000 |
|
12.5 |
-19.5 |
0000 |
0000 |
1110 |
|
13 |
-19 |
0000 |
0000 |
1100 |
|
13.5 |
-18.5 |
0000 |
0000 |
1010 |
|
14 |
-18 |
0000 |
0000 |
1000 |
|
14.5 |
-17.5 |
0000 |
0000 |
0110 |
|
15 |
-17 |
0000 |
0000 |
0100 |
|
15.5 |
-16.5 |
0000 |
0000 |
0011 |
0 |
表10.18b H.263 Baseline MVD,MVD2~4和MVDB的可变长编码表
如果不是在PB帧模式中,一个宏块由4个Y块,一个Cb块和一个Cr块组成(见图10.9)。一个8采样×8行的数据块包含帧内DC系数和变换系数码字,如图10.10所示。块的传送顺序如图10.9所示。
如果在PB帧模式中,一个宏块由4个Y块,一个Cb块和一个Cr和6个B块数据组成。
量化的DCT系数的传送顺序如图7.59所示。在修改的量化模式中,量化的DCT系数传输顺序如图7.60所示。
帧内块DC系数(帧内DC)
帧内DC是一个8-比特的码字。它的值和它们对应的重构电平列举于表10.19。
如果不是在PB帧模式中,如果MCBPC指示宏块类型为3或4,那么宏块的每个块存在帧内DC系数。如果是在PB帧模式中,如果MCBPC指示宏块类型为3或4,那么每个P块存在帧内DC系数(B块中不存在帧内DC系数)。
帧内DC值 |
重构电平 |
0000 0000 |
未使用 |
0000 0001 |
8 |
0000 0010 |
16 |
0000 0011 |
24 |
∶ |
∶ |
0111 1111 |
1016 |
1111 1111 |
1024 |
1000 0001 |
1032 |
∶ |
∶ |
1111 1101 |
2024 |
1111 1110 |
2032 |
表10.19 H.263 Baseline 帧内DC重构电平
传输系数(TCOEFF)
如果不是在PB帧模式中,如果有MCBPC或CBPY指示,那么存在TCOEF。在PB帧模式中,如果由CBPB指示,那么TCOEF存在于B块中。
一个最后非0系数的融合时间指示(如果块中有更多的非0系数LAST =“0”;如果块中不再有非0系数LAST =“1”)系数(RUN)前面的连续0数量和非0系数(LEVEL)数量。
最常见的情况是使用可变长编码,如表10.20所示。比特“s”指示电平的符号:“0” = 正,“1” = 负。
另外的组合(LAST,RUN,LEVEL)使用一个22-比特的编码:7比特游程(ESC),1比特LAST,6比特的RUN,和8比特的LEVEL。RUN和LEVEL的编码如表10.21所示。码字1000 0000被禁止,但在修改的量化模式中使能。
除了帧内DC之外,所有系数有范围为-2048~2047的重构电平(REC)。重构电平是由如下方程恢复过来的,并会导致剪辑结果。
Last |
Run |
|Level| |
编码 |
|||
0 |
0 |
1 |
10s |
|
|
|
0 |
0 |
2 |
1111 |
s |
|
|
0 |
0 |
3 |
0101 |
01s |
|
|
0 |
0 |
4 |
0010 |
111s |
|
|
0 |
0 |
5 |
0001 |
1111 |
s |
|
0 |
0 |
6 |
0001 |
0010 |
1s |
|
0 |
0 |
7 |
0001 |
0000 |
0s |
|
0 |
0 |
8 |
0000 |
1000 |
01s |
|
0 |
0 |
9 |
0000 |
0000 |
00s |
|
0 |
0 |
10 |
0000 |
0000 |
111s |
|
0 |
0 |
11 |
0000 |
0000 |
110s |
|
0 |
0 |
12 |
0000 |
0100 |
000s |
|
0 |
1 |
1 |
110s |
|
|
|
0 |
1 |
2 |
0101 |
00s |
|
|
0 |
1 |
3 |
0001 |
1110 |
s |
|
0 |
1 |
4 |
0000 |
0011 |
11s |
|
0 |
1 |
5 |
0000 |
0100 |
001s |
|
0 |
1 |
6 |
0000 |
0101 |
0000 |
s |
0 |
2 |
1 |
1110 |
s |
|
|
0 |
2 |
2 |
0001 |
1101 |
s |
|
0 |
2 |
3 |
0000 |
0011 |
10s |
|
0 |
2 |
4 |
0000 |
0101 |
0001 |
s |
0 |
3 |
1 |
0110 |
1s |
|
|
0 |
3 |
2 |
0001 |
0001 |
1s |
|
0 |
3 |
3 |
0000 |
0011 |
01s |
|
0 |
4 |
1 |
0110 |
0s |
|
|
0 |
4 |
2 |
0001 |
0001 |
0s |
|
0 |
4 |
3 |
0000 |
0101 |
0010 |
s |
0 |
5 |
1 |
0101 |
1s |
|
|
0 |
5 |
2 |
0000 |
0011 |
00s |
|
0 |
5 |
3 |
0000 |
0101 |
0011 |
s |
0 |
6 |
1 |
0100 |
11s |
|
|
0 |
6 |
2 |
0000 |
0010 |
11s |
|
0 |
6 |
3 |
0000 |
0101 |
0100 |
s |
0 |
7 |
1 |
0100 |
10s |
|
|
表10.10a H.263 Baseline TCOEFF可变长编码表
Last |
Run |
|Level| |
编码 |
|||
0 |
7 |
2 |
0000 |
0010 |
10s |
|
0 |
8 |
1 |
1100 |
01s |
|
|
0 |
8 |
2 |
000 |
0010 |
01s |
|
0 |
9 |
1 |
0100 |
00s |
|
|
0 |
9 |
2 |
0000 |
0010 |
00s |
|
0 |
10 |
1 |
0010 |
110s |
|
|
0 |
10 |
2 |
0000 |
0101 |
0101 |
s |
0 |
11 |
1 |
0010 |
101s |
|
|
0 |
12 |
1 |
0010 |
100s |
|
|
0 |
13 |
1 |
0001 |
1100 |
s |
|
0 |
14 |
1 |
0001 |
1011 |
s |
|
0 |
15 |
1 |
0001 |
0000 |
1s |
|
0 |
16 |
1 |
0001 |
0000 |
0s |
|
0 |
17 |
1 |
0000 |
1111 |
1s |
|
0 |
18 |
1 |
0000 |
1111 |
0s |
|
0 |
19 |
1 |
0000 |
1110 |
1s |
|
0 |
20 |
1 |
0000 |
1110 |
0s |
|
0 |
21 |
1 |
0000 |
1101 |
1s |
|
0 |
22 |
1 |
0000 |
1101 |
0s |
|
0 |
23 |
1 |
0000 |
0100 |
010s |
|
0 |
24 |
1 |
0000 |
0100 |
011s |
|
0 |
25 |
1 |
0000 |
0101 |
0110 |
s |
0 |
26 |
1 |
0000 |
0101 |
0111 |
s |
1 |
0 |
1 |
0111 |
s |
|
|
1 |
0 |
2 |
0000 |
1100 |
1s |
|
1 |
0 |
3 |
0000 |
0000 |
101s |
|
1 |
1 |
1 |
0011 |
11s |
|
|
1 |
1 |
2 |
0000 |
0000 |
100s |
|
1 |
2 |
1 |
0011 |
10s |
|
|
1 |
3 |
1 |
0011 |
01s |
|
|
1 |
4 |
1 |
0011 |
00s |
|
|
1 |
5 |
1 |
0010 |
011s |
|
|
1 |
6 |
1 |
0010 |
010s |
|
|
1 |
7 |
1 |
0010 |
001s |
|
|
表10.10b H.263 Baseline TCOEFF可变长编码表
Last |
Run |
|Level| |
编码 |
|||
1 |
8 |
1 |
0010 |
000s |
|
|
1 |
9 |
1 |
0001 |
1010 |
s |
|
1 |
10 |
1 |
0001 |
1001 |
s |
|
1 |
11 |
1 |
0001 |
1000 |
s |
|
1 |
12 |
1 |
0001 |
0111 |
s |
|
1 |
13 |
1 |
0001 |
0110 |
s |
|
1 |
14 |
1 |
0001 |
0101 |
s |
s |
1 |
15 |
1 |
0001 |
0100 |
s |
|
1 |
16 |
1 |
0001 |
0011 |
s |
|
1 |
17 |
1 |
0000 |
1100 |
0s |
|
1 |
18 |
1 |
0000 |
1011 |
1s |
|
1 |
19 |
1 |
0000 |
1011 |
0s |
|
1 |
20 |
1 |
0000 |
1010 |
1s |
|
1 |
21 |
1 |
0000 |
1010 |
0s |
|
1 |
22 |
1 |
0000 |
1001 |
1s |
|
1 |
23 |
1 |
0000 |
1001 |
0s |
|
1 |
24 |
1 |
0000 |
1000 |
1s |
|
1 |
25 |
1 |
0000 |
0001 |
11s |
|
1 |
26 |
1 |
0000 |
0001 |
10s |
|
1 |
27 |
1 |
0000 |
0001 |
01s |
|
1 |
28 |
1 |
0000 |
0001 |
00s |
|
1 |
29 |
1 |
0000 |
0100 |
100s |
s |
1 |
30 |
1 |
0000 |
0100 |
101s |
s |
1 |
31 |
1 |
0000 |
0100 |
110s |
|
1 |
32 |
1 |
0000 |
0100 |
111s |
|
1 |
33 |
1 |
0000 |
0101 |
1000 |
s |
1 |
34 |
1 |
0000 |
0101 |
1001 |
s |
1 |
35 |
1 |
0000 |
0101 |
1010 |
s |
1 |
36 |
1 |
0000 |
0101 |
1011 |
s |
1 |
37 |
1 |
0000 |
0101 |
1100 |
s |
1 |
38 |
1 |
0000 |
0101 |
1101 |
s |
1 |
39 |
1 |
0000 |
0101 |
1110 |
s |
1 |
40 |
1 |
0000 |
0101 |
1111 |
s |
|
0000 |
011 |
|
|
表10.10c H.263 Baseline TCOEFF可变长编码表
如果LEVEL = 0,REC = 0
如果QUANT = 奇数:
|REC| = QUANT×(2×|LEVEL| + 1)
QUANT = 偶数:
|REC| = QUANT×(2×|LEVEL| + 1)- 1
在计算|REC|之后,符号被加到获得的REC上。符号(LEVEL)由表10.20中的TCOEF码的“s”比特指定。
REC = sign(LEVEL)×|REC|
对于帧内DC块,重构电平是:
REC = 8×LEVEL
Run |
编码 |
电平 |
编码 |
0 |
0000 00 |
-128 |
禁止 |
1 |
0000 01 |
-127 |
1000 0001 |
… |
… |
… |
… |
63 |
1111 11 |
-2 |
1111 1110 |
|
|
-1 |
1111 1111 |
|
|
0 |
禁止 |
|
|
1 |
0000 0001 |
|
|
2 |
0000 0010 |
|
|
… |
… |
|
|
127 |
0111 1111 |
表10.21 H.263 Run,电平码
当PTYPE的比特6~8指示时,PLUSTYPE存在,它被用来使能H.263版本2选项。当存在时,PLUSTYPE和相关的字段紧随在PTYPE之后,在PQUANT之前。
如果PLUSTYPE存在,那么CPM紧随在PLUSPTYPE之后。如果PLUSTYPE不存在,那没CPM紧随在PQUANT之后。PSBI通常紧跟在CPM之后(如果CPM =“1”)。
PLUSTYPE是一个12-或30-比特的码字,包括多大3个子字段:UFEP,OPPTYPGE和MPPTYPE。PLUSTYPE和相关的字段如图10.11所示。
更新全扩展PTYPE(UFEP)
如果PTYPE指示了“扩展PTYPE”,那么存在3比特的EFEP码字。
一个值是“000”的UFEP指示了图像头中只包含MPPTYPE。
一个值是“001”的UFEP指示了图像头中同时包含OPPTYPE和MPPTYPE。如果图像的类型是帧内或EI,那么这个字段必须被设置成“001”。
另外,如果PLUSPTYPE存在于每个连续的图像序列中,那么这个字段每5秒或者5帧应给被设置成“001”,不管有多大。在易出错的环境中,UFEP应该更频繁地设置成“001”。
除了“000”和“001”之外的其它值被保留。
图10.11 H.263 PLUSPTYPE和相关字段
PLUSTYPE的可选部分(OPPTYPE)
这个字段包含的特性帧帧之间是不变的。如果UFEP是“001”,那么接下来的比特存在于OPPTYPE。
比特1~3 源格式
“000” = 保留
“001”= SQCIF
“010”= QCIF
“011”= CIF
“100”= 4CIF
“101”= 16CIF
“110”= 用户源格式
“111”= 保留
比特4 用户图像时钟频率
“0”= 标准,“1”= 用户定义
比特5 非受控运动矢量
“0”= 关闭,“1”= 开启
比特6 基于语法的算术编码(SAC)模式
“0”= 关闭,“1”= 开启
比特7 高级预测(AP)模式
“0”= 关闭,“1”= 开启
比特8 高级帧内编码(AIC)模式
“0”= 关闭,“1”= 开启
比特9 快消除(DF)模式
“0”= 关闭,“1”= 开启
比特10 分片结构(SS)模式模式
“0”= 关闭,“1”= 开启
比特11 参考图像选择(RPS)模式
“0”= 关闭,“1”= 开启
比特12 独立段解码(ISD)模式
“0”= 关闭,“1”= 开启
比特13 帧内交换VLC(AIV)模式
“0”= 关闭,“1”= 开启
比特14 改进量化(MQ)模式
“0”= 关闭,“1”= 开启
比特15 “1”
比特16 “0”
比特17 “0”
比特18 “0”
PLUSTYPE的强制部分(MPPTYPE)
不管UFEP的值如何,接下来的9比特也存在于MPPTYPE:
比特1~3 图像编码类型
“000”= I帧(帧内)
“001”= P帧(帧间)
“010”= 改进PB帧
“011”= B帧
“100”= EI帧
“101”= EP帧
“110”= 保留
“111”= 保留
比特4 参考图像重采样(RPR)模式
“0”= 关闭,“1”= 开启
比特5 降低分辨率更新(RRU)模式
“0”= 关闭,“1”= 开启
比特4 四舍五入类型(RTYPE)模式
“0”= 关闭,“1”= 开启
比特7 “0”
比特8 “0”
比特9 “1”
用户图像格式(CPFMT)
如果PLUSPTYPE和UFEP是“001”指示图像个是是用户图像格式,那么一个23比特的CPFMT值存在。
比特1~4 像素宽高比代码
“0000”= 保留
“0001”= 1:1
“0010”= 12:11
“0011”= 10:11
“0100”= 16:11
“0101”= 40:33
“0110”~“1110”= 保留
“1111”= 扩展PAR
比特5~13 图像宽度指示(PWI)每行带采样点数目 =(PWI + 1)×4
比特14 “1”
比特15~23 图像高指示(PHI)每帧的采样航数目 =(PHI + 1)×1
扩展像素宽高比(EPAR)
如果存在CPFMT并且“扩展PAR”有CPFMT指示,那么存在一个16-比特值的EPAR。
比特1~8 PAR宽度
比特9~16 PAR高度
用户图像时钟频率代码(CPCFC)
只有PLUSPTYPE存在,UFEP的值是“001”,并且PLUSPTYPE指示了一个用户图像时钟频率时,存在一个8-比特值的CPCFC。用户图像时钟频率(单位是Hz)是:
1,800,000/(时钟除数×时钟转换因子)
比特1 始终转换因子代码“0”= 1000,“1”= 1001
比特2~8 时钟除数
扩展时间参考(ETR)
如果使用一个用户图像时钟频率,那么存在一个2-比特值的ETR。它是10-比特TR值的最高两位。
无限制的非受控运动矢量(UUI)
UUI是一个1-或2-比特的可变长值,指示运动矢量的有效范围限制。如果可选的非受控运动向量模式由PLUSPTYPE和UFEP是“001”指示,那没它存在。
一个值“1”指示如表10.22和10.23所示的运动向量范围限制。一个“01”值指示除了图像尺寸限制之外,运动向量的范围不受限制。
图像宽度 |
水平运动向量范围 |
4~352 |
-32,+31.5 |
356~704 |
-64,+63.5 |
708~1408 |
-128,+127.5 |
1412~2048 |
-256,+255.5 |
表10.22可选的水平运动范围
图像高度 |
垂直运动向量范围 |
4~288 |
-32,+31.5 |
292~276 |
-64,+63.5 |
580~1152 |
-128,+127.5 |
表10.23可选的垂直运动范围
分片结构子模型比特(SSS)
如果PLUSPTYPE和EFEP是“001”指示的可选分片结构模型,那么一个2-比特值的SSS存在。如果分片结构模型在使用,但是EFEP不是“001”,那么最后的SSS值仍然有效。
比特1 矩形分片
“0”= 关闭,“1”= 开启
比特2 任意分片次序
“0”= 顺序,“1”= 任意顺序
增强层编号(ELNUM)
ELNUM是一个4-比特的值,只存在于时间,SNR和空间可扩展模式期间。它表示一个特定的增强层。第一个位于基本层之上的增强层指定为增强层编号2,而基本层的编号是1。
参考层编号(RLNUM)
LNUM是一个4-比特的值,只存在于时间,SNR和空间可扩展模式期间,UFEP是“001”。由RLNUM标识的帧的层编号用作参考锚。
参考图像选择模型标志(RPSMF)
RPSMF是一个3-比特的码字,仅存在于参考图像选择模型期间,并且UFEP是“001”。当它存在时,它指定编码器需要的后向通道信息。如果参考图像选择模式在使用,但是RPSMF没有存在,那么最后发送的RPSMF值保持有效。
“000”~“011”= 保留
“100”= 既不需要ACK,也不需要NACK
“101”= 需要ACK
“110”= 需要NACK
“111”= 同时需要ACK和NACK
预测指示的时间参考(TRPI)
TRPI是一个1-比特值,仅存在于参考图像选择模式期间。当存在时,它指示存在跟随其后的TRP字段。“0”= 不存在TRP字段;“1”= 存在TRP字段。每当图像头指示一个I帧或EI帧时,TRPI是“0”。
预测的时间参考(TRP)
TRP是一个10-比特的值,指示用于除了B帧情况之外的编码器预测时间参考。对于B帧,有TRP指定的帧时间参考被用于前向预测。
如果用户图像时钟频率没有被使用,TRP的最高两位是0,最低8位值在参考图像的图像头中。如果用户图像时钟频率被使用,那么TRP是一个10-比特的值,包含从参考图像头中的级联ETR和TR。
如果不存在TRP,前面的图像锚被用于预测,在它不在参考图像选择模式中时。TRP有效,直到下一个PSC,GSC或SSC。
后向通道信息指示(BCI)
BCI是一个1-或2-比特的可变长码字,仅存在于可选的参考图像选择模式期间。“1”表示存在可选后向通道信息(BCM)字段。“01”表示无或后向通道信息字段的结束。BCM和BCI当存在时可能会重复。
后向通道信息(BCM)
如果前面的CBI字段被置1,那么可变长的后向通道信息存在。
参考图像重采样参数(RPRP)
一个可变长的字段仅存在于可选参考图像重采样模式期间。这个字段携带参考图像重采样模式的参数。
在这种可选模式中,运动向量允许指向图像之外。采样的边界被用作预测“不存在”的采样点。边界采样由受限运动向量到最后全采样位置于图像区域建立。运动向量受限被用来分离水平和垂直分量。
另外,这个模式包括一个扩展的运动向量范围,以至于更大的运动向量可以被使用(表10.22和10.23)。这些更长的运动向量对于更大的图片格式,如4CIF或16CIF提高了编码效率。如果有沿着图像边界的运动,相机移动或背景移动,那么一个重大的增益将达到。
当这种模式用于H.263版本2时,新的可逆变长码(RVLCs)被用于运动向量编码,如表10.24所示。这些码相对于Baseline的双值VLCs是单值的。由于它们可扩展性的受限和使用的高成本性,所以双值码没有流行。RVLCs也比较容易使用。
半像素单位的运动矢量差的绝对值 |
码字 |
0 |
1 |
1 |
0s0 |
“x0”+ 2(2-3) |
0x01s0 |
“x1x0”+ 4(4-7) |
0x11x01s0 |
“x2x1x0”+ 8(8-15) |
0x21x11x01s0 |
“x3x2x1x0”+ 16(16-31) |
0x31x21x11x01s0 |
“x4x3x2x1x0”+ 32(32-63) |
0x41x31x21x11x01s0 |
“x5x4x3x2x1x0”+ 64(64-127) |
0x51x41x31x21x11x01s0 |
“x6x5x4x3x2x1x0”+ 128(128-255) |
0x61x51x41x31x21x11x01s0 |
“x7x6x5x4x3x2x1x0”+ 256(256-511) |
0x71x61x51x41x31x21x11x01s0 |
“x8x7x6x5x4x3x2x1x0”+ 512(512-1023) |
0x81x71x61x51x41x31x21x11x01s0 |
“x9x8x7x6x5x4x3x2x1x0”+ 1024(1024-2047) |
0x91x81x71x61x51x41x31x21x11x01s0 |
“x10x9x8x7x6x5x4x3x2x1x0”+ 2048(2048-4095) |
0x101x91x81x71x61x51x41x31x21x11x01s0 |
表10.24 H.263运动向量的反向变长码
表10.24中的每一行表示一个运动向量的半像素单位差。“…x1x0”所有跟随领导“1”的运动矢量差的二进制表示的绝对值。“s”比特指示运动矢量差的符号:“0”是正,“1”是负。运动矢量差的二进制表示由码字的连续或结束隔开。
RVLCs也可以被用来提高抵御通道误差。解码器可以执行前向和反向运动矢量处理。如果在解码一个方向时探测到一个错误,那么解码器可以吃力相反方向的解码,提高抵御比特流的误差。除此之外,依赖于图像尺寸,运动向量范围扩展到[-256,+255]。
在这种可选模型中,可变长编码由算术编码代替。SNR和重构的图像将一样,但是,由于移动信息需要的是一个固定的比特数,所以比特率大概可以降低5%。
图像,组块和宏块层的语法仍然相同。块层的语法稍微改变,任何数量的TCOEF条目可能存在。
值得一提的是这种模式没有广泛使用。
在这种可选模式中,每个宏块用4个运动向量(每个Y块有一个)来代替一个运动向量。此外,块重叠运动补偿(OBMC)用于P帧的Y块中。
如果一个运动向量用于一个宏块,那么定义4个值一样的运动向量。如果4个运动向量用于一个宏块,那么第一个运动向量是MVD码字,应用于图10.9的Y1。第二个运动向量是MVD2码字,应用于Y2,第三个运动向量是MVD3码字,应用于Y3,第四个运动向量是MVD4码字,应用于Y4。宏块中Cb和Cr的运动向量有4个Y运动推导。
编码器必须确定使用的是那种类型的向量。4个运动向量使用更多的比特数,但是提供了更好的预测。这种模式提高了帧间图像的预测,大大提高了图像质量,在相同码率的情况下降低了块伪影。
和MPGE一样,H.263可以选择支持PB帧。一个PB帧包括一个P帧(由前面的P帧预测)和一个B帧(由前面的和当前的P帧双向预测),如图10.12所示。
采用这种可选编码,在提高图像速率的情况下可以不提高比特率。但是,一个改进的PB帧模式支持在索引M中。这种原始的PB帧模型仅为系统之前采用索引M的兼容目的而保留。
图10.12 H.263 Baseline PB帧
在这种可选模式中,多达4个独立的H.263比特流可以复合到一路比特流中。最低识别码的子比特流(在SBI字段发送)考虑有最高优先级,除非由外部手段建立一个不同的优先约定。
这个特性设计用于持续存在多点的应用或其它环境,这里分离的逻辑通道不可用,但是需要使用复合视频比特流的情况。它在H.324中不被使用。
这个可选模式提供了对发送的H.263视频数据的前向纠错功能(编码和成帧)。它在H.324中不被使用。
成帧和前向纠错码和H.261相同。
这个可选模式提高了帧内宏块的压缩率。它使用从相邻帧内块的帧内预测,修改帧内DCT系数的反向量化,帧内系数的VLC表分离。这个模式大大提高了H.263 Baseline帧内编码的压缩处理。
一个额外的1-或2-比特可变长码字INTRA_MODE被加到宏块层中紧随MCBPC字段之后,用以指示预测模式:
“0”= 仅DC
“10”= 垂直DC和AC
“11”= 水平DC和AC
对于帧内编码的模块,如果只有DC预测模式,使用图7.59中的锯齿扫描顺序。如果使用垂直DC和AC预测模式,使用图7.60中的“交替垂直”扫描顺序。如果使用水平DC和AC预测模式,使用图7.61中的“交替水平”扫描顺序。
对于非帧内块,使用图7.59的锯齿扫描模式。
这种可选模式在编码环路中引入一个去块滤波器。这个滤波器用于边界的8×8块以降低块伪影。
滤波器参数依赖于宏块量化步距尺寸,更大的系数用于粗量化。这个模式也允许每个宏块使用4个运动向量,如先进预测模式中指定的那样,也允许运动向量指向图像外面,如非限制运动向量模式中那样。先进预测模式中的昂贵重叠运动补偿运算操作不被使用以保持这个模式最小的复杂度。
它的结果是更好的预测和降低块伪影。
在这种可选模式中一个分片层取代GOB层。这种模式提供了弹性差错,使比特流在包传送计划中更容易使用,降低了视频延时。
分片层包行一个分片头跟随连续完整的宏块。两种额外模式可以标志传输顺序的响应(矩形或不是)。这些灵活地加到分片结构中以使它可以为不同应用进行设计。
使用这种可选模式,额外的辅助信息可能包括到比特流中指示增强显示能力。
典型的增强信息可以指示整个或部分图像冻结,图像解冻或图像合成的色度键控。
辅助信息甚至在解码器没有能力使用它的情况下可以存在于比特流中。解码器简单地丢弃辅助信息,除非通过外部手段已经协定需要支持这种能力。
这个可选模式表示对H.263 Baseline PB帧选项的一个改进。这个模式允许对在一个PB帧中的B帧前向,后向和双向预测。MODB字段的改变操作如表10.25所示。
双向预测手段和PB帧模式中相同,除了在改进PB帧模式中没有戴尔塔向量发送之外。
在前向预测中,B宏块有前面的P宏块预测,然后发送一个分离的运动向量。
在后向预测中,预测的宏块和将来的P宏块相等,所以,没有运动向量被发送。
改进的PB帧在帧之间不太容易出现改变,如在前面P帧和PB帧之间当有一个场景切换。
CBPB |
MVDB |
码字 |
编码模式 |
|
|
0 |
双向预测 |
× |
|
10 |
双向预测 |
|
× |
110 |
前向预测 |
× |
× |
1110 |
前向预测 |
|
|
11110 |
后向预测 |
× |
|
111110 |
后向预测 |
表10.25 H.263改进PB帧模式MODB的可变长编码表
在H.263 Baseline中,一个帧可能有前帧预测得到。由于错误或报丢失,如果参考帧的部分丢失,那么特定帧的质量将退化。使用这种可选模式,它可以选择参考帧进行预测,降低错误传递。
4个后向通道信息信号(NEITHER,ACK,NACK和ACK+NACK)被编码器和解码器使用,用于指定图图像的哪部分将被用于预测。例如,一个NACK从解码器发到编码器指示一个给定的帧一个由于错误而退化。所以编码器可能不选择此帧为将来的预测,而是用不同的帧代替,使用不受影响的参考帧来预测。这降低了错误传递,在易出错的环境中保持改进图像质量。
在这个可选模式中,支持时间,SNR和空间可扩展。可扩展允许在超过一个质量水平的解码一个序列。这通过使用一个层次结构的图像来做,增强图像分成一个或更多个层。最底层叫做基本层。
基本层是一个独立的可解码码流。增强层结合基本层可以一起解码来提高图像速率,提高图像质量或增大图像尺寸。
时间可扩展使用双向预测图像或B帧来实现。它们允许使用一个前帧和基本层中的子序列图像的任何一个来进行预测。这个结果相比于P帧提高压缩效率。这些B帧于PB帧或改进PB帧的B图像部分不同,它们在码流中是完全分离的。
SNR扩展是指增强信息在不提高分辨率时提高图像质量。由于压缩引入了伪影,解码的图像和原始图像之间的差异是编码误差。通常在编码器处丢失的编码误差不能被恢复。通过SNR扩展,发送到解码器的编码误差,能够增强解码的图像。扩展数据服务提高了图像的信噪比(SNR),所以叫做“SNR扩展”。
空间扩展和SNR扩展紧密相关。仅有的差别是在参考层中的图像之前被用来预测空间增强层中的图像,它通过内插水平或者垂直(1D空间扩展)或者水平和垂直(2D空间扩展)一个因子。除了上采样处理之外,一个空间扩展图像的采样和语法和SNR扩展图像一样。
由于SNR扩展帧和空间扩展帧之间有一个非常小的句法差异,帧用于这两种目的的分别叫做EI帧和EP帧。
基本层中被用于在EI或EP帧中向上预测的帧可能是一个I帧,P帧,PB帧中的P部分或改进PB帧中的P部分(但不是一个B帧,PB帧中的B部分或改进PB帧中的B部分)。
这种模式在具有不同带宽容量的网络中是很有用的。
在这种可选模式中,参考帧事先重采样到一个大小不同的尺寸,用它来进行预测。
这允许有一个不同的源参考格式而不帧进行预测。通过对参考帧弯曲形状,尺寸和位置,它也可以被用于整体的运动估计或旋转运动估计。
一个可选模式提供了允许编码器发送一个更新了信息较低分辨率的帧,而参考帧仍然保持较高的分辨率,以创建一个较高分辨率的最后帧。
这种模式在一个高的运动场景时是最好的,允许一个编码器对一个场景的运动部分提高帧速率,而在场景的静止区域保持更高的分辨率。
语法和H.263 Baseline是一样的,但是语义的解释是不一样的。宏块的维度倍增,所以宏块数据尺寸是没有使能这个模式的1/4。所以运动向量必须在两个维度上倍增。为了产生最后的图像,宏块被上采样以扩展分辨率。在上采样之后,全分辨率帧被加到运动补偿帧以产生全分辨率的帧为将来参考。
在这个可选模式中,图像段边界被作为图像边界对待——允许跨段边界没有数据依赖。
使用这个模式阻止了错误传递,提供弹性错误和恢复。这种模式最好用于分片层中,例如,那里分片可以变化尺寸到符合一个特定包的尺寸。
帧内VLC表用于高级帧编码模式,当这种可选模式使能时,也可以用于帧间块编码。
巨大数量的系数和小的游程0,典型在帧内块中存在,当使用小的量化步距尺寸时,帧间块也频繁存在。当获得节省比特时,使用的帧内量化DCT系数表可以在解码器中删除。解码器将首先是有那个帧间表来试图解码量化系数。如果这导致8×8的系数超过64,那么解码器将使用帧内表。
这种可选模式改进了编码控制比特率,降低了CbCr量化误差,扩展了DCT的系数范围,加上了系数值的某些限制。
在H.263 Baseline中,量化值在红快层可能会被修改。但是,只是在最近的量化值的允许值中作小的调整(±1或±2)。改进量化模式允许修改量化值到任何值。
在H.263 Baseline中,Y和CbCr的量化是一样的。改进量化模式对与Y块对应的Cb和Cr块通过使用更小的量化步距也提高了CbCr的图像质量。
在H.263 Baseline中,当一个量化小于8被采样,量化的系数超过[-127,+127]的范围将被剪辑。改进量化模式允许表示的系数在[-127,+127]范围之外。所以,当选择一个非常好的量化步距时,Y质量获得了提高。
一个可选的增强图像选择(ERPS)模式提供增强编码效率和弹性误差。它管理一个存储图像的多图像缓冲区。
一个可选的数据分区分片(DPS)模式提供增强弹性错误。它从DCT系数据中分离头和运动向量数据,并通过一个可逆的表示来保护运动向量数据。
一个可选的额外补充增强信息规范提供后向兼容增强,如:
(a)指示使用一个特定定点IDCT
(b)图像信息,包括的信息类型:
l 任意的二进制数据
l 文本(任意,版权,字幕,视频描述或统一参考识别码)
l 图像头重复(当前,以前,下一个可靠的时间参考或笑一个不可靠的时间参考)
l 隔行扫描场指示(顶场或底场)
l 备用参考图片识别
1. Efficient Motion Vector Estimation and Coding for H.263-Based Very Low Bit Rate Video Compression, by Guy Cote, Michael Gallant and Faouzi Kossentini, Department of Electrical and Computer Engineering, University of British Columbia.
2. H.263+: Video Coding at Low Bit Rates, by Guy Cote, Berna Erol, Michael Gallant and Faouzi Kossentini, Department of Electrical and Computer Engineering, University of British Columbia.
3. ITU-T H.261, Video Codec for Audiovisual Services at p×64 kbits, 3/93.
4. ITU-T H.263, Video Coding for Low Bit Rate Communication, 2/98.
5. ITU-T H.263 Annex U, Enhanced Reference Picture Selection Mode, 11/00.
6. ITU-T H.263 Annex V, Data-partitioned Slice Mode, 11/00.
7. ITU-T H.263 Annex W, Additional Supplemental Enhancement Information Specification, 11/00.