c# - How can I change what group and sub-group a DirectShow push source filter appears in? -


i using code create c# directshow push source filter following open source article, builds filter called virtualcam:

http://www.codeproject.com/articles/437617/directshow-virtual-video-capture-source-filter-in

the graphedit utility can find , shows in video capture sources group name csharp virtual camera, , can build filter graph , it works fine. skype can find too. however, other software want use can't find because not show in device enumeration call when using videoinputsource main group. believe class id group:

/// <summary> clsid_videoinputdevicecategory, video capture category </summary> public static readonly guid videoinputdevice = new guid(0x860bb310, 0x5d01, 0x11d0, 0xbd, 0x3b, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86); 

i got class id open source utility scans video input devices. it's 1 of apps can't find virtualcam filter either. these apps can find devices web cam (in other words, virtualcam not show in available device list).

what need virtualcam source code declares/registers video input device , show in device enumeration scan in videoinputdevice category software can see , use it?

update: upon closer inspection in graphedit main difference see between virtualcam filter can't found apps , video capture devices can found virtualcam filter does not have pins defined, while other video capture devices do. if problem, how should define pin allow virtualcam discovered , work service declared interface?

there no subgroup, , group refered "category". filters registered categories. category of interest here clsid_videoinputdevicecategory known "video capture sources".

from registration standpoint, issue can think of 32/64 bitness. filters registered 32-bit filters not visible 64-bit apps , vice versa. might tricky because project c# , might have built anycpu, in event can use 32- , 64-bit graphedit (or rather graphstudionext) make sure filter in list. presence in list of filters ensures registration step passed.

from there on implementation of application show or not show specific video source. applications show every registered source, other skype attempt instantiate source , initial check. if don't source, removed list of choices.

the implementation requirements video source not defined, applications expect filter compatible wdm video capture filter. better applications accept video source if sdk amcap sample can preview it, worse implementations have other assumptions.

in general video source must implement ibasefilter in filter class, , ipin, iamstreamconfig interfaces in pins. should implement iqualitycontrol , ikspropertyset in pins well. implement ispecifypropertypages poor implementations might expect there (even if no pages attached).


Comments

Popular posts from this blog

python - pip install -U PySide error -

arrays - C++ error: a brace-enclosed initializer is not allowed here before ‘{’ token -

cytoscape.js - How to add nodes to Dagre layout with Cytoscape -