Just one important technical note:
WMFSDK is implemented in COM which introduces some COM related issues - namely threading apartment models: STA and MTA
If WMFSDK (and NAudioWMA) is used within a single threaded application (STA) like my demo console application then everything works fine.
HOWEVER, If there is one main STA (e.g. Windows Forms) and another worker thread where the COM interfaces are used then ALL calls to WMFSDK must go through the thread, in particular initialization.
Changing the main threading model (in Program) to MTA solved the problem, but Windows Forms is not supposed/does not properly to run in MTA.
To workaround this problem, I made my thread MTA (but kept the UI as STA) and moved ALL WMFSDK calls into my thread.
This solution works without any problems.
So to sum it up: There shouldn't be any cross-thread calls on WMFSDK, since COM does not like it.