I built a DirectShow Video renderer to capture Frames with a VIDEOINFOHEADER2
as video format (which is not possible with the built-in grabber). The class is derived from CBaseVideoRenderer
and implements the basic method required. CheckMediaType
and SetMediaType
are called, as well as OnStartStreaming
. However DoRenderSample
is never called, because the stream immediately ends. Interestingly, the audio is rendered by the DirectSound renderer in my graph, ie there are data.
I should add that my graph has a "live source", namely BDA DVB-S. If I add an EVR instead of my renderer, everything works, ie the sound and the video are played.
What is the problem here? Are there special requirements for renderers to receive data from live sources?
Update 1: I should add that if I run my graph in GraphEdit, it also plays the Sound, but issues an error message (only with my renderer, not with EVR): "The graph could not Change state. At least one of the Pins involved in the Operation is already connected. (Return code: 0x80040204)" I think this is part of the problem, but I unfortunately do not understand what it means or what I should change in my code.
Update 2: As requested, the ROT entry for my graph (click to enlarge):
User contributions licensed under CC BY-SA 3.0