Yeap, I set-up each camera as 1x INvSIPLCamera instance applying the mask for each camera. For example if we are on Group A, with the camera-id [0, 1, 2, 3], I have the mask as {1, 0, 0, 0} for camera 0, and mask {4096, 0, 0, 0} for camera 3.
Here’s the pseudo code. Both cameras are the same, so we are using the same platform config. The second call to INvSIPLCamera->Init() fails with NVSIPL_STATUS_ERROR.
// I'm testing only with 2 camera_ids now.
for (each camera_id) {
auto sipl_query = INvSIPLQuery::GetInstance();
sipl_query->ParseDatabase());
sipl_query->GetPlatformCfg(platform_name, platform_cfg);
sipl_query->ApplyMask(platform_cfg, masks);
auto sipl_camera = INvSIPLCamera::GetInstance();
sipl_camera->SetPlatformCfg(&platform_cfg, notification_queues[camera_id]);
sipl_camera->SetPipelineCfg(camera_id, pipeline_cfg, queues[camera_id]);
sipl_cameras.emplace_back(std::move(sipl_camera));
}
for (auto& camera : sipl_cameras) {
camera->Init();
}
Yeap, the best case for us is start/stop of individual cameras in the same device block, but we could also do with group of 2 if that is the deserializer limitation.