SIPL Sample

The NvMedia nvsipl_sample sample application demonstrates how to use the NvMedia SIPL APIs to capture and process images from a camera module. The sample uses the INvSIPLCamera and INvSIPLClient interfaces to program the external image devices and the NVIDIA® Tegra® VI and ISP hardware engines. For more information about the NvSIPL APIs, see the API documentation for NvSIPL.

Architecture

The following diagram shows the architecture of the nvsipl_sample application.
A screenshot of a cell phone Description automatically generated
The test application executes the SiplMain() function in which it uses the INvSIPLCamera interface for communicating with the NvSIPL library and uses the CImageManager class for buffer allocation and deallocation.
The platform configuration used by the application is fixed; all output types are enabled for one image processing pipeline. This pipeline captures and processes images from a single camera module.
The calibration data for the image processing pipeline is provided in the form of an NVIDIA Image Tuning Object (NITO) file in the target file system. NITO files are binary files that contain ISP settings, tuning settings, and characterization parameters for a specific camera module.
The main thread, executing the SiplMain() function, initializes the image processing pipeline using the NvSIPL APIs and then spawns a series of different threads. One thread is created for receiving the errors and events from the NvSIPL library and printing them to the command line. Other individual threads are created for receiving the output buffers for each of the output types of the pipeline. All these threads receive their associated items (either events or image buffers) by retrieving these items from queues provided by the NvSIPL library.
The received buffers contain an image and its associated metadata. Each image output thread reads the frame sequence number from the image metadata structure and prints it to the command line, then releases the buffer for subsequent capture and processing operations.

Running the Application

Before running nvsipl_sample it is necessary to follow the procedures in Building and Running the NvMedia Samples.
To run the sample on the target:
1. Change the current directory to the folder that contains the nvsipl_sample binary:
/samples/nvmedia/nvsipl/test/sample/
2. Enter this command to launch the application:
$ ./nvsipl_sample

Command Line Switches

Currently the nvsipl_sample application does not support any command line switches.

Interactive Menu Options

The following table shows the options provided by the interactive menu.
Option
Description
q
Quits the application

Examples

Platform Configuration: SF3324 Module in Four Lane CPHY Mode

This is the one and only platform configuration supported by nvsipl_sample. This configuration assumes that one SF3324 camera module is connected to the platform on link 0 of the deserializer on camera group A. Other camera modules may be connected to the other links, but they will not be used by the nvsipl_sample application.
Example 1: Use link 0 of group A
$ ./nvsipl_sample

Camera Commands

This section describes supported camera commands for different platforms.

AR0231 (Camera Module SF3324) in Four Lane CPHY Mode

Camera Group
No. of Cams
Command
Xavier A
DDPX
CIM SKU 0000
Xavier A
DDPX
CIM SKU 0002
Xavier B
DDPX
CIM SKU 0000
Xavier B
DDPX
CIM SKU 0002
P3479
A
1
./nvsipl_sample
Y
Y
Y
N
Y
 
Note:
The P3479 board is only supported on QNX.

Camera Input Module (CIM) SKU Identification

To obtain the SKU information of a CIM ROM, execute the following command in the Aurix shell:
NvShell>cimrom get sku
For example, for a board with CIM SKU of 0002, the output from running the command is:
699-63553-0002-100
The last three digits may vary.