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.
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.