MPEG4标准中的Advanced Simple Profile(ASP)完整的说明-01-02章

来源:互联网 发布:legion软件下载 编辑:程序博客网 时间:2024/04/26 08:27
转载

本文将对 MPEG4标准中的Advanced Simple ProfileASP)做一个完整的说明,我并不
打算只是对标准进行翻译,而是根据我当初读标准时遇到的问题,给出一个更容易理解的阅
读标准的途径。需要指出的是,虽然本文给出了标准中的绝大部分,但本文并不是一个标准,
而只是对标准的个人理解,遇到真正有疑问的地方,还是需要参考标准中的相应描述,毕竟
只有正式的标准才是最标准的。
我将按下面的方式组织本文的内容:
第一部分,给出标准定义的内容,即标准究竟规定了什么,没规定什么,它的Profile
level究竟是怎么一回事,具体到我们目前做的ASP又是怎么一回事。
第二部分,给出阅读标准需要的一些基础知识。
第三部分,给出标准的码流语法和语义,注意我并不会给出所有的语法语义,而只是给
出跟我们需要实现的ASP密切相关的部分,如果需要了解其他部分,可以参考标准。
第四部分,给出解码流程,同样,我也只是给出ASP的解码流程。
第五部分,参考文献。
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
3 页共 99
第一章 MPEG4标准的内容
1.1 什么是 MPEG4标准?
MPEG4 标准是国际标准化组织下面的一个标准,它包含了系统层,视频层,音频层三
个部分,并且MPEG4是基于对象的。在这里我们不打算对MPEG4作完整的介绍,我们只
介绍其中的视频层。MPEG4视频层实际上也是挺复杂的,由于我们只讨论ASP,所以我们
不必要对整个的视频层作全面的介绍,而只是介绍跟我们相关的部分,这样它同h.263 标准
是很类似的,只是多了一些特殊的技术,这些技术可以大大提高编码效率。
1.2 标准定义了什么?
假如给我一个标准的MPEG4 码流(二进制码流),我如何对它进行解码呢?显然,我
需要知道这个码流中的每一位究竟是什么含义,只有这样,我才能对它进行解码,MPEG4
标准就是定义了一个标准MPEG4 码流中的每一位的具体含义。MPEG4 码流的组织形式如
下(其实对很多标准的码流都是这样的):
1.1 码流的分层组织
如图1.1 所示,MPEG4 的码流就是按照这种分层的形式组织起来的,码流头首先是一
个在码流中其它地方不会出现的一个比较长的特殊序列,又叫起始码字,然后是具体的头信
息,它定义了整个码流的一些特征,这些特征将会对你如何对这个码流进行解码产生影响。
例如,帧的长度和宽度,该码流用到哪些技术,没用哪些技术等。帧头首先是帧起始码字,
然后是具体的帧头信息,它定义了当前帧的一些特征,例如当前帧使用的量化值等,这些信
息决定了你该如何解码当前帧。从宏块头开始就是具体的数据了,宏块头并没有一个宏块起
始码字,它紧跟在帧头信息后面。
按照上面给出的定义,只要给我一个符合MPEG4 标准的码流,我就能按照标准定义的
码流形式对这个码流解析并进行解码。首先,搜索码流起始码字,由于起始码字唯一,只要
码流正确,肯定能搜索到,找到起始码字后,就可以对码流头信息进行解析,并把对后面的
解码有影响的码字保存下来;接着,寻找帧头起始码字,找到后,对帧头信息进行解析,并
存储对解码过程有影响的码字;最后,从码流中读出宏块数据,并进行解码,恢复为原来的
图像。对这个过程可以暂时不用深究,只要大体知道这么一个概念就好了。
码流头按帧组织的数据流
帧头 按宏块组织的帧数据
宏块头 按块形式组织的帧数据
1.3 标准没定义什么
我当初看标准的时候常常有一个错误的认识,以为标准既然规定了什么,那么编码器就
应该照做。实际上这个理解是错误的,标准规定了符合这个标准的码流应该是按照什么样的
形式组织的,但是这个码流中的好多地方仍然是可选的,譬如,一个码流可以支持14
素运动补偿,也可以不支持,因此,编码器对原始图像进行编码的时候是有很大的灵活性的,
它可以只是编码当前标准码流的一个子集,当然这个子集,肯定也是符合标准的。
还有其他一些特性,在标准中也只是作为一个建议给出来的,并没有强调一定要这样做,
这里我不再详细一一列出,在你看标准的时候可以注意到,如果文章标题下面有normative
字样,则表示本章内容是标准的,必须遵守,如果标题下面有informative 字样,则表示该
章内容只是用来参考的,并不一定要照做。
1.4 ASP 是什么意思?
不用的应用要求不同的技术,例如对于视频会议,只要用最基础的那些技术就可以了,
而对于高清电视,由于图像质量要求较高,因此需要用到一些复杂的技术,例如14 像素
运动补偿,无限制运动补偿等等。MPEG4就定义了Profile&level来适应不同的应用,Profile
定义了一个码流可以使用哪些技术,而level 则规定了复杂度,譬如支持多大的图像格式,
需要多少缓存等等。
Advanced Simple Profile 是为了适应因特网上流媒体应用的需求而新增加的。它可以在
很大码率范围内发布只有一层的基于帧结构的数字视频信号。采用AS Profile,在大约
1~2Mbits/s的码率下,即可达到数字电视的质量。这使得AS Profile在第三代移动可视电话
Internet上的视频服务等领域有很好的应用前景。为实现高效编码,在AS Profile中引入
Advanced Coding Efficiency Profile中所定义的工具。具体而言,即先进补偿工具,包括:
14 像素运动补偿(QMC),全局运动补偿(GMC)。另一方面,为满足较低码率下应用的
要求,提供了Error Resilience 工具。同时,提供了后处理可选工具:Deblocking Tool
Deringing Tool。与Simple Profile相比,AS Profile具有更高的编码效率;另一方面,由于只
支持单层和矩形VO,因而其实现复杂性低于Advanced Coding Efficiency Profile。正因为此,
基于MPEG-4 AS profile的硬件系统,以及ASIC实现,具有很好的应用前景。
一个特定的profile支持一个到几个视频对象类型,例如simple profile支持Simple object
Main profile 支持simplecoremain 三种类型的对象。每一种对象类型都决定了符合该对
象类型的码流应该使用那些规定的技术,对编码器来说,它不能使用这个对象不支持的技术,
对解码器来说,这个对象规定的技术它都需要支持。
Advanced Simple Profile支持simple objectAdvanced simple object两种类型的对象,
这两种对象需要支持的技术见表11
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
5 页共 99
1-1 视频对象类型所支持的工具集合
Visual Object Types
Visual Tools Advanced
Simple
simple
I-VOP X X
P-VOP X X
B-VOP X
DC Prediction X X
AC Prediction X X
4-MV, UnrestrictedMV X X
Slice Resynchronization X X
Data Partitioning X X
Reversible VLC X X
Short Header X X
Method 1/Method 2 Quantization X
Interlace X
Global Motion Compensation X
Quarter-pel Motion Compensation X
说明 1 —隔行扫描工具在AS ProfilesL0,L1,L2,L3级别不使用;
每个profile还分不同的级别,表示不同的复杂度,如表12 和表13 所示:
关于表中每一项的具体含义,以后再补充。
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
6 页共 99
12 simple profile中定义的级别
Visual Profile
Level
Typical Visual Session
Size
Max ob-jects 1
Maximum number
per type
Max unique Quant Tables
Max. VMV buffer size
(MB units)2
Max VCV buffer size
(MB)8
VCV decoder rate
(MB/s) 4
VCV Bound-ary MB
decoder rate (MB/s)9
Max total VBV buffer size
(units of 16384 bits)5
Max vbv buffer size
(units of 16384 bits)
Max. video packet length
(bits)6
Max sprite size
(MB units)
Wavelet restrictions
Max bitrate
(kbit/s)
Max. enhance-ment
layers
per object
Simple L3 CIF 4 4 x
Simple
1 792 396 11880 N. A. 40 40 8192 N. A. N. A. 384 N. A.
Simple L2 CIF 4 4 x
Simple
1 792 396 5940 N. A. 40 40 4096 N. A. N. A. 128 N. A.
Simple L1 QCIF 4 4 x
Simple
1 198 99 1485 N.A. 10 10 2048 N. A. N. A. 64 N. A.
Simple L0 QCIF 1 1 x
Simple
1 198 99 1485 N.A. 10 10 2048 N. A. N. A. 64 N. A.
simple profile中的L0 级别,有下列限制:
a) 最大帧率只能为每秒15
b) 最大的f_code值为1
c) intra_dc_vlc_threshold 只能为0
d) 亮度的水平宽度最大为176 像素
e) 亮度的垂直高度最大为144 个像素
f) 如果使用了AC 预测,则有下列限制:QP 值在一个VOP 中不能发生变化 (或者在
一个视频包中不能发生变化,如果视频包使用了的话).如果AC 预测没有使用,对
QP值的变化没有限制。
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
7 页共 99
12 定义在Advanced Simple Profile中的级别
Visual Profile
Level
Typical Visual Session Size
Max. objects
Maximum number
per type
Max. unique Quant Tables
Max. VMV buffer size (MB
units)
Max VCV buffer size (MB)
VCV decoder rate (MB/s)
Max. Percentage of Intra
MBs with AC prediction in
VCV buffer
Max total VBV buffer size
(units of 16384 bits)
Maximum VBV Buffer Size
(units of 16384 bits)
Max. video packet length
(bits)
Maximum Bitrate (kbits/s)
(Note 2)
Maximum number of coded
vop-bps (Note 3)
AS L
0
176x144 1 1x AS or
Simple
1 297 99 2970 100 10 10 2048 128 N.A.
AS L
1
176x144 4 4x AS or
Simple
1 297 99 2970 100 10 10 2048 128 N.A.
AS L
2
352x288 4 4x AS or
Simple
1 1188 396 5940 100 40 40 4096 384 N.A.
AS L
3
352x288 4 4x AS or
Simple
1 1188 396 11880 100 40 40 4096 768 N.A.
AS L
4
352x576 4 4x AS or
Simple
1 2376 792 23760 50 80 80 8192 3000 N.A.
AS L
5
720x576 4 4x AS or
Simple
1 4860 1620 48600 25 112 112 16384 8000 N.A.
说明 1: 下列限制应用于AS profileL0 级别:
l 如果使用了AC预测, 量化值在一个VOP中应该保持不变 (或者在一个视频包中保持
不变,如果视频包在一个VOP 中使用的话). 如果AC 预测没有使用,对QP 值的变化
没有限制。
说明 2: The maximum number of coded vop-bps takes into consideration the shifted bits after
applying frequency weighting and/or selective enhancement.
说明3: 隔行扫描工具不用在AS ProfileL0,L1,L2,L3 级别中。
为了进一步理解,我把profilelevel已经object type的概念再整理一次:
Mpeg4 的码流语法是很庞大的,通常来说,我们某种应用不需要用到整个语法,语法中
存在很多可选项,不用的应用对这些可选项的选择是不一样的。Mpeg4 中的profile 就是定
义了如何去选择这些可选项,一个特定的Profile 就决定了哪些项是你应该选的,哪些项不
应该选。既然有了profile,为什么还有引入什么对象类型的概念呢?这是因为一个profile
它不仅仅只支持一个对象类型,它可以兼容使用的技术是它的子集的那些对象类型。譬如我
们的advanced simple profile就支持simple objectAdvanced simple object两种对象类型,
这两种对象所规定的语法是不一样的,如表1 所示。
MPEG4 码流中,Profile&level 信息是在最上层给出的,解码器接收到这个信息后可
以决定要不要继续解码,假设码流中的Profile simple profile,而我们的解码器支持
Advanced Simple Profile,我们就知道我们的解码器可以解这个码流,因此继续往下解;然
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
8 页共 99
而如果码流中的profilemain profile,那我们的解码器就不一定能解了。
对象类型的信息在紧接着的VOL层头信息里面,它的取值必须在前面的profile规定的
范围里面。譬如,对simple profile,只能支持simple object;对于Advanced simple profile
就可以支持simple objectAdvanced simple object两种对象类型。
第二章 基础知识
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
9 页共 99
为了能够更好的理解标准,在这一章将会给出一些视频的基本概念以及在标准中经常出
现的一些术语和语法的含义。
2.1 视频的基本概念
2.1.1
一帧图像有三个整数矩阵构成:一个亮度矩阵(Y),两个色度矩阵(一个U,一个V)。
亮度矩阵的大小也被称为当前帧的大小,而色度矩阵的大小为亮度矩阵的14,即长度和
宽度都为色度的一半。下面我们简单说说YUV的由来:
一个原始的彩色图像可以由RGB三个矩阵合成而来,这三个矩阵大小都等于当前
图像的大小。由这三个矩阵经过一个变换可以得到Y’U’V’,这三个矩阵的大小也是原
始图像的大小。经过从RGBY’U’V’的变换后,图像中比较重要的信息,也就是对人类视
觉影响比较大的信息都集中在Y’矩阵中,而U’V’矩阵中的图像信息比较小,因此,为了节
约比特数,我们可以不用对整个的U’V’矩阵进行编,可以对U’V’矩阵首先进行一个下采样,
使得U’V’图像的长度宽度都为原来的一般,这样就得到我们视频编码时常常看到的4:2:0
YUV图像格式。我们对标准的码流进行解码之后得到也是420YUV矩阵,当然还需
要对这个矩阵进行上采样,使得YUV 矩阵都为原始图像大小,然后再变换到RGB 就可以
显示了。
2.1.2 逐行扫描图像和隔行扫描图像
通过摄像头进来的图像是模拟的,我们要对它进行采样,并把它转化为数字信号。通常,
采样是按行进行的,有两种方式,一种是从上到下,逐行采样,得到的图像称为逐行扫描图
像;还有一种是隔行进行的,即首先采样奇数行(或者偶数行),接着再采样奇数行,这样
得到的图像成为隔行图像。注意,这两种采样方式得到的图像是不一样的,因为摄像头进来
的图像是动态变化的。对逐行图像,第一行图像和第二行图像之间的采样时间差别很少;而
对隔行图象,第一行采样和第二行采样之间,已经相差了半帧的时间。对隔行图像,如果图
像运动比较厉害的话,图像会走样。
有两点,在这里提一下:
对隔行扫描的图像的任一个宏块,即可以用帧DCT编码,也可以用场DCT编码,相应
的在码流中可以用一个dct_type来表示DCT编码方式;
对隔行扫描的图像的任一个宏块,运动补偿即可以用帧运动补偿也可以用场运动补偿,
这个在码流中也有一个相应的标志field_prediction来表示。
2.1.3 VOP 编码类型
这里的VOP 我们就可以把它等同于上面提到的帧的概念(标准里面实际上不是同一个
概念)。VOP编码类型有四种:
? 内部VOPI-VOP),只用到当前帧的信息编码;
? 单向预测VOPP-VOP),利用它前面的I或者P-VOP利用运动补偿技术来编码;
? 双向预测 VOPB-VOP),利用前面和后面的I或者P-VOP利用运动补偿技术来编
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
10 页共 99
码。
? 全景 VOPS-VOP)用来编码sprite对象,这个我们不讨论。
2.1.4 宏块
一个宏块包括亮度成分和对应的色度成分。对我们上面说到420 格式的帧,亮度块
的大小为16*16,色度块的大小为8*8,如下图所示:
1
2
4
3
5
0
Y Cb Cr
2.1 420 宏块结构
为了统一起见,我们把亮度块分成四个块,大小为8*8,这样一个宏块就由六个块组成,
每个块的大小都为8*8,并且在编码时用到的DCT变换,量化等都是基于块来实现的。
对隔行扫描的图像,亮度块有两种组织方式:
? 在帧DCT编码情形,每一个亮度块被逐行放在一起,如图2.2 所示;
? 在场DCT编码情形,每一个亮度块被隔行放在一起,如图2.3 所示。
2.2 DCT编码时亮度块组织
2.3 DCT编码是亮度块组织
所以,对场DCT 编码后的图像,对一个亮度块解码之后,要按照隔行的方式去存放,
才能恢复出原始的图像。
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
11 页共 99
2.2 编码流程
我们将在这一节里面对编码过程做一个非常简单的介绍,主要目的是让我们对我们需要
解码的码流究竟是如何形成的有一个概念,对编码的细节,不过多涉入。
输入的文件就是我们上面反复提到的420 格式的yuv 文件。YUV 文件按照下面的
形式组织的,我们以cif格式(352*288)的文件new_cif.yuv来说明:
文件是按照帧格式组织的,对第一帧,首先是352*288大小的亮度矩阵,注意是按行组
织的,接着是176*144 大小的色度矩阵U,也是按行组织的,最后是176*144大小的色度矩
V;第一帧结束后,马上就是第二帧,组织形式仍然同第一帧完全一样,就这样一帧一帧
的存放,直到文件结束。
读取一帧
数据
取一个
宏块DCT 量化AC/DC VLC
反量化
DCT
VOP
Memory 运动估计
运动补偿
bitstream forming
VLC
2.4 MPEG4 编码流程
2.4 给出了基本的编码流程,每个模块的功能简要介绍如下。
1. news_cif.yuv中读取一帧图像,大小为352*288*1.5,包含了亮度和色度。
2. 编码是按宏块进行的,对一帧图像中所有宏块编码完成,也就完成了对当前帧的编码。
从当前原始图像中取出一个宏块用于编码,注意原始图像是按行组织的,因此,注意读
指针位置的调整。
3. 对当前宏块进行运动估计,如果是I帧,就不用了。所谓运动估计就是从上一帧图像中
找出一个同当前宏块的数据最接近的宏块,也成为当前宏块的参考宏块。参考宏块同当
前宏块的位置的相对值被称为运动矢量,它也将进行VLC 编码,然后再写到码流中,
解码器根据这个矢量就可以找到当前宏块的参考宏块。
4. 接下来就是按块进行编码了,按照宏块中块排列的顺序进行。首先将当前宏块同参考宏
块作差值,然后再对差分值进行编码。
5. 对当前编码块(或者经过运动补偿的差分值)进行DCT变换。DCT变换的主要目的是
使得能量主要集中在低频部分。对高频部分,可以不编码,或者花较小的代价进行编码。
6. 量化模块就是对DCT 变换后的系数进行量化,也就是给它除以一个固定值,这样使得
高频部分很多很小的系数变成0,也使得其它系数变小,可以用较少的bit 编码。当然
这个量化值也需要在码流中给出,以便解码器可以进行相应的反量化,恢复出原始值。
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
12 页共 99
7. 反量化模块是量化模块的逆过程。
8. DCT模块是DCT模块的你过程。
9. ACDC是对当前宏块的第一行或者第一列系数同它周围的某一块做一个差分值,进一步
减少系数值,同样可以降低比特率。
10. DCT 后的宏块还需要做一个运动补偿得到一个当前宏块的重建值,成为重建宏块。
注意重建宏块的值同原始宏块之间是有一定误差的。运动估计的时候,是为当前宏块在
前一个重建帧中寻找一个最匹配宏块,这样做的目的是为了能跟解码端统一起来。因为
解码端得到的只能是重建帧。
11. Bitstream forming模块。我们来仔细看看这个模块,看看我们需要的码流究竟是如何形
成的。码流是由一个码流头开始的,然后才是具体的帧。因此,在具体编码之前,Bitstream
forming 模块首先向输出流文件中写入码流头信息。然后开始写入第一帧的内容,每一
帧开始也有一个帧头信息,帧头信息同当前的编码内容是紧密相关的,后面的帧数据必
须完全符合帧头信息中规定的一些特性。譬如当前帧的量化值,运动补偿的搜索范围等。
接下来就是具体的帧数据了,帧数据是按照宏块组织的。宏块内容包含当前宏块的编码
信息,例如当前宏块是否编码,宏块编码类型等,接着是运动矢量的数据,最后是具体
6 个块的数据。当前帧所有宏块的信息都写入到输出流文件后,紧接着是下一个帧的
数据,如是循环,直到所有帧编码完成。
以上是编码的大致过程,看了之后我们对MPEG4的标准码流有一个比较基本的认识,
对我们理解后面的码流的语法语义可能会有比较大的帮助。
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc

阅读全文
0 0
原创粉丝点击