I'm trying to use a Matrox MXO2 Mini as a NI-IMAQdx device. The MXO2 does have a DirectShow driver, I'm using their 5.5 driver which is the lastest from Matrox. It does show up in Measurement and Automation, but I do not get a list of attributes I can change. I basically only get one "Video Mode" in the pull down list, and I get no attributes in the "Camera Attribute" tab. I would at least expect the ability to select the input on the device (it has component, S-Video, HDMI). I can capture from the device, but without the ability to change the input it appears that it's stuck on the component input by default. If I try and run the cameravalidator on it, it appears to run but does not generate a report file. If I run it using the /attributes flag, I get the following message: "FAIL: Error code = 0xBFF69020: Invalid camera file". Still no report generated.
I tried VLC (VideoLan) which has a DirectShow capture option, and it sees the device just fine. It lets me select from the various videos modes, input sources, etc. and captures video from device as I would expect. The odd thing is if I select a different video mode/input source in VLC, then go back into MAX, the one "Video Mode" in the list will be changed to whatever I last used in VLC, as well as the last input source I selected in VLC. If I use VLC to change the input to the s-video (for example) then go back into MAX I can see the signal I'm inputting into the s-video input.
So basically my conclusion is that for some reason MAX is unable to read the list of available attributes from this device, and therefore I can't even read these attributes or change them. I have also tried using the IMAQdx functions in CVI and get the same results. Any ideas what is going on? I'm using NI Vision 10.0, NI-IMAQ 4.6, NI-IMAQ I/O 2.4, and NI-IMAQdx 3.8. The computer is running Windows 7 Pro x64. I've attached the camera files.
Thanks in advance for any help.
My guess is that the DirectShow driver provided by Matrox is not providing many of the standardized DirectShow interfaces that allow IMAQdx to programatically control the functionality you are interested in. DirectShow provides two ways that the device can be controlled. The driver can implement the programatic interfaces defined by the spec and it can also provide customized UI panels that can "snap-in" to an existing window. Most cameras do both, allowing both programatic control as well as a vendor-specific UI panel that can expose custom functionality. Since IMAQdx is a programatic API rather than a GUI application, it can only access the programatic functions exposed. If their driver does not export any of the standardized interfaces to access these functions than they will be unavailable.
As an example, the input source selection you described is available through IMAQdx if the vendor's driver implements the "IAMCrossbar" interface (http://msdn.microsoft.com/en-us/library/dd389171(v=vs.85).aspx). If available, you would see a video source attribute shown in the Camera Attributes tab.
I think you're right about the two different Directshow interfaces. I tried another device in VLC (that also works in MAX) and it comes up with its own different "snap-in" attributes panel, and for this device the panel had the manufacturer's logo on it which is kind of a giveaway that they made it. I'll have to contact Matrox about this, or in the very least figure out how to get that "snap-in" panel embedded in my application as NI-IMAQdx can still acquire from the device; I just need a way to change the device's attributes.
Thanks for your help.