Exemplo n.º 1
0
Arquivo: Filterz.cs Projeto: x2v0/gep
        private static void Addcat(Guid g, string dft_name)
        {
            string sg = Graph.GuidToString(g);

            if (!catnames.ContainsKey(sg))
            {
                catnames.Add(sg, dft_name);
            }
        }
Exemplo n.º 2
0
Arquivo: Filterz.cs Projeto: x2v0/gep
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
Arquivo: Filterz.cs Projeto: x2v0/gep
        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);
        }
Exemplo n.º 5
0
Arquivo: Filterz.cs Projeto: x2v0/gep
        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);
        }
Exemplo n.º 6
0
Arquivo: Filterz.cs Projeto: x2v0/gep
        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)];
        }