转载自:
http://blog.sina.com.cn/s/blog_53902eeb010091qj.html
1、.视频覆盖:
大概在1995年,当mpeg1(VCD)回放在PC上开始流行的时候,pc的处理能力还么有强大到实时播放的地步。显卡制造厂商适时的推出了"video overlay(视频覆盖)"的技术。它就是种在显卡上用硬件完成同时显示几个视频的功能(拉伸,颜色空间变换,等等...)的技术,这样就可以在pc上流畅的播放动画而不占用cpu。视频覆盖的画面质量事实上取决于显卡硬件。我发现市面上的绝大部分的显卡显示视频覆盖质量都很不行。在视频覆盖上用视频渲染技术的一个最大的关键就是在每个显卡上只有一个视频覆盖 unit(单元). 这样就迫切的需要多显示器系统了。
2、Direct3D:
Direct3D是微软提供给程序员使用一个不断进化的功能集合的DirectX库的一部分。在新发布的direct9 中,微软给出了一套新的功能,性能接近于覆盖 surface(接口),但是没那么多限制。视频渲染技术基于direct3d比视频覆盖提供了更好的图像质量,还没有视频覆盖单显示器的麻烦。但是,不是所有的显卡都支持这个技术,还有一些根本不支持,很多不支持整套功能集。作为一个一般的参考。
3、系统默认渲染器:
当播放器用默认回放模式播放媒体文件的时候,在低于windows xp的所有windows系统上或者windowsxp的"vmr7", 用系统默认渲染器就意味着"标准覆盖" 。
4、标准覆盖渲染器:
这是最老的视频渲染技术了。在可用的时候它用到视频覆盖,当视频不可用的时候就退回到纯cpu控制视频。纯cpu控制就是说cpu替代了视频覆盖来干这些事情。这对回放是个沉重的打击(cpu更辛苦了),这个渲染的缺点是它不支持固定屏幕高宽比控制,硬件颜色控制(色调/饱和度/亮度/对比度/gamma(灰度))不可操作,而且抓图结果会很很奇怪。
5、覆盖混合渲染:
同样是运用视频覆盖技术,这个渲染器允许在那些支持颜色控制的硬件上进行颜色控制(色调/饱和度/亮度/对比度/gamma)。有些卡可能只支持颜色控制的一个子集(比如只有亮度)。这个渲染器也支持固定宽高比控制,只要媒体文件支持这个渲染器,缺点就是它返回到纯cpu控制。当视频覆盖不可操作时,它就罢工了。在媒体模式的这个情况时候,就会回到标准覆盖渲染。在dvd模式时,会报错说视频解码器不能连接到覆盖混合器。最后,这个渲染技术还是抓图的效果不够好。
6、视频混合渲染器7(vmr7):
这个渲染器是视频覆盖技术和direct3d技术的结合,它只在windows xp上有效,后来被vmr9取代了。windows media player 7-10使用这个技术.这个渲染技术默认使用视频覆盖。然而,如果它不可用了,它可以有限的使用direct3d。它的缺点是不可进行颜色控制,截屏还是不够好。
7、视频混合渲染器9(vmr9):
这是最新的视频渲染技术。它完全建筑在direct3d上,需要direct9和最新的硬件。它可以提供最好的画质(取决于渲染模式和显卡)。vmr9支持硬件颜色操作(如果卡支持),但是没有gamma控制,因为ms没有提供。 vmr9也有宽高比控制。
8、EVR增强渲染模式(vista系统):
Vista新引入了全新的EVR渲染器,微软的技术文档倒是把这个东东吹得很强劲,但是就目前来说问题还是不少。第一个就是字幕的问题,目前用EVR是无法在高速或者急速模式下把字幕显示出来。那个EVR C/A 倒是能够显示字幕,不过dxva2.0就会失效,换句话说就无法开启geforce8显卡的硬件解码功能。还有一个问题就是色阶或者黑位问题,这个问题在VMR9下可以通过shader得到完美的解决方案,现在到了EVR,色阶问题目前可以说几乎毫无办法,最多能用一下coreavc的fix color功能解决一下,但是还是有相当大的局限性。
另:VMR9支持3种特别的渲染模式:
A.vmr9:窗口:
这种是最基本的模式,它向后兼容,但不支持帧抓屏,要提醒一点,这个模式在windows sp1和directx9b下有bug,在dvd菜单导航时只能用这个模式了。在windowsxp sp2和direct9c下这个bug没了。
B.wmr9:窗口无转换:
这个模式比窗口模式高级点,用来截图是最好的。
C.wmr9:渲染无转换:
这个可是vmr9中最复杂的渲染模式,它可以工作在direct3d独占模式,那就是整个机器被设定为全屏,其他运行的程序不可以操作视频硬件,在这个独占模式下,所耗cpu更少,分辨率越高,回放就更平滑。缺点是在独占模式下,整个机器都献身给视频回放了,你不能干其他任何事情了。