视频解码有四个步骤,分别是VLD(流处理)、iDCT(频率转换) 、MoComp(运动补偿)和PostProc(显示后处理,解码去块滤波Deblocking)。通常我们所说的硬件加速或硬件解码,就是指视频解码的这几个步骤中,用显卡专用的解码引擎替代CPU的软件计算,降低CPU的计算负荷。
显卡的硬件解码引擎
微软规定的显卡硬件加速标准为DXVA 2.0(DirectX Video Acceleration),它将显卡硬件加速级别从高到低划分为四个等级,顺序为:VLD>iDCT>MoComp>PostProc。主要包括和以上四个步骤对应的流处理(Bitstream Processing CAVLC/CABAC,前后自适应可变长度编码、前后自适应二进制算数编码)、逆变换(Inverse Transform)、运动补偿(Motion Compensation)、解码去块滤波(Deblocking)。其中VLD加速包含了全部四步,iDCT加速包含了MoComp和PostProc;MoComp加速包含了PostProc。而对H.264视频解码则加上了FGT(Film Grain Technology,电影胶片质感技术)后分为A~F的六个等级,F级的硬解级别高。
其实,无论是硬件解码还是软件解码,所进行的解码过程和解码结果都是完全一样的。他们的区别就是视频解码的工作是由处理器完成,还是由显卡来完成而已。因此,在理论上硬件解码和软件解码的效果应该是完全一样的。但是,也的确有用户在开启和关闭硬解码之后发现明显的画质区别,这个关键在于后一个解码步骤PostProc(显示后处理,解码去块滤波操作Deblocking)。Deblocking的意思为解码去块,能够消除H.264压缩编码可能产生的马赛克现象,真实地还原视频图像。Deblocking对处理器提出了较高的要求,早期的GeForce 6/7或Radeon X1000显卡在开启显卡硬件加速的状态下就会关闭解码去块滤波操作Deblocking,这时播放一些影片会看到较明显的马赛克现象,明显影响画面质量。而在其它编码格式的高清视频中,则没有相关的问题。
Core AVC 中,对于Deblocking的选项设置。
目前,GeForce 8系列和Radeon HD 2000系列以后的显卡默认是开启Deblocking解码去块滤波操作的。PowerDVD的解码器会根据显卡对于H.264编码的解码能力,来相应作出不同的Deblocking设定。上一代显卡能力不足,就会关闭Deblocking来保证播放速度。
Deblocking忽略后,画面出现了不明显的马赛克。
而目前的新显卡解码能力足够,就可以开启Deblocking来获得好的画质。在CoreAVC H.264 Video Codec软件中,关于Deblocking有三个选项,分别是Standard Deblocking、Skip B-Frame Deblocking和Skip All Deblocking。第一个选项是标准的Deblocking,保证良好的画面质量,要求较高的处理器性能。如果处理器配置不高的话,建议启用Deblocking,它会放弃B帧的Deblocking。如果是单核处理器,建议选Skip All Deblocking,不做Deblocking,可提高解码速度20%以上,用降低画质来换取高速度的解码。