Hi!
I'm trying to stream both OV9282 mono cameras at 1280×800 simultaneously, as fast as possible (ideally the full 129 fps each) on an OAK-D-W, depthai v3.7.1, USB3 SuperSpeed. No depth, no NN, no encoding, just raw frames to the host.
Single camera at 1280×800 hits ~129 fps fine. The moment I run both, each drops to ~75 fps, and total throughput barely rises above the single-camera rate.
Things I've already tried (numbers are per-camera, 1280×800 stereo):
Baseline (small pools, blocking queues) : ~35fps
setRawNumFramesPool/setIspNumFramesPool = 16 + non-blocking queues : ~62fps
+ pipeline.setXLinkChunkSize(0) : ~75fps
+ manual exposure & AE/AWB lock : ~81fps
This looks XLink-bound to me: aggregate transfer plateaus at ~154 MB/s regardless of stream count or host reader threads, and it tracks setXLinkChunkSize (65535 → ~108 MB/s, 0 → ~154 MB/s). We're only at ~1.2 Gbps on a 5 Gbps link, so it seems protocol-bound rather than PHY-bound.
Dead ends I found:
- On-device encoding doesn't help, the encoder needs NV12, and the ISP's NV12 output itself caps at ~45 fps/cam (23 stereo), below uncompressed RAW8. GRAY8/YUV420p are rejected by the encoder; YUV400p works but is slower (~22).
- cam.raw (PACK10) is slower (~64 fps/cam) and clamps to 1280×720.
- requestIspOutput() gives ~84 fps but at 1280×720 (same Mpix/s).
- More XLink streams / per-stream reader threads, no change.
Questions:
Is ~150–154 MB/s the expected XLink throughput ceiling for an RVC2 device over USB3 SuperSpeed, or should I be able to push it higher (firmware setting, setXLinkRateLimit, USB 3.2 Gen2 host, anything)?
Is there any way to feed the on-device VideoEncoder a luma-only / GRAY8 input so I can compress without paying the NV12 ISP cost? (My real goal is high-fps full-res stereo; compressed is acceptable if quality is reasonable.)
Is full-res 1280×800 stereo at ~120 fps simply not feasible on RVC2, and does RVC4 (OAK-4) remove this limit?
Thanks!