zoukankan      html  css  js  c++  java
  • 【mpeg】MPEG-2与MPEG-1和H.261、H.264标准技术(工具集)区别分析

    Date: 2018.10.30


    1、参考

    H.261标准下载:https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-H.261-198811-S!!PDF-E&type=items
    或者 https://www.ic.tu-berlin.de/fileadmin/fg121/Source-Coding_WS12/selected-readings/14_T-REC-H.261-199303-I__PDF-E.pdf
    H.261相关资料:http://www.ics.agh.edu.pl/dydaktyka/mm/lato0405_inf_d/laboratoria/Kompresja/Kodeki/h261.pdf
    https://blog.csdn.net/u010837188/article/details/38554549

    2、MPEG-1 VS. H.261 VS. MPEG-2 vs. H.264
    • 视频源分辨率
      H.261只支持CIF和QCIF两种分辨率,MPEG-1支持SIF(352x240 for NTSC,352x288 for PAL)格式和CPS(Constrained Parameter Set)中的其他分辨率;MPEG-2标准支持更高的分辨率,比如D1,720P等。

    • 色度格式
      MPEG-1和H261只支持4:2:0色度格式,MPEG-2支持4:2:0,4:2:2和4:4:4三种色度格式。

    • 逐行或隔行编码方式
      MPEG-1和H.261标准只支持逐行编码,MPEG-2标准支持逐行编码和隔行编码。

    • 编码图像类型
      H.261中只有I帧和P帧;
      MPEG-1中在H.261的I帧和P帧的基础上引入了B帧和D帧;
      MPEG-2中的帧类型主要有I帧、P帧和B帧。

    • 编码码率
      H.261:40kbps~ 2Mbps
      MPEG-1: 最高大约1.5Mbps
      MPEG-2:3Mbps~100Mbps

    • 码流分层结构
      H.261中的码流分层结构比较简单,主要包括Picture,GOB(Group of blocks),MB(Macroblock)和block;
      MPEG-1和MPEG-2码流结构相似,不同于H.261中的GOB,引入了Slice的结构。

    • 量化
      H.261量化针对所有宏块采用相同的量化矩阵;
      MPEG-1和MPEG-2量化针对帧内编码和帧间编码采用了不同的量化表(量化矩阵)。

    • 运动矢量
      MPEG-2支持半像素精度的运动矢量,其中半像素值可以通过双线性插值获得。
      H.261中运动矢量的最大范围是+/-15像素,而MPEG-2支持半像素精度运动矢量范围为[-512, 511.5];整像素精度运动矢量范围为[-1024, 1023]。
      MPEG-2码流支持随机访问,通过每个时间编码的GOP的GOP层实现。

    • 宏块匹配像素精度

      MPEG2中,运动估计的精度是1/2的像素,通过线性插值实现(可能有简单修正);
      H264和MPEG4 都可以支持1/4像素的精度。

    • 参考帧

      MPEG2,MPEG4的P帧只能有一帧参考帧,B帧可以有两帧参考帧;
      H.264可以最多有15帧参考帧,一般情况下选择3-5帧作为参考帧。

    • 滤波器

      插值滤波器不同,在MPEG4里面是简单的线性插值,而H264里面是5抽头的滤波器;

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

      H264有环内deblocking工具。

    • I帧的编码

      MPEG2没有INTRA预测,但是有DC系数的预测;

      MPEG4没有INTRA预测,支持DC预测,并且支持两个AC参数的预测;

      H264支持INTRA预测,4*4共有9种模式。

    • 匹配宏块大小

      MPEG2最小匹配块尺寸为8*8;

      MPEG4同样也为8*8;

      H.264最小可以到4*4尺寸。

    • DCT变换的不同

      MPEG系列为8*8的DCT变换,逆变换时会出现漂移现象;

      H.264为整数4*4的DCT变换,而且直流系数经过HADMARD变换之后做的DCT变换,整数DCT变换可以防止逆变换时出现漂移现象。

    • 熵编码

      MPEG2/MPEG4则都是基于huffman,并且头部的语法相对比较简单,很少使用变长码;

      H264提供基于上下文的CAVLC和CABAC。

    • 码流结构

      MPEG2/MPEG4都是分层结构

      H264则是提供NAL单层结构,提供参数集合SPS,PPS,RPS的形式。

    • 量化参数的区别

      MPEG-2和MPEG-4提供31个量化参数(量化模式:常量化,系统默认量化矩阵,自定义量化矩阵);
      H264提供51个量化参数(量化模式:常量化,量化矩阵,自定义有否还不确定)。


    THE END!

  • 相关阅读:
    [ 随手记 4 ]C/C++ 模板(Template)使用/重载区别
    [ 随手记 3 ] 堆区/栈区/堆栈/队列
    [ 随手记 2 ] C/C++ 数组/指针/传数组到函数/指针数组/数组指针
    柯西方程的另外一种解法
    十分强大的CC抛物线定理(数学)
    模板_BIT
    模板_SEG_TREE
    模板_SPLAY
    模板_LCA
    NOIP游(GUNCU)记
  • 原文地址:https://www.cnblogs.com/SoaringLee/p/10532307.html
Copyright © 2011-2022 走看看