NVIDIA DeepStream SDK API Reference4.0 Release |
Describes types and functions of the DeepStream buffer surface management API.
Data Structures | |
struct | NvBufSurfacePlaneParams |
Holds the planewise parameters of a buffer. More... | |
struct | NvBufSurfaceCreateParams |
Holds parameters required to allocate an NvBufSurface. More... | |
struct | NvBufSurfaceMappedAddr |
Holds pointers for a mapped buffer. More... | |
struct | NvBufSurfaceParams |
Holds information about a single buffer in a batch. More... | |
struct | NvBufSurface |
Holds information about batched buffers. More... | |
#define NVBUF_MAX_PLANES 4 |
Defines the maximum number of planes.
Definition at line 58 of file nvbufsurface.h.
#define STRUCTURE_PADDING 4 |
Defines the default padding length for reserved fields of structures.
Definition at line 55 of file nvbufsurface.h.
typedef struct NvBufSurface NvBufSurface |
Holds information about batched buffers.
typedef struct NvBufSurfaceCreateParams NvBufSurfaceCreateParams |
Holds parameters required to allocate an NvBufSurface.
typedef struct NvBufSurfaceMappedAddr NvBufSurfaceMappedAddr |
Holds pointers for a mapped buffer.
typedef struct NvBufSurfaceParams NvBufSurfaceParams |
Holds information about a single buffer in a batch.
typedef struct NvBufSurfacePlaneParams NvBufSurfacePlaneParams |
Holds the planewise parameters of a buffer.
Specifies color formats for NvBufSurface.
Definition at line 75 of file nvbufsurface.h.
enum NvBufSurfaceLayout |
Specifies layout formats for NvBufSurface video planes.
Enumerator | |
---|---|
NVBUF_LAYOUT_PITCH |
Specifies pitch layout. |
NVBUF_LAYOUT_BLOCK_LINEAR |
Specifies block linear layout. |
Definition at line 158 of file nvbufsurface.h.
Specifies mapping types for NvBufSurface.
Enumerator | |
---|---|
NVBUF_MAP_READ |
Specifies NvBufSurface mapping type "read.". |
NVBUF_MAP_WRITE |
Specifies NvBufSurface mapping type "write.". |
NVBUF_MAP_READ_WRITE |
Specifies NvBufSurface mapping type "read/write.". |
Definition at line 63 of file nvbufsurface.h.
enum NvBufSurfaceMemType |
Specifies memory types for NvBufSurface.
Enumerator | |
---|---|
NVBUF_MEM_DEFAULT |
Specifies the default memory type, i.e. NVBUF_MEM_CUDA_DEVICE for dGPU, NVBUF_MEM_SURFACE_ARRAY for Jetson. Use NVBUF_MEM_DEFAULT to allocate whichever type of memory is appropriate for the platform. |
NVBUF_MEM_CUDA_PINNED |
Specifies CUDA Host memory type. |
NVBUF_MEM_CUDA_DEVICE |
Specifies CUDA Device memory type. |
NVBUF_MEM_CUDA_UNIFIED |
Specifies CUDA Unified memory type. |
NVBUF_MEM_SURFACE_ARRAY |
Specifies NVRM Surface Array type. Valid only for Jetson. |
NVBUF_MEM_HANDLE |
Specifies NVRM Handle type. Valid only for Jetson. |
NVBUF_MEM_SYSTEM |
Specifies memory allocated by malloc(). |
Definition at line 169 of file nvbufsurface.h.
int NvBufSurfaceCopy | ( | NvBufSurface * | srcSurf, |
NvBufSurface * | dstSurf | ||
) |
Copies the content of source batched buffer(s) to destination batched buffer(s).
You can use this function to copy source buffer(s) of one memory type to destination buffer(s) of another memory type, e.g. CUDA host to CUDA device, malloc'ed memory to CUDA device, etc.
The source and destination NvBufSurface objects must have same buffer and batch size.
[in] | srcSurf | A pointer to the source NvBufSurface structure. |
[in] | dstSurf | A pointer to the destination NvBufSurface structure. |
int NvBufSurfaceCreate | ( | NvBufSurface ** | surf, |
uint32_t | batchSize, | ||
NvBufSurfaceCreateParams * | params | ||
) |
Allocates a batch of buffers.
Allocates memory for batchSize buffers and returns a pointer to an allocated NvBufSurface. The params structure must have the allocation parameters of a single buffer. If params.size is set, a buffer of that size is allocated, and all other parameters (width, height, color format, etc.) are ignored.
Call NvBufSurfaceDestroy() to free resources allocated by this function.
[out] | surf | An indirect pointer to the allocated batched buffers. |
[in] | batchSize | Batch size of buffers. |
[in] | params | A pointer to an NvBufSurfaceCreateParams structure. |
int NvBufSurfaceDestroy | ( | NvBufSurface * | surf | ) |
Frees batched buffers previously allocated by NvBufSurfaceCreate().
[in] | surf | A pointer to an NvBufSurface to be freed. |
int NvBufSurfaceFromFd | ( | int | dmabuf_fd, |
void ** | buffer | ||
) |
Gets the NvBufSurface from the DMABUF FD.
[in] | dmabuf_fd | DMABUF FD of the buffer. |
[out] | buffer | A pointer to the NvBufSurface. |
int NvBufSurfaceMap | ( | NvBufSurface * | surf, |
int | index, | ||
int | plane, | ||
NvBufSurfaceMemMapFlags | type | ||
) |
Maps hardware batched buffers to the HOST or CPU address space.
Valid for NVBUF_MEM_CUDA_UNIFIED type memory for dGPU and NVBUF_MEM_SURFACE_ARRAY and NVBUF_MEM_HANDLE type memory for Jetson.
This function fills an array of pointers at surf->surfaceList->mappedAddr->addr. surf is a pointer to an NvBufSurface. surfaceList is a pointer to an NvBufSurfaceParams. mappedAddr is a pointer to an NvBufSurfaceMappedAddr. addr is declared as an array of pointers to void, and holds pointers to the buffers.
The client must call NvBufSurfaceSyncForCpu() with the virtual address populated by this function before accessing mapped memory in the CPU.
After memory mapping is complete, mapped memory modification must be coordinated between the CPU and the hardware device as follows:
Use NvBufSurfaceUnMap() to unmap buffer(s) and release any resource.
[in,out] | surf | A pointer to an NvBufSurface structure. The function stores pointers to the buffers in a descendant of this structure; see the notes above. |
[in] | index | Index of a buffer in the batch. -1 refers to all buffers in the batch. |
[in] | plane | Index of a plane in buffer. -1 refers to all planes in the buffer. |
[in] | type | A flag for mapping type. |
int NvBufSurfaceMapEglImage | ( | NvBufSurface * | surf, |
int | index | ||
) |
Creates an EGLImage from the memory of one or more NvBufSurface buffers.
Only memory type NVBUF_MEM_SURFACE_ARRAY is supported.
This function returns the created EGLImage by storing its address at surf->surfaceList->mappedAddr->eglImage. (surf is a pointer to an NvBufSurface. surfaceList is a pointer to an NvBufSurfaceParams. mappedAddr is a pointer to an NvBufSurfaceMappedAddr. eglImage is declared as a pointer to void, and holds an EGLImageKHR.)
You can use this function in scenarios where a CUDA operation on Jetson hardware memory (identified by NVBUF_MEM_SURFACE_ARRAY) is required. The EGLImageKHR struct provided by this function can then be registered with CUDA for further CUDA operations.
[in,out] | surf | A pointer to an NvBufSurface structure. The function stores a pointer to the created EGLImage in a descendant of this structure; see the notes above. |
[in] | index | Index of a buffer in the batch. -1 specifies all buffers in the batch. |
int NvBufSurfaceMemSet | ( | NvBufSurface * | surf, |
int | index, | ||
int | plane, | ||
uint8_t | value | ||
) |
Fills each byte of the buffer(s) in an NvBufSurface with a provided value.
You can also use this function to reset the buffer(s) in the batch.
[in] | surf | A pointer to the NvBufSurface structure. |
[in] | index | Index of a buffer in the batch. -1 refers to all buffers in the batch. |
[in] | plane | Index of a plane in the buffer. -1 refers to all planes in the buffer. |
[in] | value | The value to be used as fill. |
int NvBufSurfaceSyncForCpu | ( | NvBufSurface * | surf, |
int | index, | ||
int | plane | ||
) |
Syncs the hardware memory cache for the CPU.
Valid only for memory types NVBUF_MEM_SURFACE_ARRAY and NVBUF_MEM_HANDLE.
[in] | surf | A pointer to an NvBufSurface structure. |
[in] | index | Index of the buffer in the batch. -1 refers to all buffers in the batch. |
[in] | plane | Index of a plane in the buffer. -1 refers to all planes in the buffer. |
int NvBufSurfaceSyncForDevice | ( | NvBufSurface * | surf, |
int | index, | ||
int | plane | ||
) |
Syncs the hardware memory cache for the device.
Valid only for memory types NVBUF_MEM_SURFACE_ARRAY and NVBUF_MEM_HANDLE.
[in] | surf | A pointer to an NvBufSurface structure. |
[in] | index | Index of a buffer in the batch. -1 refers to all buffers in the batch. |
[in] | plane | Index of a plane in the buffer. -1 refers to all planes in the buffer. |
int NvBufSurfaceUnMap | ( | NvBufSurface * | surf, |
int | index, | ||
int | plane | ||
) |
Unmaps previously mapped buffer(s).
[in] | surf | A pointer to an NvBufSurface structure. |
[in] | index | Index of a buffer in the batch. -1 indicates all buffers in the batch. |
[in] | plane | Index of a plane in the buffer. -1 indicates all planes in the buffer. |
int NvBufSurfaceUnMapEglImage | ( | NvBufSurface * | surf, |
int | index | ||
) |
Destroys the previously created EGLImage object(s).
[in] | surf | A pointer to an NvBufSurface structure. |
[in] | index | The index of a buffer in the batch. -1 specifies all buffers in the batch. |