H264/AVC 编解码器框架
2015-07-30 10:58
295 查看
阅读完H264/AVC 编解码器的介绍,脑海中只是留下以下三条:
1、H264并没有明确规定一个编解码器如何实现,只是规定了一个编码后的视频比特流的句法,和该比特流的解码方法,这个与MPEG 相似。
2、H264和以前的标准(如H261、H263、MPEG-1、MPEG-4)的编解码器实现流程没有太大区别,主要的不同在于各功能块的细节。
3、H264就是利用实现的复杂性获得压缩性能的明显改善。(至于复杂度的评估,以后会介绍)
下面介绍一下H264的编码器框图:
编码器采用的仍是变换和预测的混合编码法。在图6.1中,输入的帧或场Fn以宏块为单位被编码器处理。首先,按帧内或者帧间预测编码的方法进行处理。如果采用帧间预测编码,其预测值PRED是由当前片中前面已编码的参考图像经运动补偿(MC)后得到,其中参考图像用F'n-1表示。预测值PRED和当前块相减后,产生一个残差块Dn,经块变换、量化后产生一组量化后的变换系数X,再经熵编码,与解码所需的一些头信息一起组成压缩后的码流,经NAL(网络自适应层)供传输和存储用。
H264的解码器框图:
在图6.2中,将编码器的NAL输出的H264比特流经熵解码得到量化后的一组变换系数X,再经反量化、反变换,得到残差D'n。利用从该比特流中解码出的头信息,解码器就产生一个预测块PRED,它和编码器中的原始PRED是相同的。当该解码器产生的PRED与残差D'n相加后,就得到了uF'n,再经滤波后,最后就得到滤波后的解码输出图像F'n。
*以上的图片来自《H264 AND MPEG-4 VIDEO COMPRESSION》
1、H264并没有明确规定一个编解码器如何实现,只是规定了一个编码后的视频比特流的句法,和该比特流的解码方法,这个与MPEG 相似。
2、H264和以前的标准(如H261、H263、MPEG-1、MPEG-4)的编解码器实现流程没有太大区别,主要的不同在于各功能块的细节。
3、H264就是利用实现的复杂性获得压缩性能的明显改善。(至于复杂度的评估,以后会介绍)
下面介绍一下H264的编码器框图:
编码器采用的仍是变换和预测的混合编码法。在图6.1中,输入的帧或场Fn以宏块为单位被编码器处理。首先,按帧内或者帧间预测编码的方法进行处理。如果采用帧间预测编码,其预测值PRED是由当前片中前面已编码的参考图像经运动补偿(MC)后得到,其中参考图像用F'n-1表示。预测值PRED和当前块相减后,产生一个残差块Dn,经块变换、量化后产生一组量化后的变换系数X,再经熵编码,与解码所需的一些头信息一起组成压缩后的码流,经NAL(网络自适应层)供传输和存储用。
H264的解码器框图:
在图6.2中,将编码器的NAL输出的H264比特流经熵解码得到量化后的一组变换系数X,再经反量化、反变换,得到残差D'n。利用从该比特流中解码出的头信息,解码器就产生一个预测块PRED,它和编码器中的原始PRED是相同的。当该解码器产生的PRED与残差D'n相加后,就得到了uF'n,再经滤波后,最后就得到滤波后的解码输出图像F'n。
*以上的图片来自《H264 AND MPEG-4 VIDEO COMPRESSION》
相关文章推荐
- java常用代码及Linux常用命令
- Jsp在Web.xml中的配置
- Windows server 2008 R2 64位系统安装ZendOptimizer-3.3.0a-Wind
- HDOJ 5147 Sequence II 树阵
- 转---sqlserver 复制---订阅与发布(概念介绍比较好)
- 格而知之2:UIView的autoresizingMask属性探究
- linux内核之accept实现
- eclipse打成war包
- iPhone入门笔记01
- PHP json_decode的坑 仅仅支持utf-8编码的字符,gbk编码会返回null
- HDOJ 2041 超级楼梯(水题)(规律)
- 求二叉树的先序遍历 SDUT
- 关于sizeof的用法总结。
- extjs Grid的表头要跟着需求刷新
- envi几何校正
- 应用解决告诉你什么时候该用ajax
- ORACLE directory 目录--转载
- C++优先队列的用法与求集合的交集并集差集
- 1.1-查看系统负载
- openfire学习2