I thought I would share some performance examples of using the SDK on various platforms using C# (and USB2 vs USB3). These will be basic numbers of just setting the camera in video mode, reading the frames as fast as possible and converting the image into an 8bppIndexed bitmap. This is full camera resolution and no RIO. The camera is the ASI174MM.
To start with, on my main WIndows development system (6 core 8 GB ram, virtualized using Parallels on OSX, USB3).
FPS: 096.5316189, DROPPED: 00020, Exposure: 00.0094465, Overhead: 00.0009128, Total: 00.0103593
I drop about 5-8 FPS, Exposure is a "best guess" based on when the call to GetVideoData started to when it returned. Based on other discussions, this is not completely accurate, bus a best guess for the video mode. The overhead is essentially the creation of the bitmap.
Next is a Raspberry Pi. Running stock Raspbian and added .NET Core 2.1. (USB2 only)
FPS: 007.0877650, DROPPED: 00115, Exposure: 00.0055483, Overhead: 00.1355399, Total: 00.1410882
I drop about 8-10 fps. The overhead if the bitmap creation is terrible. If I don't do the creation of the bitmap, I can do double the FPS (nearly 15 fps). The GDI+ library calls to LockBits and UnlockBits is where it gets killed. Perhaps a native C++ library that just returns a handle to an already created Bitmap would be better here. Something that the SDK could provide possibly.
I also have a small Atom based board that is the same form factor as the Raspberry Pi and runs Windows 10 (64 bit). Its a 1.4Ghz board with 4GB RAM.
The first part is using USB2:
FPS: 014.8285230, DROPPED: 00002, Exposure: 00.0616853, Overhead: 00.0057523, Total: 00.0674376
I drop about 1 frame ever 5 seconds.
Now the USB3.
FPS: 082.0183065, DROPPED: 00304, Exposure: 00.0072749, Overhead: 00.0049175, Total: 00.0121924
This is on par with my windows dev system. Its really all about the USB3. Its nearly 7 times faster. If the Raspberry Pi had USB3, I think it would be a viable option for my project. But it just cant handle the FPS over USB2.
I compared these numbers to the ASPICap program for FPS and dropped frames and we are really the same numbers. Basically it boils down to USB2 vs USB3 and the Bitmap creation logic.
Regards,
Roy