L4T Multimedia API Reference

32.1 Release

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Buffer Manager

Detailed Description

NVIDIA buffering utility library for use by applications.

The utility also transforms, composits, and blends.

Data Structures

struct  NvBufferCompositeBackground
 Holds composition background r,g,b colors. More...
 
struct  NvBufferRect
 Holds coordinates for a rectangle. More...
 
struct  _NvBufferCreateParams
 Holds the input parameters for hardware buffer creation. More...
 
struct  _NvBufferParams
 Holds parameters for a hardware buffer. More...
 
struct  _NvBufferCompositeParams
 Holds parameters related to compositing/blending. More...
 
struct  _NvBufferTransformParams
 Holds parameters for buffer transform functions. More...
 

Macros

#define MAX_NUM_PLANES   3
 Defines the maximum number of planes for video frame. More...
 
#define MAX_COMPOSITE_FRAME   16
 Defines the maximum number of input video frames that can be used for composition. More...
 

Typedefs

typedef struct _NvBufferSession * NvBufferSession
 Holds an opaque NvBuffer session type required for parallel buffer tranformations and compositions. More...
 
typedef struct
_NvBufferCreateParams 
NvBufferCreateParams
 Holds the input parameters for hardware buffer creation. More...
 
typedef struct _NvBufferParams NvBufferParams
 Holds parameters for a hardware buffer. More...
 
typedef struct
_NvBufferCompositeParams 
NvBufferCompositeParams
 Holds parameters related to compositing/blending. More...
 
typedef struct
_NvBufferTransformParams 
NvBufferTransformParams
 Holds parameters for buffer transform functions. More...
 

Enumerations

enum  NvBufferPayloadType {
  NvBufferPayload_SurfArray,
  NvBufferPayload_MemHandle
}
 Defines Payload types for NvBuffer. More...
 
enum  NvBufferLayout {
  NvBufferLayout_Pitch,
  NvBufferLayout_BlockLinear
}
 Defines Layout formats for NvBuffer video planes. More...
 
enum  NvBufferMemFlags {
  NvBufferMem_Read,
  NvBufferMem_Write,
  NvBufferMem_Read_Write
}
 Defines memory access flags for NvBuffer. More...
 
enum  NvBufferTag {
  NvBufferTag_NONE = 0x0,
  NvBufferTag_CAMERA = 0x200,
  NvBufferTag_JPEG = 0x1500,
  NvBufferTag_VIDEO_ENC = 0x1200,
  NvBufferTag_VIDEO_DEC = 0x1400,
  NvBufferTag_VIDEO_CONVERT = 0xf01
}
 Defines tags to associate, while allocation of NvBuffer. More...
 
enum  NvBufferColorFormat {
  NvBufferColorFormat_YUV420,
  NvBufferColorFormat_YVU420,
  NvBufferColorFormat_YUV420_ER,
  NvBufferColorFormat_YVU420_ER,
  NvBufferColorFormat_NV12,
  NvBufferColorFormat_NV12_ER,
  NvBufferColorFormat_NV21,
  NvBufferColorFormat_NV21_ER,
  NvBufferColorFormat_UYVY,
  NvBufferColorFormat_UYVY_ER,
  NvBufferColorFormat_VYUY,
  NvBufferColorFormat_VYUY_ER,
  NvBufferColorFormat_YUYV,
  NvBufferColorFormat_YUYV_ER,
  NvBufferColorFormat_YVYU,
  NvBufferColorFormat_YVYU_ER,
  NvBufferColorFormat_ABGR32,
  NvBufferColorFormat_XRGB32,
  NvBufferColorFormat_ARGB32,
  NvBufferColorFormat_NV12_10LE,
  NvBufferColorFormat_NV21_10LE,
  NvBufferColorFormat_NV12_12LE,
  NvBufferColorFormat_NV21_12LE,
  NvBufferColorFormat_YUV420_709,
  NvBufferColorFormat_YUV420_709_ER,
  NvBufferColorFormat_NV12_709,
  NvBufferColorFormat_NV12_709_ER,
  NvBufferColorFormat_YUV420_2020,
  NvBufferColorFormat_NV12_2020,
  NvBufferColorFormat_SignedR16G16,
  NvBufferColorFormat_YUV444,
  NvBufferColorFormat_Invalid
}
 Defines color formats for NvBuffer. More...
 
enum  NvBufferTransform_Flip {
  NvBufferTransform_None,
  NvBufferTransform_Rotate90,
  NvBufferTransform_Rotate180,
  NvBufferTransform_Rotate270,
  NvBufferTransform_FlipX,
  NvBufferTransform_FlipY,
  NvBufferTransform_Transpose,
  NvBufferTransform_InvTranspose
}
 Defines video flip methods. More...
 
enum  NvBufferTransform_Filter {
  NvBufferTransform_Filter_Nearest,
  NvBufferTransform_Filter_Bilinear,
  NvBufferTransform_Filter_5_Tap,
  NvBufferTransform_Filter_10_Tap,
  NvBufferTransform_Filter_Smart,
  NvBufferTransform_Filter_Nicest
}
 Defines transform video filter types. More...
 
enum  NvBufferTransform_Flag {
  NVBUFFER_TRANSFORM_CROP_SRC = 1,
  NVBUFFER_TRANSFORM_CROP_DST = 1 << 1,
  NVBUFFER_TRANSFORM_FILTER = 1 << 2,
  NVBUFFER_TRANSFORM_FLIP = 1 << 3
}
 Defines flags to indicate for valid transform. More...
 
enum  NvBufferComposite_Flag {
  NVBUFFER_COMPOSITE = 1,
  NVBUFFER_BLEND = 1 << 1
}
 Defines flags that specify valid composition/blending operations. More...
 

Functions

int NvBufferGetSize (void)
 This method can be used to get HW Buffer struct size. More...
 
EGLImageKHR NvEGLImageFromFd (EGLDisplay display, int dmabuf_fd)
 Creates an EGLImage instance from dmabuf-fd. More...
 
int NvDestroyEGLImage (EGLDisplay display, EGLImageKHR eglImage)
 Destroys an EGLImage object. More...
 
int NvBufferCreate (int *dmabuf_fd, int width, int height, NvBufferLayout layout, NvBufferColorFormat colorFormat)
 Allocates a HW buffer (deprecated). More...
 
int NvBufferCreateEx (int *dmabuf_fd, NvBufferCreateParams *input_params)
 Allocates a HW buffer. More...
 
int NvBufferGetParams (int dmabuf_fd, NvBufferParams *params)
 Gets buffer parameters. More...
 
int NvBufferDestroy (int dmabuf_fd)
 Destroys a HW buffer. More...
 
int ExtractFdFromNvBuffer (void *nvbuf, int *dmabuf_fd)
 Extracts the dmabuf_fd from the hardware buffer. More...
 
int NvReleaseFd (int dmabuf_fd)
 Releases the dmabuf_fd buffer. More...
 
int NvBufferMemSyncForCpu (int dmabuf_fd, unsigned int plane, void **pVirtAddr)
 Syncs the HW memory cache for the CPU. More...
 
int NvBufferMemSyncForDevice (int dmabuf_fd, unsigned int plane, void **pVirtAddr)
 Syncs the HW memory cache sync for the device. More...
 
int NvBufferMemMap (int dmabuf_fd, unsigned int plane, NvBufferMemFlags memflag, void **pVirtAddr)
 Gets the memory-mapped virtual address of the plane. More...
 
int NvBufferMemUnMap (int dmabuf_fd, unsigned int plane, void **pVirtAddr)
 Unmaps the mapped virtual address of the plane. More...
 
int NvBuffer2Raw (int dmabuf_fd, unsigned int plane, unsigned int out_width, unsigned int out_height, unsigned char *ptr)
 Copies the NvBuffer plane contents to a raw buffer plane. More...
 
int Raw2NvBuffer (unsigned char *ptr, unsigned int plane, unsigned int in_width, unsigned int in_height, int dmabuf_fd)
 Copies raw buffer plane contents to an NvBuffer plane. More...
 
NvBufferSession NvBufferSessionCreate (void)
 Creates a new NvBufferSession for parallel scheduling of buffer transformations and compositions. More...
 
void NvBufferSessionDestroy (NvBufferSession session)
 Destroys an exisiting NvBufferSession. More...
 
int NvBufferTransform (int src_dmabuf_fd, int dst_dmabuf_fd, NvBufferTransformParams *transform_params)
 Transforms one DMA buffer to another DMA buffer. More...
 
int NvBufferComposite (int *src_dmabuf_fds, int dst_dmabuf_fd, NvBufferCompositeParams *composite_params)
 Composites multiple input DMA buffers to one output DMA buffer. More...
 

Macro Definition Documentation

#define MAX_COMPOSITE_FRAME   16

Defines the maximum number of input video frames that can be used for composition.

Definition at line 45 of file nvbuf_utils.h.

#define MAX_NUM_PLANES   3

Defines the maximum number of planes for video frame.

Definition at line 40 of file nvbuf_utils.h.

Typedef Documentation

Holds parameters related to compositing/blending.

Holds the input parameters for hardware buffer creation.

Holds parameters for a hardware buffer.

typedef struct _NvBufferSession* NvBufferSession

Holds an opaque NvBuffer session type required for parallel buffer tranformations and compositions.

Operations using a single session are scheduled sequentially, after the previous operation finishes. Operations for multiple sessions are scheduled in parallel.

Definition at line 272 of file nvbuf_utils.h.

Holds parameters for buffer transform functions.

Enumeration Type Documentation

Defines color formats for NvBuffer.

Enumerator
NvBufferColorFormat_YUV420 

BT.601 colorspace - YUV420 multi-planar.

NvBufferColorFormat_YVU420 

BT.601 colorspace - YUV420 multi-planar.

NvBufferColorFormat_YUV420_ER 

BT.601 colorspace - YUV420 ER multi-planar.

NvBufferColorFormat_YVU420_ER 

BT.601 colorspace - YVU420 ER multi-planar.

NvBufferColorFormat_NV12 

BT.601 colorspace - Y/CbCr 4:2:0 multi-planar.

NvBufferColorFormat_NV12_ER 

BT.601 colorspace - Y/CbCr ER 4:2:0 multi-planar.

NvBufferColorFormat_NV21 

BT.601 colorspace - Y/CbCr 4:2:0 multi-planar.

NvBufferColorFormat_NV21_ER 

BT.601 colorspace - Y/CbCr ER 4:2:0 multi-planar.

NvBufferColorFormat_UYVY 

BT.601 colorspace - YUV 4:2:2 planar.

NvBufferColorFormat_UYVY_ER 

BT.601 colorspace - YUV ER 4:2:2 planar.

NvBufferColorFormat_VYUY 

BT.601 colorspace - YUV 4:2:2 planar.

NvBufferColorFormat_VYUY_ER 

BT.601 colorspace - YUV ER 4:2:2 planar.

NvBufferColorFormat_YUYV 

BT.601 colorspace - YUV 4:2:2 planar.

NvBufferColorFormat_YUYV_ER 

BT.601 colorspace - YUV ER 4:2:2 planar.

NvBufferColorFormat_YVYU 

BT.601 colorspace - YUV 4:2:2 planar.

NvBufferColorFormat_YVYU_ER 

BT.601 colorspace - YUV ER 4:2:2 planar.

NvBufferColorFormat_ABGR32 

LegacyRGBA colorspace - BGRA-8-8-8-8 planar.

NvBufferColorFormat_XRGB32 

LegacyRGBA colorspace - XRGB-8-8-8-8 planar.

NvBufferColorFormat_ARGB32 

LegacyRGBA colorspace - ARGB-8-8-8-8 planar.

NvBufferColorFormat_NV12_10LE 

BT.601 colorspace - Y/CbCr 4:2:0 10-bit multi-planar.

NvBufferColorFormat_NV21_10LE 

BT.601 colorspace - Y/CrCb 4:2:0 10-bit multi-planar.

NvBufferColorFormat_NV12_12LE 

BT.601 colorspace - Y/CbCr 4:2:0 12-bit multi-planar.

NvBufferColorFormat_NV21_12LE 

BT.601 colorspace - Y/CrCb 4:2:0 12-bit multi-planar.

NvBufferColorFormat_YUV420_709 

BT.709 colorspace - YUV420 multi-planar.

NvBufferColorFormat_YUV420_709_ER 

BT.709 colorspace - YUV420 ER multi-planar.

NvBufferColorFormat_NV12_709 

BT.709 colorspace - Y/CbCr 4:2:0 multi-planar.

NvBufferColorFormat_NV12_709_ER 

BT.709 colorspace - Y/CbCr ER 4:2:0 multi-planar.

NvBufferColorFormat_YUV420_2020 

BT.2020 colorspace - YUV420 multi-planar.

NvBufferColorFormat_NV12_2020 

BT.2020 colorspace - Y/CbCr 4:2:0 multi-planar.

NvBufferColorFormat_SignedR16G16 

Optical flow.

NvBufferColorFormat_YUV444 

BT.601 colorspace - YUV444 multi-planar.

NvBufferColorFormat_Invalid 

Invalid color format.

Definition at line 104 of file nvbuf_utils.h.

Defines flags that specify valid composition/blending operations.

Enumerator
NVBUFFER_COMPOSITE 

flag to set for composition.

NVBUFFER_BLEND 

flag to set for blending.

Definition at line 231 of file nvbuf_utils.h.

Defines Layout formats for NvBuffer video planes.

Enumerator
NvBufferLayout_Pitch 

Pitch Layout.

NvBufferLayout_BlockLinear 

BlockLinear Layout.

Definition at line 61 of file nvbuf_utils.h.

Defines memory access flags for NvBuffer.

Enumerator
NvBufferMem_Read 

Memory read.

NvBufferMem_Write 

Memory write.

NvBufferMem_Read_Write 

Memory read & write.

Definition at line 72 of file nvbuf_utils.h.

Defines Payload types for NvBuffer.

Enumerator
NvBufferPayload_SurfArray 

buffer payload with HW memory handle for set of planes.

NvBufferPayload_MemHandle 

buffer payload with HW memory handle for specific memory size.

Definition at line 50 of file nvbuf_utils.h.

Defines tags to associate, while allocation of NvBuffer.

Enumerator
NvBufferTag_NONE 

tag None.

NvBufferTag_CAMERA 

tag for Camera.

NvBufferTag_JPEG 

tag for Jpeg Encoder/Decoder.

NvBufferTag_VIDEO_ENC 

tag for H264/H265 Video Encoder.

NvBufferTag_VIDEO_DEC 

tag for H264/H265/VP9 Video Decoder.

NvBufferTag_VIDEO_CONVERT 

tag for Video Transform/Composite.

Definition at line 85 of file nvbuf_utils.h.

Defines transform video filter types.

Enumerator
NvBufferTransform_Filter_Nearest 

transform filter nearest.

NvBufferTransform_Filter_Bilinear 

transform filter bilinear.

NvBufferTransform_Filter_5_Tap 

transform filter 5 tap.

NvBufferTransform_Filter_10_Tap 

transform filter 10 tap.

NvBufferTransform_Filter_Smart 

transform filter smart.

NvBufferTransform_Filter_Nicest 

transform filter nicest.

Definition at line 198 of file nvbuf_utils.h.

Defines flags to indicate for valid transform.

Enumerator
NVBUFFER_TRANSFORM_CROP_SRC 

transform flag to crop source rectangle.

NVBUFFER_TRANSFORM_CROP_DST 

transform flag to crop destination rectangle.

NVBUFFER_TRANSFORM_FILTER 

transform flag to set filter type.

NVBUFFER_TRANSFORM_FLIP 

transform flag to set flip method.

Definition at line 217 of file nvbuf_utils.h.

Defines video flip methods.

Enumerator
NvBufferTransform_None 

Video flip none.

NvBufferTransform_Rotate90 

Video flip rotate 90 degree clockwise.

NvBufferTransform_Rotate180 

Video flip rotate 180 degree clockwise.

NvBufferTransform_Rotate270 

Video flip rotate 270 degree clockwise.

NvBufferTransform_FlipX 

Video flip with respect to X-axis.

NvBufferTransform_FlipY 

Video flip with respect to Y-axis.

NvBufferTransform_Transpose 

Video flip transpose.

NvBufferTransform_InvTranspose 

Video flip inverse transpode.

Definition at line 175 of file nvbuf_utils.h.

Function Documentation

int ExtractFdFromNvBuffer ( void *  nvbuf,
int *  dmabuf_fd 
)

Extracts the dmabuf_fd from the hardware buffer.

Parameters
[in]nvbufSpecifies the hw_buffer.
[out]dmabuf_fdReturns DMABUF FD of hw_buffer.
Returns
0 for success, -1 for failure.
int NvBuffer2Raw ( int  dmabuf_fd,
unsigned int  plane,
unsigned int  out_width,
unsigned int  out_height,
unsigned char *  ptr 
)

Copies the NvBuffer plane contents to a raw buffer plane.

Parameters
[in]dmabuf_fdDMABUF FD of NvBuffer.
[in]planevideo frame plane.
[in]out_widthaligned width of the raw data plane.
[in]out_heightaligned height of the raw data plane.
[in]ptrpointer to the output raw plane data.
Returns
0 for success, -1 for failure.
int NvBufferComposite ( int *  src_dmabuf_fds,
int  dst_dmabuf_fd,
NvBufferCompositeParams composite_params 
)

Composites multiple input DMA buffers to one output DMA buffer.

This function can support composition of multiple input frames to one composited output.

Parameters
[in]src_dmabuf_fdsarray of DMABUF FDs of source buffers to composite from
[in]dst_dmabuf_fdDMABUF FD of destination buffer for composition
[in]composite_paramscomposition parameters
Returns
0 for success, -1 for failure.
int NvBufferCreate ( int *  dmabuf_fd,
int  width,
int  height,
NvBufferLayout  layout,
NvBufferColorFormat  colorFormat 
)

Allocates a HW buffer (deprecated).

Deprecated:
Instead use NvBufferCreateEx().
Parameters
[out]dmabuf_fdReturns dmabuf_fd of hardware buffer.
[in]widthHardware buffer width, in bytes.
[in]heightHardware buffer height, in bytes.
[in]layoutLayout of buffer.
[in]colorFormatThe colorFormat of buffer.
Returns
0 for success, -1 for failure
int NvBufferCreateEx ( int *  dmabuf_fd,
NvBufferCreateParams input_params 
)

Allocates a HW buffer.

Parameters
[out]dmabuf_fdReturns dmabuf_fd of hardware buffer.
[in]input_paramsInput parameters for hardware buffer creation.
Returns
0 for success, -1 for failure
int NvBufferDestroy ( int  dmabuf_fd)

Destroys a HW buffer.

Parameters
[in]dmabuf_fdSpecifies the dmabuf_fd hw_buffer to destroy.
Returns
0 for success, -1 for failure.
int NvBufferGetParams ( int  dmabuf_fd,
NvBufferParams params 
)

Gets buffer parameters.

Parameters
[in]dmabuf_fdDMABUF FD of buffer.
[out]paramsA pointer to the structure to fill with parameters.
Returns
0 for success, -1 for failure.
int NvBufferGetSize ( void  )

This method can be used to get HW Buffer struct size.

Returns
HW Buffer struct size.
int NvBufferMemMap ( int  dmabuf_fd,
unsigned int  plane,
NvBufferMemFlags  memflag,
void **  pVirtAddr 
)

Gets the memory-mapped virtual address of the plane.

The client must call NvBufferMemSyncForCpu() with the virtual address returned by this function before accessing the mapped memory in CPU.

After memory mapping is complete, mapped memory modification must be coordinated between the CPU and hardware device as follows:

  • CPU: If the CPU modifies any mapped memory, the client must call NvBufferMemSyncForDevice() before any hardware device accesses the memory.
  • Hardware device: If the mapped memory is modified by any hardware device, the client must call NvBufferMemSyncForCpu() before CPU accesses the memory.
Parameters
[in]dmabuf_fdDMABUF FD of buffer.
[in]planevideo frame plane.(Applies to NvBufferPayload_SurfArray.)
[in]memflagNvBuffer memory flag.
[out]pVirtAddrVirtual Address pointer of the memory-mapped plane.
Returns
0 for success, -1 for failure.
int NvBufferMemSyncForCpu ( int  dmabuf_fd,
unsigned int  plane,
void **  pVirtAddr 
)

Syncs the HW memory cache for the CPU.

See also
NvBufferMemMap for the purpose of the function
Parameters
[in]dmabuf_fdDMABUF FD of buffer.
[in]planevideo frame plane.
[in]pVirtAddrVirtual Address pointer of the memory-mapped plane.
Returns
0 for success, -1 for failure.
int NvBufferMemSyncForDevice ( int  dmabuf_fd,
unsigned int  plane,
void **  pVirtAddr 
)

Syncs the HW memory cache sync for the device.

See also
NvBufferMemMap for the purpose of the function
Parameters
[in]dmabuf_fdDMABUF FD of buffer.
[in]planevideo frame plane.
[in]pVirtAddrVirtual Address pointer of the memory-mapped plane.
Returns
0 for success, -1 for failure.
int NvBufferMemUnMap ( int  dmabuf_fd,
unsigned int  plane,
void **  pVirtAddr 
)

Unmaps the mapped virtual address of the plane.

If the following conditions are both true, the client must call NvBufferMemSyncForDevice() before unmapping the memory:

  • Mapped memory was modified by the CPU.
  • Mapped memory will be accessed by a hardware device.
Parameters
[in]dmabuf_fdDMABUF FD of buffer.
[in]planevideo frame plane.(Applies to NvBufferPayload_SurfArray.)
[in]pVirtAddrMemory-mapped Virtual Address pointer of the plane.
Returns
0 for success, -1 for failure.
NvBufferSession NvBufferSessionCreate ( void  )

Creates a new NvBufferSession for parallel scheduling of buffer transformations and compositions.

Returns
A session pointer, NULL for failure.
void NvBufferSessionDestroy ( NvBufferSession  session)

Destroys an exisiting NvBufferSession.

Parameters
[in]sessionAn existing NvBufferSession.
int NvBufferTransform ( int  src_dmabuf_fd,
int  dst_dmabuf_fd,
NvBufferTransformParams transform_params 
)

Transforms one DMA buffer to another DMA buffer.

This function can support transforms for copying, scaling, fliping, rotating, and cropping.

Parameters
[in]src_dmabuf_fdDMABUF FD of source buffer
[in]dst_dmabuf_fdDMABUF FD of destination buffer
[in]transform_paramstransform parameters
Returns
0 for sucess, -1 for failure.
int NvDestroyEGLImage ( EGLDisplay  display,
EGLImageKHR  eglImage 
)

Destroys an EGLImage object.

Parameters
[in]displayEGLDisplay object used to destroy EGLImage. If NULL, the nvbuf_utils API uses its own EGLDisplay instance.
[in]eglImageEGLImageKHR object to be destroyed.
Returns
0 for success, -1 for failure
EGLImageKHR NvEGLImageFromFd ( EGLDisplay  display,
int  dmabuf_fd 
)

Creates an EGLImage instance from dmabuf-fd.

Parameters
[in]displayEGLDisplay object used during the creation of EGLImage. If NULL, the nvbuf_utils API uses its own EGLDisplay instance.
[in]dmabuf_fdDMABUF FD of buffer from which EGLImage to be created.
Returns
EGLImageKHR for success, NULL for failure
int NvReleaseFd ( int  dmabuf_fd)

Releases the dmabuf_fd buffer.

See also
ExtractfdFromNvBuffer()
Parameters
[in]dmabuf_fdSpecifies the dmabuf_fd to release.
Returns
0 for success, -1 for failure.
int Raw2NvBuffer ( unsigned char *  ptr,
unsigned int  plane,
unsigned int  in_width,
unsigned int  in_height,
int  dmabuf_fd 
)

Copies raw buffer plane contents to an NvBuffer plane.

Parameters
[in]ptrpointer to the input raw plane data.
[in]planevideo frame plane.
[in]in_widthaligned width of the raw data plane.
[in]in_heightaligned height of the raw data plane.
[in]dmabuf_fdDMABUF FD of NvBuffer.
Returns
0 for success, -1 for failure.