Chinaunix首页 | 论坛 | 博客
  • 博客访问: 770890
  • 博文数量: 370
  • 博客积分: 2334
  • 博客等级: 大尉
  • 技术积分: 3222
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-06 16:56
文章分类

全部博文(370)

文章存档

2013年(2)

2012年(368)

分类:

2012-06-26 20:49:41

原文地址:H.264 作者:zhengwenwei_123

H.264的编码规则就不看了——理论太深了。而且编码的部分呢不是我的责任,就是说VCL层不是我的责任,就专注NAL层。
H.264 的功能分为两层,即视频编码层(VCL)和网络提取层(NAL,Network Abstraction
Layer)。VCL 数据即编码处理的输出,它表示被压缩编码后的视频数据序列。在VCL 数据传输或存
储之前,这些编码的VCL 数据,先被映射或封装进NAL 单元中。
图像-片-宏块-块的级别:
1)场和帧
视频的一场或一帧可用来产生一个编码图像。通常,视频帧可分成两种类型:连续或隔行视频帧。
在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场。显然,这时场内邻行之间的空间相
关性较强,而帧内邻近行空间相关性强,因此活动量较小或静止的图像宜采用帧编码方式,对活动
量较大的运动图像则宜采用场编码方式。
2)宏块、片
一个编码图像通常划分成若干宏块组成,一个宏块由一个16×16 亮度像素和附加的一个8×8 Cb
和一个8×8 Cr 彩色像素块组成。每个图象中,若干宏块被排列成片的形式。
I 片只包含I 宏块,P 片可包含P 和I 宏块,而B 片可包含B 和I 宏块。
I 宏块利用从当前片中已解码的像素作为参考进行帧内预测(不能取其它片中的已解码像素作为
参考进行帧内预测)。
P 宏块利用前面已编码图象作为参考图象进行帧内预测,一个帧内编码的宏块可进一步作宏块的
分割:即16×16、16×8、8×16 或8×8 亮度像素块(以及附带的彩色像素);如果选了8×8 的子宏块,
则可再分成各种子宏块的分割,其尺寸为8×8、8×4、4×8 或4×4 亮度像素块(以及附带的彩色像素)。
B 宏块则利用双向的参考图象(当前和未来的已编码图象帧)进行帧内预测。

H.264 规定了三种档次,每个档次支持一组特定的编码功能,并支持一类特定的应用。
1)基本档次:利用I 片和P 片支持帧内和帧间编码,支持利用基于上下文的自适应的变长编码
进行的熵编码(CAVLC)。主要用于可视电话、会议电视、无线通信等实时视频通信;
2)主要档次:支持隔行视频,采用B 片的帧间编码和采用加权预测的帧内编码;支持利用基于
上下文的自适应的算术编码(CABAC)。主要用于数字广播电视与数字视频存储;
3)扩展档次:支持码流之间有效的切换(SP 和SI 片)、改进误码性能(数据分割),但不支持
隔行视频和CABAC。
H.264 的句法和语义
在编码器输出的码流中,数据的基本单位是句法元素,每个句法元素由若干比特组成,它表示
某个特定的物理意义,例如:宏块类型、量化参数等。句法表征句法元素的组织结构,语义阐述句
法元素的具体含义。所有的视频编码标准都是通过定义句法和语义来规范编解码器的工作流程。


阅读(827) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~