【一】H.264/MPEG-4 Part 10 White Paper 翻译之 Overview of H.264
翻译版权所有,转载请注明出处~
xzrch@2018.09.14
---------------------------------------------------------------------
1.介绍
随着数字电视和DVD视频的出现,广播电视和家庭娱乐已经发生了革命性的变化。视频压缩技术的标准化使这些和其他更多应用的实现成为了可能。 MPEG系列的下一个标准,MPEG4,正在催生新一代基于互联网的视频应用,而与此同时ITU-T H.263视频压缩标准也已广泛用于视频会议系统。
MPEG4(视觉部分)和H.263是基于视频压缩(“视频编码”)技术的标准。 负责这些标准的团体,运动图像专家组(Motion Picture Experts Group)和视频编码专家组(Video Coding Experts Group)(即MPEG和VCEG)正处于开发新标准的最后阶段,该标准有望在表现上显著优于MPEG4和H.263,从而更好地压缩视频图像,同时提供支持高质量、低比特率流媒体技术的一系列功能。 新标准“高级视频编码”(AVC)的历史可以追溯到至少7年前。
在1995年完成最初的视频通话标准H.263后,ITU-T视频编码专家组(VCEG)开始研究两个更进一步的领域:为H.263提供附加功能的“短期”工作(成果是标准的第2版) 和为低比特率视频通信开发新标准的“长期”工作。后者产生了“H.26L”标准草案,提供了比以前的ITU-T标准好得多的视频压缩效率。 2001年,ISO运动图像专家组(MPEG)认识到H.26L的潜在优势,成立了联合视频组(Joint Video Team,JVT),其中包括来自MPEG和VCEG的专家。JVT的主要任务是将H.26L“模型”草案进一步制定为完整的国际标准。实际上,结果最终是两个完全相同的标准:ISO MPEG4 part 10 和 ITU-T H.264。新标准的“官方”名称是高级视频编码(AVC)。然而,它拟定时的旧名字,H.26L和其国际电联文件编号H.264 [1] 最终却广为人知。
2. H.264编解码器
与早期标准(例如MPEG1,MPEG2和MPEG4)一样,H.264草案标准没有明确定义一个具体的编解码器(即encoder / decoder对)。 相反,该标准只定义了已编码视频比特流的语法和解码该比特流的方法。 然而在真正实践中,兼容的编码器和解码器很可能需要包含图2-1和图2-2中所示的功能元件。有一点需要说明的是,虽然图中所示的这些功能可能是满足合规性所必需的,但编解码器的结构仍有相当大的可变化空间。 基本功能元素(预测,变换,量化,熵编码)与以前的标准(MPEG1,MPEG2,MPEG4,H.261,H.263)略有不同,H.264中的重要变化发生在每个功能元素的细节当中。
编码器(图2-1)包括两条数据流路径,一条“前向”路径(从左到右,以蓝色显示)和一条“重建”路径(从右到左,以洋红色显示)。 解码器中的数据流路径(图2-2)从右到左显示,以说明编码器和解码器之间的相似性。


2.1 编码器(前向路径)
输入帧Fn作为编码对象用于编码。以宏块(Macroblock)为单位处理帧(对应于原始图像中的16×16像素), 每个宏块以帧内(Intra)或帧间(Inter)模式编码。 在任一情况下,都基于一个重构帧(Reconstructed Frame)生成预测宏块P。 在帧内模式中,P由当前帧n中的采样点生成,n先前已经编码、解码和重构(即图中的uF'n;注意用于生成P的是未经滤波(Unfiltered)的样本)。在帧间模式中,P由来自一个或多个参考帧的运动补偿预测生成。在上述两幅图中,参考帧为先前编码的帧F'n-1; 然而,每个宏块的预测值可以由已经编码和重建的一个或两个过去或未来帧(按时间顺序)生成。
从当前宏块中减去预测P以产生残差或差异宏块Dn。 对其进行变换(使用块变换)并量化以算出X,一组量化的变换系数。 这些系数接下来被重新排序和熵编码。 熵编码系数与解码宏块所需的辅助信息(诸如宏块预测模式,量化器步长,描述宏块如何被运动补偿的运动矢量信息等)一起形成压缩比特流。然后被传递到网络抽象层(NAL)以进行传输或存储。
2.2 编码器(重建路径)
对量化的宏块系数X进行解码,目的是重建一个用于编码其他宏块的帧。 系数X被重新缩放(Q-1)和逆变换(T-1)以产生差异宏块Dn'。 这与原始差异宏块Dn不同。量化过程引入了损耗,因此Dn'是Dn的失真版本。将预测宏块P和Dn'相加以创建重构宏块uF'n(原始宏块的失真版本)。接下来用滤波器减少阻塞失真的影响,并且从一系列宏块F'n创建重构的参考帧。
2.3 解码器
解码器会从NAL接收压缩后的比特流,然后对数据元素进行熵解码和重新排序以产生一组量化系数X。接下来对它们进行重新调整和逆变换以算出Dn'(这与编码器中所示的Dn'相同)。使用从比特流解码的头信息,解码器创建预测宏块P,其与在编码器中形成的原始预测P相同。 将P加到Dn'上得到uF'n,对其进行滤波以产生解码的宏块F'n。
从图中和上面的讨论中应该能看出,编码器中重建路径的目的是确保编码器和解码器使用相同的参考帧来创建预测P。如果不这样做的话,预测编码器和解码器中的P将不相同,导致编码器和解码器之间的误差或“漂移”增加。
3. 参考文献
1 ITU-T Rec. H.264 / ISO/IEC 11496-10, “Advanced Video Coding”, Final Committee Draft, Document JVTE022,September 2002
【一】H.264/MPEG-4 Part 10 White Paper 翻译之 Overview of H.264的更多相关文章
- 【二】H.264/MPEG-4 Part 10 White Paper 翻译之 Prediction of Intra Macroblocks
翻译版权所有,转载请注明出处~ xzrch@2018.09.14 ------------------------------------------------------------------- ...
- H.264 White Paper学习笔记(一)总览
H.264 White Paper对于264编码器的原理讲的比较透彻,在阅读学习的时候收获很大,这份文献网上有很多了,也有不少人翻译,不过想要理解更清楚我觉得还是得看英文原版的. 首先看一下白皮书里给 ...
- Core Java Volume I — 1.2. The Java "White Paper" Buzzwords
1.2. The Java "White Paper" BuzzwordsThe authors of Java have written an influential White ...
- Ethereum White Paper
https://github.com/ethereum/wiki/wiki/White-Paper White Paper EditNew Page James Ray edited this pag ...
- nVIDIA SDK White Paper ----Vertex Texture Fetch Water
http://blog.csdn.net/soilwork/article/details/713842 nVIDIA SDK White Paper ----Vertex Texture Fetch ...
- EOS.IO Technical White Paper v2
[EOS.IO Technical White Paper v2] Abstract: The EOS.IO software introduces a new blockchain architec ...
- H.264 / MPEG-4 Part 10 White Paper-翻译
1. Introduction Broadcast(广播) television and home entertainment(娱乐) have been revolutionised(彻底改变) b ...
- H.264 White Paper学习笔记(二)帧内预测
为什么要有帧内预测?因为一般来说,对于一幅图像,相邻的两个像素的亮度和色度值之间经常是比较接近的,也就是颜色是逐渐变化的,不会一下子突变成完全不一样的颜色.而进行视频编码,目的就是利用这个相关性,来进 ...
- 2013=10=19 ENGLISH 翻译
数据结构习题及答案 严蔚敏_课后习题答案 http://www.doc88.com/p-243584884293.html 273089354 随着女性获得平等权力的趋势,女性日渐增长的经济权力以及为 ...
随机推荐
- 怎么在一台电脑上安装win7与centos7双系统
对于用习惯windows系统的小伙伴们来说,好像Linux系统的命令操作感觉会比较神秘,进而有部分小伙伴就想说也学一学LInux操作系统.但是苦于资源的问题--就一台计算机,一块硬盘,担心说如果安装了 ...
- [iOS]AVSpeechSynthesizer语音合成
#import <AVFoundation/AVFoundation.h> // 初始化方法 AVSpeechSynthesizer *speech = [[AVSpeechSynthes ...
- python_frm组件
一.URL添加 from django.contrib import admin from django.urls import path,re_path from app01 import view ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 018-020
终于一周有这么一天能够安静下来好好学习打打题,还是很美滋滋的哈哈~加油加油~ ------------------------------------------------L1-018------- ...
- 控制台打印九九乘法表(for循环的使用)
控制台输出九九乘法表 for(int i=1;i<=9;i++){ for(int j = 1; j <= i; j ++) { System.out.print(j+"*&qu ...
- 前端基础-jQuery的动画效果
阅读目录 隐藏 显示 切换 下拉 上卷 显示 一.jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局, ...
- Redis 之江湖遇险-复制运维及优化
一. 前言 上一篇Redis 之深入江湖-复制原理中说了复制的原理,那么在理解复制原理之后,还要知道在这复制功能的背后,还有哪些坑要注意一下,毕竟坑是要跳过去的,而不是跳进去的. 二. 读写分离的一些 ...
- thinkPHP写txt日志文件
file_put_contents(DATA_PATH.'文件名.txt', '收到请求:' . date('Y-m-d H:i:s') . PHP_EOL . '通知信息:' . $显示的变量名. ...
- Zeta--S3 Linux优化/缩短开机时间
U-Boot1)axp20_set_ldo3实现里面把两个__msdelay(200);去掉,节省400ms2)sys_config.fex把下面的used设置为0,不使用开机指示灯闪烁,可以省掉35 ...
- SSL&TlS握手
SSL/TLS简介 •SSL:安全套接字层(secure socket layer) •TLS:传输层安全协议(transport layer security) SSL和TLS都是加密协议,旨在基于 ...