Disabling SIPL Pipeline Queues

Please provide the following info (tick the boxes after creating this topic):
Software Version
DRIVE OS 6.0.10.0
DRIVE OS 6.0.8.1
DRIVE OS 6.0.6
DRIVE OS 6.0.5
DRIVE OS 6.0.4 (rev. 1)
DRIVE OS 6.0.4 SDK
other

Target Operating System
Linux
QNX
other

Hardware Platform
DRIVE AGX Orin Developer Kit (940-63710-0010-300)
DRIVE AGX Orin Developer Kit (940-63710-0010-200)
DRIVE AGX Orin Developer Kit (940-63710-0010-100)
DRIVE AGX Orin Developer Kit (940-63710-0010-D00)
DRIVE AGX Orin Developer Kit (940-63710-0010-C00)
DRIVE AGX Orin Developer Kit (not sure its number)
other

SDK Manager Version
2.1.0
other

Host Machine Version
native Ubuntu Linux 20.04 Host installed with SDK Manager
native Ubuntu Linux 20.04 Host installed with DRIVE OS Docker Containers
native Ubuntu Linux 18.04 Host installed with DRIVE OS Docker Containers
other

Issue Description
I am implementing a pipeline using SIPL, where I am using an Auto Control plugin, and want to extract YUV420 images for further processing downstream. I have been running into issues with the pipeline configuration, specifically with enabling the multiple channels.

nvsipl::NvSIPLPipelineConfiguration has flags to enable/ disable the 4 output channels, but it seems like I have to have all 4 enabled in order to access data from the ISP0 queue. If I set .captureOutputRequested to false, then I get NVSIPL_STATUS_INVALID_STATE from trying to INvSIPLCamera::RegisterImages() for ISP0. Similarly if I disable .isp1OutputRequested or .isp2OutputRequested then I get NVSIPL_STATUS_INVALID_STATE from INvSIPLCamera::RegisterAutoControlPlugin(). This can be replicated by changing the values in pipelineCfgIspOutputsEnabled struct in nvsipl_sample main.cpp

Once the pipeline is started, I then need to clear all 4 queues, even though I only actually need to consume data from the ISP0 queue, which creates extra work (and threads) which I’d rather avoid. The ideal case is that I’d only ever retrieve data from the ISP0 queue, and the ICP, ISP1 and ISP2 queues are unused by me.

  1. Is there any documentation to explain the relationship between ICP and the 3 ISP channels, and any coupling between them? I have read the page on ISP image formats, but it’s not clear to me which ISP channel should be used for what purpose, and in what cases it’s appropriate to enable/ disable each channel.

  2. If I do need to have ICP/ ISP1/ ISP2 enabled, is there a way to avoid having to clear these “unused” queues while the pipeline is running?

  3. The NvSIPLPipelineConfiguration struct also has a disableSubframe flag: I can’t see any documentation about what this is and what it should be set to for my particular application. Can you provide a description of what this entails?

Thank you.