h264编解码结构框图

H264和以前的标准(如H261、H263、MPEG-1、MPEG-4)的编解码器实现流程没有太大区别,主要的不同在于各功能块的细节。

h264编解码结构框图_第1张图片

上面是编码框图

讲解:

Fn表示当前帧,编码的基本单元为宏块,对于一个宏块,可能采用帧内也可能采用帧间预测模式(I帧只有帧内模式)

 帧间模式:对当前图片的宏块在参考图片中进行搜索获得一个MV值,为运动向量,同时和参考帧中的MV相减

得到一个MVD称为运动补偿,编码时通过已经编码的参考图像经过运动补偿后得到当前宏块的预测值,和真实值相减后

得到一个残差块Dn,编码就是对这个残差块进行编码

帧内模式:当前宏块的预测是根据周围已经已经编码的宏块单元进行预测,通常是左边和上方的宏块(同一片内,已经解码。。。)

,编码时会根据周围宏块的预测模式,根据周围像素点预测出当前宏块的像素值,再与真实值相减获得残差块Dn,之后对残差块

进行编码

取得残差块后对其进行变换T,然后进行量化Q,送入NAL层

同时在X位置要进行反量化Q-1,反变换T-1然后和预测的Dn相加,经过滤波器得到当前帧重构的宏块,用于之后相邻宏块的帧内编码


h264编解码结构框图_第2张图片


上面是解码框图

和编码框图刚好相反

由NAL中获得码流数据X,经过反量化,反变换获得残差系数Dn

判断宏块是帧间或者帧内

帧间: 获取当前宏块的参考帧信息(从码流中进行熵解码获得),通过当前块周围的宏块信息,以及参考帧对应宏块的MV信息预测当前宏块的MV,

从解码流中获得MVD,根据MVD获得当前宏块在参考帧中对应的位置

通过亮度插值运算,色度插值运算,获得当前宏块的预测值再加上残差系数,获得当前宏块的预测值uFn'

帧内: 根据周围宏块结合解码流中的数据确定当前宏块的预测方式,根据预测方式和周围已解码宏块的信息得到预测值,加上残差系数,获得当前宏块的预测值uFn'


获得预测值后进行环路滤波进行重构,同样重构数据对于之后的宏块预测是有用的

你可能感兴趣的:(h264编解码结构框图)