POPPUR爱换

标题: FW 17X:say good bye to Video Overlay Mixer[更新:174.74又可以OVM了] [打印本页]

作者: Edison    时间: 2008-3-5 23:40
标题: FW 17X:say good bye to Video Overlay Mixer[更新:174.74又可以OVM了]
从17x驱动起,NVIDIA的Vista驱动不再提供Video Overlay Mixer支持。

:charles:

更新:174.74 vista驱动现在又能OVM了。
作者: ITers    时间: 2008-3-5 23:43
那今后就剩VMR或者EVR了
作者: Edison    时间: 2008-3-5 23:44
Vista下是这样,不过我很久没用XP,所以不怎么感兴趣。
作者: yyloveyou    时间: 2008-3-5 23:48
Video Overlay Mixer麻烦E神大概讲一下有什么用
作者: ft5555    时间: 2008-3-5 23:50
17X驱动用那个旧面板补丁 怎么出来一次就消失了???
作者: ITers    时间: 2008-3-5 23:53
原帖由 yyloveyou 于 2008-3-5 23:48 发表
Video Overlay Mixer麻烦E神大概讲一下有什么用

哈哈,LS的给cho出题目了:w00t):
俺建议yyloveyou到网上搜索查找相关文章,自己研究,这样比较妥当:a)
否则每来个和你一样的,那就麻烦了:w00t):
作者: Edison    时间: 2008-3-5 23:56
Wiki:

Hardware overlayFrom Wikipedia, the free encyclopedia

Hardware overlay, a type of video overlay, is a method of rendering an image to a display screen with a dedicated memory buffer inside computer video hardware, to display a fast-moving video image such as a computer game, a DVD, or the signal from a TV card. Hardware overlay is supported by most video cards (since about 1998) and media players.
Contents



Overview
The use of a hardware overlay is important for several reasons. First, in a graphical user interface (GUI) operating system such as Windows, one display is typically used to display multiple simultaneous applications. Second, consider how a display works without a hardware overlay. When each application draws to the screen, the operating system's graphical subsystem must constantly check to ensure that the objects being drawn appear on the appropriate location on the screen, and that they don't collide with overlapping and neighboring windows. The graphical subsystem must clip objects while they are being drawn when a collision occurs. This constant checking and clipping ensures that different applications can cooperate with one another in sharing a display, but also consumes a significant proportion of computing power.

The way a computer draws on its display is by writing a bitmapped representation of the graphics into a special portion of its memory known as video memory. Without any hardware overlays, there is only one chunk of video memory which all applications must share - and the location of a given application's video memory moves whenever the user changes the position of the application's window. With shared video memory, an application must constantly check that it is only writing to memory that belongs to that application.

When running a high-bandwidth video application such as a game or a movie player, the computing power and complexity needed to perform this constant clipping and checking negatively impacts performance and compatibility. To escape these limitations, the hardware overlay was invented.

An application using a hardware overlay gets a completely separate section of video memory that belongs only to that application. Because nothing else uses it, the program never needs to waste time considering whether a given piece of the memory belongs to it, nor does it need to worry about the user moving the window and changing the location of the video memory. To get the image from the separate video memory to display in tandem with the remaining shared elements on the display, the graphical subsystem associates a certain attribute (for example, a particular color) to be a "mask" for that overlay, which the graphics card understands to mean that it is to draw from the separate overlay buffer onto the screen. (This technique is commonly known as "chroma key".)
As an example, assume the color "purple" is defined as the mask color that triggers the overlay to appear. An application that plays a DVD will draw a solid purple rectangle on the shared screen, and then "play" the DVD into the special region of memory dedicated to the overlay. The graphics card will render the DVD playback only inside the purple area. If another window moves over top of the purple area and obscures a part of it, then the graphics hardware performs the clipping by itself. In practice, the actual color "purple" is not used - rather, either a nondescript near-black color is used (as the system often has thousands of such shades to choose from), or the mask region is denoted using some similar masking method not involving colors.


Screenshots
One consequence of hardware overlay use is that a screenshot program (for example, the one automatically built into Windows that activates when the PrtSc key is pressed) often does not capture the content appearing in the hardware overlay window. Rather, a blank region containing only the special mask color is captured. This is because the screen capture routine doesn't consider the special video memory regions dedicated to overlays - it simply captures the shared main screen as rendered by the software's graphical subsystem. Some Digital Rights Management schemes use hardware overlay to display protected content on the screen, taking advantage of this quirk to prevent the copying of protected documents by way of screen capture[citation needed]. Disabling the support for overlays causes the normally overlay using software to fallback to the shared memory, enabling screenshots.


Secondary displays
Many newer graphics cards can support more than one monitor and/or a TV screen as output device. Typically one of these output devices has to be declared the "primary" device, and only the primary device can display hardware overlays. There are exceptions: Intel writes in the FAQ for their Embedded Graphics Drivers that the overlay can be attached to either one of the displays but not both, and some newer Matrox graphics card support overlay on both displays (e.g. Parhelia Series).

Both hardware and driver support is required; some graphics cards may support overlay on the second display while their drivers may not yet support it.

A common complaint is that DVD movies are displayed properly on a laptop screen but don't display on a TV connected to the laptop; in these cases it may be possible to designate the TV as the primary display. Sometimes, the use of hardware overlays may have to be disabled in the media player. However, some graphics cards have the option to completely redirect hardware overlay to the TV screen. In this case, starting a DVD player on the main screen with overlay enabled would result in video being displayed on the attached TV screen.


Implementations in various operating systems
Starting with Windows Vista's enhanced graphics capabilities, the basic concept of hardware overlays is replaced by full hardware compositing for every application window running on the system, not just movie players or games, through the Desktop Window Manager. Mac OS X has been using hardware compositing since Quartz Extreme was introduced in Mac OS X 10.2. To improve performance, each program draws to its own independent memory buffer instead of to a slow graphical subsystem. (In Windows Vista, eaardware overlay is more correctly known as a Direct3D surface). Then, the system's GPU assembles each of the windows into a single display screen in real time. With enhanced GPUs on the market capable of stunning 3D graphics as a consequence of the video game industry, impressive motion, scaling, and lighting effects can be applied to normal 2D windows by the operating system.

In the X Window System, the windowing system of most Unix operating systems, the XVideo extension can be used to allow applications to employ hardware overlays. Compositing is also used, with compiz and Beryl compositing window managers being the most prominent examples since 2006. They are able to take advantage of OpenGL (Xgl) for stunning 3D and 2D overlay visual effects. Other implementations like Metacity and xfwm have been available since 2004.

The Amiga supported a form of hardware compositing through the use of a coprocessor called copper. The copper ran a very simple program that was synchronized with the video display hardware. The copper could execute a WAIT instruction which caused its program execution to pause until the video beam reached a particular position on the screen. Then, the copper would execute the next instruction, a MOVE instruction, which would reprogram the display hardware's memory pointer. This would cause to the display hardware to immediately begin reading from a new memory location and displaying the image held there. The copper could also change the video hardware's pixel clock, allowing multiple resolutions to be displayed simultaneously.

o:)
作者: yyloveyou    时间: 2008-3-5 23:59
大家知道,Video Renderer (VR)是接收RGB/YUV裸数据,然后在显示器上显示的Filter。为提高计算机画图性能,根据你计算机显卡的能力,VR会优先使用DirectDraw以及Overlay表面;如果这些特性得不到显卡的支持,VR会使用GDI函数进行画图。在上级Filter连接到VR时,VR总是先要求当前显示器设置的色彩位数的RGB格式,如你的机器设置的是24位彩色,则VR首先要求连接的Media type为RGB24。如果你的显卡支持YUV Overlay表面,那么在Filter Graph运行起来的时候,VR会动态改变已经连接的Media type,要求上级Filter输出一种合适的YUV格式。VR Filter上实现了IVideoWindow接口,Filter Graph Manager主要通过这个接口来控制视频窗口。

那么,Overlay Mixer又是怎么回事呢?简单地说,Overlay Mixer就是能够将几路视频流合成输出的Filter。这个Filter是特地为DVD回放(DVD有Sub-picture或line-21数据需要叠加显示)或广播视频流(含有line-21数据)而设计的。同时,它还支持硬件解码器使用Video Port Extensions,就是绕过PCI总线,将硬件解码出来的数据直接送给显卡显示。这个Filter同样优先使用显卡的DirectDraw能力,而且必须要有Overlay表面。Overlay Mixer有一个输出Pin,输出的Media type是:MEDIATYPE_VIDEO,MEDIASUBTYPE_ Overlay;后面一般连上一个Video Renderer。当Filter Graph运行时,实际的图像显示工作由Overlay Mixer完成,而Video Renderer只是做一个视频窗口的管理工作。还有另外一个更常见的Filter:Overlay Mixer 2。这个Filter跟Overlay Mixer功能上是一样的,只是两个Filter支持的Format type不同和Merit值不同而已。

Overlay Mixer使用Color keying来实现几路视频的合成:它将Color key和sub-picture(或line-21)数据送到主表面,将主视频数据送到Overlay表面;显卡然后将两个表面的数据合成,送到帧缓存(Frame buffer)中进行显示。典型的情况,Overlay Mixer使用三个Input pin:Pin 0输入主视频数据,Pin 1和Pin 2输入sub-picture数据和line-21数据。Overlay Mixer在内部根据Pin 0输入的数据来创建Overlay表面。Overlay Mixer向上一般连接的是Video Decoder。如果这是个Software decoder,则Pin 0上的数据传输使用标准的IMemInputPin接口;如果使用了硬件加速,则Pin 0上必须使用IAMVideoAccelerator接口。(注意这两种接口是不能同时使用的!)如果上一级Filter是硬件解码器的包装Filter,使用VP pin输出,则解码器与Overlay Mixer使用IVPConfig和IVPNotify接口对通讯,以协调工作。Overlay Mixer不支持1394或USB接口的采集设备。Overlay Mixer向下一般连的是Video Renderer。这时Video Renderer只是一个视频窗口管理器。两个Filter通过IOverlay和IOverlayNotify接口对进行通讯,以协调工作。(Video Renderer的Input pin有两种连接方式:VR直接做图像显示时,则使用IMemInputPin接口接收视频流数据;Overlay Mixer做图像显示时,则VR使用IOverlay接口与上一级Filter进行通讯,Overlay Mixer与VR之间没有视频数据的传输。注意这两种接口是不会同时使用的!)

大家看到了,其实Video Renderer与Overlay Mixer有一部分功能是重复的。Video Renderer是最早设计的,设计之初,很多应用情况没有考虑进去;于是,就用Overlay Mixer来“打补丁”。现在,我们为什么不把两部分功能整合一下呢?微软也正是这么做了!在Windows XP(家庭版和专业版)中,新出现了一个Filter(注册的名字也叫“Video Renderer”,但两个Filter的CLSID是不同的,Merit值也不一样),替代了原来默认的Video Renderer。这个新的Filter,称之为Video Mixing Renderer Filter 7 (VMR-7),因为它内部使用了DirectDraw 7的技术。可以这么说,VMR是Windows平台上新一代的Video Renderer。值得注意的是,这个Filter仅在Windows XP里集成,在其他任何DirectX发布包里都得不到这个Filter。VMR-7的大致功能如下:支持最多16路输入流的alpha混合;支持在合成图像显示之前得到对其访问权;支持插入第三方开发的Video Effects和Transitions组件功能等等。还有,VMR连接时不要求RGB的Media type,因为它任何情况下都不会使用GDI函数来画图。

随着DirectX 9的发布,又会出现一个新的Video Renderer,称之为VMR-9。这个Filter使用了Direct3D 9的技术。VMR-9与VMR-7是两个不同的Filter。VMR-9的性能更加强劲。值得注意的是,为了保持向下兼容,VMR-9的Merit值并不高,它不作为系统默认的Video Renderer;如果你的应用程序只需要很少的视频显示控制,建议还是使用各自平台默认的Video Renderer。

下面是关于一些Video Renderer使用的常见问题,可供参考:
1. 写基于DirectShow的应用程序,肯定会用到Filter Graph Manager的IVideoWindow接口。Filter Graph Manager上的这个接口,实际实现于Video Renderer上。需要特别注意的是,必须在Video Renderer连接成功后才能调用这个接口的方法,否则方法调用总会失败。
2. 通过IVideoWindow::put_FullScreenMode实现全屏模式。对于一些新的显卡,VR能够对图像直接拉伸后再显示(性能不会损失很大);但如果显卡本身性能不佳,Filter Graph Manager会自动将VR替换为Full Screen Renderer Filter。事实上,当用户调用该接口函数要求切换到全屏模式时,Filter Graph Manager的控制逻辑为:优先使用在Filter Graph中直接支持全屏模式的Video Renderer(通过IVideoWindow::get_FullScreen Mode判断);否则,使用一个对图像缩放到全屏,性能损失不是很大的Video Renderer;再则,使用Full Screen Renderer Filter替换;以上尝试都失败,则选择Filter Graph中任意一个支持IVideoWindow接口的Video Renderer。除了一些比较老的显卡,一般第二步尝试就能成功。
3. 通过IBasicVideo::GetCurrentImage得到当前的图像数据。对于一般的Video Renderer来说,使用这个接口函数是不可靠的。因为如果Video Renderer使用了DirectDraw加速,这个函数调用会失败;而且调用这个函数,Video Renderer必须处于Pause状态。而对于VMR,则完全没有如上这些限制。所以,在使用Video Renderer的情况下,想得到整个视频流中的某一帧的图像,建议写一个In-place-trans filter,插入到Video Renderer的前面,很简单就能实现。
4. 有时候,从一个Decoder的Output pin Render出去,会自动接上Overlay Mixer 2这个Filter?或者自己写的Decoder,怎么样让它连接到Overlay Mixer 2?这主要是Decoder的Output pin支持的Media type使用的Format type的原因。需要注意的是:Overlay Mixer 2仅支持Format_VIDEOINFO2,Overlay Mixer虽然同时支持Format_VIDEOINFO和Format_VIDEOINFO2,但它的Merit值为MERIT_DO_NOT_USE,不会被自动加入Filter Graph中。
作者: zxb8537    时间: 2008-3-6 00:09
能否说下这主要有什么影响没?比如游戏性能?视频性能?比说太专业的,不懂-_-
作者: Edison    时间: 2008-3-6 00:27
OVM的好处是色差输出的时候可以有垂直同步而且效率比EVR、VMR都要高不少,缺点是NVIDIA不再提供Vsita下的支持:p
作者: CaptianGhostSSE    时间: 2008-3-6 00:50
VISTA下的Overlay好像是有些问题,KMP选这个模式每次播放视频屏幕都要闪一下。然后弹出来一个对话框。 于是VISTA下就用上了VMR
作者: Edison    时间: 2008-3-6 00:52
Vista下首选的模式本来就是EVR,只是EVR的消耗比OVM偏大,而且无法垂直同步色差输出。
作者: 1empress    时间: 2008-3-6 00:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: godlike    时间: 2008-3-6 00:57
kmp evr ca 挂字幕依然是掉贞的啊,只有21~22FPS
作者: Edison    时间: 2008-3-6 01:06
这个取决于片段吧,有些影片本身就是24fps左右的就问题不大。
作者: godlike    时间: 2008-3-6 03:17
20.22fps看变形金刚掉贞感还是很明显的吧-_-
作者: lucaa    时间: 2008-3-6 05:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: godlike    时间: 2008-3-6 05:21
驱动问题,84.21之后overlay早就都发白了

ovm又不能用shader,也不能用cyberllink的 h264解码器,鬼才用:w00t):
作者: 显卡杀手    时间: 2008-3-6 07:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: gz_easy    时间: 2008-3-6 10:18
Overlay是蛮古老的东西了,NV放弃支持估计是受到MS的政策导向,呵呵。
作者: gzXW    时间: 2008-3-6 11:10
原帖由 显卡杀手 于 2008-3-6 07:50 发表
已经基本放弃VMR和OVERLAYR的人飘过,这两个模式现在都不保证效果正确。

EVR还太不成熟,也直接无视。


那你用什么模式:blink:
作者: Edison    时间: 2008-3-6 12:01
原帖由 gzXW 于 2008-3-6 11:10 发表
那你用什么模式:blink:

只剩下GDI了,这个模式的缩放很烂 :P
作者: jhj9    时间: 2008-3-6 12:03
原帖由 Edison 于 2008-3-6 12:01 发表

只剩下GDI了,这个模式的缩放很烂 :P


OPENGL模式呢?:p
作者: zzhang    时间: 2008-3-6 13:15
原帖由 1empress 于 2008-3-6 00:53 发表
OVM仍旧是最快最正确的Filter

VMR9根本就不能正确处理颜色

我怎么觉得OVM的颜色要比VMR差很多呢?:w00t):
作者: Edison    时间: 2008-3-6 13:22
NVIDIA在DVI/HDMI下的OVM/VMR的亮度信号都是0~255,而在模拟方式下是输出16~235。
作者: lucaa    时间: 2008-3-6 18:59
提示: 作者被禁止或删除 内容自动屏蔽
作者: 1empress    时间: 2008-3-7 00:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: lucaa    时间: 2008-3-7 03:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: per1-q1222    时间: 2008-3-7 09:26
原帖由 lucaa 于 2008-3-6 18:59 发表
GDI  是什么模式? 我这边的KMP 是中文的,所以看不明白。  感觉 VMR未渲染,EVR,D3D9 的 颜色一致,看不出差别。

你把DD加速關了就可以GDI了:P..
如果你用的下去的話...!!:w00t):
作者: Edison    时间: 2008-4-7 16:24
新的174.74驱动又可以ovm on vista了。
作者: gary2000    时间: 2008-4-7 19:54
我用8800gs,试过了几乎所有出来的17x.xx for xp32,用的是mod的inf文件,无论视频还是电视卡软件基本都可以正常调用ovm,没出现问题,同时也试了当下流行的几个游戏,发现174.74表现并不出色,另外有2款比较有特色,174.12和174.16

[ 本帖最后由 gary2000 于 2008-4-7 19:57 编辑 ]




欢迎光临 POPPUR爱换 (https://we.poppur.com/) Powered by Discuz! X3.4