Thanks @erik. I thought that might be the case. I created a pretty elaborate host side engine that assembles frames from multiple queues (e.g. rgb, mono left, mono right, disparity, confidence) based on the sequence ID. The goal is to create a collection of frames with same ID to pass onto the next image processing stage. This frame assembly step is complicated because it has to deal with both missing frames and time skew between queues. I found that under heavy load, the sequence numbers between queues can be off by as many as ten frames, even when the queue size is set to 1/non-blocking. I believe for the solution you propose you will get two frames, but it is not guaranteed that the sequence IDs will always match. I thought that using a single queue might reduce the skew between channels, but it seems that there is no way to determine which frame is which when using a single queue. It would be nice if I could ask for a collection of synchronized frames, and get them grouped together in one queue. Do you have a suggestion for grouping frames on the host side by sequence id that guarantees the sequence IDs match?