硬件解码生效的时候,系统是怎么运转的呢?现在我们有两个处理器,CPU和GPU。他们通过PCI/AGP/PCIE总线交换数据。
1。CPU从文件系统里读出原始数据(DirectSHow的源滤镜),分离出压缩的视频数据(分离器)。放在系统内存中。 GPU 发呆
2。CPU把压缩视频数据交给GPU, 这时总线上开始忙了,压缩数据从系统内存拷贝到显卡上的显存里。
3. CPU要求 GPU开始硬件解码,现在 CPU进入发呆期,GPU开始忙。当然CPU会定期查询一下GPU忙的怎么样了。
4。GPU开始用自己的电路解码视频数据(已经在显存里了),解压后的数据还是放在显存里面。CPU继续发呆。
5. 视频数据刚解码完成以后还不能立刻拿去显示,因为还需要后期处理,如deinterlace, 3:2pulldown,等等。GPU再用自己的后期处理电路来进行处理。CPU还是发呆
6。后期处理以后的未压缩数据拿去显示到屏幕上, GPU再开始忙视频的缩放,亮度,gamma等事情。CPU还是闲
7. GPU终于忙完了,下面的视频数据在哪里?通知CPU,GPU先歇会。 CPU又开始忙了,回到第1步。
马赛克现象没有了,贴图更细致,连衣服的褶皱和皮肤的细部都表现完美。这些都是拜3D硬件加速所赐
硬件加速是用显卡的GPU解码视频,几乎不占用CPU,在播放高清视频时如果你的CPU不给力就会卡,不卡也会占用率很高,开启硬件加速就是让显卡分担了CPU的解码工作,所以你可以再开别的程序也不会卡
播放视频主要依赖于CPU、所以遇到高码率的电影、性能弱的CPU就不给力了、这个时候开启硬件加速显卡也会加入到处理影片的行列中、协同CPU一起处理视频、可以降低CPU的使用率、从而缓解因为播放一些高码率电影而发生的卡顿~
硬件加速是用来降低视频解码时候CPU负载的,如果CPU性能不够强,看高清视频没有硬件加速的时候就卡了
运行其他程序的时候,会感觉屏幕起起伏伏,不稳定