DXVA是视频硬件加速的总称,不仅仅是视频数据解码(包括H261,MPEG1,MPEG2,H263,MPEG4),Alpha混合,图片重采样等),但它对CPU的影响最大。是的,这是视频解码,尤其是HDTV解码。对于低端系统,让GPU负责硬件解码是最佳选择,但是,使用硬件解码在整体功能上有很多限制,尤其是在解压缩之后。视频数据的后处理(例如,去隔行,锐化,去马赛克),因此,对于那些追求图像质量的人,他们宁愿放弃硬件解码,当然会以升级整个系统为代价。以后。
硬件解码生效后,系统如何工作?现在我们有两个处理器,CPU和GPU。他们通过PCI / AGP / PCIE总线交换数据。
1。 CPU从文件系统读取原始数据(DirectSHow的源过滤器),然后分离压缩的视频数据(分隔符)。将其放入系统内存中。 GPU发呆
2。 CPU将压缩的视频数据传送到GPU。这时,总线繁忙,压缩后的数据从系统内存复制到图形卡上的视频内存。
3.CPU要求GPU开始硬件解码。现在,CPU处于发呆状态,GPU处于繁忙状态。当然,CPU会定期检查GPU的繁忙程度。
4。 GPU开始使用自己的电路对视频数据进行解码(已在视频内存中),而解压缩后的数据仍存储在视频内存中。 CPU仍然处于发呆状态。
5.解码完成后,视频数据无法立即显示,因为它需要后期处理,例如去隔行,3:2下拉等。GPU然后使用其自己的后期处理电路进行处理。 CPU仍然发呆
6。经过后处理后,未压缩的数据会显示在屏幕上,GPU忙于视频缩放,亮度,伽玛等。 CPU仍处于空闲状态
7.GPU终于完成了,下面的视频数据在哪里?通知CPU和GPU会休息。 CPU再次忙,然后返回到步骤1。
从上面可以看到,当硬件解码生效时,CPU确实可以处于空闲状态,但是要使其生效,必须满足一些条件。最关键的原因是,与CPu->系统内存和GPU->图形卡内存相比,PCI,AGP和PCIE总线更快。 PCI是133MB / S,AGP8X是2.1GB / S,PCIE16X是4GB / S,而CPU系统内存和GPU视频内存的速度要快几倍。如果您有兴趣,可以比较不同时代的内存总线和AGP / PCIE总线的速度。由于连接CPU和GPU的总线非常慢,因此一旦视频数据(在解压缩之前或之后)传递到GPU,GPU便会对其进行处理,直到最终显示出来。
如果在前1-5个步骤中有任何步骤GPU无法执行或您不允许这样做,则视频硬件解码将不会生效,CPU将负责。
当然,您可能会问,也许CPU速度很慢,也许GPU在龟速总线上传输数据时正在共享部分工作,还是比所有CPU都快?也许是这样,但是在Directshow体系结构中,代表视频数据处理各个方面的筛选器(分离器,,后处理和渲染器)需要协商一种所有人都可以接受的视频数据存储方法。如果某个过滤器说我只能在系统内存中播放,那么每个人都必须在内存中播放,GPU和视频内存必须放弃。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pienmashup.com/a/shenmilingyu/article-333123-1.html
平身
你们死到临头了
杨洋加油