mpeg2 mpeg4 h264 difference fr net

来源:互联网 发布:base64 c语言 编辑:程序博客网 时间:2024/04/28 03:04
2012-06-18 10:00

MPEG2、MPEG4、H264的差异

1) 在MPEG2和H264里面,存在着picture的概念,而每一个picture可以是field,也可以是frame, 也称为PAFF (picture adaptive field frame)。在MPEG2里面,如果场按照帧编码,则可以采用frame type DCT,或者field type DCT; 而在mpeg4里面,只有VOP,而这个VOP只能是一个frame,不管是progressive还是interlaced

2) 在MPEG2和MPEG4里面,在interlaced的情况下,都存在field prediction和 frame prediction,并且对应的是frame type DCT和field type DCT, 并且都是以一个宏块为基础的; 在H264中,也存在这种类似的结构,但是这种处理的结果是以宏块对(MB pair)为基础的;  

3) MPEG2中,运动估计的精度是1/2的像素,通过线性插值实现(可能有简单修正); H264和MPEG4 都可以支持1/4像素的精度, 但是插值滤波器不同,在MPEG4里面是简单的线性插值,而H264里面是5抽头的滤波器; 

4) MPEG2中参考图象是以前解码的I帧或者P帧,至多两个图像,都是最近解码出来的; MPEG4中的参考图象是以前解码的I帧或者P帧,但是参考图象不能是not_coded=1的P帧,H264中的参考图象个数随着不同的编码器设置的不同而不同;并且每一个宏块可以参考不同的参考图象;  

5) MPEG2的运动矢量预测只是简单的采用前一个宏块的运动矢量作为预测的基础,MPEG4的运动矢量预测和周围的三个block有关,采用中值作为预测的结果。H264的运动矢量预测具有和MPEG4类似,但是更加复杂 

6) MPEG2没有INTRA预测,但是有DC参数预测,MPEG4没有INTRA预测,支持DC预测,并且支持两个AC参数的预测。H264支持INTRA预测,共有9种模式  

7) MPEG2运动矢量,每一个宏块最多有4个运动矢量(这是在宏块基础上的采用field prediction,或者MC16*8模式,或者是dual prime模式) ,MPEG4最多有8个运动矢量,支持INTRA, INTER, INTER+4V, 也就是运动矢量的块大小有16*16, 8*8,或者16*8 (也就是field prediction);H264的运动矢量相对更多,可以支持的块大小为4X4, 4*8,8*4,16*8, 8*16,16*16,这些都可以作为运动估计的块大小;  

8) MPEG2没有环内deblocking工具,MPEG4有deblocking工具,但是属于postprocessing; H264有环内deblocking工具  

9) MPEG2和MPEG4都支持scalable方式,MPEG4的精细度可以做得更小;H264支持Data partition方式,MPEG2/MPEG4也是支持  

10    MPEG4提供了重同步功能和RVLC

11    H264提供基于上下文的CAVLC和CABAC 。MPEG2/MPEG4则都是基于huffman,并且头部的语法相对比较简单,很少使用变长码; 

12) MPEG2/MPEG4都是分层结构,H264则是提供NAL单层结构,提供参数集合的形式,并通过指针来指定  

13) MPEG2和MPEG4都采用标准的DCT变换,变换大小为8x8,容易出现matching drift现象,因此,变换过程需要进行失配处理;H264可以采用4*4和8*8(high profile之后)的整数DCT变换,附带一些hadamard比变换,以提供更好的解相关的能力。 

14)MPEG2不支持无限制运动矢量(也就是运动矢量能够指向图象的外面),H264和MPEG4都支持无限制运动矢量,但是此时必须进行扩边处理