I develop USBCAMD minidriver for usb pc camera device.
The device works well for AMCAP or other video capture program.
However, it doesn't work for MSN messenger.
Messenger's wizard can enumerate my device.
Wizard tells me it cannot use the device after I select my device.
I don't find anything wrong in the driver behavior.

Please give me some suggestion to debug this problem.
or some additional things I need to implement in usbcamd driver?

Best Regards

Jackal Huang

Re: Why can't my usbcamd driver work well for MSN messenger? by haipt

haipt
Fri Jan 14 02:46:03 CST 2005

"Jackal Huang" <huangjj@hotmail.com> wrote in message
news:OCzHH4g%23EHA.2788@TK2MSFTNGP15.phx.gbl...
> I develop USBCAMD minidriver for usb pc camera device.
> The device works well for AMCAP or other video capture program.
> However, it doesn't work for MSN messenger.
> Messenger's wizard can enumerate my device.
> Wizard tells me it cannot use the device after I select my device.
> I don't find anything wrong in the driver behavior.
>
> Please give me some suggestion to debug this problem.
> or some additional things I need to implement in usbcamd driver?
>
> Best Regards
>
> Jackal Huang
>
>

Hi, i've got the same problem. Maybe we could try to work it out together.

In MSN Messenger on Windows XP: if i select my driver in the Wizard, it
would say that the camera does not function properly. However, if i just go
to the end of the wizard I would be able to use it in the webcam setting
window.

I've worked on this for quite sometime. I've seen other people having the
same problem. I realized that MSN uses RTC (Real-Time Communication) API for
the Wizard (invokeTuningWizard()), which's also be used by AIM. That's bad:
if your driver does not work in MSN, it also does not work in AIM. Yahoo
Messenger uses their own code so they don't have that issue.

I've done some experiments, and from tracing the debug information I would
think that when you start the Wizard, it would check KsProxy for some
interfaces encoded in FilterData of your driver in the registry
(HKLM\System\CurrentControlset\Control\DeviceClasses\65e9773d-8f56....\YourD
river\). If your driver does not have that required interfaces then MSN
Messenger would not care to intialize your driver at all. But that's it, i
haven't found what's exactly is required there. Good luck to you. And hope
we would find out what's actually happening inside.
Hai




Re: Why can't my usbcamd driver work well for MSN messenger? by Maxim

Maxim
Fri Jan 14 04:14:57 CST 2005

Can it work with GRAPHEDT?

--
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
maxim@storagecraft.com
http://www.storagecraft.com

"Jackal Huang" <huangjj@hotmail.com> wrote in message
news:OCzHH4g%23EHA.2788@TK2MSFTNGP15.phx.gbl...
> I develop USBCAMD minidriver for usb pc camera device.
> The device works well for AMCAP or other video capture program.
> However, it doesn't work for MSN messenger.
> Messenger's wizard can enumerate my device.
> Wizard tells me it cannot use the device after I select my device.
> I don't find anything wrong in the driver behavior.
>
> Please give me some suggestion to debug this problem.
> or some additional things I need to implement in usbcamd driver?
>
> Best Regards
>
> Jackal Huang
>
>



Re: Why can't my usbcamd driver work well for MSN messenger? by Maxim

Maxim
Fri Jan 14 04:15:55 CST 2005

> In MSN Messenger on Windows XP: if i select my driver in the Wizard, it

Use good old Video For Windows API instead of all these new-fashioned AVStreams
:) cameras developed using VoW automatically work in MSN Messenger.

--
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
maxim@storagecraft.com
http://www.storagecraft.com



Re: Why can't my usbcamd driver work well for MSN messenger? by Jackal

Jackal
Sun Jan 16 19:31:54 CST 2005

Yes, my usbcamd driver works well with graphedit.
It works well in everything except messenger.

Jackal Huang

"Maxim S. Shatskih" <maxim@storagecraft.com> ...
> Can it work with GRAPHEDT?
>
> --
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> maxim@storagecraft.com
> http://www.storagecraft.com
>
> "Jackal Huang" <huangjj@hotmail.com> wrote in message
> news:OCzHH4g%23EHA.2788@TK2MSFTNGP15.phx.gbl...
>> I develop USBCAMD minidriver for usb pc camera device.
>> The device works well for AMCAP or other video capture program.
>> However, it doesn't work for MSN messenger.
>> Messenger's wizard can enumerate my device.
>> Wizard tells me it cannot use the device after I select my device.
>> I don't find anything wrong in the driver behavior.
>>
>> Please give me some suggestion to debug this problem.
>> or some additional things I need to implement in usbcamd driver?
>>
>> Best Regards
>>
>> Jackal Huang
>>
>>
>
>



Re: Why can't my usbcamd driver work well for MSN messenger? by haipt

haipt
Mon Jan 17 02:03:18 CST 2005

You can try KsStudio (in DDK\Tools\AVStream) & attach your filter (driver)
to see the IRPs back and forth with MSN Messenger.
From there you could guess where things get wrong. Anyway MSN Messenger
requires raw frame format (e.g. RGB24), and certain frame size.
And if you ignore the wizard, could you still use your driver inside the
webcam setting?

Hai

"Jackal Huang" <huangjj@hotmail.com> wrote in message
news:%23XsIORD$EHA.3908@TK2MSFTNGP12.phx.gbl...
> Yes, my usbcamd driver works well with graphedit.
> It works well in everything except messenger.
>
> Jackal Huang
>
> "Maxim S. Shatskih" <maxim@storagecraft.com> ...
> > Can it work with GRAPHEDT?
> >
> > --
> > Maxim Shatskih, Windows DDK MVP
> > StorageCraft Corporation
> > maxim@storagecraft.com
> > http://www.storagecraft.com
> >
> > "Jackal Huang" <huangjj@hotmail.com> wrote in message
> > news:OCzHH4g%23EHA.2788@TK2MSFTNGP15.phx.gbl...
> >> I develop USBCAMD minidriver for usb pc camera device.
> >> The device works well for AMCAP or other video capture program.
> >> However, it doesn't work for MSN messenger.
> >> Messenger's wizard can enumerate my device.
> >> Wizard tells me it cannot use the device after I select my device.
> >> I don't find anything wrong in the driver behavior.
> >>
> >> Please give me some suggestion to debug this problem.
> >> or some additional things I need to implement in usbcamd driver?
> >>
> >> Best Regards
> >>
> >> Jackal Huang
> >>
> >>
> >
> >
>
>



Re: Why can't my usbcamd driver work well for MSN messenger? by Jackal

Jackal
Mon Jan 17 05:04:36 CST 2005

After several testing, I still cannot find out the solution.
Currently, my driver supports RGB565 and YUYV with the
following size : 640x480, 320x240, 160x120.

Your condition is better than mine.
After ignore the wizard, messenger still cannot use my camera .
My camera device is a usb composite device with video and audio interface.
I don't know whether it's a issue.

Currently, I compare my driver with DDK testcap sample driver since testcap
can work well for messenger. So far, I don't find the possible reason yet.
I just modify vendor specific codes in usbcamd sample code.
I can't figure out why it doesn't work for messenger.
It's really a strange problem.
Many vendors developed their camera driver based on usbcamd.

Jackal Huang

"haipt" <hai@eyepowergames.com> ...
> You can try KsStudio (in DDK\Tools\AVStream) & attach your filter (driver)
> to see the IRPs back and forth with MSN Messenger.
> From there you could guess where things get wrong. Anyway MSN Messenger
> requires raw frame format (e.g. RGB24), and certain frame size.
> And if you ignore the wizard, could you still use your driver inside the
> webcam setting?
>
> Hai
>
> "Jackal Huang" <huangjj@hotmail.com> wrote in message
> news:%23XsIORD$EHA.3908@TK2MSFTNGP12.phx.gbl...
>> Yes, my usbcamd driver works well with graphedit.
>> It works well in everything except messenger.
>>
>> Jackal Huang
>>
>> "Maxim S. Shatskih" <maxim@storagecraft.com> ...
>> > Can it work with GRAPHEDT?
>> >
>> > --
>> > Maxim Shatskih, Windows DDK MVP
>> > StorageCraft Corporation
>> > maxim@storagecraft.com
>> > http://www.storagecraft.com
>> >
>> > "Jackal Huang" <huangjj@hotmail.com> wrote in message
>> > news:OCzHH4g%23EHA.2788@TK2MSFTNGP15.phx.gbl...
>> >> I develop USBCAMD minidriver for usb pc camera device.
>> >> The device works well for AMCAP or other video capture program.
>> >> However, it doesn't work for MSN messenger.
>> >> Messenger's wizard can enumerate my device.
>> >> Wizard tells me it cannot use the device after I select my device.
>> >> I don't find anything wrong in the driver behavior.
>> >>
>> >> Please give me some suggestion to debug this problem.
>> >> or some additional things I need to implement in usbcamd driver?
>> >>
>> >> Best Regards
>> >>
>> >> Jackal Huang
>> >>
>> >>
>> >
>> >
>>
>>
>
>



Re: Why can't my usbcamd driver work well for MSN messenger? by Jackal

Jackal
Wed Jan 19 06:29:27 CST 2005


"haipt" <hai@eyepowergames.com> > You can try KsStudio (in
DDK\Tools\AVStream) & attach your filter (driver)
> to see the IRPs back and forth with MSN Messenger.
> From there you could guess where things get wrong. Anyway MSN Messenger
> requires raw frame format (e.g. RGB24), and certain frame size.
> And if you ignore the wizard, could you still use your driver inside the
> webcam setting?
>
> Hai

After trace testcap sample code, I do some modification to test.
It calls StreamClassRegisterFilterWithNoKSPins when
SRB_INITIALIZATION_COMPLETE.
Usbcamd doesn't call this function at all.
I removed the code of calling StreamClassRegisterFilterWithNoKSPins and
test.
It got the same result with yours.
This function has something to do with directshow, but I don't understand it
well.

Jackal Huang



Re: Why can't my usbcamd driver work well for MSN messenger? by Max

Max
Wed Jan 19 15:01:45 CST 2005

StreamClassRegisterFilterWithNoKSP creates a cache entry for the filter in
question in registry so that IFilterMapper(2) can get access to it.
To speed up graph building process the graph builder relies on the filter
cache information under certain circumstances. If that information is
missing it can't proceed.

GraphEdit doesn't need that data as the user is supposed to build graph
manually so while your driver can be mostly working under almost all apps,
some apps can still fail to work with it simply because you either don't
call StreamClassRegisterFilterWithNoKSP or call it with wrong params.

MSN Messenger as well as some video editing apps as well as Media Center
rely on device to create a cache for its filters.

-- Max.



"Jackal Huang" <huangjj@hotmail.com> wrote in message
news:%23vFmEKi$EHA.2568@TK2MSFTNGP11.phx.gbl...
>
> "haipt" <hai@eyepowergames.com> > You can try KsStudio (in
> DDK\Tools\AVStream) & attach your filter (driver)
>> to see the IRPs back and forth with MSN Messenger.
>> From there you could guess where things get wrong. Anyway MSN Messenger
>> requires raw frame format (e.g. RGB24), and certain frame size.
>> And if you ignore the wizard, could you still use your driver inside the
>> webcam setting?
>>
>> Hai
>
> After trace testcap sample code, I do some modification to test.
> It calls StreamClassRegisterFilterWithNoKSPins when
> SRB_INITIALIZATION_COMPLETE.
> Usbcamd doesn't call this function at all.
> I removed the code of calling StreamClassRegisterFilterWithNoKSPins and
> test.
> It got the same result with yours.
> This function has something to do with directshow, but I don't understand
> it well.
>
> Jackal Huang
>



Re: Why can't my usbcamd driver work well for MSN messenger? by haipt

haipt
Thu Jan 20 00:12:01 CST 2005

That's interesting, Thanks for sharing. I'll see if it could help in my
case.

"Max Paklin" <mpaklin@hotmail.com> wrote in message
news:%23b$1Wom$EHA.2572@tk2msftngp13.phx.gbl...
> StreamClassRegisterFilterWithNoKSP creates a cache entry for the filter in
> question in registry so that IFilterMapper(2) can get access to it.
> To speed up graph building process the graph builder relies on the filter
> cache information under certain circumstances. If that information is
> missing it can't proceed.
>
> GraphEdit doesn't need that data as the user is supposed to build graph
> manually so while your driver can be mostly working under almost all apps,
> some apps can still fail to work with it simply because you either don't
> call StreamClassRegisterFilterWithNoKSP or call it with wrong params.
>
> MSN Messenger as well as some video editing apps as well as Media Center
> rely on device to create a cache for its filters.
>
> -- Max.
>
>
>
> "Jackal Huang" <huangjj@hotmail.com> wrote in message
> news:%23vFmEKi$EHA.2568@TK2MSFTNGP11.phx.gbl...
> >
> > "haipt" <hai@eyepowergames.com> > You can try KsStudio (in
> > DDK\Tools\AVStream) & attach your filter (driver)
> >> to see the IRPs back and forth with MSN Messenger.
> >> From there you could guess where things get wrong. Anyway MSN Messenger
> >> requires raw frame format (e.g. RGB24), and certain frame size.
> >> And if you ignore the wizard, could you still use your driver inside
the
> >> webcam setting?
> >>
> >> Hai
> >
> > After trace testcap sample code, I do some modification to test.
> > It calls StreamClassRegisterFilterWithNoKSPins when
> > SRB_INITIALIZATION_COMPLETE.
> > Usbcamd doesn't call this function at all.
> > I removed the code of calling StreamClassRegisterFilterWithNoKSPins and
> > test.
> > It got the same result with yours.
> > This function has something to do with directshow, but I don't
understand
> > it well.
> >
> > Jackal Huang
> >
>
>



Re: Why can't my usbcamd driver work well for MSN messenger? by Jackal

Jackal
Thu Jan 20 05:33:34 CST 2005


"Max Paklin" <mpaklin@hotmail.com> ...
> StreamClassRegisterFilterWithNoKSP creates a cache entry for the filter in
> question in registry so that IFilterMapper(2) can get access to it.
> To speed up graph building process the graph builder relies on the filter
> cache information under certain circumstances. If that information is
> missing it can't proceed.
>
> GraphEdit doesn't need that data as the user is supposed to build graph
> manually so while your driver can be mostly working under almost all apps,
> some apps can still fail to work with it simply because you either don't
> call StreamClassRegisterFilterWithNoKSP or call it with wrong params.
>
> MSN Messenger as well as some video editing apps as well as Media Center
> rely on device to create a cache for its filters.
>
> -- Max.

Does each stream class minidriver needs to call this function?
testcap sample code has comment for calling this function with
KSCATEGORY_CAPTURE.
It said "This should be done automatically by MSKsSrv.sys when that
component comes on line"

I also try to call this function in my usbcamd minidriver. It returns
success status.
However, the result is same. Wizard told me it cannot function the device
properly.
When I unplug the device, the driver is not unload automatically.

Jackal Huang



Re: Why can't my usbcamd driver work well for MSN messenger? by Max

Max
Thu Jan 20 14:12:00 CST 2005

No, it does not have to be called for everything.
For filters that are serviced by KSProxy this is not needed as KSProxy does
it for you automatically.

Only for those filters that aren't represented by KSProxy in user land this
is needed.
These filters are usually limited by analog TV tuner filters, Crossbars and
TV audio filters. These 3 categories are serviced by kstvtune.ax and
ksxbar.ax.
Basic rule: if you have a filter descriptor (AVStream) or stream descriptor
(Stream Class) then the filters generated by the class driver for you
already have cached data in registry.

-- Max.



"Jackal Huang" <huangjj@hotmail.com> wrote in message
news:%23y3bsPu$EHA.4004@tk2msftngp13.phx.gbl...
>
> "Max Paklin" <mpaklin@hotmail.com> ...
>> StreamClassRegisterFilterWithNoKSP creates a cache entry for the filter
>> in question in registry so that IFilterMapper(2) can get access to it.
>> To speed up graph building process the graph builder relies on the filter
>> cache information under certain circumstances. If that information is
>> missing it can't proceed.
>>
>> GraphEdit doesn't need that data as the user is supposed to build graph
>> manually so while your driver can be mostly working under almost all
>> apps, some apps can still fail to work with it simply because you either
>> don't call StreamClassRegisterFilterWithNoKSP or call it with wrong
>> params.
>>
>> MSN Messenger as well as some video editing apps as well as Media Center
>> rely on device to create a cache for its filters.
>>
>> -- Max.
>
> Does each stream class minidriver needs to call this function?
> testcap sample code has comment for calling this function with
> KSCATEGORY_CAPTURE.
> It said "This should be done automatically by MSKsSrv.sys when that
> component comes on line"
>
> I also try to call this function in my usbcamd minidriver. It returns
> success status.
> However, the result is same. Wizard told me it cannot function the device
> properly.
> When I unplug the device, the driver is not unload automatically.
>
> Jackal Huang
>
>



Re: Why can't my usbcamd driver work well for MSN messenger? by Jackal

Jackal
Fri Jan 21 04:15:23 CST 2005


"Max Paklin" <mpaklin@hotmail.com> ...
> No, it does not have to be called for everything.
> For filters that are serviced by KSProxy this is not needed as KSProxy
> does it for you automatically.
>
> Only for those filters that aren't represented by KSProxy in user land
> this is needed.
> These filters are usually limited by analog TV tuner filters, Crossbars
> and TV audio filters. These 3 categories are serviced by kstvtune.ax and
> ksxbar.ax.
> Basic rule: if you have a filter descriptor (AVStream) or stream
> descriptor (Stream Class) then the filters generated by the class driver
> for you already have cached data in registry.
>
> -- Max.

It seems that class driver doesn't generate cache entry well for my device
filter.
If testcap sample driver doesn't call StreamClassRegisterFilterWithNoKSP,
messenger audio/video wizard reports the device cannot funcion properly.
If I ignore the error, I still can use testcap in messenger window well.
It's the exact problem my camera driver meets while using messenger wizard.

According to your description, my usbcamd driver needn't to call
StreamClassRegisterFilterWithNoKSP since it provides its stream descriptor
when receive SRB_GET_STREAM_INFO request. I have carefully checked
the stream descriptor and stream format and find nothing wrong.

Do you have any suggestion about debug this problem?

Jackal Huang



Re: Why can't my usbcamd driver work well for MSN messenger? by Max

Max
Fri Jan 21 12:03:32 CST 2005

I missed what I said.
It is easy to put into words for AVStream that has a concept of a pin and a
filter.
Stream class solution is confusing as it doesn't define filters. It defines
and adapter object that has pins. How it gets mapped into DShow filter is
not straighforward.

Look at your INF.
You should have more than one AddInterface directives. One of them adds an
interface that is serviced by ksproxy.ax. Others are be serviced by
something else. Correct?
So the filter under category that is serviced by ksproxy.ax doesn't require
an explicit call to StreamClassRegisterFilterWithNoKSPins (you can still
call it, it won't do anything bad to you).

Other filters that your driver exposes require a call to
StreamClassRegisterFilterWithNoKSPins.

In terms of TestCap sample all calls to
StreamClassRegisterFilterWithNoKSPins are necessary except the last one that
updates the cache for KSCATEGORY_CAPTURE. You should be able to safely
remove that one.

-- Max.



"Jackal Huang" <huangjj@hotmail.com> wrote in message
news:%237r5fI6$EHA.2876@TK2MSFTNGP12.phx.gbl...
>
> "Max Paklin" <mpaklin@hotmail.com> ...
>> No, it does not have to be called for everything.
>> For filters that are serviced by KSProxy this is not needed as KSProxy
>> does it for you automatically.
>>
>> Only for those filters that aren't represented by KSProxy in user land
>> this is needed.
>> These filters are usually limited by analog TV tuner filters, Crossbars
>> and TV audio filters. These 3 categories are serviced by kstvtune.ax and
>> ksxbar.ax.
>> Basic rule: if you have a filter descriptor (AVStream) or stream
>> descriptor (Stream Class) then the filters generated by the class driver
>> for you already have cached data in registry.
>>
>> -- Max.
>
> It seems that class driver doesn't generate cache entry well for my device
> filter.
> If testcap sample driver doesn't call StreamClassRegisterFilterWithNoKSP,
> messenger audio/video wizard reports the device cannot funcion properly.
> If I ignore the error, I still can use testcap in messenger window well.
> It's the exact problem my camera driver meets while using messenger
> wizard.
>
> According to your description, my usbcamd driver needn't to call
> StreamClassRegisterFilterWithNoKSP since it provides its stream descriptor
> when receive SRB_GET_STREAM_INFO request. I have carefully checked
> the stream descriptor and stream format and find nothing wrong.
>
> Do you have any suggestion about debug this problem?
>
> Jackal Huang
>



Re: Why can't my usbcamd driver work well for MSN messenger? by Jackal

Jackal
Mon Jan 24 01:06:59 CST 2005

"Max Paklin" <mpaklin@hotmail.com> ..
>I missed what I said.
> It is easy to put into words for AVStream that has a concept of a pin and
> a filter.
> Stream class solution is confusing as it doesn't define filters. It
> defines and adapter object that has pins. How it gets mapped into DShow
> filter is not straighforward.
>
> Look at your INF.
> You should have more than one AddInterface directives. One of them adds an
> interface that is serviced by ksproxy.ax. Others are be serviced by
> something else. Correct?
> So the filter under category that is serviced by ksproxy.ax doesn't
> require an explicit call to StreamClassRegisterFilterWithNoKSPins (you can
> still call it, it won't do anything bad to you).
>
> Other filters that your driver exposes require a call to
> StreamClassRegisterFilterWithNoKSPins.
>
> In terms of TestCap sample all calls to
> StreamClassRegisterFilterWithNoKSPins are necessary except the last one
> that updates the cache for KSCATEGORY_CAPTURE. You should be able to
> safely remove that one.
>
> -- Max.
>

Yes, TestCap can work well on almost AP except messenger if it doesn't call
StreamClassRegisterFilterWithNoKSPins for KSCATEGORY_CAPTURE.
Without calling this function, messenger wizard reports the device doesn't
function
properly. That's exactly what my driver's problem.

Is it possible to check whether cache of KSCATEGORY_CAPTURE is updated
successfully? registry or other way?

Do I need to call any unregister function for
StreamClassRegisterFilterWithNoKSPins?
I also try to call this function in my driver, but it still doesn't work.
After remove the device, the driver is not unload automatically.

My Inf comes from DDK sample code and looks like the following.
I think my driver is also serves by ksproxy.ax

[USBDCam.NT]
Include= ks.inf, kscaptur.inf
Needs= KS.Registration,KSCAPTUR.Registration.NT
AddReg= USBDCam.AddReg
CopyFiles=USBDCam.Files.Ext, Plugin.Files

[USBDCam.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,tasccam.sys
HKR,,OkToHibernate,3,01
HKR,,DontSuspendIfStreamsAreRunning,3,01
HKR,,PageOutWhenUnopened,3,01
HKR,,PowerDownWhenUnopened,3,01

[USBDCam.NT.Interfaces]
AddInterface=%KSCATEGORY_CAPTURE%,GLOBAL,USBDCam.Interface
AddInterface=%KSCATEGORY_VIDEO%,GLOBAL,USBDCam.Interface

[USBDCam.Interface]
AddReg=USBDCam.Intf.AddReg

[USBDCam.Intf.AddReg]
HKR,,CLSID,,%ProxyVCap.CLSID%
HKR,,FriendlyName,,%USB Camera Friendly Name%

[Strings]
ProxyVCap.CLSID="{17CCA71B-ECD7-11D0-B908-00A0C9223196}"
KSCATEGORY_CAPTURE="{65E8773D-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_VIDEO="{6994AD05-93EF-11D0-A3CC-00A0C9223196}"



Re: Why can't my usbcamd driver work well for MSN messenger? by ZhiWeiChen

ZhiWeiChen
Mon Jan 24 05:55:03 CST 2005



"MSN Messenger requires raw frame format (e.g. RGB24), and certain frame size"
Where or How can I know the frame format and size supported by MSN messenger.
Do it support frames of YUV420(fourcc IYUV or I420), with size of
QCIF(176*144) CIF(352*288)?

Eric Chen

"haipt" wrote:

> You can try KsStudio (in DDK\Tools\AVStream) & attach your filter (driver)
> to see the IRPs back and forth with MSN Messenger.
> From there you could guess where things get wrong. Anyway MSN Messenger
> requires raw frame format (e.g. RGB24), and certain frame size.
> And if you ignore the wizard, could you still use your driver inside the
> webcam setting?
>
> Hai
>


Re: Why can't my usbcamd driver work well for MSN messenger? by haipt

haipt
Mon Jan 24 20:21:51 CST 2005

This was once discussed on this newsgroup, topic "Streaming minidriver
problems with Microsoft Messenger"

I quote part of the discussion here. So it seems that your format is
supported.
"
WMessenger needs decoded video data (RGB, YUV and so on).


Your driver needs to expose the following specs of the video source pin to
WMessenger.


In a few words, the sizes attempted are:


176_144 (this 1st tried, default, preferred)
128_96
352_288
160_120
320_240
240_180


As for the formats, the order is:


MSH263, MSH261, I420, IYUV, YVU9, YUY2, UYVY, RGB16, RGB24, RGB4, RGB8.
Notice that, with a few exceptions, they are tried in increasing order of
frame size (in bytes, for a given image size), thus attempting to save
bandwidth.


For the frame rate, a maximum of 30 fps is attempted; I think 30 is more
than enough from a quality point of view (actually 15 is good enough
already).


HOWEVER, we (Microsoft) are working on USB Video Class (current version is
V0.7c) in USB DWG.

"



"Zhi-Wei Chen" <ZhiWeiChen@discussions.microsoft.com> wrote in message
news:055CF30A-C504-4BD8-ADFE-774735E6E84C@microsoft.com...
>
>
> "MSN Messenger requires raw frame format (e.g. RGB24), and certain frame
size"
> Where or How can I know the frame format and size supported by MSN
messenger.
> Do it support frames of YUV420(fourcc IYUV or I420), with size of
> QCIF(176*144) CIF(352*288)?
>
> Eric Chen
>
> "haipt" wrote:
>
> > You can try KsStudio (in DDK\Tools\AVStream) & attach your filter
(driver)
> > to see the IRPs back and forth with MSN Messenger.
> > From there you could guess where things get wrong. Anyway MSN Messenger
> > requires raw frame format (e.g. RGB24), and certain frame size.
> > And if you ignore the wizard, could you still use your driver inside the
> > webcam setting?
> >
> > Hai
> >
>



Re: Why can't my usbcamd driver work well for MSN messenger? by Jackal

Jackal
Mon Jan 24 21:37:05 CST 2005

Hai,

Have you solved this problem?

Jackal Huang



Re: Why can't my usbcamd driver work well for MSN messenger? by Max

Max
Tue Jan 25 00:48:08 CST 2005

> Yes, TestCap can work well on almost AP except messenger if it doesn't
> call
> StreamClassRegisterFilterWithNoKSPins for KSCATEGORY_CAPTURE.
> Without calling this function, messenger wizard reports the device doesn't
> function
> properly. That's exactly what my driver's problem.

Hmm... This is suprising to me. At least under AVStream the class driver
takes care of creating the cache, so calling KsRegisterFilterWithNoKSPins is
not necessary (not that it would harm).
I thought the same thing applies to Stream Class, but maybe I am mistaken.

In that case save yourself the trouble and always call it. It's will do no
harm even if the cache has been created already.


> Is it possible to check whether cache of KSCATEGORY_CAPTURE is updated
> successfully? registry or other way?

Yes, registry. Search registry with the filter name. It should be somewhere
under HKLM\System\CurrentControlSet\Control\DeviceClasses\[GUID]
Particular filter instance should have \Control\Linked set to 1 (i.e. it is
being used) and \Control\Device Parameters\ should contain FilterData blob,
which is an a binary form of REGFILTER2 (see DShow documentation on that).

Newer versions of GraphEdit should allow browsing filter pins (their types,
etc.) from Insert Filter dialog. If the filter does not contain its detail
description under it then its cache is not present.


> Do I need to call any unregister function for
> StreamClassRegisterFilterWithNoKSPins?

No. There is no "unregister" routine.


> I also try to call this function in my driver, but it still doesn't work.
> After remove the device, the driver is not unload automatically.

The fact that the driver doesn't unload should not have anything to do with
calling this function.
I can't tell why it still doesn't work for you. There must be something else
that is missing. Try replacing your device/stream descriptors with those of
TestCap and see if it makes it work. If it does then your descriptors are
off. Alternatively replaced stream descritors in TestCap with yours and see
if it works. If it does then your code is missing some little tweak.

Your INF looks fine, i.e. nothing is obviously wrong.

-- Max.



Re: Why can't my usbcamd driver work well for MSN messenger? by haipt

haipt
Tue Jan 25 04:08:07 CST 2005

Nah I haven't :( Having other tasks at hand...so i'll come back when i've
got chance. Anyway looking forward to your good news :)

"Jackal Huang" <huangjj@hotmail.com> wrote in message
news:%23Neeq8oAFHA.3264@TK2MSFTNGP12.phx.gbl...
> Hai,
>
> Have you solved this problem?
>
> Jackal Huang
>
>



Re: Why can't my usbcamd driver work well for MSN messenger? by Jackal

Jackal
Thu Jan 27 02:00:56 CST 2005

> Yes, registry. Search registry with the filter name. It should be
> somewhere under HKLM\System\CurrentControlSet\Control\DeviceClasses\[GUID]
> Particular filter instance should have \Control\Linked set to 1 (i.e. it
> is being used) and \Control\Device Parameters\ should contain FilterData
> blob, which is an a binary form of REGFILTER2 (see DShow documentation on
> that).
>
> Newer versions of GraphEdit should allow browsing filter pins (their
> types, etc.) from Insert Filter dialog. If the filter does not contain its
> detail description under it then its cache is not present.

I can find those registry keys and browse detail descriptioin of filter pin
for my capture device.

> Try replacing your device/stream descriptors with those of TestCap and see
> if it makes it work. If it does then your descriptors are off.
> Alternatively replaced stream descritors in TestCap with yours and see if
> it works. If it does then your code is missing some little tweak.

Without calling StreamClassRegisterFilterWithNoKSPins, TestCap has the
same problem with my capture driver. I think it's useless to replace stream
descriptors.

I have no idea about this problem now.............

Jackal Huang



Re: Why can't my usbcamd driver work well for MSN messenger? by Max

Max
Thu Jan 27 13:54:35 CST 2005

>> Try replacing your device/stream descriptors with those of TestCap and
>> see if it makes it work. If it does then your descriptors are off.
>> Alternatively replaced stream descritors in TestCap with yours and see if
>> it works. If it does then your code is missing some little tweak.
>
> Without calling StreamClassRegisterFilterWithNoKSPins, TestCap has the
> same problem with my capture driver. I think it's useless to replace
> stream
> descriptors.
>
> I have no idea about this problem now.............

I gave an idea. It's your turn to try it out.
You have a working driver in front of you (TestCap) and you have your
driver, which doesn't work.
There is no miracle here.

The difference is coming from the way you register its pin descriptors and
such. Get TestCap topology in your code, make it work, and then work from
that point back to your topology and see what step is breaking it. Not fun,
i know, but given the lack of source code or diagnostics from the Messenger
it's IMO the only way to go.

-- Max.