The issue with the capture side of things is that there is many different hardware and I can't test most of them.
I am starting to redesign the capture pipeline to integrate benchmarking capabilities and find where the bottlenecks are. At the moment I am just at the "measurability" stage. Trying to take every detail in account.
I want to answer things like:
- What is the the actual grabbing framerate ?
- Is it stable or does it varies widely ? What is its standard deviation ? Median ? 95th percentile ?
- What is the sustainable recording framerate ?
- What is the sustainable display framerate ?
- Does it matter if delayed-display is active ? How large should the buffers be ?
- Should we degrade the display framerate while recording, by how much ?
- What is the best tradeoff between compressing the images (takes CPU time) and not compressing (takes I/O bandwidth) for the current capture configuration ?
- What is the fastest method to write sequential data to the disk ?
- Are the bottlenecks the same between an HDD and an SSD ?
- etc.
I am considering the option of storing captured images to a dedicated format, optimized for fast writing, rather than going through a classic video format as is done currently.
I have a monochrome Basler camera capable of 2048x1084 @ 50fps. Uncompressed, this is about 106 MB/s. The goal is to fully support that kind of bandwidth, and then up from there.