Re: What Formats supported by the Video Renderer filter.

From: "john"

Can we determine the display format supported by the
video render filter?

The stock video renderers do not support any format at all.
They simply ask the video driver through
DirectDraw/Direct3D. So the set of available formats depends
on the specific video driver's capabilities.

During pin connection, the format is dynamically negotiated.
Instead of writing a separate color space converter, you
could support the conversion internally so that you can
simply offer RGB alongside I420 and, if that is the selected
format after the connection is complete, perform the

If you want to keep the converter as a separate filter, you
can implement IStreamBuilder on your output pin so that the
pin can insert the converter after itself if it fails to
connect to the renderer.

If you are writing the application, before you connect the
pins, you can also call IPin::EnumMediaTypes() on the
renderer's input pin to discover what it supported and
insert your converter if needed.

Or you can add you converter to the graph and connect the
source to the renderer, so that IntelligentConnect will
automatically use the converter if needed. Afterwards, if
the converter is not connected, you can simply remove it
from the graph.

Just a note, I420/IYUV is not commonly supported, but YV12
is exactly the same with reversed U and V planes.

To connect to the renderer, you should also take care of
respecting the stride asked for by the renderer during pin
connection. If you don't, the system will have to insert the
MSYUV codec (wrapped by the AVIDecompressor, for some YUV
formats) and/or a ColorSpaceConverer (for RGB formats) to
adapt the stride.

- How media type negotiation works during pin connection:

- How to respect the video renderer's requested stride:

// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com