NVIDIA Tegra
NVIDIA DRIVE OS 5.1 Linux SDK

Developer Guide
5.1.15.0 Release


 
NvMedia Porting Guide
 
Changes Introduced in DRIVE OS 5.1.15.0
Changes Introduced in DRIVE OS 5.1.12.4
Changes Introduced in DRIVE OS 5.1.12.0
Changes Introduced in DRIVE OS 5.1.9.0
Changes Introduced in DRIVE OS 5.1.6.0
Changes Introduced in DRIVE OS 5.1.3.0
In NVIDIA DRIVE™ OS 5.1, the NvMedia APIs are available and provide hardware acceleration of various engines inside SoCs. This document highlights the changes in NvMedia APIs across various DRIVE OS 5.1 releases.
Changes Introduced in DRIVE OS 5.1.15.0
There are no porting changes in this 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.