For already years Nvidia’s H.264 video encoder Media Foundation Transform has been broken giving REGDB_E_CLASSNOTREG
“Class not registered” failure in certain circumstances, like main display is not the one connected to Nvidia video adapter.
As simple as this:
CoInitialize(NULL); MFStartup(MF_VERSION); class __declspec(uuid("{60F44560-5A20-4857-BFEF-D29773CB8040}")) CFoo; // NVIDIA H.264 Encoder MFT CComPtr<IMFTransform> pTransform; const HRESULT nCoCreateInstanceResult = pTransform.CoCreateInstance(__uuidof(CFoo)); // NOTE: nCoCreateInstanceResult is 0x80040154 REGDB_E_CLASSNOTREG
The COM server itself is, of course, present and registered properly via their nvEncMFTH264.dll, it’s just broken inside. Being called straightforwardly via IClassFactory.CreateInstance
it gives 0x8000FFFF E_UNEXPECTED
“Catastrophic Failure”, and so it also fails in Media Foundation API scenarios.
This is absolutely not fun, Nvidia!