|This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.|
If neither of the previous options were successful, then the PID finds the first available filter in the filter graph that supports an IVideoWindowinterface, and assumes that it is the current video renderer filter.
If no filters that support IVideoWindoware available, the call to change to full-screen mode will return VFW_E_NO_FULLSCREEN. When asked to change into full-screen mode, the PID asks the current renderer if it can support full-screen mode efficiently. If so, no graph changes are made. If not, the PID stops the filter graph (if it is not already stopped), disconnects the current renderer, reconnects the DirectShow full-screen renderer in its place, and restores the original filter graph when it's done. When switching out of full-screen mode, the opposite occurs. That is, the full-screen renderer is disconnected and the original filter is reconnected. The state of the filter graph is likewise restored. The full-screen renderer is a specialized renderer that uses the display changing capabilities provided by Microsoft DirectDraw. For example, it might switch the full-screen display 320 240 when it might have been in, for example, 1024 768. By switching to lower resolution modes, it can cheaply implement full-screen rendering without having to stretch images.
The full-screen renderer currently implements 320 200 8/16 bits per pixel, 320 240 8/16, 640 400 8/16, 640 400 8/16, 640 480 8/16, 800 600 8/16, 1024 768 8/16, 1152 864 8/16, and 1280 1024 8/16 display modes. The Mode X renderer supports the IFullScreenVideointerface. When the Mode X renderer is connected, it loads the display modes DirectDraw has made available. The number of modes available can be obtained through IFullScreenVideo::CountModes. Information on each mode is available by calling IFullScreenVideo::GetModeInfoand IFullScreenVideo::IsModeAvailable. An application can enable and disable any modes by calling the SetEnabled flag with OATRUE or OAFALSE. The current value can be queried for with IFullScreenVideo::IsModeEnabled.
Another way to set the modes enabled is to use the clip loss factor. This defines the amount of video that can be lost when deciding which display mode to use. Assuming the decoder cannot compress the video, then playing, for example, an MPEG file that is 352 288 pixels into a 320 200 display will lose over 40 percent of the image. The clip loss factor specifies the upper range of clipping loss that is permissible. To allow typical MPEG video to be played in 320 200 it defaults to 50 percent. You can set the clip loss factor with IFullScreenVideo::SetClipFactor.
No ModeX renderer is supplied for Windows CE, however the default video renderer will perform efficient full screen rendering if the graphics system provides hardware accelerated stretch blits.
Last updated on Tuesday, May 18, 2004