h263 是国际电信联盟用于视频会议的编码标准,最初设计是为了h.324的系统进行传输。后来发现H263也可以用于 H323,H320,RTSP,SIP协议传输。
1998年新增了功能,出现了第二版H263v2,也叫H263+,H263-1998. 2000年出现了第三版,H263v3,也叫H263++,H263-2000.
参考网址
H.263 : Video coding for low bit rate communication
RFC 2190 - RTP Payload Format for H.263 Video Streams
RFC 4629 - RTP Payload Format for ITU-T Rec. H.263 Video
H263支持的图像格式
图像格式 | 亮度行像素数 | 亮度行数目 | 色度行像素数 | 色度行 |
---|---|---|---|---|
sub-QCIF | 128 | 96 | 64 | 48 |
QCIF | 176 | 144 | 88 | 72 |
CIF | 352 | 288 | 176 | 144 |
4CIF | 704 | 576 | 352 | 288 |
16CIF | 1408 | 1152 | 704 | 576 |
值得注意的是H263只支持这5种分辨率的编码
而在H263+ 当中又加入了自定义分辨率的能力,故如果出现1280x720,1024x768这类16:9的分辨率一般都是采用H263+
当前图像的分辨率信息写在H263的码流内,会单独开一篇文档描述如何看H263码流
H263的编码流程
该图片是H263的标准文档中截图的,其编码原理与H264相差不大,只是少了部分编码工具
总体而言,大致分为预测,变换,量化三个大流程
预测部分,主要消除图像信息的时空域冗余
由于人眼对图像的高频部分不敏感,变换将图像数据转化到了频率,通过量化去除了大部分高频信息,起到了再次压缩的作用,但是该部分也造成了比较大的图像损失。
其中,量化参数qp与损失的相关性最大,如果量化参数越大,损失越大,编码出来的图像就越模糊;反之,图像更清晰。
而量化参数越大,保存的信息量就越小,同样也会出现比较低的编码码率。
编码的过程实际上也是一种码率与质量之间的最优权衡。
如果不做编码优化可以跳过这个部分。
H263的图像分层
h263 分层4个基本层级。从顶层到底层分别为: 图像,块组或截面或视频图像分段,宏块,块
图像
h263种包含7种图像类型:
1.I帧,帧内预测
2.P帧, 帧间预测
3.PB帧, 表示两个图像,都参考过去的帧
4.改进的PB帧,功能类似PB帧但是效果更好。详细描述在建议书的附件M,没有去深究了
5.B帧,参考时间域前后的两个图像
6.EI帧,在时间域内同时存在多个参考帧图像,参考图像具有相同或者较小的尺寸
7.EP帧,时间域内有2个参考图像,其中一个时间域超前,另外一个时间域同时存在,且具有相同或较小的尺寸
块组(GOB)
块组和GOB实质上是将几行的宏块组合在一起,将图像分割成不同的区域。 GOB规定每个块组最多Kx16行构成,若行数小于400,K=1,行数在400到800之间K=2,行数大于800,K=3.
可以理解这个部分为图像内部的区域划分,有时候一个帧过大了,就需要把这个帧分成若干块进行网络传输
宏块
每个GOB被分成宏块,每个宏块为16x16的亮度分量和 8x8的色度分量
从这里可以看出H263的最小编码单元为一个16x16的像素区域,即如果发生解码问题出现的也是以一个16x16像素块为最小单元的图像异常,如果不是块状的异常则不是编解码的问题
H263支持的高级功能
H263支持 4种可选择的高级功能,标记在H263 header内,提供灵活的开关。
作者没有深究这些具体功能是怎么样的,简单了解一下
先进的预测模式(AP)Adanced Prediction:
每宏块4个运动矢量
交叠块运动补偿
P-B frames
和H264的B帧一样的功能,猜测就是这个时候H26x系列增加了B帧的功能
基于句法的算法编码模式(SAC) syntax-based Arithmetic Coding
所有相应的ITU建议书的变长编/译码操作均用算术编/译码操作替代
非受限运动矢量模式 unrestricted motion vectors
运动矢量的范围和供编码运动矢量差分所使用的VLC表依赖于图像帧头的PLUSPTYPE场是否存在。当PLUSPTYPE存在时,运动矢量的范围也依赖于图像尺寸和图像帧头中UUI场的值
写在最后
H263的码流句法单独开一个章节介绍