I have this code that returns a list of installed video compressor codecs:
public static List<string> GetInstalledVideoCompressorCodecs()
{
var codecs = new List<string>();
var filterCategory = FilterCategory.VideoCompressorCategory;
IMoniker[] monikers = new IMoniker[1];
// Get a system device enumerator
var devEnum = (ICreateDevEnum)new CreateDevEnum();
// Enumerate the video codecs installed on the system
devEnum.CreateClassEnumerator(filterCategory, out IEnumMoniker monikerEnum, 0);
while (monikerEnum.Next(1, monikers, IntPtr.Zero) == 0)
{
monikers[0].GetDisplayName(null, null, out string codecName);
// Add the codec name to the list
codecs.Add(codecName);
}
return codecs;
}
However, depending on whether Prefer 32-bit in Project Properties > Build > General is checked, I get either:
u/device:dmo:{7E320092-596A-41B2-BBEB-175D10504EB6}{33D9A760-90C8-11D0-BD43-00A0C911CE86}
u/device:dmo:{D23B90D0-144F-46BD-841D-59E4EB19DC59}{33D9A760-90C8-11D0-BD43-00A0C911CE86}
u/device:dmo:{F7FFE0A0-A4F5-44B5-949E-15ED2BC66F9D}{33D9A760-90C8-11D0-BD43-00A0C911CE86}
u/device:sw:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\DV Video Encoder
u/device:sw:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\MJPEG Compressor
u/device:cm:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\cvid
u/device:cm:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\i420
u/device:cm:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\iyuv
u/device:cm:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\mrle
u/device:cm:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\msvc
u/device:cm:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\xvid
if it's checked, or
u/device:dmo:{7E320092-596A-41B2-BBEB-175D10504EB6}{33D9A760-90C8-11D0-BD43-00A0C911CE86}
u/device:dmo:{D23B90D0-144F-46BD-841D-59E4EB19DC59}{33D9A760-90C8-11D0-BD43-00A0C911CE86}
u/device:dmo:{F7FFE0A0-A4F5-44B5-949E-15ED2BC66F9D}{33D9A760-90C8-11D0-BD43-00A0C911CE86}
u/device:sw:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\DV Video Encoder
u/device:sw:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\ffdshow video encoder
u/device:sw:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\MJPEG Compressor
if it's not checked. Why the difference?