public static Codec Find(BITMAPINFOHEADER format, Codec preferredCodec) { ICModeFlags flags = ICModeFlags.ICMODE_COMPRESS | ICModeFlags.ICMODE_FASTCOMPRESS; Codec codec = Find(format, flags, preferredCodec); if (codec != null) { return(codec); } flags = ICModeFlags.ICMODE_COMPRESS; codec = Find(format, flags, preferredCodec); if (codec != null) { return(codec); } flags = 0; codec = Find(format, flags, preferredCodec); if (codec != null) { return(codec); } return(null); }
private static Codec Find(BITMAPINFOHEADER format, ICModeFlags flags, Codec preferredCodec) { int fccType = mmioStringToFOURCC("VIDC", 0); int preferredFccHandler = 0; if (preferredCodec != null) preferredFccHandler = preferredCodec.FourCCHandler; }
private static Codec Find(BITMAPINFOHEADER format, ICModeFlags flags, Codec preferredCodec) { int fccType = mmioStringToFOURCC("VIDC", 0); int preferredFccHandler = 0; if (preferredCodec != null) preferredFccHandler = preferredCodec.FourCCHandler; IntPtr handle = ICLocate(fccType, preferredFccHandler, ref format, IntPtr.Zero, (short)flags); GC.KeepAlive(format); if (handle != IntPtr.Zero) { ICINFO icInfo = new ICINFO(); icInfo.dwSize = Marshal.SizeOf(icInfo); if (0 == ICGetInfo(handle, ref icInfo, icInfo.dwSize)) { ICClose(handle); return null; } ICClose(handle); return CollectionUtils.SelectFirst( _installedCodecs, delegate(Codec codec) { return codec.FourCCHandler == icInfo.fccHandler; }); } return null; }