有多种视频会议的规范,如表10.1所示。图10.1~10.3显示了一些常用视频会议系统的框图。
| H.310 | H.320 | H.321 | H.322 | H.323 | H.324 | H.324/C |
网路 | 宽带ISDN ATM LAN | 窄带交换数字ISDN | 宽带ISDN ATM LAN | 固定带宽包交换网络 | 固定带宽包交换网络(以太网) | PSTN或POTS | 移动式 |
视频编解码器 | MPEG-2 H.261 | H.261 H.263 | H.261 H.263 | H.261 H.263 | H.261 H.263 | H.261 H.263 | H.261 H.263 |
音频编解码器 | MPEG-2 G.711 G.722 G.728 | G.711 G.722 G.728 | G.711 G.722 G.728 | G.711 G.722 G.728 | G.711,G.722 G723,G.728 G.729 | G.723 | G.723 |
复用 | H.222.0 H.222.1 | H.221 | H.221 | H.221 | H.225.0 | H.223 | H.223A |
控制 | H.245 | H.230 H.242 | H.242 | H.230 H.242 | H.245 | H.245 | H.245 |
多点 |
| H.231 | H.231 | H.231 | H.323 |
|
|
数据 | T.120 | T.120 | T.120 | T.120 | T.120 | T.120 | T.120 |
通信接口 | AAL I.363 AJM I.361 PHY I.432 | I.400 | AAL I.363 AJM I.361 PHY I.400 | I.400 和TCP/IP | TCP/IP | V.34调制解调 | 移动通信 |
表10.1视频会议系列标准
H.261
ITU-T H.261是为视频会议开发的第一个视频压缩和解压缩标准。起初设计的比特率是p×64kbps,这儿p的范围是1~30,H.261是现在所有视频会议标准中的最低要求,如表10.1所示。
一个典型的H.261编码器框图如图10.4所示。提供了一路环回数字视频流,和其它的信号复用,如控制和音频信号。视频解码器执行相反的处理。
H.261视频数据使用图3.7中的4:2:0YCbCr格式的视频数据,基本的规范列于表10.2。最大图像速率可能会限制于传输图像之间的0,1,2或3非传输图像。
支持两种类型的图像(即,帧):
内或I帧:一个没有预测参考帧的帧。
间或P帧:一个基于前一帧的帧。
图10.1典型H.320系统
图10.2典型H.323系统
图10.3典型H.324系统
视频编码层
如图10.4所示,基本功能是预测,块变换和量化。
预测误差(间模式)或输入图像(内模式)被分解成8采样点×8行的块,分段成发送或非发送。4个亮度块和2个空间相关的色彩块组合成一个16采样点×16行的宏块,如图10.5所示。
模式和传输块的准则没有被推荐,作为编码策略的一部分可以动态变化。传输块被变换以及由此产生的量化系数和可变长编码。
预测
预测是图片之间的,可能包括运动补偿和空间滤波器。使用预测的编码模式叫做帧间,没有使用预测的编码模式叫做帧内。
运动补偿
运动补偿在编码器中是可选的。解码器必须支持接受每个宏块一个运动向量。运动向量是受限的——所有以它们参考的采样点必须包含在解码的图像区域中。
运动向量的水平和垂直分量有不超过±15的整数值。运动向量用于宏块中的所有体格Y块。Cb和Cr块的运动向量由宏块向量值的一半推导得到。
运动向量的一个正的水平和垂直分量值指示从前一图像样本点形成的预测是空间上向右或向下的样本点被预测。
图10.4典型的H.261编码器
参数 | CIF | QCIF |
有效分辨率(Y) | 352×288 | 176×144 |
帧刷新率 | 29.97Hz | |
YCbCr采样结构 | 4:2:0 | |
YCbCr编码形式 | PCM均匀量化,每个采样点8位 |
表10.2 H.261 YCbCr参数
环路滤波器
预测处理可能使用一个2D空间滤波器,处理一个预测的包换8×8采样点的块。
滤波器被分成水平和垂直功能。两者都是非递归的,系数是0.25,0.5,0.25,除了块的边缘,那里有一个抽头在块之外。在这种情况下,系数变成0,1,0。
根据宏块的类型,对于一个宏块中的所有6个块,滤波器开启或关闭。
DCT,IDCT
发送的块首先经过一个8×8的DCT(离散余弦变换)处理。IDCT的输出(逆DCT)经过裁剪后的范围是-256~255,用9位表示。
变换的计算过程没有定义,但是逆变换必须符合公差在一定范围内。
量化
在一个宏块内部,除了一个帧内DC之外,所有的系数都是用相同的量化。第一个帧内系数通常使用一个步长为8没有死区的线性量化DC变换值。其它31个量化也是线性的,但是在0的周围有一个中央死区,一个范围2~62的偶数补偿。
图像重构裁剪
裁剪功能被用来阻止变换系数幅度量化失真,可能导致在编码器和解码器环路中的数学溢出。裁剪工具被应用于重构图像,由预测求和和预测误差导致的。裁剪强制小于0的值为0,大于255的值为255。
编码控制
虽然不是H.261的一部分,但是几个参数可能多用于控制编码的视频数据速率。这些包括预编码处理,量化,块意义准则,时间欠采样。时间欠采样通过丢弃完整图像执行。
强制更新
这是通过强制使用帧内模式的编码算法实现的。为了控制逆变换不匹配误差的叠加,一个宏块应该在它每传送132次至少被强制更新。
视频比特流
除非另外指定,最高比特被首先传送。这是第1位,在编码表中的最左端位。除非另有规定,所有未使用或空闲位被设置成“1”。
图10.5 H.261组块,宏块和块的分布
视频比特流是一个4层的层次化结构。由高到底的层次是:
图像
组块(GOB)
宏块(MB)
块
图像层
每个图像数据包括一个图像头,跟随其后的组块(GOBs)。结构如图10.6所示。删除图像的图像头不传送。
图像开始码(PSC)
PCS是一个20-比特的字,值是0000 0000 0000 0001 0000。
时间参考(TR)
TR是一个5-比特的二进制数,表示32个可能值。它是由前面非传送的图片的图片头的值加1得到(29.97Hz)。算术仅处理最低5位。
类型信息(PTYPE)
图像的6位信息是:
位1 画面分割指标:“0”= 关毕,“1”= 开启
位2 摄像机文件指标:“0”= 关闭,“1”= 开启
位3 冻结图像释放:“0”= 关闭,“1”= 开启
位4 源格式:“0”= QCIF,“1”= CIF
位5 可选的静止图像模式:“0”= 开启,“1”= 关闭
位6 备用
图10.6 H.261视频比特流层次结构
额外插入信息(PEI)
PEI是一个位,当被置“1”时,表示存在以下可选字段。
备用信息(PSPARE)
如果PEI被置“1”,那么跟随的这9比特包括8比特数据(PSPARE)和另一个PEI位以指示是否还跟随另一个9比特,以此类推。
组块(GOB)层
每个图像被分成组块(GOB)。一个GOB包含1/12幅CIF图片区域1/3幅QCIF图片区域(见图10.5)。一个GOB对应176采样点×48行的Y和88×24阵列的Cb和Cb数据。
每个GOB数据包含GOB头,跟随其后的是宏块数据,如图10.6所示。在图10.5中的顺序编号的CIF或QCIF图像开始码之间每个GOB头传送一次,即使没有宏块数据存在于GOB中。
组块开始码(GBSC)
GBSC是一个16比特字,值是0000 0000 0000 0001。
组块编号(GN)
GN是一个4位的二进制值,指示组块的位置。在图10.5中这些比特是二进制表示的编号。编号13,15和15保留为将来使用。
量化信息(CQUANT)
CQUANT是一个5-比特的二进制值指示组块所使用的量化,直到被任何接下来的MQUANT重写。允许值是1~31。
额外插入信息(GEI)
GEI是一个比特,它为“1”时,指示随后存在可选数据字段。
空闲信息(GSPARE)
如果GEI被设置为“1”,那么跟随的这9比特包含8比特的数据(GSPARE)另一个GEI比特指示是否还有9比特数据跟随其后,以此类推。
宏块(MB)层
每个GOB被分成33个宏块,如图10.5所示。一个宏块对应16个采样×16行的Y和8×8阵列的Cb和Cr数据。
宏块数据包括一个宏块头,跟随块数据(见图10.6)。
宏块地址(MBA)
MBA是一个可变长的码字指示在一个组块中宏块的位置。发送次序如图10.5所示。对于一个GOB的第一个宏块,MBA是图10.5中的绝对地址。接下来的宏块,MBA是和绝对地址宏块和最后发送宏块之间的偏移量。MBA的码表有表10.3给出。
一个码字可以立即填充在GOB头后面或一个编码的宏块(叫做MBA填充)。这个码字被解码器丢弃。
起始码的码字也在表10.3中列举。MBA通常包括在传送的宏块中。当红块包含的图像部分没有信息时,它们不被传送。
类型信息(MTYPE)
MTYPE是一个可变长的码字包含宏块和数据元存在的信息。宏块类型包括元素和可变长码字,如表10.4所列。MTYPE通常包含在发送的宏块中。
量化(MQUANT)
MQUANT目前仅由MTYPE指示。它是一个5-bit码字指示这里和任何组块中的块的量化,直到被任何接下来的MQUANT覆盖为止。MQUANT的码字和GQUANT一样。
MBA | 编码 | MBA | 编码 | |||||
1 | 1 |
|
| 17 | 0000 | 0101 | 10 |
|
2 | 011 |
|
| 18 | 0000 | 0101 | 01 |
|
3 | 010 |
|
| 19 | 0000 | 0101 | 00 |
|
4 | 0011 |
|
| 20 | 0000 | 0100 | 11 |
|
5 | 0010 |
|
| 21 | 0000 | 0100 | 10 |
|
6 | 0001 | 1 |
| 22 | 0000 | 0100 | 011 |
|
7 | 0001 | 0 |
| 23 | 0000 | 0100 | 010 |
|
8 | 0000 | 111 |
| 24 | 0000 | 0100 | 001 |
|
9 | 0000 | 110 |
| 25 | 0000 | 0100 | 000 |
|
10 | 0000 | 1011 |
| 26 | 0000 | 0011 | 111 |
|
11 | 0000 | 1010 |
| 27 | 0000 | 0011 | 110 |
|
12 | 0000 | 1001 |
| 28 | 0000 | 0011 | 101 |
|
13 | 0000 | 1000 |
| 29 | 0000 | 0011 | 100 |
|
14 | 0000 | 0111 |
| 30 | 0000 | 0011 | 011 |
|
15 | 0000 | 0110 |
| 31 | 0000 | 0011 | 010 |
|
16 | 0000 | 0101 | 11 | 32 | 0000 | 0011 | 001 |
|
| 33 | 0000 | 0011 | 000 |
| |||
MBA填充 | 0000 | 0001 | 111 |
| ||||
开始码 | 0000 | 0000 | 0000 | 0001 |
表10.3 H.261的MBA可变长编码表
预测 | MQUANT | MVD | CBP | TCOEFF | 编码 | ||
帧内 |
|
|
| × | 0001 | 001 |
|
帧内 | × |
|
| × | 0000 |
|
|
帧间 |
|
| × | × | 1 | 1 |
|
帧间 | × |
| × | × | 0000 | 0000 | 1 |
帧间+MC |
| × |
|
| 0000 | 0001 |
|
帧间+MC |
| × | × | × | 0000 | 0000 | 01 |
帧间+MC | × | × | × | × | 0000 |
|
|
帧间+MC+FIL |
| × |
|
| 001 |
|
|
帧间+MC+FIL |
| × | × | × | 01 |
|
|
帧间+MC+FIL | × | × | × | × | 0000 | 01 |
|
表10.4 H.261 MTYPE可变长码表
运动向量数据(MVD)
运动向量数据包括宏块的所有运动补偿(MC),有MTYPE指示。MVD由宏块向量减去前面宏块的向量包含。在如下情况下前面宏块的向量被认为是0:
(a)宏块1,12和23的MVD评定。
(b)MBA不存在的不同于1的宏块MVD评定。
(c)前面宏块的MTYPE不是运动补偿的。
运动向量数据包括一个可变长的水平分量码字,跟随一个可变长的垂直分量码字。可变长码字列举于表10.5
向量差 | 编码 | 向量差 | 编码 | ||||
-16&16 | 0000 | 0011 | 001 | 1 | 010 |
|
|
-15&17 | 0000 | 0011 | 011 | 2&-30 | 0010 |
|
|
-16&18 | 0000 | 0011 | 101 | 3&-29 | 0000 | 0 |
|
-13&19 | 0000 | 0011 | 111 | 4&-28 | 0000 | 110 |
|
-12&20 | 0000 | 0100 | 001 | 5&-27 | 0000 | 1010 |
|
-11&21 | 0000 | 0100 | 011 | 6&-26 | 0000 | 1000 |
|
-10&22 | 0000 | 0100 | 11 | 7&-25 | 0000 | 0110 |
|
-9&23 | 0000 | 0101 | 01 | 8&-24 | 0000 | 0101 | 10 |
-8&24 | 0000 | 0101 | 11 | 9&-23 | 0000 | 0101 | 00 |
-7&25 | 0000 | 0111 |
| 10&-22 | 0000 | 0100 | 10 |
-6&26 | 0000 | 1001 |
| 11&-21 | 0000 | 0100 | 010 |
-5&27 | 0000 | 1011 |
| 12&-20 | 0000 | 0100 | 000 |
-4&28 | 0000 | 111 |
| 13&-19 | 0000 | 0011 | 110 |
-3&29 | 0001 | 1 |
| 14&-18 | 0000 | 0011 | 100 |
-2&30 | 0011 |
|
| 15&-17 | 0000 | 0011 | 010 |
-1 | 011 |
|
|
| |||
0 | 0 |
|
|
表10.5 H.261 MVD可变长码表
编码块特征(CBP)
如果MTYPE指示,那么可变长的CBP存在。它指示宏块中的哪个块有至少一个变换系数被传送。特征序号表示为:
P0P1P2P3P4P5
CBP序号的码字由表10.6给出。
块层
一个宏块有4个Y块,一个Cb块和一个Cr块组成(见图10.5)。
一个8采样×8行的数据块包含变换系数码字,跟随一个块结束(EOB)标志如图10.6所示。块的传送顺序如图10.5所示。
CBP | 码字 | CBP | 码字 | ||
60 | 111 |
| 62 | 0100 | 0 |
4 | 1101 |
| 24 | 0011 | 11 |
8 | 1100 |
| 36 | 0011 | 10 |
16 | 1011 |
| 3 | 0011 | 01 |
32 | 1010 |
| 63 | 0011 | 00 |
12 | 1001 | 1 | 5 | 0010 | 111 |
48 | 1001 | 0 | 9 | 0010 | 110 |
20 | 1000 | 1 | 17 | 0010 | 101 |
40 | 1000 | 0 | 33 | 0010 | 100 |
28 | 0111 | 1 | 6 | 0010 | 011 |
44 | 0111 | 0 | 10 | 0010 | 010 |
52 | 0110 | 1 | 18 | 0010 | 001 |
56 | 0110 | 0 | 34 | 0010 | 000 |
1 | 0101 | 1 | 7 | 0001 | 1111 |
61 | 0101 | 0 | 11 | 0001 | 1110 |
2 | 0100 | 1 | 19 | 0001 | 1101 |
表10.6a H.261 CBP可变长码表
CBP | 码字 | CBP | 码字 | |||
35 | 0001 | 1100 | 38 | 0000 | 1100 |
|
13 | 0001 | 1011 | 29 | 0000 | 1011 |
|
49 | 0001 | 1010 | 45 | 0000 | 1010 |
|
21 | 0001 | 1001 | 53 | 0000 | 1001 |
|
41 | 0001 | 1000 | 57 | 0000 | 1000 |
|
14 | 0001 | 0111 | 30 | 0000 | 0111 |
|
50 | 0001 | 0110 | 46 | 0000 | 0110 |
|
22 | 0001 | 0101 | 54 | 0000 | 0101 |
|
42 | 0001 | 0100 | 58 | 0000 | 0100 |
|
15 | 0001 | 0011 | 31 | 0000 | 0011 | 1 |
51 | 0001 | 0010 | 47 | 0000 | 0011 | 0 |
23 | 0001 | 0001 | 55 | 0000 | 0010 | 1 |
43 | 0001 | 0000 | 59 | 0000 | 0010 | 0 |
25 | 0000 | 1111 | 27 | 0000 | 0001 | 1 |
37 | 0000 | 1110 | 39 | 0000 | 0001 | 0 |
26 | 0000 | 1101 |
|
表10.6b H.261 CBP可变长码表
传输系数(TCOEFF)
当MTYPE指示帧内时,传输系数存在于宏块中的所有6个。否则,MTYPE和CBP信号指示它们中的哪一块有系数数据。量化的DCT系数的传输顺序如图7.59所示。
最常见的情况是连续0(RUN)组合跟着一些值(电平),使用可变长码编码,列举与表10.7。由于CBP指示的是没有系数数据的块,EOB不能在第一个系数处出现。最后的比特“s”指示电平的符号:“0” = 正,“1” = 负。
另外的组合(RUN,电平)使用一个20-比特的编码:6比特游程(ESC),6比特的RUN,和8比特的电平,如表10.8所示。
两个编码表使用可变长编码:一个用于帧间第一个电平,帧间+MC和帧间+MC+FIL块;另一个用于除了第一个帧内块之外的所有其它电平,它是一个固定长度的8比特编码。
除了帧内DC之外,所有系数有范围为-2048~2047的重构电平(REC)。重构电平是由如下方程恢复过来的,并会导致剪辑。QUANT的范围是1~31,由GQUANT或MQUANT传送。
QUANT = 奇数:
对于电平 > 0
REC = QUANT×(2×LEVEL + 1)
对于电平 < 0
REC = QUANT×(2×LEVEL - 1)
QUANT = 偶数:
对于电平 > 0
REC = (QUANT×(2×LEVEL + 1))- 1
对于电平 < 0
REC = (QUANT×(2×LEVEL - 1))+ 1
对于电平 = 0
REC = 0
对于帧内DC块,第一个系数典型有一个8阶梯的量化值没有死区,产生一个8-比特编码值,n。黑色的编码值是0001 0000(16),白色的编码值是1110 1011(235)。一个值1024的变换值是1111 1111。编码值0000 0000和1000 0000没有使用。解码值是8n。除了n值是255将重建1024值之外。
静态图像传输
H.261允许传送一个静止图像4次,分辨率是当前所选的视频格式。如果格式是QCIF,那么一个静态的CIF分辨率可能被传送;如果视频格式是CIF的,一个静态的704×576分辨率可能被传送。
图10.7典型H.261解码序列
Run | Level | 编码 | |||
EOB |
| 10 |
|
|
|
0 | 1 | 1s | 如果是块中的第一个系数* | ||
0 | 1 | 11s | 如果不是块中的第一个系数 | ||
0 | 2 | 0100 | s |
|
|
0 | 3 | 0010 | 1s |
|
|
0 | 4 | 0000 | 110s |
|
|
0 | 5 | 0010 | 0110 | s |
|
0 | 6 | 0010 | 0001 | s |
|
0 | 7 | 0000 | 0010 | 10s |
|
0 | 8 | 0000 | 0001 | 1101 | s |
0 | 9 | 0000 | 0001 | 1000 | s |
0 | 10 | 0000 | 0001 | 0011 | s |
0 | 11 | 0000 | 0001 | 0000 | s |
0 | 12 | 0000 | 0001 | 1101 | 0s |
0 | 13 | 0000 | 0000 | 1100 | 1s |
0 | 14 | 0000 | 0000 | 1100 | 0s |
0 | 15 | 0000 | 0000 | 1011 | 1s |
1 | 1 | 011s |
|
|
|
1 | 2 | 0001 | 10s |
|
|
1 | 3 | 0010 | 0101 | s |
|
1 | 4 | 0000 | 0011 | 00s |
|
1 | 5 | 0000 | 0001 | 1011 | s |
1 | 6 | 0000 | 0000 | 1011 | 0s |
1 | 7 | 0000 | 0000 | 1010 | 1s |
2 | 1 | 0101 | s |
|
|
2 | 2 | 0000 | 100s |
|
|
2 | 3 | 0000 | 0010 | 11s |
|
2 | 4 | 0000 | 0001 | 0100 | s |
2 | 5 | 0000 | 0000 | 1010 | 0s |
3 | 1 | 0011 | 1s |
|
|
3 | 2 | 0010 | 0100 | s |
|
3 | 3 | 0000 | 0001 | 1100 | s |
3 | 4 | 0000 | 0000 | 1001 | 1s |
表10.7a H.261 TCOEFF可变长编码
*在帧内宏块中从不使用
Run | Level | 编码 | |||
4 | 1 | 0011 | 0s |
|
|
4 | 2 | 0000 | 0011 | 11s |
|
4 | 3 | 0000 | 0001 | 0010 | s |
5 | 1 | 0001 | 11s |
|
|
5 | 2 | 0000 | 0010 | 01s |
|
5 | 3 | 0000 | 0000 | 1001 | 0s |
6 | 1 | 0001 | 01s |
|
|
6 | 2 | 0000 | 0001 | 1110 | s |
7 | 1 | 0001 | 00s |
|
|
7 | 2 | 0000 | 0001 | 0101 | s |
8 | 1 | 0000 | 111s |
|
|
8 | 2 | 0000 | 0001 | 0001 | s |
9 | 1 | 0000 | 101s |
|
|
9 | 2 | 0000 | 0000 | 1000 | 1s |
10 | 1 | 0010 | 0111 | s |
|
10 | 2 | 0000 | 0000 | 1000 | 0s |
s11 | 1 | 0010 | 0011 | s |
|
12 | 1 | 0010 | 0010 | s |
|
13 | 1 | 0010 | 0000 | s |
|
14 | 1 | 0000 | 0011 | 10s |
|
15 | 1 | 0000 | 0011 | 01s |
|
16 | 1 | 0000 | 0010 | 00s |
|
17 | 1 | 0000 | 0001 | 1111 | s |
18 | 1 | 0000 | 0001 | 1010 | s |
19 | 1 | 0000 | 0001 | 1001 | s |
20 | 1 | 0000 | 0001 | 0111 | s |
21 | 1 | 0000 | 0001 | 0110 | s |
22 | 1 | 0000 | 0000 | 1111 | 1s |
23 | 1 | 0000 | 0000 | 1111 | 0s |
24 | 1 | 0000 | 0000 | 1110 | 1s |
25 | 1 | 0000 | 0000 | 1110 | 0s |
26 | 1 | 0000 | 0000 | 1101 | 1s |
ESC |
| 0000 | 01 |
|
|
表10.7b H.261 TCOEFF可变长编码
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.8 H.261 Run,电平码