Jetson Linux API 参考文档

32.7.4 版本

详细描述

表示缓冲区的类。

NvBuffer 类是以 v4l2_buffer 结构为基础建模的。该缓冲区具有 buf_type v4l2_buf_typememory_type v4l2_memory 和索引。 它包含一个 NvBufferPlane 数组,类似于 v4l2_buffer.m.planesv4l2_plane 结构体的数组。 它还包含一个相应的 NvBufferPlaneFormat 数组,用于描述每个平面的格式。

即使 NvBuffer 非常类似于 v4l2 结构,它也可以轻松地与其他非 v4l2 组件一起使用。 NvBuffer 包含数据指针、缓冲区长度、缓冲区平面的文件描述符 (FD)、缓冲区格式(高度、宽度、步幅等)以及此类组件所需的其他成员。

此类还提供缓冲区引用计数功能。 当同一缓冲区被多个元素使用时,此功能非常有用。

对于 V4L2 MMAP,此类提供便捷的方法,用于将缓冲区的内容映射或取消映射到内存或从内存映射或取消映射,并根据其格式分配或释放软件内存。

定义位于文件 85NvBuffer.h

NvBuffer 的协作图

数据结构

struct  NvBufferPlane
 保存缓冲区平面参数。 更多...
 
struct  NvBufferPlaneFormat
 保存缓冲区平面格式。 更多...
 

公共成员函数

 NvBuffer (enum v4l2_buf_type buf_type, enum v4l2_memory memory_type, uint32_t n_planes, NvBufferPlaneFormat *fmt, uint32_t index)
 创建新的 NvBuffer 对象。 更多...
 
 NvBuffer (uint32_t pixfmt, uint32_t width, uint32_t height, uint32_t index)
 为原始像素格式创建新的 NvBuffer更多...
 
 NvBuffer (uint32_t size, uint32_t index)
 为非原始像素格式创建新的 NvBuffer 对象。 更多...
 
 ~NvBuffer ()
 销毁 NvBuffer 对象。 更多...
 
int map ()
 将缓冲区的内容映射到内存。 更多...
 
void unmap ()
 从内存中取消映射缓冲区的内容。 更多...
 
int allocateMemory ()
 为缓冲区分配软件内存。 更多...
 
void deallocateMemory ()
 释放缓冲区内存。 更多...
 
int ref ()
 增加缓冲区的引用计数。 更多...
 
int unref ()
 减少缓冲区的引用计数。 更多...
 

静态公共成员函数

static int fill_buffer_plane_format (uint32_t *num_planes, NvBuffer::NvBufferPlaneFormat *planefmts, uint32_t width, uint32_t height, uint32_t raw_pixfmt)
 填充 NvBuffer::NvBufferPlaneFormat 数组。 更多...
 

数据字段

enum v4l2_buf_type buf_type
 缓冲区类型。 更多...
 
enum v4l2_memory memory_type
 与缓冲区关联的内存类型。 更多...
 
const uint32_t index
 保存缓冲区索引。 更多...
 
uint32_t n_planes
 保存缓冲区中的平面数量。 更多...
 
NvBufferPlane planes [MAX_PLANES]
 保存数据指针、平面文件描述符 (FD)、平面格式等。 更多...
 

友元

class NvV4l2ElementPlane
 

构造函数和析构函数文档

◆ NvBuffer() [1/3]

NvBuffer::NvBuffer ( enum v4l2_buf_type  buf_type,
enum v4l2_memory  memory_type,
uint32_t  n_planes,
NvBufferPlaneFormat fmt,
uint32_t  index 
)

创建新的 NvBuffer 对象。

此 V4L2 元素的便捷方法创建一个新的缓冲区,其平面数组 memset 为零,引用计数初始化为零。

参数
[in]buf_type缓冲区类型,枚举为 v4l2_buf_type
[in]memory_typeNvBuffer 内存,枚举为 v4l2_memory 枚举。
[in]n_planes缓冲区中的平面数量。
[in]fmt指定指向缓冲区平面格式数组的指针。 应至少包含 n_planes 个元素。
[in]index平面中缓冲区的索引。

◆ NvBuffer() [2/3]

NvBuffer::NvBuffer ( uint32_t  pixfmt,
uint32_t  width,
uint32_t  height,
uint32_t  index 
)

为原始像素格式创建新的 NvBuffer

此 V4L2 元素的便捷方法是仅适用于原始像素格式的 NvBuffer 构造函数。 它需要指定宽度、高度和像素格式。

平面数组 memset 为零,引用计数初始化为零。

注意
内存必须由应用程序通过调用 NvBuffer::allocateMemory 来分配。
参数
[in]pixfmt缓冲区的像素格式。
[in]width缓冲区的像素宽度。
[in]height缓冲区的像素高度。
[in]index缓冲区的索引/ID。

◆ NvBuffer() [3/3]

NvBuffer::NvBuffer ( uint32_t  size,
uint32_t  index 
)

为非原始像素格式创建新的 NvBuffer 对象。

此 V4L2 元素的便捷方法是适用于非原始像素格式的 NvBuffer 构造函数。 它需要提供缓冲区的大小。

平面数组 memset 为零,引用计数初始化为零。

注意
内存需要由应用程序通过调用 NvBuffer::allocateMemory 来分配。
参数
[in]size缓冲区的字节大小。
[in]index缓冲区的索引/ID。

◆ ~NvBuffer()

NvBuffer::~NvBuffer ( )

销毁 NvBuffer 对象。

此方法清理类实例,取消映射任何已映射的平面。

成员函数文档

◆ allocateMemory()

int NvBuffer::allocateMemory ( )

为缓冲区分配软件内存。

警告
此方法仅适用于 V4L2_MEMORY_USERPTR 内存。

此方法根据缓冲区格式分配内存:heightwidthbytesperpixelsizeimage

返回值
成功返回 0,否则返回 -1。

◆ deallocateMemory()

void NvBuffer::deallocateMemory ( )

释放缓冲区内存。

警告
此方法仅适用于 V4L2_MEMORY_USERPTR 内存,并且仅当内存先前使用 NvBuffer::allocateMemory 分配时才有效。

◆ fill_buffer_plane_format()

static int NvBuffer::fill_buffer_plane_format ( uint32_t *  num_planes,
NvBuffer::NvBufferPlaneFormat planefmts,
uint32_t  width,
uint32_t  height,
uint32_t  raw_pixfmt 
)
static

填充 NvBuffer::NvBufferPlaneFormat 数组。

此便捷方法基于 widthheight 和像素格式 (raw_pixfmt) 填充 NvBuffer::NvBufferPlaneFormat 数组。 它还在 num_planes 中返回像素格式所需的平面数量。

参数
[out]num_planes平面数量。 不得为 NULL。
[in,out]planefmts要填充的 NvBuffer::NvBufferPlaneFormat 数组。 长度必须至少为 num_planes。 为了获得最佳效果,请传递长度为 MAX_PLANES 的数组。
[in]width缓冲区的像素宽度。
[in]height缓冲区的像素高度。
[in]raw_pixfmt原始 V4L2 像素格式。
返回值
成功返回 0,对于不支持的像素格式返回 -1。

◆ map()

int NvBuffer::map ( )

将缓冲区的内容映射到内存。

此方法将平面的文件描述符 (FD) 映射到 planes 的数据指针。(仅限 MMAP 缓冲区。)

返回值
成功返回 0,否则返回 -1。

◆ ref()

int NvBuffer::ref ( )

增加缓冲区的引用计数。

此方法是线程安全的。

返回值
操作后缓冲区的引用计数。

◆ unmap()

void NvBuffer::unmap ( )

从内存中取消映射缓冲区的内容。

(仅限 MMAP 缓冲区。)

◆ unref()

int NvBuffer::unref ( )

减少缓冲区的引用计数。

如果缓冲区引用计数大于 0,则此线程安全方法会减少缓冲区引用计数。

返回值
操作后缓冲区的引用计数。

友元和相关函数文档

◆ NvV4l2ElementPlane

friend class NvV4l2ElementPlane
friend

定义位于文件 290NvBuffer.h

字段文档

◆ buf_type

enum v4l2_buf_type NvBuffer::buf_type

缓冲区类型。

定义位于文件 237NvBuffer.h

◆ index

const uint32_t NvBuffer::index

保存缓冲区索引。

定义位于文件 241NvBuffer.h

◆ memory_type

enum v4l2_memory NvBuffer::memory_type

与缓冲区关联的内存类型。

定义位于文件 238NvBuffer.h

◆ n_planes

uint32_t NvBuffer::n_planes

保存缓冲区中的平面数量。

定义位于文件 243NvBuffer.h

◆ planes

NvBufferPlane NvBuffer::planes[MAX_PLANES]

保存数据指针、平面文件描述符 (FD)、平面格式等。

定义位于文件 244NvBuffer.h


此类文档从以下文件生成
. All rights reserved.