The version I am using is r35.4.1
~# cat /etc/nv_tegra_release
# R35 (release), REVISION: 4.1, GCID: 33958178, BOARD: t186ref, EABI: aarch64, DATE: Tue Aug 1 19:57:35 UTC 2023
I created my own application to use Libargus API. After I replaced libnvscf.so
file with the patch, the createCaptureSession
function failed with STATUS_INVALID_SETTINGS
returned status. But the old libnvscf.so
file works fine. Following is the difference in the log when I tried both .so
files.
- With old
libnvscf.so
file, which is working, I got following messages.
SCF: Error BadValue: NvPHSSendThroughputHints (in src/common/CameraPowerHint.cpp, function sendCameraPowerHint(), line 56)
CAM: serial no file already exists, skips storing again
(Argus) Error InvalidState: Unknown stream deleted. (in src/api/CaptureSessionImpl.cpp, function outputStreamDeleted(), line 1104)
- With new
libnvscf.so
file coming from your patch, I got following messages.
SCF: Error IoctlFailed: (propagating from src/services/capture/FusaCaptureViCsiHw.cpp, function openViCsi(), line 393)
SCF: Error IoctlFailed: (propagating from src/services/capture/CaptureServiceDeviceViCsi.cpp, function open(), line 336)
SCF: Error IoctlFailed: (propagating from src/services/capture/CaptureServiceDevice.cpp, function openSource(), line 398)
SCF: Error IoctlFailed: (propagating from src/services/capture/CaptureService.cpp, function openSource(), line 501)
SCF: Error IoctlFailed: (propagating from src/api/Session.cpp, function initialize(), line 294)
SCF: Error IoctlFailed: (propagating from src/api/CameraDriver.cpp, function createSession(), line 645)
(Argus) Error IoctlFailed: (propagating from src/api/CaptureSessionImpl.cpp, function initialize(), line 177)
(Argus) Error IoctlFailed: (propagating from src/api/CameraProviderImpl.cpp, function createCaptureSessionInternal(), line 305)
(NvCameraUtils) Error InvalidState: Mutex not initialized (/dvs/git/dirty/git-master_linux/camera/argus/src/api/CaptureSessionImpl.cpp:266) (in Mutex.cpp, function lock(), line 79)
(Argus) Error InvalidState: Element not found (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamerautils/inc/Vector.h, function remove(), line 172)
(NvCameraUtils) Error InvalidState: Mutex has not been initialized (in Mutex.cpp, function unlock(), line 88)
Error: Argus device initialization failed with message: Failed to configure the Argus device. Detailed message: Failed to initialize the capture session and request. Detailed message: Failed to create capture session, and status: -2, err: -1
(Argus) Objects still active during exit: [CameraProvider (0x3098f7d0): refs: 1, cref: 1]
SCF: Error NotSupported: ▒ (in src/services/cuda/CudaService.cpp, function shutdown(), line 126)
SCF: Error NotSupported: (propagating from src/services/cuda/CudaService.cpp, function stopService(), line 54)
SCF: Error NotSupported: (propagating from src/components/ServiceHost.cpp, function stopServicesInternal(), line 211)
Error: Argus device initialization failed with message: Failed to configure the Argus device. Detailed message: Failed to initialize the capture session and request. Detailed message: Failed to create capture session, and status: -2, err: -1
Above message is what I added in my application to track the errors. status: -2
is STATUS_INVALID_SETTINGS = 2
error.
Is there any change in terms of creating the capture session? The code related to the creation of the capture session is as follows.
// Get camera provider
// Based on the badge information, get the camera device (m_cameraDevice)
// Create the capture session
Argus::Status argus_status;
m_captureSession = Argus::UniqueObj<Argus::CaptureSession>(
i_camera_provider->createCaptureSession(m_cameraDevice, &argus_status));
if (argus_status != Argus::STATUS_OK) {
return { -argus_status, -1, "Failed to create capture session" };
}