Jetson Linux API 参考文档

32.7.4 版本
NvVideoConverter 类参考

详细描述

定义 V4L2 视频转换器的辅助类。

使用视频转换器进行色彩空间转换、缩放以及硬件缓冲区内存 (V4L2_MEMORY_MMAP/ V4L2_MEMORY_DMABUF) 和软件缓冲区内存 (V4L2_MEMORY_USERPTR) 之间的转换。

视频转换器设备节点为 "/dev/nvhost-vic"。转换器的类别名称为 "NVVIDCONV"

有关转换器的更多信息,请参阅 V4L2 视频转换器

定义于文件 64NvVideoConverter.h

NvVideoConverter 的继承关系图
NvVideoConverter 的协作关系图

公有成员函数

 ~NvVideoConverter ()
 
int setCapturePlaneFormat (uint32_t pixfmt, uint32_t width, uint32_t height, enum v4l2_nv_buffer_layout type)
 设置转换器输出平面上的格式。 更多...
 
int setOutputPlaneFormat (uint32_t pixfmt, uint32_t width, uint32_t height, enum v4l2_nv_buffer_layout type)
 设置转换器输出平面上的格式。 更多...
 
int setOutputPlaneBufferLayout (enum v4l2_nv_buffer_layout type)
 设置输出平面缓冲区的缓冲区布局。 更多...
 
int setCapturePlaneBufferLayout (enum v4l2_nv_buffer_layout type)
 设置捕获平面缓冲区的缓冲区布局。 更多...
 
int setInterpolationMethod (enum v4l2_interpolation_method method)
 设置用于缩放的插值(滤波器)方法。 更多...
 
int setFlipMethod (enum v4l2_flip_method method)
 设置翻转方法。 更多...
 
int setTnrAlgorithm (enum v4l2_tnr_algorithm algorithm)
 设置要使用的 TNR(时域降噪)算法。 更多...
 
int setYUVRescale (enum v4l2_yuv_rescale_method method)
 设置要使用的 YUV 重新缩放方法。 更多...
 
int setCropRect (uint32_t left, uint32_t top, uint32_t width, uint32_t height)
 设置转换器的裁剪矩形。 更多...
 
int setDestRect (uint32_t left, uint32_t top, uint32_t width, uint32_t height)
 设置转换器的目标矩形。 更多...
 
int waitForIdle (uint32_t max_wait_ms)
 等待直到输出平面上排队的所有缓冲区都已转换并从捕获平面出队。 更多...
 
int subscribeEvent (uint32_t type, uint32_t id, uint32_t flags)
 订阅一个 V4L2 事件。 更多...
 
int dqEvent (struct v4l2_event &event, uint32_t max_wait_ms)
 从元素中出队一个事件。 更多...
 
int setControl (uint32_t id, int32_t value)
 设置一个控件的值。 更多...
 
int getControl (uint32_t id, int32_t &value)
 获取一个控件的值。 更多...
 
int setExtControls (struct v4l2_ext_controls &ctl)
 设置多个控件的值。 更多...
 
int getExtControls (struct v4l2_ext_controls &ctl)
 获取多个控件的值。 更多...
 
virtual int isInError ()
 
int abort ()
 立即终止排队缓冲区的处理。 更多...
 
void enableProfiling ()
 为 V4l2Element 启用性能分析。 更多...
 
void getProfilingData (NvElementProfiler::NvElementProfilerData &data)
 获取元素的性能分析数据。 更多...
 
void printProfilingStats (std::ostream &out_stream=std::cout)
 将元素的性能分析数据打印到输出流。 更多...
 
bool isProfilingEnabled ()
 检查是否为元素启用了性能分析。 更多...
 

静态公有成员函数

static NvVideoConvertercreateVideoConverter (const char *name, int flags=0)
 创建一个名为 name 的新 V4L2 视频转换器对象。 更多...
 

数据字段

NvV4l2ElementPlane output_plane
 设置输出平面。 更多...
 
NvV4l2ElementPlane capture_plane
 设置捕获平面。 更多...
 
void * app_data
 指向应用程序特定数据的指针。 更多...
 

保护属性

int fd
 指定使用 v4l2_open 打开的设备的 FD。 更多...
 
uint32_t output_plane_pixfmt
 输出平面缓冲区的像素格式。 更多...
 
uint32_t capture_plane_pixfmt
 捕获平面缓冲区的像素格式。 更多...
 
int is_in_error
 指示在元素操作期间是否遇到错误。 更多...
 
const char * comp_name
 指定组件的名称,用于调试。 更多...
 
NvElementProfiler profiler
 元素的性能分析器。 更多...
 

构造函数和析构函数文档

◆ ~NvVideoConverter()

NvVideoConverter::~NvVideoConverter ( )

成员函数文档

◆ abort()

int NvV4l2Element::abort ( )
继承自

立即终止排队缓冲区的处理。

所有缓冲区都返回给应用程序。

内部在两个平面上调用 VIDIOC_STREAMOFF IOCTL。

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

◆ createVideoConverter()

static NvVideoConverter* NvVideoConverter::createVideoConverter ( const char *  name,
int  flags = 0 
)
static

创建一个名为 name 的新 V4L2 视频转换器对象。

此方法内部在转换器设备节点 "/dev/nvhost-vic" 上调用 v4l2_open,并检查设备是否具有 V4L2_CAP_VIDEO_M2M_MPLANE 功能。此方法允许调用者指定打开设备时使用的其他标志。

设备以阻塞模式打开,可以通过将 O_NONBLOCK 标志传递给此方法来修改。

返回
指向新创建的转换器对象的引用;如果初始化期间失败,则为 NULL

◆ dqEvent()

int NvV4l2Element::dqEvent ( struct v4l2_event &  event,
uint32_t  max_wait_ms 
)
继承自

从元素中出队一个事件。

内部调用 VIDIOC_DQEVENT IOCTL。调用者可以指定出队事件的最大等待时间。该调用将阻塞,直到事件成功出队或达到超时时间。

参数
[输入/输出]event要填充的 v4l2_event 结构的引用。
[输入]max_wait_ms指定出队事件的最大等待时间,以毫秒为单位。
返回
成功返回 0,否则返回 -1。

◆ enableProfiling()

void NvV4l2Element::enableProfiling ( )
virtualinherited

为 V4l2Element 启用性能分析。

必须在设置任何平面格式之前调用。

NvElement 重新实现。

◆ getControl()

int NvV4l2Element::getControl ( uint32_t  id,
int32_t &  value 
)
继承自

获取一个控件的值。

内部调用 VIDIOC_G_CTRL IOCTL。

参数
[输入]id要获取的控件的 ID。
[输出]value对将控制值读入的变量的引用。
返回
成功返回 0,否则返回 -1。

◆ getExtControls()

int NvV4l2Element::getExtControls ( struct v4l2_ext_controls &  ctl)
继承自

获取多个控件的值。

内部调用 VIDIOC_G_EXT_CTRLS IOCTL。

参数
[输入/输出]ctl指向要获取的控件的指针。
返回
成功返回 0,否则返回 -1。

◆ getProfilingData()

void NvElement::getProfilingData ( NvElementProfiler::NvElementProfilerData data)
继承自

获取元素的性能分析数据。

返回
对元素的性能分析数据的常量引用。

◆ isInError()

virtual int NvV4l2Element::isInError ( )
virtualinherited

NvElement 重新实现。

◆ isProfilingEnabled()

bool NvElement::isProfilingEnabled ( )
继承自

检查是否为元素启用了性能分析。

返回
指示是否启用性能分析的布尔值。

◆ printProfilingStats()

void NvElement::printProfilingStats ( std::ostream &  out_stream = std::cout)
继承自

将元素的性能分析数据打印到输出流。

参数
[输入]out_stream要将数据打印到的 std::ostream 类型的输出流。如果未指定,则采用默认值 std::cout。

◆ setCapturePlaneBufferLayout()

int NvVideoConverter::setCapturePlaneBufferLayout ( enum v4l2_nv_buffer_layout  type)

设置捕获平面缓冲区的缓冲区布局。

内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_VIDEO_CONVERT_CAPTURE_PLANE_LAYOUT。必须在任何平面上调用 setFormat() 之前调用。

参数
[输入]type布局类型,为 v4l2_nv_buffer_layout 枚举类型之一。
返回
成功返回 0,否则返回 -1。

◆ setCapturePlaneFormat()

int NvVideoConverter::setCapturePlaneFormat ( uint32_t  pixfmt,
uint32_t  width,
uint32_t  height,
enum v4l2_nv_buffer_layout  type 
)

设置转换器输出平面上的格式。

内部在捕获平面上调用 VIDIOC_S_FMT IOCTL。

参数
[输入]pixfmt原始 V4L2 像素格式之一。
[输入]width输出缓冲区的宽度,以像素为单位。
[输入]height输出缓冲区的高度,以像素为单位。
[输入]type平面缓冲区的布局,为 v4l2_nv_buffer_layout 枚举类型之一。
返回
成功返回 0,否则返回 -1。

◆ setControl()

int NvV4l2Element::setControl ( uint32_t  id,
int32_t  value 
)
继承自

设置一个控件的值。

内部调用 VIDIOC_S_CTRL IOCTL。

参数
[输入]id要设置的控件的 ID。
[输入]value要在控件上设置的值。
返回
成功返回 0,否则返回 -1。

◆ setCropRect()

int NvVideoConverter::setCropRect ( uint32_t  left,
uint32_t  top,
uint32_t  width,
uint32_t  height 
)

设置转换器的裁剪矩形。

内部在捕获平面上调用 VIDIOC_S_SELECTION。必须在任何平面上调用 setFormat() 之前调用。

参数
[输入]left矩形的水平偏移量,以像素为单位。
[输入]top矩形的垂直偏移量,以像素为单位。
[输入]width矩形的宽度,以像素为单位。
[输入]height矩形的高度,以像素为单位。
返回
成功返回 0,失败返回 -1

◆ setDestRect()

int NvVideoConverter::setDestRect ( uint32_t  left,
uint32_t  top,
uint32_t  width,
uint32_t  height 
)

设置转换器的目标矩形。

内部在输出平面上调用 VIDIOC_S_SELECTION。必须在任何平面上调用 setFormat() 之前调用。

参数
[输入]left矩形的水平偏移量,以像素为单位
[输入]top矩形的垂直偏移量,以像素为单位
[输入]width矩形的宽度,以像素为单位
[输入]height矩形的高度,以像素为单位
返回
成功返回 0,失败返回 -1

◆ setExtControls()

int NvV4l2Element::setExtControls ( struct v4l2_ext_controls &  ctl)
继承自

设置多个控件的值。

内部调用 VIDIOC_S_EXT_CTRLS IOCTL。

参数
[输入]ctl指向要设置的控件的指针。
返回
成功返回 0,否则返回 -1。

◆ setFlipMethod()

int NvVideoConverter::setFlipMethod ( enum v4l2_flip_method  method)

设置翻转方法。

内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_VIDEO_CONVERT_FLIP_METHOD。必须在任何平面上调用 setFormat() 之前调用。

参数
[输入]method翻转方法类型,为 v4l2_flip_method 枚举类型之一。
返回
成功返回 0,否则返回 -1。

◆ setInterpolationMethod()

int NvVideoConverter::setInterpolationMethod ( enum v4l2_interpolation_method  method)

设置用于缩放的插值(滤波器)方法。

内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_VIDEO_CONVERT_INTERPOLATION_METHOD。必须在任何平面上调用 setFormat() 之前调用。

参数
[输入]method插值方法类型,为 v4l2_interpolation_method 枚举类型之一。
返回
成功返回 0,否则返回 -1。

◆ setOutputPlaneBufferLayout()

int NvVideoConverter::setOutputPlaneBufferLayout ( enum v4l2_nv_buffer_layout  type)

设置输出平面缓冲区的缓冲区布局。

内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_VIDEO_CONVERT_OUTPUT_PLANE_LAYOUT。必须在任何平面上调用 setFormat() 之前调用。

参数
[输入]type布局类型,为 v4l2_nv_buffer_layout 枚举类型之一。
返回
成功返回 0,否则返回 -1。

◆ setOutputPlaneFormat()

int NvVideoConverter::setOutputPlaneFormat ( uint32_t  pixfmt,
uint32_t  width,
uint32_t  height,
enum v4l2_nv_buffer_layout  type 
)

设置转换器输出平面上的格式。

内部在输出平面上调用 VIDIOC_S_FMT IOCTL。

参数
[输入]pixfmt原始 V4L2 像素格式之一。
[输入]width输出缓冲区的宽度,以像素为单位。
[输入]height输出缓冲区的高度,以像素为单位。
[输入]type平面缓冲区的布局,为 v4l2_nv_buffer_layout 枚举类型之一。
返回
成功返回 0,否则返回 -1。

◆ setTnrAlgorithm()

int NvVideoConverter::setTnrAlgorithm ( enum v4l2_tnr_algorithm  algorithm)

设置要使用的 TNR(时域降噪)算法。

内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_VIDEO_CONVERT_TNR_ALGORITHM。必须在任何平面上调用 setForma() 之前调用。

参数
[输入]algorithmTNR 算法类型,为 v4l2_tnr_algorithm 枚举类型之一。
返回
成功返回 0,否则返回 -1。

◆ setYUVRescale()

int NvVideoConverter::setYUVRescale ( enum v4l2_yuv_rescale_method  method)

设置要使用的 YUV 重新缩放方法。

内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 #V4L2_CID_VIDEO_CONVERT_YUV_RESCALE_METHOD。必须在任何平面上调用 setFormat() 之前调用。

参数
[输入]methodYUV 重新缩放方法类型,为 v4l2_yuv_rescale_method 枚举类型之一。
返回
成功返回 0,否则返回 -1。

◆ subscribeEvent()

int NvV4l2Element::subscribeEvent ( uint32_t  type,
uint32_t  id,
uint32_t  flags 
)
继承自

订阅一个 V4L2 事件。

内部调用 VIDIOC_SUBSCRIBE_EVENT IOCTL。

参数
[输入]type事件类型。
[输入]id事件源 ID。
[输入]flags事件标志。
返回
成功返回 0,否则返回 -1。

◆ waitForIdle()

int NvVideoConverter::waitForIdle ( uint32_t  max_wait_ms)
virtual

等待直到输出平面上排队的所有缓冲区都已转换并从捕获平面出队。

这是一个阻塞调用。

参数
[输入]max_wait_ms最大等待时间,以毫秒为单位
返回
成功返回 0,超时返回 -1。

NvV4l2Element 重新实现。

字段文档

◆ app_data

void* NvV4l2Element::app_data
继承自

指向应用程序特定数据的指针。

定义于文件 169NvV4l2Element.h

◆ capture_plane

NvV4l2ElementPlane NvV4l2Element::capture_plane
继承自

设置捕获平面。

元素的捕获平面

定义于文件 145NvV4l2Element.h

◆ capture_plane_pixfmt

uint32_t NvV4l2Element::capture_plane_pixfmt
protectedinherited

捕获平面缓冲区的像素格式。

定义于文件 182NvV4l2Element.h

◆ comp_name

const char* NvElement::comp_name
protectedinherited

指定组件的名称,用于调试。

定义于文件 122NvElement.h

◆ fd

int NvV4l2Element::fd
protectedinherited

指定使用 v4l2_open 打开的设备的 FD。

定义于文件 179NvV4l2Element.h

◆ is_in_error

int NvElement::is_in_error
protectedinherited

指示在元素操作期间是否遇到错误。

定义于文件 120NvElement.h

NvElement::isInError() 引用。

◆ output_plane

NvV4l2ElementPlane NvV4l2Element::output_plane
继承自

设置输出平面。

元素的输出平面

定义于文件 141NvV4l2Element.h

◆ output_plane_pixfmt

uint32_t NvV4l2Element::output_plane_pixfmt
protectedinherited

输出平面缓冲区的像素格式。

定义于文件 181NvV4l2Element.h

◆ profiler

NvElementProfiler NvElement::profiler
protectedinherited

元素的性能分析器。

定义于文件 124NvElement.h


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