There are two usable option for using Directshow in .Net so far (excluding the abandoned-managed-directshow) :
- Purely in .Net using DirectshowNet : code -> directshownet
- Get a little bit dirty using C++/CLI : code -> c++/cli bridge-> directshow
- You don't need to translate between what's on the directshow manual with what you need to write. On many cases you could just paste and code many boiler plate code as is and it just run. Using directshownet you have to do some mental gymnastic to do it.
- Debugging would be more comfortable in native language.
- You can hide the complexities of Directshow/COM exclusively in native code and have your managed code stay clean. You'll most likely end up with three layer modularisation : .net code -> c++/cli -> native c++ that access directshow. In the middle layer (c++/cli) you could provide your managed code with clean interfaces using native .net construct e.g: Properties, Event Handler.
To sum up : You'll do better using C++/CLI when :
- You already familiar with C++
- Want to make application rapidly utilizing .Net
The better option from all these would be a .Net library that encapsulate Directshow in a more .Net-friendly way, not just a collection of "typedef"s. An even better one would be a much friendlier multimedia framework (assuming currently directshow's existing codecs and filters ported there too :) ).