This Domain(Admin5.com) is for Sale:

GPU视频处理详析(去除马赛克的诀窍)

时间:2008-04-11  来源:收集  作者:TUPS

随着互联网的发达,在线视频VOD点播的普及,视频回放能力越来越受重视,显示芯片厂商对于视频能力的宣传也不遗余力,但是汇总起来对比感觉非常混乱,名词又非凡多,比如Fullstream,PureVideo等,本文讨论的就是视频回放的一些原理和要点,希望能给用户一点帮助。对于视频回放而言,硬件加速能力,插值补偿能力,色彩还原和调节能力以及软件支持都是决定因素。

一.硬件加速
从NVIDIA 近来力推的PureVideo来说起吧,NVIDIA在视频处理方面用上了两千万晶体管这个规模,正好一块GeForce 2 MX400芯片的晶体管规模;在不算上这些晶体管总量已经破两亿规模的情况下和ATI 将来的同系列产品(对于6800而言就是X800系列)对抗成本会相当不利,尤其是双方势均力敌的时候,下面就来看看这两千万晶体管到底葫芦里卖的是什么药。



上图就是NV4X的视频部分的概图,在GPU中视频处理单元被划分为三个处理部分:视频处理器(Video Processor),MPEG2解码器(MPEG2 Decoder),运动估算器(Motion Estimator),三个部分连在一个仲裁器上(Arbiter)。

其中,MPEG2 解码器的作用顾名思义,用来硬件解码MPEG2视频的,包括了DVD和MPEG2编码的HDTV(720p/1080i/1080p)等视频。

织梦内容管理系统




图中示意的是MPEG2压缩视频处理流程,在NV4X GPU中绿色部分由GPU完成处理器中,其中 IDCT(Inverse Discrete Cosine Transformation反向离散余弦变换)和Motion Compensation(运动补偿,简称MC)。前者是DCT的逆运算,DCT的处理针对图像数据在空间上的冗余的,压缩图像的时候是逐8*8像素单元处理的,为的是把矩阵的能量集中到矩阵的左上角,便于压缩(矩阵大部分是0),浮点运算量不小,其逆运算亦然;后者是针对视频流的时间冗余的,连续图像中相同的部分就是冗余,运动补偿就像画动画的时候,经常使用的方法一样:要画主角说话,一般就是好几张图区别只有嘴型,于是除了嘴以外的部分可以“偷懒”不画,直接“复制粘贴”,在这几张图中光画不同的嘴即可,画的时候省去的工作,在压缩的时候也可以省去。运动补偿要做的就是找出嘴各个部位在动的时候和前一张图的同部分的相对位置(即运动矢量),由于计算机识别图像快匹配不像人眼观察那样,所以计算比较复杂,运算量也不小,在视频回放的时候,根据压缩的时候记录下来的运动矢量和不变的“背景图”,“画”出连续的视频帧来。这两个运算占了解压DVD的大部分工作,因为这两个处理前的数据流都是比较简单的矩阵,之前的行程编码(RLE),反量化(量化是有损压缩的要害,画质损失主要在这里)等处理轻松不少。
织梦内容管理系统


这两部分运算交给GPU现在相当普遍了,当初最早在显示适配器上集成硬件IDCT和硬件运动补偿(MC)的就是闻名的SIS 6326DVD(Dx版和Cx版,让K6 233这样的CPU也能看DVD),然后就是ATI Rage128,这两款显卡系列当初靠这个能力赢得了不少用户的亲睐;INTEL的810和815板载显卡都硬件支持了MC,NVIDIA在 GeForce 256后开始支持硬件MC,MX440后又加入了硬件IDCT,比起SIS和ATI,NVIDIA过去的视频能力,的确很不怎么样。在NV4X的 PureVideo中,MPEG2 Decoder就是用来处理MPEG2视频文件的IDCT和MC运算的。

其他部分主要还是改善视频效果作用的,De-Interlacing最早Banshee就有了,消除隔行问题处理不好轻易导致清楚度不行,一般有Bob和Weave两种方式, ATI从Radeon DDR开始引入Adaptive Pre-Pixel De-Interlacing,即可适应逐像素除交错,在NVIDIA的PureVideo中也有,像素着色器(Pixel Shader)对以前的除交错方式进行修正(Radeon 中的确就有Pixel Shader,只是版本很老,在3D游戏中不实用),PureVideo中引入的是Spatial-Temporal Adaptive Per Pixel De-Interlacing。去马赛克和后处理和插值补偿关系很大了,在后文中有具体描述。

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容