Resolving Directshow error values
Error handling is one of the most important thing to do when you are writing a code. Most of the directshow API returns HRESULT. When the HRESULT value is NOERROR, it shows that the calling API has succeded. However, when it is not NOERROR, some kind of error has happened.
To many people, the HRESULT value is just an integer value. It is the reason of the error that is required, not the error value itself. In this page, a way to know the reason of the error from the HRESULT value is shown.
DirectX error value lookup utility
DirectX has an error lookup utility. Using this utility you can just enter the HRESULT integer value and know what it means. It will be much easier than looking for a suitable "#define" in the header file.
You can find the error lookup utitily under "DirectX Utilities > DirectX Error Lookup".
Using Error Lookup
Lets try this error lookup utility. For example, lets enter 0x80004001 as a HRESULT value.
It seems that 0x80004001 is E_NOTIMPL. The description of E_NOTIMPL says that "The function called is not supported at this time", which means NOT IMPLEMENTED.
I hope this helps you debug your directshow code.