I'm writing some DirectShow filters to parse and generate multimedia files, as well as encapsulate some of my company's proprietary audio codecs to encode/decode audio streams. I'm pretty much a DirectShow newbie...
I'd like to have the ability for any DirectShow application using my filters to display detailed error messages that my filters generate as they are running and encoding/decoding. However, I couldn't find anything in the DirectX help files about how to report errors from a filter up to an application in a standard way.
The closest I could find was my filter can generate custom events (with codes starting at EC_USER), and issue them to the filter graph manager through IMediaEventSink::Notify(). However, it seems to me that only applications I write, or ones written afterwards which have knowledge of these custom events, would know how to handle these events.
I know that just returning errors from methods like IPin::ReceiveConnection or IMemInputPin::Receive at best just causes the application to display some generic error, such as "unable to play back media".
Does DirectShow support something like the IErrorInfo interface, used to return more detailed error information from COM objects?
Does DirectShow have some other way for filters to provide error information, a standard way I should use, that I'm missing?
I'd like to have the ability for any DirectShow application using my filters to display detailed error messages that my filters generate as they are running and encoding/decoding. However, I couldn't find anything in the DirectX help files about how to report errors from a filter up to an application in a standard way.
The closest I could find was my filter can generate custom events (with codes starting at EC_USER), and issue them to the filter graph manager through IMediaEventSink::Notify(). However, it seems to me that only applications I write, or ones written afterwards which have knowledge of these custom events, would know how to handle these events.
I know that just returning errors from methods like IPin::ReceiveConnection or IMemInputPin::Receive at best just causes the application to display some generic error, such as "unable to play back media".
Does DirectShow support something like the IErrorInfo interface, used to return more detailed error information from COM objects?
Does DirectShow have some other way for filters to provide error information, a standard way I should use, that I'm missing?