H.264不是明确的规定一个编解码器如何shixian ,而是规定一个编码视频得到比特流的方法以及解码这个比特流还原视频的方法。
下面展示出264的编码器和解码器大致结构
编码器结构

解码器结构

不能说和265、266一模一样,只能说完全一样
总的说一下编码顺序:
拿到一个视频帧之后先将其切块,对每一个视频块进行帧内/帧间预测得到当前视频块的预测值P,这个P和当前视频块的原始值Fn相减得到预测残差Dn,把预测残差进行变换量化熵编码得到比特流。此外呢,在变换量化之后,还会反量化反变换得到重建的预测残差D'n,D'n和预测值P相加得到重建值uF'n,这个uF'n用于帧内预测过程,把uF'n给滤波一下,得到重建值F'n,在解码器那边重建出来的F'n和编码器这边的F'n是一样的。
解码顺序简单来说就是把编码反过来,通过熵编码量化变换过程把bit翻译成预测残差值,这个是重建的值,对应于编码段的D'n,然后P和D'n相加得到重建值uF'n,再滤波得到最后的重建值F'n。
总的来说,新的标准是把每个模块给搞复杂了,从而实现在得到相同的视频重建质量的前提下消耗更少的bit用于编码。
264有一些不再被265和266使用的名词,下面解释一下264中常见的名词
1)场和帧
视频的一场或一帧可用来产生一个编码图像。通常,视频帧可以分成两种类型:连续或隔行的视频帧。在电视机上往往把一阵分成两个隔行的场,书里解释是为了减少大面积闪烁现象(这啥意思?)。场内临行之间的空间相关性较强,帧内临近行空间相关性强,活动量较小或静止的图像宜采用帧编码方式,活动量较大的运动图像则宜采用场编码方式。
2)宏块、片
一个编码图像通常被划分为若干个宏块,一个宏块包含16x16像素的亮度分量和8x8像素的色度分量。在每个图像中,若干宏块被排列成片的形式。
I片只包含I宏块,P片包含P和I宏块,B片包含B和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 宏块则利用双向的参考图象(当前和未来的已编码图象帧)进行帧内预测。
3)档次和级
H.264 规定了三种档次,每个档次支持一组特定的编码功能,并支持一类特定的应用。
1)基本档次:利用I 片和P 片支持帧内和帧间编码,支持利用基于上下文的自适应的变长编码进行的熵编码(CAVLC)。主要用于可视电话、会议电视、无线通信等实时视频通信;
2)主要档次:支持隔行视频,采用B 片的帧间编码和采用加权预测的帧内编码;支持利用基于上下文的自适应的算术编码(CABAC)。主要用于数字广播电视与数字视频存储;
3)扩展档次:支持码流之间有效的切换(SP 和SI 片)、改进误码性能(数据分割),但不支持隔行视频和CABAC。
914

被折叠的 条评论
为什么被折叠?



