INvSIPLCamera::Start() after INvSIPLCamera::Stop() fails

Please provide the following info (tick the boxes after creating this topic):
Software Version
DRIVE OS 6.0.8.1

Target Operating System
Linux

Hardware Platform
DRIVE AGX Orin Developer Kit (not sure its number)

Host Machine Version
native Ubuntu Linux 20.04 Host installed with SDK Manager

This works:
INvSIPLCamera::Init() → INvSIPLCamera::Start() → INvSIPLCamera::Stop() → INvSIPLCamera::DeInit()

This does not work
INvSIPLCamera::Init() → INvSIPLCamera::Start() → INvSIPLCamera::Stop() → INvSIPLCamera::Start()
or
INvSIPLCamera::Init() → INvSIPLCamera::Start() → INvSIPLCamera::Stop() → INvSIPLCamera::Init()

Both fail with NVSIPL_STATUS_INVALID_STATE

How do I start a camera after stopping?

Have you tried calling DeInit() before re-initializing with Init()? This might resolve the NVSIPL_STATUS_INVALID_STATE error.

If this doesn’t work, could you share the error messages you’re encountering when calling Start() or Init() after call Stop()? These details could help diagnose the problem and find a solution.

How do I retrieve the error message as the return type of these calls is nvsipl::SIPLStatus?

To get more detailed error messages from calls that return nvsipl::SIPLStatus, consider enabling additional logging through INvSIPLTrace. By adjusting the trace levels, you may be able to gather more specific information about the errors you’re encountering.

Ok, I set TraceLevel to 4 but that does not show any additional information.

Have you tried calling DeInit() before re-initializing with Init()?

No, but I think that would defeat the purpose. The idea is to temporarily pause a camera.
Init()->Start()->Stop()->DeInit()->Init()->Start() would be overkill even if it works.

You tested this on a DRIVE OS application instead of DriveWorks, correct?

I’ve confirmed with our team that Start() should not be used as a restart or resume function after Stop(). Similarly, Init() should not be used as a reinitialization function; it cannot be called again after Stop() or Deinit().

The standard sequence we enforce is:
GetInstance → Set Configs → Init → Register Resources → Start → Stop → Deinit

The only exceptions are the EnableLink() and DisableLink() APIs, which can pause and resume streaming on a per-pipeline basis. However, these exceptions depend heavily on the quality of the camera drivers, as they must properly enable and disable streams on the camera module.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.