Video Port Manager
The Video Port Manager filter (VPM) enables the Video Mixing Renderer Filter 7 (VMR-7) to work with video capture devices or hardware decoders that use a video port. A video port is a direct hardware connection to the graphics chip. It enables video to be transferred directly to the graphics chip without going over the system bus.
Note The Video Port Manager is not compatible with the VMR-9, because the VMR-9 does not support video ports.
|Filter Interfaces||IAMVideoDecimationProperties, IBaseFilter, IKsPropertySet, IQualProp, IVPManager|
|Input Pin Media Types||MEDIATYPE_Video, MEDIASUBTYPE_VPVideo or MEDIASUBTYPE_VPVBI, FORMAT_None|
|Input Pin Interfaces||IKsPin, IKsPropertySet, IMemInputPin, IPin, IPinConnection, IQualityControl|
|Output Pin Media Types||MEDIATYPE_Video, FORMAT_VideoInfo2|
|Output Pin Interfaces||IPin, IQualityControl|
The Video Port Manager combines the video port functionality of the Overlay Mixer Filter and the functionality of the VBI Surface Allocator. The VPM allocates video ports and surfaces, and synchronizes data capture from the video port. It allows video port-based capture that is independent of rendering. If preview is desired, the VPM coordinates with the VMR-7 to display captured video port data. When a video port is present on the system, the capture filter requires additional buffers to extract VBI data from the video stream. These buffers are provided by the VPM. Once the capture filter has extracted the VBI data, it delivers it on a separate pin to filters such as the CC Decoder. The following illustration shows the VPM and its connections in a filter graph.
The DVD Graph Builder adds the VPM to the filter graph automatically when a video port is detected on the system. Once added to the graph, the VPM uses a DirectDraw object provided by the Video Mixing Renderer to allocate two or three surfaces. These surfaces receive the digitized frames from the upstream capture filter. In response to user-mode event notifications sent when data is present in the surface, the VPM performs an automatic blit to an offscreen surface provided by the VMR.
The fact that the VPM uses multiple surfaces for its input buffers means that it requires more VRAM than the previous DirectShow video port implementation. The extra blit from the VPM to the VMR-7 requires additional video memory bandwidth. And since hardware auto-flipping is not used any longer, there is a theoretical potential for dropped frames, but the empirical evidence suggests that this does not occur.