private static void Addcat(Guid g, string dft_name) { string sg = Graph.GuidToString(g); if (!catnames.ContainsKey(sg)) { catnames.Add(sg, dft_name); } }
private void OnLinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { List <string> catlist = new List <string>(); catlist.AddRange(catnames.Values); catlist.Remove(catnames[Graph.GuidToString(FilterCategory.ActiveMovieCategories)]); catlist.Sort(); SearchFilterForm.ShowSearchFilterForm(catlist, checkBoxAllCats.Checked, textBoxSearch.Text, catcombo.SelectedItem.ToString(), MdiParent); }
public Filter(IBaseFilter ibf) { basefilter = ibf; Guid clsid; ibf.GetClassID(out clsid); FilterInfo fi; ibf.QueryFilterInfo(out fi); string strGuid = Graph.GuidToString(clsid); string strCatguid = Graph.GuidToString(FilterCategory.LegacyAmFilterCategory); filterProps = new FilterProps(fi.achName, "", strGuid, strCatguid); filterProps.MakeFileName(); filterProps.SetFilter(this); }
static public List <FilterProps> GetFiltersFromEnum(IEnumMoniker emon, Guid cg) { List <FilterProps> list = new List <FilterProps>(); if (emon != null) { IMoniker[] mon = new IMoniker[1]; while (0 == emon.Next(1, mon, IntPtr.Zero)) { object bagObj = null; Guid propertyBagId = typeof(IPropertyBag).GUID; mon[0].BindToStorage(null, null, ref propertyBagId, out bagObj); IPropertyBag bag = (IPropertyBag)bagObj; object nameObj; bag.Read("FriendlyName", out nameObj, null); string name = nameObj as string; string dispname; mon[0].GetDisplayName(null, null, out dispname); bag.Read("CLSID", out nameObj, null); string clsid = nameObj as string; if (clsid == null && dispname.Contains(":dmo:")) { int st = dispname.IndexOf('{'); int ed = dispname.IndexOf('}'); if (st >= 0 && ed >= 0) { clsid = dispname.Substring(st, ed - st + 1); } } if (clsid != null && !friendlyNames.ContainsKey(clsid)) { friendlyNames.Add(clsid, name); } FilterProps fp = new FilterProps(name, dispname, clsid, Graph.GuidToString(cg)); list.Add(fp); Marshal.ReleaseComObject(bagObj); Marshal.ReleaseComObject(mon[0]); } } return(list); }
private static List <FilterProps> GetDMOFilters(string cat_name) { Guid g = dmo_cats[cat_name]; List <FilterProps> lst = new List <FilterProps>(); DirectShowLib.DMO.IEnumDMO pEnum; if (0 != DirectShowLib.DMO.DMOUtils.DMOEnum(g, DirectShowLib.DMO.DMOEnumerator.IncludeKeyed, 0, null, 0, null, out pEnum)) { return(lst); } Guid[] clsids = new Guid[1]; string[] names = new string[1]; string cat_guid_str = Graph.GuidToString(g); while (pEnum.Next(1, clsids, names, IntPtr.Zero) == 0) { string clsid = Graph.GuidToString(clsids[0]); string devname = "@device:dmo:" + clsid + cat_guid_str; lst.Add(new FilterProps(names[0], devname, clsid, cat_guid_str)); } return(lst); }
public void RefreshCategories() { object old_selection = catcombo.SelectedItem; //clear values catcombo.Items.Clear(); catnames.Clear(); catguids.Clear(); all_filters = null; try { //fill catnames dictionary (guid_string => category_name) ICreateDevEnum devenum = new CreateDevEnum() as ICreateDevEnum; IEnumMoniker emon; int hr = devenum.CreateClassEnumerator(FilterCategory.ActiveMovieCategories, out emon, 0); if (0 == hr) { IMoniker[] mon = new IMoniker[1]; while (0 == emon.Next(1, mon, IntPtr.Zero)) { string name; mon[0].GetDisplayName(null, null, out name); string sg = name.Substring(name.Length - 38, 38).ToUpperInvariant(); object bagObj; Guid propertyBagId = typeof(IPropertyBag).GUID; mon[0].BindToStorage(null, null, ref propertyBagId, out bagObj); IPropertyBag bag = (IPropertyBag)bagObj; object nameObj; bag.Read("FriendlyName", out nameObj, null); name = nameObj as string; if (!catnames.ContainsKey(sg)) { catnames.Add(sg, name); } Marshal.ReleaseComObject(bagObj); Marshal.ReleaseComObject(mon[0]); } } } catch (COMException e) { Graph.ShowCOMException(e, "Can't enumerate filter categories"); return; } catch (Exception e) { MessageBox.Show(e.Message, "Can't enumerate filter categories"); return; } Type ty = typeof(Application); Addcat(FilterCategory.ActiveMovieCategories, "ActiveMovieCategories"); Addcat(FilterCategory.AMKSAudio, "KS Audio"); Addcat(FilterCategory.AMKSCapture, "KS Capture"); Addcat(FilterCategory.AMKSCrossbar, "KS Crossbar"); Addcat(FilterCategory.AMKSDataCompressor, "KS Data Compressor"); Addcat(FilterCategory.AMKSRender, "KS Render"); Addcat(FilterCategory.AMKSSplitter, "KS Splitter"); Addcat(FilterCategory.AMKSTVAudio, "KS TV Audio"); Addcat(FilterCategory.AMKSTVTuner, "KS TV Tuner"); Addcat(FilterCategory.AMKSVBICodec, "KS VBI Codec"); Addcat(FilterCategory.AMKSVideo, "KS Video"); Addcat(FilterCategory.AudioCompressorCategory, "Audio Compressors"); Addcat(FilterCategory.AudioEffects1Category, "Audio Effects 1"); Addcat(FilterCategory.AudioEffects2Category, "Audio Effects 2"); Addcat(FilterCategory.AudioInputDevice, "Audio Input Devices"); Addcat(FilterCategory.AudioRendererCategory, "Audio Renderers"); Addcat(FilterCategory.BDANetworkProvidersCategory, "BDA Network Providers"); Addcat(FilterCategory.BDAReceiverComponentsCategory, "BDA Receiver Components"); Addcat(FilterCategory.BDARenderingFiltersCategory, "BDA Rendering Filters"); Addcat(FilterCategory.BDASourceFiltersCategory, "BDA Source Filters"); Addcat(FilterCategory.BDATransportInformationRenderersCategory, "BDA Transport Information Renderers"); Addcat(FilterCategory.CPCAFiltersCategory, "CPCA Filters"); Addcat(FilterCategory.DeviceControlCategory, "Device Controls"); Addcat(FilterCategory.DMOFilterCategory, "DMO Filters"); Addcat(FilterCategory.KSAudioDevice, "KS Audio Devices"); Addcat(FilterCategory.KSCommunicationsTransform, "KS Communications Transforms"); Addcat(FilterCategory.KSDataDecompressor, "KS Data Decompressors"); Addcat(FilterCategory.KSDataTransform, "KS Data Transforms"); Addcat(FilterCategory.KSInterfaceTransform, "KS Interface Transforms"); Addcat(FilterCategory.KSMixer, "KS Mixers"); Addcat(FilterCategory.LegacyAmFilterCategory, "DirectShow Filters"); // Addcat(FilterCategory.LTMMVideoProcessors, "LTMM Video Processors"); Addcat(FilterCategory.MediaEncoderCategory, "Media Encoders"); Addcat(FilterCategory.MediaMultiplexerCategory, "Media Multiplexers"); Addcat(FilterCategory.MidiRendererCategory, "Midi Renderers"); Addcat(FilterCategory.TransmitCategory, "Transmits"); Addcat(FilterCategory.VideoCompressorCategory, "Video Compressors"); Addcat(FilterCategory.VideoEffects1Category, "Video Effects 1"); Addcat(FilterCategory.VideoEffects2Category, "Video Effects 2"); Addcat(FilterCategory.VideoInputDevice, "Video Input Devices"); Addcat(FilterCategory.WDMStreamingEncoderDevices, "WDM Streaming Encoder Devices"); Addcat(FilterCategory.WDMStreamingMultiplexerDevices, "WDM Streaming Multiplexer Devices"); foreach (KeyValuePair <string, Guid> p in dmo_cats) { Addcat(p.Value, p.Key); } //fill combo box and remember guids foreach (KeyValuePair <string, string> p in catnames) { Guid guid = new Guid(p.Key); if (!catguids.ContainsKey(p.Value)) { catguids.Add(p.Value, guid); } catcombo.Items.Add(p.Value); } RegistryChecker rch = new RegistryChecker(); RegistryChecker.CalcDays(ty); catcombo.SelectedItem = old_selection ?? catnames[Graph.GuidToString(FilterCategory.LegacyAmFilterCategory)]; }