Re: aVStream Driver - Filter Centric or Pin Centric? by DoorKeeper
DoorKeeper
Tue Dec 27 02:59:02 CST 2005
sorry folks, pls ignore my last mail. I managed to find out the problem. I
had forgotten to enclose my KSSTRING_Filter with the % sign.
"DoorKeeper" wrote:
> Hi everyone,
>
> I was trying to get my filter to show up under graphedit for the past few
> days but did not manage to make much progress. Here's my inf file and any
> pointers would be much appreciated. Thanks in advance.
>
> ; Copyright (c) Microsoft Corporation. All rights reserved.
>
> [Version]
> signature="$CHICAGO$"
> Class=Media
> ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}
> Provider=%Msft%
> LayoutFile=layout.inf
> DriverVer=07/01/2001,5.1.2600.2180
>
> [ControlFlags]
> ExcludeFromSelect=*
>
> [DestinationDirs]
> USBVideo.CopyList=10,system32\drivers
>
> [Manufacturer]
> %Msft%=Microsoft
>
> [Microsoft]
> %USBVideo.DeviceDesc%=USBVideo,USB\VID_04CC&PID_1B49
>
> [USBVideo.NT]
> Include=ks.inf, kscaptur.inf, dshowext.inf
> Needs=KS.Registration, KSCAPTUR.Registration.NT, DSHOWEXT.Registration
> CopyFiles=USBVideo.CopyList
> AddReg=USBVideo.AddReg, TopologyNodeRegistration, DVCR.Plugins
> PreferDeviceInfo=1
> ; WIA
> SubClass=StillImage
> DeviceType=3
> DeviceSubType=0x1
> Capabilities=0x00000031
> DeviceData=USBVideo.DeviceData
> ICMProfiles="sRGB Color Space Profile.icm"
>
> [USBVideo.AddReg]
> HKR,,DevLoader,,*ntkern
> HKR,,NTMPDriver,,Intvideo.sys
> ; WIA
> HKR,,HardwareConfig,1,1
> HKR,,USDClass,,"{0527d1d0-88c2-11d2-82c7-00c04f8ec183}"
>
> [USBVideo.DeviceData]
> Server=local
> UI DLL=sti.dll
> UI Class ID={5d8ef5a3-ac13-11d2-a093-00c04f72dc3c}
>
> [USBVideo.Interfaces]
> AddInterface=%KSCATEGORY_CAPTURE%,KSSTRING_Filter,USBVideo.Interface
> AddInterface=%KSCATEGORY_VIDEO%,KSSTRING_Filter,USBVideo.Interface
>
> [USBVideo.NT.Interfaces]
> AddInterface=%KSCATEGORY_CAPTURE%,KSSTRING_Filter,USBVideo.Interface
> AddInterface=%KSCATEGORY_VIDEO%,KSSTRING_Filter,USBVideo.Interface
>
> [USBVideo.Interface]
> AddReg=USBVideo.Interface.AddReg
>
> [USBVideo.Interface.AddReg]
> HKR,,CLSID,,%ProxyVCap.CLSID%
> HKR,,FriendlyName,,%USBVideo.DeviceDesc%
> HKR,PageAliases,"{71F96464-78F3-11d0-A18C-00A0C9118956}",1,21,E8,C2,3D,
> 13,47, d2,11, 0xba, 0x41, 0x0, 0xa0, 0xc9, 0xd, 0x2b, 0x5
> HKR,PinFactory\1\Interfaces\{5BB95400-52BB-11d2-BA41-00A0C90D2B05},,,
> HKR,,RTCFlags,0x00010001,0x00000010
>
> [USBVideo.NT.Services]
> AddService = usbvideo,0x00000002,USBVideo.ServiceInstall
>
> [USBVideo.ServiceInstall]
> DisplayName = %USBVideo.SvcDesc%
> ServiceType = %SERVICE_KERNEL_DRIVER%
> StartType = %SERVICE_DEMAND_START%
> ErrorControl = %SERVICE_ERROR_NORMAL%
> ServiceBinary = %10%\System32\Drivers\Intvideo.sys
>
>
> [USBVideo.CopyList]
> Intvideo.sys
>
> [Strings]
>
> ;-----------------
> ; Non-Localizable
> ;-----------------
> ProxyVCap.CLSID="{17CCA71B-ECD7-11D0-B908-00A0C9223196}"
> KSCATEGORY_RENDER="{65E8773E-8F56-11D0-A3B9-00A0C9223196}"
> KSCATEGORY_CAPTURE="{65E8773D-8F56-11D0-A3B9-00A0C9223196}"
> KSCATEGORY_VIDEO="{6994AD05-93EF-11D0-A3CC-00A0C9223196}"
> KSSTRING_Filter="{9B365890-165F-11D0-A195-0020AFD156E4}"
> SERVICE_KERNEL_DRIVER=1
> SERVICE_DEMAND_START=3
> SERVICE_ERROR_NORMAL=1
>
>
> MediaCategories="SYSTEM\CurrentControlSet\Control\MediaCategories"
>
> ;------------
> ;Localizeable
> ;------------
> Msft="Microsoft"
> USBVideo.DeviceDesc="USB Video Device"
> USBVideoStreaming.DeviceDesc="USB Video Device (VS Interface)"
> USBVideo.SvcDesc="USB Video Device (WDM)"
>
>
> "DoorKeeper" wrote:
>
> > Thanks Max, most probably I will go for the Pin Centric approach as I am
> > looking to stream video data from the device.
> >
> > "Max Paklin" wrote:
> >
> > > > I am trying to stream video data across 2 PCs using a USB connection. On
> > > > each side of the PC, I have a USB peripheral device to send and receive
> > > > the
> > > > data respectively.
> > > >
> > > > I hope to enumerate my USB peripheral device as a AVStream device and
> > > > render
> > > > the data using Directshow. May I know if the AVStream driver that I write
> > > > should take the form of a filter-centric or pin-centric filter?
> > >
> > > One way to look at it is to count the number of functions of your device.
> > > What is it that it is designed to do?
> > > For example, if it is an analog capture device then it can spit out analog
> > > video, audio, VBI data and what not.
> > > In that case it is clear that it should be pin centric as it has multiple
> > > output pins.
> > >
> > > One the other hand I find it difficult to justify filter centric approach
> > > for anything other than software-only codecs. Say, you want to write a
> > > kernel mode codec to convert some data of type A to B. In that case you
> > > would probably want to write a filter centeric driver. Otherwise I'd stick
> > > with pin centric approach.
> > >
> > >
> > > > Another problem that I have is the inability to make my device show up
> > > > under
> > > > the WDM STreaming capture devices in Graphedt. I understand that this
> > > > problem
> > > > might have been discussed before and the solution given suggested is often
> > > > to
> > > > check the guid in the inf file with the one given in the Filter
> > > > Descriptor. I
> > > > have checked and both values tally but still I am not able to enumerate my
> > > > device successfully.
> > > >
> > > > May I know what if the successful enumeration of the device only depends
> > > > on
> > > > the inf file and file descriptors or are there other components involved?
> > > > And
> > > > does anybody knows the process in which the enumeration takes place?
> > >
> > > Some time ago I had a list in my head of what can possibly be wrong when the
> > > filter doesn't show in GraphEdit.
> > > I was even thinking about writing short article about it.
> > >
> > > Now I don't remember all those gory details, but I am fairly certain that it
> > > is either missing info in the INF or - most likely - a mismatch between what
> > > you have specified in the driver and in the INF.
> > >
> > > Wrong GUID? Possibly.
> > > There are plenty of GUIDs in KS based driver. Making sure that all of them
> > > match is not easy unless you know your way around KS.
> > > Post your INF here. Hopefully the group will be able to give you some ideas.
> > >
> > > -- Max.
> > >
> > >
> > >