I have a custom "sink" filter. I create a BDA graph, and send the MPEG2VIDEO stream to it by calling IGraphBuilder2::RenderStream which also adds an intermediary "decode" filter. At this point, it notifies my filter that it will be passing it 704x480 YUY2 data.
When I call Run on the graph, the tuning occurs (I presume) and the format of the data apparently changes, as the upstream decoder calls ReceiveConnection on my filter's pin with a size of 1280x720. I accept it and return S_OK.
However, if I return S_OK, the graph basically hangs from that point on. If I return VFW_E_ALREADY_CONNECTED then it successfully feeds me 704x480 data. The odd part being that if I run the same type of graph in GraphEdit, but with a normal video renderer, it successfully renegotiates the format and uses it. One thing to note is my filter has no custom allocator. Any ideas?
The decoding filter in this case is PowerDVD 8's "mpeg2 video decoder" FWIW.