H.263:视频编码和解码(Video Coding and Decoding - CODEC rk)
H.263 由 ITU 定义,支持用于视频会议和视频电话应用程序的视频压缩(解码)。H.263 基于 H.261 编码,并且为在最低带宽为 20K 到 24Kbit/sec 上传输的视频流而开发。作为一种一般规则,H.263 只需 H.261 一半的带宽即可达到与 H.261 相同的视频质量,所以在很大程度上 H.263 取代了 H.261。H.263 使用 RTP 传输视频流。
H.263 的编码算法和 H.261 中的类似,但它在 H.261 的基础上有了提高和改变,从而增强了性能和错误恢复能力。H.263 中运动补偿采用的是半像素精度,而在 H.261 中采用的是全像素精度和环路过滤。数据流中分层结构的某些部分是可选的,如此视频编译码就可以被配置成有较低的数据率或较好的错误恢复能力。目前有四种能够提高性能的可选协商选项:无限制运动矢量、基于语法的算术编码、先进预测和前后帧预测,这类似于 MPEG,叫做 P-B 帧。
H.263 支持五种分辨率。除了 H.261 支持的 QCIF 和 CIF 外,还有 SQCIF、4CIF 和 16CIF。
SQCIF 的分辨率大约是 QCIF 的一半,而 4CIF 和 16CIF 的分辨率分别是 CIF 的 4 倍和 16 倍。支持 4CIF 和 16CIF 意味着视频编码器可以与其它具有较高比特率的视频编码标准相抗衡,如 MPEG 标准。
H.261 与 H.263 编码算法的不同点列表如下:
图画格式 | 象素亮度 | 线条亮度 | H.261是否支持 | H.263是否支持 | 非压缩比特率(Mbits/s) | |||
10 frames/s | 30 frames/s | |||||||
灰色 | 彩色 | 灰色 | 彩色 | |||||
SQCIF | 128 | 96 | 是 | 1.0 | 1.5 | 3.0 | 4.4 | |
QCIF | 176 | 144 | 是 | 是 | 2.0 | 3.0 | 6.1 | 9.1 |
CIF | 352 | 288 | 可选 | 可选 | 8.1 | 12.2 | 24.3 | 36.5 |
4CIF | 704 | 576 | 可选 | 32.4 | 48.7 | 97.3 | 146.0 | |
16CIF | 1408 | 1152 | 可选 | 129.8 | 194.6 | 389.3 | 583.9 |
协议结构
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 中的头格式如下所示:
1 | 2 | 5 | 8 | 11 | 12 | 13 | 14 | 15 | 16 bit |
F | P | SBIT | EBIT | SRC | I | U | S | A | R |
R (cont.) | 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 中的头格式如下所示:
1 | 2 | 5 | 8 | 11 | 16 bit | ||||||
F | P | SBIT | EBIT | SRC | QUANT | ||||||
GOBN | MBR | 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 中的头格式如下所示:
1 | 2 | 5 | 8 | 11 | 16bit | ||||||
F | P | SBIT | EBIT | SRC | QUANT | ||||||
GOBN | MBR | R | |||||||||
I | U | S | A | HMV1 | VMV1 | HMV2 | VMV2 | ||||
RR | |||||||||||
RR(c) | DBR | TRB | TR |
关于 F、P、SBIT、EBIT、SRC、I、U、S、A、DBQ、TRB 和 TR 各定义请参照模式 A。关于 QUANT、GOBN、MBA、HMV1、VMV1、HMV2 和 VNV2 各定义请参照模式 B。
RR ― 预留,设置为0(19 bit)。
相关协议:RTP、RTSP、H.245、H.323、H.225、H.261
组织来源:H.263 是一种 ITU-T(http://www.itu.int/ITU-T/)标准。
相关链接:
http://www.javvin.com/protocol/rfc2190.pdf: RTP Payload Format for H.263 Video Streams
http://www.h323forum.org/papers/ : H.323 papers and documents