标题：视频加速
视频加速的起源
由于当时的CPU和显卡性能有限，如果想通过计算机观看VCD级别的电影，就需要额外为计算机添加这样一块板卡，才可以实现。家用电脑的视频加速一词，大概就起源于与哪个时代。
在586到来之时，CPU的性能得到了很大发展，特别是在Intel推出具备MMX多媒体指令集的奔腾（Pentium）1代时，家用电脑已经具备一定的的多媒体性能。这是，已经可以不依靠专门的“视频加速卡”，只依靠软件，就可以进行VCD品质的视频回放。此后，通过软件方式的视频加速技术，也在不断发展。
并且多媒体时代来临之际，显卡的性能也有了长足发展，极大的促进了多媒体的普及与应用，特别是后来飞速发展的电脑3D游戏，以及MPEG-2、MPEG4、HDTV高清视频等媒体应用，使得性能再强的CPU，也难以应对，而显卡的发展，恰到好处的补充了CPU在这方面的不足，从而使得显卡在电脑中的地位，不断提升。
视频加速的分类
可以分为硬件加速和软件加速
硬件加速简而言之，硬件加速就是利用硬件模块来替代软件算法以充分利用硬件所固有的快速特性，以增强计算机的视频性能。
视频播放方面
在视频加速领域，显卡一直扮演着重要的角色，从MPEG-1到MPEG-2，再到如今的H.264和VC-1，显卡一直肩负着为CPU“减负”的重任，而这其中又经历了长期和曲折的发展，现在就让小编带大家回顾一下显卡视频硬件加速的发展历史。 
Intel的ClearVideo技术　　
作为整合图形领域份额最多的厂商，英特尔在GMA X3000整合图形核心中带来了称作ClearVideo的视频加速技术，由于整合图形核心面积和功耗所限，ClearVIdeo只能提供对MPEG-2视频标准的iDCT硬件加速。这就意味着我们在回放H.264或者VC-1视频的时候，整合图形核心的硬件加速功能(从某种程度上来说)完全派不上用场。据Intel透露，ClearVideo硬件解码加速功能在整合图形核心内部并没有单独的逻辑单元，而是通过对图形核心的矩阵单元重新编程来实现的。这意味着相对于PureVideo和AVIVO来说，ClearVideo技术的实现成本几乎可以忽略不计。在未来，英特尔也很可能通过改进驱动让ClearVideo技术支持H.264或者VC-1硬件解码加速，但当前来看ClearVideo与其它技术相比并不具备什么优势。在媒体播放器市场上WinDVD 7*、PowerDVD 7等播放软件均支持ClearVideo的加速功能。[1]
S3 Trio64 V+：MPEG-1硬件加速显卡代表
1993年随着CD影像化的成功，采用MPEG-1编码的VCD诞生了。而此时的计算机正处于486的时代，CPU的性能还不足以支持VCD的MPEG-1的完全编码和解码，在这种形势下，诸多厂商纷纷推出了MPEG硬件解压卡，风靡一时。MPEG硬解压卡是专用于MPEG-1解码和回放的硬件设备，能独立的完成对MPEG-1的解码工作，而不受CPU等其他部件性能的限制。但随着CPU性能的飞速提升，以及显卡开始加入MPEG-1视频加速功能，MPEG硬件解压卡不可避免的被淘汰。
在早期支持MPEG-1硬件加速的显卡当中，最知名的莫过于S3的Trio64 V+了。
ATI 3D Rage Ⅱ+DVD：最早支持MPEG-2硬件加速
  ATI 3D Rage Ⅱ+DVD　　DVD采用MPEG-2编码，诞生于1995年。ATI在1997年初推出的3D Rage Ⅱ+DVD显卡，是业界第一款支持MPEG-2硬件加速的显卡产品，其内置的具有硬件运动补偿功能的图形芯片，将CPU从软件解码MPEG-2的繁重工作中解放了出来，让ATI成为DVD加速领域的先行者。
近几年，H.264和VC-1这两种新一代高清编码格式被确立，其解码过程大致分为四个步骤：流处理、逆向转换、动态补偿、解码去块。现有的CPU面对如此复杂的解码工作又一次力不从心，高清解码的任务随着显卡硬件解码技术的完善，再次交由显卡来接替了。
NVIDIA GeForce 6600系列：最早支持高清部分硬件加速
  NVDIA GeForce 6600系列　　最早的支持高清硬件加速的显卡是NVIDIA于2005年11月推出的GeForce 6600系列，可以实现H.264和VC-1的解码部分过程加速（逆向转换、动态补偿、解码去块），但对于最耗费处理器资源的流处理部分却并没有给予支持。
NVIDIA GeForce 8600/8500系列：最早支持H.264全程硬件加速
随着高清影片日益普及，支持高清解码全程硬件加速的产品终于诞生。先期诞生的产品实现了H.264全程硬件解码，是NVIDIA于2007年4月推出的GeForce 8600/8500系列。
8600/8500系列支持了H.264编码的全程硬件加速，但是却没有支持VC-1编码的全程硬件加速，其实这对于NVIDIA而言在技术上并不难实现，只是NVIDIA认为VC-1解码要求相对不算太高，因此显卡只要维持能部分加速的水平就可以了。
ATI Radeon HD 2600/2400系列：最早支持VC-1全程硬件加速
  ATI Radeon HD 2600/2400系列　　于2007年5月份发布的ATI Radeon HD 2600/2400系列显卡，实现了同时支持H.264编码和VC-1编码的全程硬件加速。因此2600/2400系列不仅是最早实现VC-1全程硬件加速的显卡，也是最早同时支持VC-1和H.264两种格式全程硬件加速的显卡。
3D初频加速

视频加速在专业领域的应用
说起专业绘图卡，大家有什么感觉呢？是不是“哇，好神圣！买不起！和我没关系！...”的敬而远之的态度呢？呵呵，其实 3D 加速卡最初是在专业领域发展起来的。我们现在用到的游戏卡，只不过是一种“军转民”的产品罢了。所以，在了解到 3D 游戏卡的同时呢，我们大家也因该对它的前身—专业 3D 绘图卡有所了解。好了，让我们来看专业绘图卡的职责。
大家来想象一下，如果游戏中所有的三角形，都不去填充，而只用直线把它们的三个边画出来… 你会看到什么？？哇，乱死了！是乱七八糟的一堆… :wacko: 呵呵，这就是 3D 绘图人员每天所面对的东西[4]。
一、线筐的世界在专业领域，图形设计者往往要求不单看到物体的表面颜色和材质，更要求看到物体内部的结构和精确的形状轮廓。这样呢，花里胡哨的纹理贴图和材质不仅不能起到应有的作用，反而还会干扰设计者对形状的掌握。所以，快速，精确，大量的绘制线条就成了专业绘图卡的“基本功”了 呵呵。
两点确定一条直线，所以在专业领域，物体不一定要用三角形来表示也一样可以被编辑和显示出来。所以专业绘图更偏向于使用四边形来绘制物体。这样一来看起来整齐，二来容易和外部的一些采集设备，比如 3D 扫描仪的数据接口。
在绘制游戏的过程中，要用少量的三角形，加上大量的纹理贴图来绘制场景。由于纹理贴图的读取和颜色运算占绝大多数处理时间，所以游戏卡的显存带宽和像素处理能力就显得非常重要，导致现在出现了 4 条 乃至 8 条 像素管线并行运作的显卡，和高达 256bits, 20GB/s 的显存带宽。
而在只绘制线筐这种情况下，专业绘图卡的工作模式以及瓶颈分布也和游戏卡有所不同了：在专业软件的编辑窗口里，线条填充了所有空间。专业绘图卡需要可以接受的速度处理数量巨大的顶点数据，而这些数据量，通常都在游戏场景的成千上万倍。而画线的过程相比顶点的处理过程，就显得比较轻松了。这种工作方法，使得专业绘图卡需要有非常强劲的顶点处理能力。这点，在顶点处理能力相似的显卡专业性能也相近的表现中也能看得出来。
既然画线条是主要任务，人们当然想让专业卡把它的主要任务完成的更好。所以，人们想到了用一种方法来让画出来的线更漂亮： 
二、线筐反锯齿 (Anti-Aliased Lines)现在打开 Windows 的 画笔 画一条斜线，你看到了什么？(当然是线啦）你看到的是锯齿！其实斜线也是由很短的水平或竖直的线段组成的。这个就是线段光栅化的缺点。怎么才能让画出来的线更平滑，更漂亮呢？这就要用到光栅化的高级技巧了：浮点坐标光栅化法则(Floating Point Coordinate Rasterization: 具体的名字可能不是这样的，不过这个名字绝对能说明问题！)。以往，在画线的时候，都要把线段顶点的坐标先转换成整数，再画在屏幕上，比如( 124.5, 11.2 ) => ( 125, 11 )。因为屏幕上像素的坐标都是整数的，所以这种方法简单快速，可是画出来的线就是那样的充满锯齿… 
而浮点光栅化法则呢，就是把浮点数表示的坐标直接映射到屏幕上，而取该点邻近的四个像素做颜色的权重分配（最复杂的地方哦，别急，我来慢慢讲）：比如线上有一个点，它的坐标是 ( 124.5, 11.2 )。那么我们来取这邻近四个点：( 124, 11 ), ( 125, 11 ), ( 124, 12 ), ( 125, 12 )。而用坐标的小数部分表示该点的权重的话，四个点的颜色浓度分别是这样的：
( 124(0.5), 11(0.2) ) : 50% * 20% = 10%, ( 125(-0.5), 11(0.2) ) : 50% * 20% = 10%；
( 124(0.5), 12(-0.8) ) : 50% * 80% = 40%, ( 125(-0.5), 12(-0.8) ) : 50% * 80% = 40%；
这样，就把一个浮点坐标映射到了四个整数坐标上，由于色彩的浓度是随浮点坐标在整数坐标映射的权重来计算的，所以整个线就变得非常的平滑了。
我上面介绍的只是反锯齿光栅化的方法之一，有很多种更快速的方法已经被广泛的使用了。由于这些方法涉及到的知识太专业了，所以我就不再多做引申了（其实有的我也不很清楚…）。线筐反锯齿在新型专业绘图卡里做了良好的优化，所以使用专业绘图卡时，可以通过使用线筐反锯齿而得到更清晰精确美观的线筐效果图。
三、专业 OpenGL 和后起之秀 D3D8/9说到专业绘图卡，我就不能不提起 OpenGL。OpenGL 是什么？你首先想到的一定是 Open Graphics Library 是由 Silicon Graphics Inc. 于 1992 年提出的专业绘图接口。它被广泛的应用在了几乎所有的计算机绘图领域。包括 SGI, DEC, IBM, PC 和MAC 等等，都提供了对它的支持，所以说 OpenGL 是一个跨平台的专业绘图接口。大家平常玩的游戏里使用的 OpenGL，只是整个 OpenGL 绘图库函数的很小很小一部分，而这一部分足以让我们的广大玩家体验惊心动魄的 3D 世界了！呵呵。
既然这么神，那么支持它的软件肯定不少喽！对了。像 3dsmax, Maya, SoftImage 这PC 3D 制作工具的“三巨头”就提供了对 OpenGL 图形接口的支持。既然是接口，也就代表了“与硬件无关的隔离层”。所以专业绘图卡只需要专心做好对 OpenGL 接口的支持，也就是支持了所有主流的 3D 制作软件。大家看到目前的专业绘图卡价格如此的高昂，其实除掉优秀的硬件，它的驱动研发也占了很大一部分的成本。
也许有不少朋友还在纳闷：OpenGL 到底是干什么用的？每天听你们说呀说，我怎么没有看见！其实，OpenGL 的常用功能说起来让你吓一跳：画点，画线，画多边形，就是这些。作为游戏，使用OpenGL 提供的这三个功能就足够了。而在专业领域，它提供了曲线，曲面绘画的支持，三角形分割，顶点变形以及其他一些专业人士津津乐道的功能，而在最新版本的 OpenGL 之中，也引入了可编程图形流水线的概念（比 D3D8 晚了半拍）这样一来，也可以通过对显卡编程来灵活的实现个性的图像效果。
也许大家从我的话里能看出来，OpenGL 在后来的发展中，正如大家所料的，掉到了 D3D 的后面。说起 D3D，就要提一下 Microsoft 的 DirectX 娱乐多媒体引擎了。DirectX 对广大玩家一定如雷贯耳吧。事实上，现在市面上的游戏，有 80% 的都采用了 DirectX 的 D3D 图形引擎，而不是 OpenGL。这也是受 OpenGL 和 D3D 开发使得定位不同所影响。D3D 更偏向于为游戏设计者提供直接的，功能强大的与游戏绘图直接相关的功能，所以对于游戏设计者来说更具亲和力。
而 D3D 的快速发展也得益于它是独家技术：由 Microsoft 亲自制定，亲自研发，提供详细强大的技术支持。以往的 D3D 总是给人小气的感觉，而 D3D 也把 OpenGL 作为竞争目标而努力的发展；而在 DirectX 8.0 推出的时候，D3D8 从功能和易用性上一举超越了 OpenGL。它首先提出了可编程几何/像素处理流水线的概念。配合当时上市的 nVIDIA GeForce 3 系列显卡的完美硬件支持，从视觉上给了人们全新的震撼。题归正传：当 D3D8 在游戏接口方面超越了 OpenGL 之后，贪婪的 Microsoft (!) 更开始让 D3D 在专业功能上也发展起来。时至今日，D3D 得到了众多专业绘图软件的支持，比如 3dsmax 从 4.0 起加入了对 DirectX 8.0 的支持，使得近似最终渲染效果的材质/灯光在可编程GPU 的支持下，在预览窗口里显示了出来。
DirectX 9.0 的绘图组件 D3D9，又是一个里程碑。它重新定义了可编程图形流水线的概念，使全浮点精度，无失真的图像在 PC 游戏里成为可能。而且 D3D9 引入了另一个新的概念，就是在继承了 D3D8的汇编语言给显卡编程的同时，提供了用高级语言来撰写显卡的程序的功能，这个语言被命名为 HLSL(High Level Shader Language)。到此，D3D 超越了 OpenGL，也使的 OpenGL 新版本的制定开始向 D3D 靠拢。OpenGL 所支持的 Vertex Program / Fragment Shader 就是在 D3D 的 VertexShader / PixelShader 的基础上发展起来的。
D3D 的功能已经足够强劲，也在游戏领域得到了完全的支持。可是要想在专业绘图领域真正的拥有一席之地，还需要各大专业绘图软件开发商对其表示肯定和投入支持。让我们衷心的祝 D3D 和 OpenGL 一路走好... 
四、预览 vs. 渲染有很多专业绘图的初学者，常常分不清两个概念：预览和渲染的区别，以及图形加速卡是给哪里加速的。下面我就来讲一下这些到底是什么东西
使用过专业绘图软件的朋友，一定见过它的交互式编辑窗口吧。不同的软件和设置，开有不同数量的交互式编辑窗口，也被称为预览窗口。这些窗口里的内容呢，就是由图形加速卡绘制的（如果启用硬件加速的话）。一般除了有一个窗口里的物体是由颜色和纹理贴图填充的以外，其它的窗口里的图像都是线筐。呵呵 说道这里，大家应该明白专业绘图卡对线筐加速的意义了吧。其实，在专业绘图软件里，有且只有这部分的绘图工作是由图形加速卡来完成的。另一部分绘图功能，则超越了图形加速卡的功能：
这就是成品渲染。当你调整好所有参数，包括摄像机的位置和灯光以后，按动“渲染”( Render )按钮，电脑在做的就是这一步。稍微复杂的场景，这一步通常要花费数小时的时间，有的甚至于要好几天才能完成。为什么这么慢呢？！你如果打开预览窗口的图像，和渲染好的成品对比一下，马上就能发现区别所在：成品比预览图细腻真实的多。其实这一步是完全由 CPU 来完成的。而它们所使用的算法的复杂度，也远在显卡的光栅图形之上。有的是用了 Ray-Tracing 光线追踪来计算物体的材质和光线的反射/折射，有的甚至利用到了辐射度( Radiosity ) 来计算物体表面接受光线照射的强度。这些真实的算法异常的复杂，而且灵活度很高。所以目前的 GPU 的可编程特性根本不能“代劳”，唯有我们可怜的 CPU 孤军奋战了。
到这里，大家应该明白，专业绘图卡在绘图软件的使用过程中充当了预览视口加速的功能。别认为只能加速预览视口没有什么大用处，其实绘图工作者们有 90% 的时间是用来绘制图形的，也就是图形加速卡在 90% 的时间里，都在为系统起着重要的加速作用。好了，看着激动人心的 Hollywood 特效大片，欣赏着美轮美奂的 3D 动画片的时候，让我们为默默无闻的专业绘图卡致敬…
技术发展
2004年12月20日，NVIDIA正式推出了基于GeForce 6系列图形芯片(NV 4x)的PureVideo技术，其目的是为了提升GeForce 6系列图形芯片的视频播放性能，主要作用是获得更低的CPU占用率与更清晰的画面。
总所周知，在电脑上播放的视频绝大部分都是从电视或电影中转换而来。但在转换过程会遇到两个突出的矛盾：一是电视的片源为隔行扫描，而电脑上是逐行扫描；二是电影的帧数为每秒24帧，而电脑上播放的要求是每秒30帧。虽然现在绝大部分视频编辑加工软件都能对其实行转换，但如果对这两个矛盾处理得不好，画面就会出现严重的重叠、模糊等失真。而PureVideo技术就是为解决这些问题而出现的。　　
实际上，PureVideo是一项基于GeForce 6系列GPU中整合的可编程视频处理引擎，同时结合硬件与软件技术，能够对MEPG2(DVD)、WMV9以及HD Video等视频播放进行硬件加速的显卡特色技术。PureVideo的关键技术包括一个集成于GPU中的专门硬件——16路向量处理器，通过它来完成高清视频播放的硬件加速，从而达到减轻CPU负担的目的。
PureVideo技术在播放DVD视频、HD Video以及WMV(包括高清WMV)视频时可以获得比传统视频解决方案更清晰的画面，同时也会降低CPU占用率。而要想发挥这项技术的优势，除了要有一块GerForce 6系列的显卡外，还需要安装三个软件：包括WMV视频插件、Windows Media Player 10(这两个用于支持WMV视频的加速)以及NVIDIA Decoder(用于支持DVD视频加速)。　　 
PureVideo技术针对DVD回放的优化解码器全称为NVIDIA DVD Decoder，必须要该解码器配合GeForce 6系列GPU中的视频处理引擎才能对视频回放起到优化加速的作用。
安装了NVIDIA Decoder后，当插入DVD光盘或播放MPEG2视频文件时，无论采用什么播放器，当播放器向系统提出挂接解码器的要求时，NVIDIA Decoder就会自动负责解码部分的任务，此时我们可以看到在桌面右下角系统托盘中会出现一个NVIDIA的图标。
解码器在默认状态下是按照最佳质量进行的设置，一般不建议读者更改，除非出现画面显示错误才有必要进行调试。主界面右上部分的“Bitrate(Mbps)”能实时显示所播放文件的比特率，用户可凭此辨别DVD视频是否为真正的可变比特率格式。需要注意的是，该控制面板只有在播放DVD视频(包括DVD光盘和MPEG2文件)时才能打开。　　 
在针对WMV格式文件的视频加速中，所要采用的WMV插件主要包含两个文件：wmp.dll(10.0.0.3646)与wmvdmod.dll(10.0.0.3663)。根据NVIDIA的官方说明，这款插件可在Windows Media Player10的插件下载中获得。要想实现在Windows Media Player 10中播放高清格式的WMV文件，这两个插件是必不可少的。
PureVideo技术的另一特点在于它是基于视频硬件级加速的技术，能分担CPU对视频的运算任务，从而减少CPU占用率。　　 
相对NVIDIA的CUDA技术而言，AMD采用的Stream技术是一项开放性的技术。实际上，最初ATI采用的流处理技术并非完全开放，而是仅针对单一的一个项目而研发的。 在2006年，ATI就曾经借助非统一架构设计的Radeon X1950XTX显卡为斯坦福大学的Folding@Home （蛋白质折叠的分布计算项目）项目进行科学计算。而全新的流处理技术的改进就是要将这一技术全面开放，能够让更多的开发人员参与进来，借助HD4000系列显卡超强的浮点运算能力，为更多的并行计算应用进行加速。[5]