Hi,
I'm a Directshow software developper and I'm currently experimenting problems with a specific graph creation. Here is the problem :
- I have a filter with 2 output pins.
- The two pins support the *IStreamBuilder* interface by reimplementing *::Render()* and *::Backout()*
- I create the rest of the filters downstream in *::Render()* and remove those filter in *::Backout()*
When my filter is created during a graph creation process, *::Render()* is called on each of my output pins and the filter creation complete correctly and playback works as well.
THE BIG PROBLEM occurs when I close
the graph : *::Backout()* is never called and the filters I've created with *::Render()* are never destroyed, their destructor is never called, I've monitored it. It definitely looks like an reference count problem, but I'm having a hard time trying to find the source of the problem. I was never able to find any information about this weird behavior.
I really need this to work because other wise we end up with big leaking problem when we close the graph and create it again without quitting the application.
Thanks for the help, it would be appreciated
)
Benoit laforest
____________________________________________________________
Concepteur logiciel / Software designer
Matrox Vidéo - Team DirectShow
blafores@matrox.com <mailto:blafores@matrox.com>
(514) 822-6000 ext7189
I'm a Directshow software developper and I'm currently experimenting problems with a specific graph creation. Here is the problem :
- I have a filter with 2 output pins.
- The two pins support the *IStreamBuilder* interface by reimplementing *::Render()* and *::Backout()*
- I create the rest of the filters downstream in *::Render()* and remove those filter in *::Backout()*
When my filter is created during a graph creation process, *::Render()* is called on each of my output pins and the filter creation complete correctly and playback works as well.
THE BIG PROBLEM occurs when I close
the graph : *::Backout()* is never called and the filters I've created with *::Render()* are never destroyed, their destructor is never called, I've monitored it. It definitely looks like an reference count problem, but I'm having a hard time trying to find the source of the problem. I was never able to find any information about this weird behavior.
I really need this to work because other wise we end up with big leaking problem when we close the graph and create it again without quitting the application.
Thanks for the help, it would be appreciated
Benoit laforest
____________________________________________________________
Concepteur logiciel / Software designer
Matrox Vidéo - Team DirectShow
blafores@matrox.com <mailto:blafores@matrox.com>
(514) 822-6000 ext7189