The way I did it was create classes wrapping the DirectShow technology I needed in managed C++ and then call those from C#. It is working out great and seems to be very fast. I am actually surprised at the performance. Way better then the first way I did it, which is wrap DirectShow using COM interop wrappers.
So I would recommend this way. Just my .02 cents.