NvMedia Porting Guide

In NVIDIA DRIVE™ OS 5.1 and later, the NvMedia APIs provide hardware acceleration of various engines inside SoCs. This document highlights the changes in NvMedia APIs across various DRIVE OS 5.1 and later releases.

Changes Introduced in DRIVE OS 5.2.6.0

This section discusses the NvMedia API changes between DRIVE OS 5.2.6.0 and DRIVE OS 5.2.3.0. See the NVIDIA DRIVE OS 5.2 SDK API Reference for more information.
Module
Change Description
NvMedia VIC (nvmedia_2d.h)
NvMedia2DDestroy() API is deprecated and will be removed in a future release.
 
NvMedia2DDestroy() is replaced with NvMedia2DDestroyEx(). Note that NvMedia2DDestroyEx() returns an error that must be checked in client's code.

Changes Introduced in DRIVE OS 5.2.3.0

This section discusses the NvMedia API changes between DRIVE OS 5.2.3.0 and DRIVE OS 5.2.0.0. See the NVIDIA DRIVE OS 5.2 SDK API Reference for more information.
Module
Change Description
NvMedia SIPL Camera (NvSIPLCamera.hpp)
Functions replaced:
Replaced GetE2PHandle()with ReadEEPROMData().GetE2PHandle()is deprecated and removed in this release.
Replaced RecoverLink()with DisableLink()and EnableLink().
NvMedia ICP (nvmedia_icp.h)
NvMedia Image Capture Processing (NvMediaICP*) APIs are deprecated and are removed in this release. Use NvMedia SIPL APIs instead.
NvMedia ISC (nvmedia_isc.h)
NvMedia Image Sensor Control (NvMediaISC*) APIs are deprecated and removed in this release.

Changes Introduced in DRIVE OS 5.2.0.0

This section discusses the NvMedia API changes between DRIVE OS 5.2.0.0 and DRIVE OS 5.1.15.0. See the NVIDIA DRIVE OS 5.2 SDK API Reference for more information.
 
Module
Change Description
NvMedia SIPL Camera (NvSIPLCamera.hpp), NvMedia Pipeline Manager (NvSIPLPipelineMgr.hpp)
Removed support for registering multiple custom plugins per pipeline and switching between them at runtime.
Removed CUSTOM_ PLUGIN1 from enum PluginType.
Removed InvSIPLCamera::SetISPConfig() API.
NvMedia SIPL Camera (NvSIPLCamera.hpp)
Deprecate methods to register more than one NvSciSyncObj of type NVMEDIA_EOFSYNCOBJ. These APIs will be removed in a future release.
RegisterNvSciSyncObj()
SetNvSciSyncObjForEOF()
NvMedia SIPL Camera (NvSIPLCamera.hpp)
For image and event delivery, use queue-based SetPiplelineCfg() instead of the callback-based version. The following API is deprecated and will be removed in a future release.
SetPipelineCfg(std::uint32_t index, const NvSIPLPipelineCfg &pipelineCfg)
Instead, use the queue-based API:
SetPipelineCfg(std::uint32_t index, const NvSIPLPipelineConfiguration &pipelineCfg, NvSIPLPipelineQueues& queues)
NvMedia SIPL Camera (NvSIPLCamera.hpp)
NvMedia SIPL now enforces the following API call sequence:
SetPlatformCfg()
SetPipelineCfg()
Init()
RegisterImageGroups()
RegisterImages()
RegisterAutoControlPlugin()
Start()
Stop()
Deinit()
NvMedia SIPL Camera (NvSIPLCamera.hpp)
Replaced GetE2PHandle()with ReadEEPROMData().GetE2PHandle()is deprecated and will be removed in a future release.
NvMedia SIPL Client, NvMedia SIPL Camera
(NvSIPLClient.hpp, NvSIPLCamera.hpp)
Replaced all references of NvMediaISC* objects to DevBlkISC*.
 
NvMedia SIPL Auto Control Plugin (NvSIPLAutoControlPlugin.hpp)
This header file has been replaced by InvSiplControlAuto.hpp. Replace all references to INvSIPLAutoControl by ISiplControlAuto.
NvMedia SIPL Camera, NvMedia SIPL Client (NvSIPLCamera.hpp, NvSIPLClient.hpp)
Re-architect NvSciStream support for SIPL.
 
The NvSciStream support for SIPL has been re-architected to relocate the producer side of NvSciStream management from the SIPL library to the application. The struct PoolCookies has been removed from the RegisterImageGroups() and RegisterImages() API signatures.
 
If NvSciStream is used for transporting the buffers, ensure that the producer side management is now performed on the application side.
NvMedia IPP (nvmedia_ipp.h)
NvMedia Image Processing Pipeline (IPP) APIs are deprecated and removed in this release. See NvMedia IPP to SIPL Porting Guide for details.
NvMedia ACP (nvmedia_acp.h)
NvMedia Auto Control Plugin APIs, which are dependent on NvMedia IPP APIs, have been removed in this release:
NvMediaACPCreate()
NvMediaACPDestroy()
NvMediaACPGetVersionInfo()
NvMediaACPProcess()
NvMediaBEPCreate()
NvMediaBEPDestroy()
NvMediaBEPProcessEx()
NvMedia VCP (nvmedia_vcp.h)
NvMedia Video Capture (NvMediaVideoCapture*) APIs are deprecated and will be removed in a future release.
NvMedia ISC (nvmedia_isc.h)
NvMedia Image Sensor Control (NvMediaISC*) APIs are deprecated and will be removed in a future release.
NvMedia ICP (nvmedia_icp.h)
NvMedia Image Capture Processing (NvMediaICP*) APIs are deprecated and will be removed in a future release. Use NvMedia SIPL APIs instead.
 

Changes Introduced in DRIVE OS 5.1.15.0

NvMedia Image Processing Pipeline (IPP) APIs are deprecated after the 5.1.15.0 release. Instead, use NvMedia SIPL APIs. The deprecated APIs and the associated sample applications will be removed in the next (5.2.0.0) release.

NvMedia IPP to SIPL Porting Guide

In NVIDIA DRIVE™ OS 5.1, the NvMedia Image Processing Pipeline (IPP) framework provides the interface to capture RAW images from camera sensors and process them using the NVIDIA DRIVE AGX Xavier™ hardware Image Signal Processing (ISP).
The framework provides various APIs to set up image capture and processing pipelines. NvMedia IPP APIs are typically used in conjunction with ExtImgDev APIs to setup the complete image capture and processing pipelines. ExtImgDev APIs provide interfaces to program the external image devices like image sensors, serializers and de-serializers.
NVIDIA DRIVE™ OS 5.1 platforms have been supporting a new camera framework called SIPL designed for safety use cases. The SIPL framework provides a single set of C++ interfaces to instantiate imaging pipeline(s) in Xavier-based platforms. It supports both raw image capture and ISP processed output.
Starting in NVIDIA DRIVE™ OS 5.1.15.0, users are strongly encouraged to port their IPP applications to SIPL interfaces. NvMedia IPP is scheduled to be removed from DRIVE OS release 5.2.0.0 and onwards.
Due to the different levels of abstraction, a direct mapping of NvMedia IPP interfaces to SIPL APIs is not feasible. This document includes the comparison of API sequences for typical image processing use cases.

Capture and Process from a Live Camera

This section details the API call sequence comparison for capturing and processing of frames from a live camera.
Phase
NvMedia IPP API
See nvmipp_raw source for details.
NvMedia SIPL API
See nvsipl_camera source for details.
Initialization
1. Set up ExtImgDev params.
ExtImgDevInit
NvMediaIPPManagerCreate
NvMediaIPPPipelineCreate
 
2. Create sensor control component.
NvMediaIPPComponentCreateNew(ISC)
3. Create capture component using ExtImgDev properties.
NvMediaIPPComponentCreateNew(ICP)
NvMediaIPPComponentAddToPipeline
4. Specify the buffer pool properties and ISP output properties.
NvMediaIPPComponentCreateNew(ISP
5. Specify the algorithm configuration.
NvMediaIPPComponentCreateNew(ALG)
6. Create the output component.
NvMediaIPPComponentCreateNew(OUTPUT)
7. Use multiple NvMediaIPPComponentAttach to attach components.
1. Create INvSIPLCamera instance.
INvSIPLCamera::GetInstance
2. Set up Platform config data structure to describe the camera. INvSIPLQuery interfaces can be used to fetch one of the supported platform configurations.
INvSIPLCamera::SetPlatformCfg
3. Set pipeline config describing the type of the output (RAW or processed), ISP settings to use, callback handles to receive the output images.
INvSIPLCamera::SetPipelineCfg
4. Initialize the camera.
INvSIPLCamera::Init
5. Get the image attributes.
INvSIPLCamera::GetImageAttributes
6. Allocate buffers using NvSciBuf APIs.
Register the buffers with SIPL.
INvSIPLCamera::RegisterImageGroups
INvSIPLCamera::RegisterImages
7. Register the Auto Control plugin.
INvSIPLCamera::RegisterAutoControlPlugin
Start
1. Start the pipeline.
NvMediaIPPPipelineStart
2. Start ExtImgDev.
ExtImgDevStart
1. Start the camera.
INvSIPLCamera::Start
Runtime
1. In an application thread:
 
1a. Get the output from NvMedia IPP.
NvMediaIPPComponentGetOutput
1b. Consume the output.
1c. Return the consumed buffer back to IPP.
NvMediaIPPComponentReturnOutput
1. In a callback function implemented by the app and registered with SIPL:
1a. Add a ref count to the buffer.
INvSIPLBuffer->AddRef()
1b. Send the buffer to an actual consumer thread.
2. In the consumer thread:
2a. Consume the buffer.
2b. Release the reference.
INvSIPLBuffer->Release()

Reprocess a RAW File Using Hardware ISP

This section details the API call sequence comparison for reprocessing a RAW file using hardware ISP.
Phase
NvMedia IPP API
 
See nvmipp_raw source for details.
NvMedia SIPL API
 
See nvsipl_camera source for details.
Initialization
1. Set up ExtImgDev params.
ExtImgDevInit
NvMediaIPPManagerCreate
NvMediaIPPPipelineCreate
2. Create the sensor control component.
NvMediaIPPComponentCreateNew(ISC)
3. Create file reader component.
NvMediaIPPComponentCreateNew(FILE_READER)
4. Specify buffer pool properties and ISP output properties.
NvMediaIPPComponentCreateNew(ISP)
5. Specify algorithm configuration.
NvMediaIPPComponentCreateNew(ALG)
6. Create output component.
NvMediaIPPComponentCreateNew(OUTPUT)
7. Use multiple NvMediaIPPComponentAttach to attach components.
1. Create INvSIPLCamera instance.
INvSIPLCamera::GetInstance
2. Set up Platform config data structure to describe the camera. INvSIPLQuery interfaces can be used to fetch one of the supported platform configurations and modify it for reprocess use case.
INvSIPLCamera::SetPlatformCfg
3. Set pipeline config describing the type of the output (RAW or processed), ISP settings to use, callback handles to receive the output images.
INvSIPLCamera::SetPipelineCfg
4. Initialize the camera.
INvSIPLCamera::Init
5. Get the image attributes.
INvSIPLCamera::GetImageAttributes
6. Allocate buffers using NvSciBuf APIs.
Register the buffers with SIPL.
INvSIPLCamera::RegisterImageGroups
INvSIPLCamera::RegisterImages
7. Register the Auto Control plugin.
INvSIPLCamera::RegisterAutoControlPlugin
Start
1. Start the pipeline.
NvMediaIPPPipelineStart
2. Start ExtImgDev.
ExtImgDevStart
1. Start the camera.
INvSIPLCamera::Start
 
Runtime
1. In an application thread:
1a. Get the output from NvMedia IPP.
NvMediaIPPComponentGetOutput
 
1b. Consume the output.
1c. Return the consumed buffer back to IPP.
NvMediaIPPComponentReturnOutput
1. In a callback function implemented by app and registered with SIPL:
 
1a. Add a ref count to the buffer.
INvSIPLBuffer->AddRef()
1b. Send the buffer to an actual consumer thread.
 
2. In the consumer thread:
2a. Consume the buffer.
2b. Release the reference.
INvSIPLBuffer->Release()
 

Changes Introduced in DRIVE OS 5.1.12.4

This section discusses the NvMedia API changes between DRIVE OS 5.1.12.4 and DRIVE OS 5.1.12.0. See the NVIDIA DRIVE OS 5.1 SDK API Reference for more information.
 
Module
Change Description
NvMedia DLA (nvmedia_dla.h)
The following APIs were removed:
NvMediaDlaLoadFromMemory(NvMediaDla const* dla, uint8_t* loadable, uint64_t loadableSize, uint16_t dlaId, uint32_t numOutstandingRequests)
 
NvMediaDlaSubmitTimeout(NvMediaDla const* dla, const NvMediaDlaArgs* inputArgs, NvMediaDlaArgs* outputArgs, uint32_t taskTimeout)
 
NvMediaDlaGetMaxOutstandingRequests( NvMediaDla const* dla, uint32_t* maxOutstandingRequests)
NvMedia ICP (nvmedia_icp.h)
NvMediaICPReleaseImageGroup() is removed in the safety build and deprecated in the non-safety build. Use NvMediaICPGetImageGroup() instead to achieve the same functionality. For example:
retryCount = 0;
do {
releaseStatus = NvMediaICPGetImageGroup(
icpInst,
CAPTURE_GET_FRAME_TIMEOUT,
&capturedImageGrp);
if (releaseStatus == NVMEDIA_STATUS_NONE_PENDING) {
/* All buffers have been returned. Capture is paused. */
break;
}
else if (capturedImageGrp == NULL) {
if (++retryCount > CAPTURE_MAX_RETRY) {
/* Capture engine is not responding. App needs to be stopped */
}
} else {
/* An Image Group has been successfully released */
retryCount = 0;
}
} while (1);

Changes Introduced in DRIVE OS 5.1.12.0

There are no porting changes in this release.

Changes Introduced in DRIVE OS 5.1.9.0

This section discusses the NvMedia API changes between DRIVE OS 5.1.9.0 and DRIVE OS 5.1.6.0. See the NVIDIA DRIVE OS 5.1 SDK API Reference for more information.
 
Module
Change Description
NvMedia Array
nvmedia_array.h
 
New header nvmedia_array_nvscibuf.h to support NvStreams Buffer Allocation (NvSciBuf) in array (NvMediaArray).
Use NvSciBuf for NvMediaArray allocation going forward. NvMediaArrayCreate()is deprecated. Support will be removed in a future release.
NvMedia Common Decode
nvmedia_common_decode.h
 
In struct NvMediaMasteringDisplayData, the data types of the following members are updated from uint32_t (4 bytes) to uint16_t (2 bytes):
max_display_parameter_luminance
min_display_parameter_luminance
The application code is fully backward compatible, but a code recompilation is required to reflect the data type changes.
NvMedia Core
nvmedia_core.h
 
In enum NvMediaStatus, the following enumeration values have changed:
NVMEDIA_STATUS_UNDEFINED_STATE changed from 12 to 13
NVMEDIA_STATUS_PFSD_ERROR changed from 13 to 14
These values are not backward compatible with the original values before the 5.1.6.0 release. The application code is fully backward compatible, but a code recompilation is required the reflect the enumeration value changes.
NvMedia DLA
nvmedia_dla.h, nvmedia_dla_nvscisync.h
Added new APIs for Start of Frame (SOF):
NvMediaDlaGetSOFNvSciSyncFence ( NvMediaDla const* dla, NvSciSyncObj sofnvscisyncobj, struct NvSciSyncFence* sofnvscisyncfence )
 
NvMediaDlaSetNvSciSyncObjforSOF ( NvMediaDla* dla, NvSciSyncObj nvscisyncSOF )
Removed unsupported APIs:
NvMediaDlaGetNumOfScratchpads ( NvMediaDla const* dla, int32_t* numOfScratchpads )
 
NvMediaDlaGetScratchpadDescriptor ( NvMediaDla const* dla, uint32_t const idx, NvMediaDlaScratchpadDescriptor* descriptor )
 
NvMediaDlaGetNumOfScratchpads ( NvMediaDla const* dla, int32_t* numOfScratchpads )
 
NvMediaDlaGetScratchpadDescriptor ( NvMediaDla const* dla, uint32_t const idx, NvMediaDlaScratchpadDescriptor* descriptor )
Removed unsupported member scratchpad from struct NvMediaDlaDataPointer.
Removed unsupported enum NVMEDIA_DLA_DATA_TYPE_CVSCRATCHPAD from NvMediaDlaDataType.
Increased value of NVMEDIA_DLA_MAX_PRENVSCISYNCFENCES from 3U to 8U.
NvMedia ICP
nvmedia_icp.h
Removed deprecated NvMediaICPWaitForSoF API. Use NvMediaICPGetSOFNvSciSyncFence instead.
Removed enumerated type NvMediaICPCSIErrorType.
Removed csiErrorMask, csiErrorType from NvMediaICPSettings.
Removed NVMEDIA_ICP_ERROR_STATUS_FATAL from NvMediaICPErrorStatus.
Removed NvMediaICPStop and NvMediaICPResume.
NvMedia IEP
nvmedia_iep.h
 
The following APIs are added to implement frame (NvMedia image) registration and deregistration:
NvMediaIEPImageRegister()
NvMediaIEPImageUnRegister()
NvMedia Image Pyramid
nvmedia_image_pyramid.h
New header nvmedia_image_pyramid_nvscibuf.h to support NvStreams Buffer Allocation (NvSciBuf) in Image Pyramid (NvMediaImagePyramid).
Use NvSciBuf for NvMediaImagePyramid Image Pyramid allocation going forward. NvMediaImagePyramidCreate() is deprecated. Support will be removed in a future release.
NvMedia ImgDec
nvmedia_imgdec.h
 
The following API is added to implement frame (NvMedia image) deregistration:
NvMediaImageDecoderUnRegisterPinnedSurfaces()
NvMedia IOFST
nvmedia_iofst.h
 
The following APIs are added to implement frame (NvMedia image) registration and deregistration:
NvMediaIOFSTImageRegister()
NvMediaIOFSTImageUnRegister()
The following API is added to get the version:
NvMediaIOFSTGetVersion()
In struct NvMediaOFSTExternalHintParams, the data type for field meExternalHints has been changed from NvMediaArray* to void*.
NvMedia ISC
nvmedia_isc.h
Removed the functions NvMediaISCGetVersionInfo() and NvMediaISCVersionInfo(). The function NvMediaISCGetVersion() can be used which provides similar functionality.
NvMedia VidDec
nvmedia_viddec.h
 
The following API is added to implement frame (NvMedia image) deregistration:
NvMediaVideoDecoderUnRegisterPinnedSurfaces()
NvMedia VPI
nvmedia_vpi.h
Deleted NvMediaVPICreateProcessStereoPairDescriptor(). Use NvMediaVPICreateStereoPreprocessDescriptor() instead.
Deleted NvMediaVPIProcessStereoPairDesc(). Use NvMediaVPIStereoPreprocessDescEx() instead. This function provides improved hint generation and exposes the confidence map.
Deleted NvMediaVPIStereoPreprocessDesc(). Use NvMediaVPIStereoPreprocessDescEx() instead. This function generates motion vector hints as a 1-D NvMediaArray instead of a 2-D NvMediaImage.
Deleted opaque non-standard array type:
NvMediaVPIArrayType
The following corresponding functions are deleted:
NvMediaVPIArrayCreate()
NvMediaVPIArrayGet2DTransform()
NvMediaVPIArrayGetAABB()
NvMediaVPIArrayGetBoundingBoxWithTransform()
NvMediaVPIArrayGetPoint2Df()
NvMediaVPIArrayGetTranslationWithScale()
NvMediaVPIArrayUpdate2DTransform()
NvMediaVPIArrayUpdatePoint2Df()
NvMediaVPIArrayUpdateAABB()
NvMediaVPIArrayUpdateBoundingBoxWithTransform()
NvMediaVPIArrayUpdateTranslationWithScale()
Use NvSciBuf with array type NvMediaArray to create a standard NvMedia array, and use NvMediaArrayLock() to lock the array and get a CPU-mapped pointer to it. Use direct reads and writes to access the standard array.
In earlier releases, some PVA algorithms use NvMediaVPIArray, which is a non-standard array type understood only by the PVA engine. Changes introduced in this release allow the use of standard array types instead of VPI-specific array types. This change will allow for interoperability with CUDA. These changes have impact on the following algorithms:
Harris Keypoints
FAST Keypoints
KLT
SparseFlowPyrLK
Added NvStreams Synchronization (NvSciSync) support in NvMediaVPI with a new header nvmedia_vpi_nvscisync.h.
 

Changes Introduced in DRIVE OS 5.1.6.0

This section discusses the NvMedia API changes between DRIVE OS 5.1.6.0 and DRIVE OS 5.1.3.0.
 
Module
Change Description
NvMedia 2D
nvmedia_2d.h
Removed certain header files previously included (by #include…). You may have to include these header files explicitly in your application program to compile it cleanly.
Removed the NVMEDIA_2D_BLIT_FLAG_RETURN_CRC symbol. The feature that this symbol refers to is non-functional on fused production boards.
NvMedia Common
nvmedia_common.h, nvmedia_common_encode.h, nvmedia_common_decode.h, nvmedia_common_encode_decode.h
The encode and decode logic in nvmedia_common.h header has been moved into two new headers:
nvmedia_common_encode.h - Contains the video and image encode structures and operations.
nvmedia_common_decode.h - Contains the video and image decode structures and operations.
nvmedia_common.h includes both nvmedia_common_encode.h and nvmedia_common_decode.h headers.
nvmedia_common_encode.h and nvmedia_common_decode.h both include the new nvmedia_common_encode_decode.h header which contains common types and declarations.
NvMedia Core
nvmedia_core.h
In enum NvMediaStatus:
Retired the NVMEDIA_STATUS_CANCELLED value.
Added the NVMEDIA_STATUS_PFSD_ERROR value.
NvMedia IDP
nvmedia_idp.h
Retired the following attributes from NvMediaIDPSetAttributes():
NVMEDIA_DISP_ATTR_BRIGHTNESS
NVMEDIA_DISP_ATTR_CONTRAST
NVMEDIA_DISP_ATTR_SATURATION
NVMEDIA_DISP_ATTR_HUE
NVMEDIA_DISP_ATTR_COLOR_STANDARD
NVMEDIA_DISP_ATTR_LIMITED_RGB
Use an alternative technique such as the VIC path instead.
NvMedia ICP
nvmedia_icp.h
The following functions, which operate on NvMediaImage, are deprecated, and are replaced by function which operate on NvMediaImageGroup.
The NvMediaICPFeedFrame() function is deprecated. Use NvMediaICPFeedImageGroup() instead.
The NvMediaICPGetFrameEx() function is deprecated. Use NvMediaICPGetImageGroup() instead.
The NvMediaICPReleaseFrame() function is deprecated. Use NvMediaICPReleaseImageGroup() instead.
The following functions are added to implement frame (image group) registration and deregistration:
NvMediaICPRegisterImageGroup()
NvMediaICPUnRegisterImageGroup()
The following enums are added to support more detailed error notification.
NvMediaICPCSIErrorType
NvMediaICPErrorStatus
NvMediaICPCsiInputFrameError
NvMediaICPCsiInputStreamError
PixelFaultError
NvMediaICPFrameFaultError
NvMediaICPMemoryWriteError
NvMedia Image
nvmedia_image.h
Removed certain header files previously included (by #include…). You may have to include these header files explicitly in your application program to compile it cleanly.
NvMedia ISC
nvmedia_isc.h
Removed following structures:
NvMediaISCTransactionHandle
NvMediaISCDriverHandle
NvMediaISCSupportFunctions
Removed following functions:
NvMediaISCCheckPresence()
NvMediaISCCheckLink()
NvMediaISCSetDefaults()
NvMediaISCSetDeviceConfig()
NvMediaISCReadParameters()
NvMediaISCWriteParameters()
NvMediaISCGetErrorStatus()
NvMediaISCReadRegister()
NvMediaISCWriteRegister()
NvMediaISCDumpRegisters()
Removed three functions previously used to control sensor exposure, gain and white balance settings:
NvMediaISCSetBracketedExposure()
NvMediaISCSetExposure()
NvMediaISCSetWBGain()
Use the new function NvMediaISCSetSensorControl() instead. This function ensures that all the input settings provided are applied together at a frame boundary through the ISC “group hold” functionality, if supported by the sensor.
 
Removed the following members from struct NvMediaISCDeviceDriver:
CheckPresence
CheckLink
SetDefaults
SetDeviceConfig
ReadParameters
WriteParameters
GetErrorStatus
ReadRegister
WriteRegister
DumpRegisters
Added the following new structures, which provide access to I2C read/write:
NvMediaISCDeviceRead
NvMediaISCDeviceWrite
Modified DriverCreate() to use NvMediaISCDevice instead of NvMediaISCDriverHandle.
 
Modified DriverDestroy() to use NvMediaISCDevice instead of NvMediaISCDriverHandle. Changed the type of struct NvMediaISCEmbeddedDataChunk member lineData to const uint8_t.
 
Changed the type of struct NvMediaISCSensorAttributes member sensorCFA to uint32_t.
 
Removed the NvMediaISCParseEmbeddedData() function for retrieving frame embedded data info. Use the new function NvMediaISCParseEmbedDataInfo() instead. This function provides information like frame CRC and sensor temperature in addition to that provided by the old function.
 
Removed the NvMediaISCGetSensorAttr() function for retrieving sensor static attributes. Use the new function NvMediaISCGetSensorAttributes() instead. This function provides information about sensor static properties like sensor name, exposure-gain ranges supported, and number of active exposures.
 
Removed the NvMediaISCSetCharacterizationAttr() function for programming the sensor in characterization mode. Use the new function NvMediaSetSensorCharMode() instead.
NvMedia LDC
nvmedia_ldc.h
Retired the previously deprecated function NvMediaLDCCreate().Use NvMediaLDCCreateNew() instead.
NvMedia Surface
nvmedia_surface.h
Added NvMediaImageSetTag() and NvMediaImageGetTag() to set and get tags associated with NvMediaImage objects.
 
Deprecated the NvMediaImage struct’s void *tag member. Use NvMediaImageSetTag() and NvMediaImageGetTag() instead.
NvMedia Video Output
nvmedia_vop.h
Retired the following attributes from NvMediaVideoOutputSetAttributes():
NVMEDIA_DISP_ATTR_BRIGHTNESS
NVMEDIA_DISP_ATTR_CONTRAST
NVMEDIA_DISP_ATTR_SATURATION
NVMEDIA_DISP_ATTR_HUE
NVMEDIA_DISP_ATTR_COLOR_STANDARD
NVMEDIA_DISP_ATTR_LIMITED_RGB
Use an alternative technique such as the VIC path instead.
 

Changes Introduced in DRIVE OS 5.1.3.0

This section discusses the NvMedia API changes between DRIVE OS 5.1.3.0 and DRIVE OS 5.1.0.0.
 
Module
Change Description
NvMedia Image 2D
nvmedia_2d.h
Deprecated NvMedia2DCopyPlane() function. Use NvMedia2DCopyPlaneNew() instead. NvMedia2DCopyPlane() will be removed in a future release.
 
Deprecated NvMedia2DWeave() function. Use NvMedia2DWeaveNew() instead. NvMedia2DWeave() will be removed in a future release.