Ez-Usb FX3, Windows 8.1 UVC camera driver grabbing massive amounts of RAM | Cypress Semiconductor
Ez-Usb FX3, Windows 8.1 UVC camera driver grabbing massive amounts of RAM
I'm using a USB 3.0 camera module from Leopard Imaging that uses an Ez-USB FX3 as it's USB interface. The camera supports a maximum resolution of 1280x960, Y12 RAW. It supports a maximum frame rate of 60 fps at that resolution. We are just using the modules to take still images at 2 Hz or less, so we won't need full speed streaming.
We ideally want to run multiple (4+) of these camera modules from one embedded Windows 8.1 device that has 2 GB of RAM. Currently, any application (haven't tried non-DirectShow, but DirectShow is how Leopard suggests the camera be accessed) we use to stream from the cameras winds up using 350-450 MB per camera.
We've tried other cameras that use the Ez-USB FX3 with the same aptina sensor at the same resolution (from e-con systems), and it uses 50 mb of RAM per camera using the same applications. To my understanding all the software/drivers involved for both cameras are exactly the same. The e-con systems camera is 8-bit raw instead of 12, but thats not enough to explain 300-400 MB of difference in memory usage per camera.
My hypothesis is that the folks at Leopard imaging have programmed the camera firmware in such a way as to ask/force Windows USB/UVC driver to allocate tons of buffer space somehow. We actually flashed the Fx3 on the Leopard imaging camera with the cypress uvc camera example firmware, and the camera streams using around 50 mb of ram, more like the e-con systems camera (although the image data is wrong because we don't have all of Leopard Imaging's other code for the GPIF etc).
I immagine there aren't many things that one could do on the firmware side to cause that much memory usage per camera on the host. If anybody has any ideas I'd greatly appreciate the input. I probably won't be able to fix the issue myself, however Leopard Imaging has been good about fixing things for us if we can be really specific about what we need fixed.
If the firmware really can't affect host memory usage that much, but you have an idea of what's going wrong (in Windows/DirectShow/etc) feel free to chime in and call me an idiot.