42 #define NVMEDIA_ICP_VERSION_MAJOR 4
44 #define NVMEDIA_ICP_VERSION_MINOR 16
50 #define NVMEDIA_IMAGE_CAPTURE_TIMEOUT_INFINITE (0xFFFFFFFFu)
53 #define NVMEDIA_ICP_MAX_VIRTUAL_GROUPS 4u
56 #define NVMEDIA_ICP_MAX_VIRTUAL_CHANNELS 3u
63 #define NVMEDIA_ICP_HANDLER(icpEx, groupIdx) (icpEx->icp[groupIdx].hIcp)
72 #define NVMEDIA_ICP_SETTINGS_HANDLER(icpSettingsEx, groupIdx, vcIdx) \
73 (&icpSettingsEx.virtualGroups[groupIdx].virtualChannels[vcIdx].icpSettings)
82 #define NVMEDIA_ICP_ERROR(_type_, _error_, _value_, _desc_) \
83 NVMEDIA_ICP_##_type_##_ERROR_##_error_ = _value_##u,
89 #define NVMEDIA_MAX_ICP_FRAME_BUFFERS 32u
479 NVMEDIA_ICP_ERROR(CSI, FS_FAULT, 7,
"A frame start occurred before previous frame end")
480 NVMEDIA_ICP_ERROR(CSI, FE_FORCED_FAULT, 8,
"A frame end was injected by the CSI hardware")
481 NVMEDIA_ICP_ERROR(CSI, FE_FRAMEID_FAULT, 9,
"Frame ID for FE packet does not match that of FS packet")
482 NVMEDIA_ICP_ERROR(CSI, PXL_ENABLE_FAULT , 10,
"An illegal pixel encoding has been detected")
484 NVMEDIA_ICP_ERROR(CSI, PH_ECC_DPHY, 21,
"Single bit error correction code in DPHY packet header")
486 NVMEDIA_ICP_ERROR(CSI, LINE_SHORT, 23,
"Packet Payload is less than word count in packet header")
487 NVMEDIA_ICP_ERROR(CSI, PH_CRC_CPHY, 24,
"One of the CPHY packet headers CRC error")
493 NVMEDIA_ICP_ERROR(CSI, SPURIOUS_DATA, 0,
"FIFO data was found in the gap between frame start and frame end")
495 NVMEDIA_ICP_ERROR(CSI, FIFO_OVERFLOW, 1,
"An overflow occurred in a stream FIFO")
497 NVMEDIA_ICP_ERROR(CSI, FIFO_BADPKT, 3,
"An unknown packet type has been received on a stream")
504 NVMEDIA_ICP_ERROR(VI, PXL_MISSING_LE, 5,
"Two LS packets were detected without a LE packet between them")
506 NVMEDIA_ICP_ERROR(VI, PXL_SPURIOUS, 7,
"A pixel data packet was received without a LS packet first")
507 NVMEDIA_ICP_ERROR(VI, PXL_LONG_LINE, 8,
"More pixels were received than expected in a line")
508 NVMEDIA_ICP_ERROR(VI, PXL_SHORT_LINE, 9,
"Fewer pixels were received than expected in a line")
509 NVMEDIA_ICP_ERROR(VI, EMB_MISSING_LE, 10,
"Two LS packets were detected without a LE packet between them in emb data")
510 NVMEDIA_ICP_ERROR(VI, EMB_RUNAWAY, 11,
"More lines were received than expected in emb data")
511 NVMEDIA_ICP_ERROR(VI, EMB_SPURIOUS, 12,
"A pixel data packet was received without a LS packet first in emb data")
512 NVMEDIA_ICP_ERROR(VI, EMB_LONG_LINE, 13,
"More pixels were received than expected in a line in emb data")
513 NVMEDIA_ICP_ERROR(VI, EMB_INFRINGE, 14,
"Embedded data was received on a frame where no embedded data was expected")
514 NVMEDIA_ICP_ERROR(VI, DTYPE_MISMATCH, 15,
"The pixel datatype changed in the middle of the line")
515 NVMEDIA_ICP_ERROR(VI, FORCED_FE, 16,
"FE didn't arrive within expected frame duration, capture engine injected FE")
516 NVMEDIA_ICP_ERROR(VI, PXL_INCOMPLETE, 17,
"Fewer lines of pixels in a frame were received than expected")
517 NVMEDIA_ICP_ERROR(VI, EMB_INCOMPLETE, 18,
"Fewer lines of emb data in a frame were received than expected")
518 NVMEDIA_ICP_ERROR(VI, PFSD_FAULT, 19,
"Permanent Fault Software Diagnostic is detected from engine status")
523 NVMEDIA_ICP_ERROR(VI, SHORT_FRAME, 0,
"FE packet arrived before the normal number of pixels has appeared ")
524 NVMEDIA_ICP_ERROR(VI, SHORT_EMB, 1,
"FE of EMB Data packet arrived before the normal number of pixels has appeared ")
525 NVMEDIA_ICP_ERROR(VI, PFSD_FAULT_NOTIFED, 2,
"Permanent Fault Software Diagnostic is detected between frames")
526 NVMEDIA_ICP_ERROR(VI, FAULT_FE, 3,
"FE is inserted due to a stream reset or early abort")
527 NVMEDIA_ICP_ERROR(VI, NOMATCH, 4,
"CSI packets are discarded due to no matched capture channels")
528 NVMEDIA_ICP_ERROR(VI, COLLISION, 5,
"An FS packet matches a channel which is not done processing a previously matching frame")
529 NVMEDIA_ICP_ERROR(VI, LOAD_FRAMED, 6,
"A LOAD command is received for a channel while that channel is currently in a frame")
534 NVMEDIA_ICP_ERROR(VI, PACKET_OVERFLOW, 0,
"The FIFO for a surface packer has overflowed")
535 NVMEDIA_ICP_ERROR(VI, FRAME_TRUNCATED, 1,
"A packer has dropped a partial frame")
652 unsigned int millisecondTimeout
707 uint32_t millisecondTimeout,
Specifies 20 bits per pixel.
NvMediaBitsPerPixel
Specifies bits per pixel.
NvMediaICPInterfaceType
Specifies the image capture interface type for the CSI interface.
#define NvMediaSurfaceType
Defines the set of NvMedia surface types.
NvMediaStatus NvMediaICPFeedImageGroup(NvMediaICP *icp, NvMediaImageGroup *imageGrp, unsigned int millisecondTimeout)
Adds an image group to the image capture pool.
Specifies User defined 6 (0x35).
uint32_t NvMediaBool
A boolean value, holding NVMEDIA_TRUE or NVMEDIA_FALSE.
Specifies User defined 4 (0x33).
Specifies User defined 3 (0x32).
NvMediaStatus NvMediaICPGetImageGroup(NvMediaICP *icp, uint32_t millisecondTimeout, NvMediaImageGroup **imageGrp)
Gets a captured image group with frame status.
Specifies User defined 5 (0x34).
struct NvMediaICP NvMediaICP
Holds an image capture object per virtual group.
NvMediaStatus NvMediaICPWaitForSoF(NvMediaICP *icp) NVM_DEPRECATED_MSG("Use NvMediaICPGetSOFNvSciSyncFence")
Waits for next SoF (Start of Frame).
#define NVMEDIA_ICP_MAX_VIRTUAL_CHANNELS
Defines the maximum number of virtual channels per virtual group.
Specifies User defined 7 (0x36).
Specifies YUV 4:2:2 8 bits.
Specifies 14 bits per pixel.
#define NVMEDIA_ICP_MAX_VIRTUAL_GROUPS
Defines the maximum number of virtual groups.
NvMediaStatus NvMediaICPResume(NvMediaICP *icp)
Resumes a stopped image capture operation.
NvMediaICPEx * NvMediaICPCreateEx(NvMediaICPSettingsEx *settings)
Creates an image capture object used to capture various formats of input into an NvMediaImage.
Specifies 10 bits per pixel.
NvMediaStatus NvMediaICPReleaseImageGroup(NvMediaICP *icp, NvMediaImageGroup **imageGrp)
Gets an image group from the internal pool that the client previously supplied with NvMediaICPFeedIma...
NvMediaStatus
Defines all possible error codes.
NvMediaStatus NvMediaICPRegisterImageGroup(NvMediaICP *icp, NvMediaImageGroup *imageGrp)
Maps a frame to the capture engine.
Specifies YUV 4:2:2 10 bits.
NvMediaICPPixelFaultError
NvMediaICPCSIErrorType
Defines error status codes that specify the meanings of the "masked" bits in NvMediaICPSettings::csiE...
NvMediaStatus NvMediaICPGetErrorInfo(NvMediaICP *icp, NvMediaICPErrorInfo *icpErrorInfo)
Gets capture error information.
NvMediaICPCsiInputFrameError
Specifies User defined 8 (0x37).
NvMediaICPFrameFaultError
Specifies 16 bits per pixel.
NvMediaICPInputFormatType
Specifies the image capture input format type.
NvMediaStatus NvMediaICPStop(NvMediaICP *icp)
Stops the hardware engine from capturing the image.
Specifies 8 bits per pixel.
NvMediaICPErrorStatus
Defines error status codes.
NvMediaStatus NvMediaICPUnregisterImageGroup(NvMediaICP *icp, NvMediaImageGroup *imageGrp)
Unmaps a frame from the capture engine.
NvMediaICPCsiPhyMode
Specifies the CSI phy mode.
Specifies User defined 1 (0x30).
Specifies User defined 2 (0x31).
NvMediaICPCsiInputStreamError
Specifies 12 bits per pixel.
NvMediaStatus NvMediaICPGetVersion(NvMediaVersion *version)
Checks version compatibility for the NvMedia ICP library.
#define NVMEDIA_ICP_ERROR(_type_, _error_, _value_, _desc_)
A macro that creates an enumerator in enum NvMediaICPErrorStatus.
NvMediaICPMemoryWriteError
void NvMediaICPDestroyEx(NvMediaICPEx *icpEx)
Destroys an image capture object created by NvMediaICPCreateEx().