questions about USBCAMD

Dear sir,

I think Tim are right and I should start over. Now I modify the USBCAMD minidriver, whose sample is USBINTEL. But I encouter some problems, which are as following:

  1. I modify the USBINTEL.inf, and then install the driver. But the system says that the hardware can not be started with Error 0. Why? What should I do to install the driver correctly?
  2. If I install the usbintel correctly, can the application called AmCap2 enumerate my camera?
  3. If the usbintel is modified successfully, is it necessary to develop my application?Or can I reuse the existing application, such as MSN?
  4. The two avstream sample are not USB-based. Did you know where I can get the AVStream sample based USB?

Thank you for reading and answering.

xxxxx@gmail.com wrote:

Dear sir,

I think Tim are right and I should start over. Now I modify the USBCAMD minidriver, whose sample is USBINTEL. But I encouter some problems, which are as following:

  1. I modify the USBINTEL.inf, and then install the driver. But the system says that the hardware can not be started with Error 0. Why? What should I do to install the driver correctly

There is no error 0, as far as I know. Where did you see that message?

> 2) If I install the usbintel correctly, can the application called
> AmCap2 enumerate my camera?

Yes. USBCAMD is kernel streaming version 1 (AVStream is KS2), but it is
still kernel streaming, and your driver will be a perfectly normal video
capture device.

> 3) If the usbintel is modified successfully, is it necessary to
> develop my application?Or can I reuse the existing application, such
> as MSN?

It will work in any application that knows how to use video capture
devices, including MSN. All of Intel’s web cameras (when they still
produced web cameras) used the USBCAMD model, and they were pioneers in
the NetMeeting arena.

> 4) The two avstream sample are not USB-based. Did you know where I can
> get the AVStream sample based USB?

Unfortunately, there is no such sample. However, the samples are
written so that the hardware simulation is pretty well isolated. Thus,
all you need to do is replace the hardware simulation class with a class
that talks to USB. It took me less than a week to do that basic work,
although it took a bit longer to get it tweaked.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

>>When you give the interface number specifically, USBD will filter the configuration descriptor so that it looks like your device only has that one interface. So, if you were to use the “MI_01” line, then USBCAMD would be fooled into using the streaming interface, so it should work.

I am glad to hear that. (But that means USBCAMD only support one interface which is an iso Streaming interface. Is that right?)

>However, that leaves the question of what to do with the other interface. You don’t want to have it go to Intel.USBDCam, because that driver doesn’t know how to handle that interface. In fact, you might want to specify a null driver.

According to your description, USBCAMD only handles the streaming interface, and the other interface should not go to USBCAMD by specifying a null driver. But some functions, such as brightness and contrast change , exist in the control interface of my camera. So I think I shoud not specify the null driver for it and should specify a specific driver for the control interface. (Of course, USBCAMD minidriver is specified for the streaming interface.) Is that right?

>For example:
>> [Intel]
>>%USB\VID_04C8&PID_0720.DeviceDesc%=NullDriver,USB\Vid_0c45&Pid_62c0&Rev_0100&MI_00
>>%USB\VID_04C8&PID_0720.DeviceDesc%=Intel.USBDCam,USB\Vid_0c45&Pid_62c0&Rev_0100&MI_01

> [NullDriver]
>>; Nothing here

> [NullDriver.Services]
>>AddService = ,2 ; This installs a null driver

>So MI_00 has no driver, and MI_01 brings up the USBCAMD driver. I think that would actually work for you.

I do what you said. But in fact, windows xp only executed
%USB\VID_04C8&PID_0720.DeviceDesc%=NullDriver,USB\Vid_0c45&Pid_62c0&Rev_0100&MI_00
and only installed a null driver for interface 0, rather than installing a null driver for interface 0 and USBCAMD mini driver for interface 1. Why?

If I only want to install USBCAMD mini driver for interface 1, why can’t I modify the inf file like this?
[Intel]
;only list MI_01 and no MI_00
%USB\VID_04C8&PID_0720.DeviceDesc%=Intel.USBDCam,USB\Vid_0c45&Pid_62c0&Rev_0100&MI_01
Why?

Thank you for reading and answering.