Filters are the active components of DirectShow. They read, transform, display and save the multimedia data.
Filters are in fact special DLLs. Except for trivial functions, their development requires an in-depth knowledge of the various DirectShow mechanisms :
Moreover, a good knowledge of COM and OO programming are absolute prerequisites.
Coding of the filter function is in bold, because this is really there that you write the specific code that will perform your processing function !
Never, ever, call a graph method from the Streaming Thread (certain deadlock).
Usually this rather simple, depending on the intended result : use a Transform or a TransInPlace base class if your filter is a transform filter.
For specific cases however (e.g. 2 input pin tranform filter), very often, you will start from CBaseFilter !! (this will often prove much easier than overloading
lots of methods in more complex classes).
The next step consists in following systematically the instructions from the DirectShow Reference BaseClasses documentation regarding
the implementation of abstract methods and overload of virtual ones.
It is better (highly recommended) to re-use the code of the examples (and also
the base classes)