AVStream: Capture filter to notify resolution change of incoming video?

Thanks to the support we got on this forum, we have our PCIe video capture card up and running.
The capture filter knows through our hardware interface that the incoming video has changed resolution.
While the capture pin is already connected to e.g. a renderer filter, we would like to notify the graph that the incoming resolution has changed. The graph should be stopped/rebuilt with the newly announced video range on the capture pin.

When the hardware detects a resolution change, we emit an event - which is probably not correct or lacking information:
KsFilterGenerateEvents(
m_Filter,
&KSEVENTSETID_DynamicFormatChange,
KSEVENT_DYNAMIC_FORMAT_CHANGE,
0, // ULONG DataSize
NULL, // PVOID Data
NULL, // Callback
NULL // CallbackContext
);

Nothing happens. The graph continues playing.
Any ideas / suggestions ?

Thanks in advance.

  • Bernard Willaert
    Barco - Healthcare division
    Belgium

xxxxx@barco.com wrote:

Thanks to the support we got on this forum, we have our PCIe video capture card up and running.
The capture filter knows through our hardware interface that the incoming video has changed resolution.
While the capture pin is already connected to e.g. a renderer filter, we would like to notify the graph that the incoming resolution has changed. The graph should be stopped/rebuilt with the newly announced video range on the capture pin.

When the hardware detects a resolution change, we emit an event - which is probably not correct or lacking information:
KsFilterGenerateEvents(
m_Filter,
&KSEVENTSETID_DynamicFormatChange,
KSEVENT_DYNAMIC_FORMAT_CHANGE,
0, // ULONG DataSize
NULL, // PVOID Data
NULL, // Callback
NULL // CallbackContext
);

Nothing happens. The graph continues playing.

What application are you using for your tests? The VAST majority of
video capture applications simply do not support on-the-fly resolution
changes. Remember, DirectShow cannot FORCE an application to rebuild
the graph. The application has to be looking for the event. The MFT
proxy is supposed to be listening for this event, so if you were using
the idiotic Win 8.1 Camera app, it should work.

But if you are using DirectShow, then you are shouting your format
change to the world, but there’s no one listening.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Thank You, Tim.

>What application are you using for your tests?

We are using GraphEdit and VLC player.
Although we recently noticed that an instance our capture filter was also created by Office communicator (instead of the default webcam) and Google Chrome…
This was a bit of a surprise to us as we could even access our custom property pages in Office Communicator …
In parallel we are developing our own application - a basic renderer / file writer where we can set all custom properties.

>>so if you were using the idiotic Win 8.1 Camera app, it should work.
We are currently testing with Win7, but we could give it a try on Win8.1.

Thanks for clarifying this. Nothing to worry about then.

  • Bernard Willaert