My client has a system that comprises a test fixture with a directshow compatible webcam. The specification sheet is below:
I installed the latest version of the Vision Acquisition software (release from August 2010) and can successfully see the camera within Measurement and Automation Explorer. Unfortunately, when I perform a grab operation, I get a very garbled image (mostly a bunch of diagonal lines that don't resemble a real image at all). In some video modes I can somewhat make out an image (but it is still very distorted). This camera was originally intended for use with a Visual Basic program written by another company so I know that they can utilize the existing driver to successfully grab images in VB (i.e. the camera does work).
If I check device manager I see that the driver associated with the camera is a generic usb camera driver from Microsoft. If I attempt to replace this driver with an NI driver, I see the list of all drivers (including those that aren't compatible) and don't see any options for National Instrument drivers. Furthermore, if I try to manually install the inf for daqmx I get an error that my hardware is not supported.
Can anyone provide any thoughts??? I thought that I would be able to use the NI driver? Do I need to install more DirectShow filters and hope that one of those supports the camera with the generic driver. FYI, I don't have an option to update the driver at all in MAX (4.7) and I have already tried to reinstall the Vision Acquisition software. Should I download a different version of the Vision Acquisition software (HUGE download).
This part in the datasheet made me a little curious:
"All necessary system software and drivers except for the supplied DirectShow filters are standard Windows software components included with the standard OS release. The provided DirectShow filter takes the IVCM format (IVA Lossless Compressed) data and converts it to high quality RGB24 or monochrome data, at frame rates and resolutions exceeding that normally available with USB cameras Allnecessary system software and drivers except forthe supplied DirectShow filters are standardWindows software components included withthe standard OS release. The providedDirectShow filter takes the IVCM format (IVALossless Compressed) data and converts it to high quality RGB24
or monochrome data, at framerates and resolutions exceeding that normally available with USB cameras"
Without seeing any more details about this camera, I can really only speculate. However, I am not certain if the standard Microsoft UVC driver has the ability to specify non-standard media formats directly or if an application needs to manually attach the correct DirectShow filter. If it is the latter than there might not be an easy way to make it work.
What i would suggest doing is trying another DirectShow application to see if it can properly acquire. Perhaps try something like a video-conferencing app or you could search google for Microsoft's ubiquitous AMCAP utilty provided by the Windows SDK. If these utilities show the same garbled image, I would guess that you would need to work directly with your camera vendor to resolve that first. It is possible you may simply need to install/configure various filters.
I'm not onsite today so I'll give your suggestions a go tomorrow and report back if I learn anything. I was also curious if the filters that were installed with the camera might be corrupting the output. Since the customer can use their capture application that was written around the non-standard filters to get a good image I had hoped that I could do the same in LabVIEW. I did find it strange that within MAX the video modes available were a bunch of nonstandard resolutions (648 X 480, etc.).
Despite all of that, I thought that maybe it would have been possible to just assign the camera to use the NI IMAQdx driver which incorporates a different set of filters? I guess not. Looks like I will just need to tweak what I have. At least it is showing up in MAX!
Windows has a built-in mechanism for attaching required filters to DirectShow devices. The camera has an output "pin" where it delivers frames of a certain format and our driver has an input pin of uncompressed RGB or monochome images. The Windows media subsystem fills in the filters in the middle to make the two connect using whatever filters it has available to convert one to the other. If the camera is not reporting its frame format as a type Windows knows how to deal with, this operation might fail. Building a custom filter path between the two pins manually is not something that a user should ever have to do or would want to do, nor something that the driver could expose in any meaningful way. It is possible that the C code you are using already does some process like this to accomodate limitations in the camera's implementation or the UVC driver provided by Windows.
Thanks again for the help... I spoke with the camera manufacturer and they pointed me to a different directshow filter that they always use as a "backup" for circumstances when the higher level applications seem to have difficulty parsing through the default filter video modes. They seemed fairly adamant that if I could navigate to the camera properties that I could select a variety of video modes with their basic filter but alas I was unsuccessful in seeing anything but a stock video mode. On the bright side, this singular video mode and filter mode combination gave me a good image so now they want me to use the GraphEdit program within the Windows SDK to try and resolve further filter issues... We'll see how that goes!
Thanks so much!