定义 V4L2 视频转换器的辅助类。
使用视频转换器进行色彩空间转换、缩放以及硬件缓冲区内存 (V4L2_MEMORY_MMAP/ V4L2_MEMORY_DMABUF) 和软件缓冲区内存 (V4L2_MEMORY_USERPTR) 之间的转换。
视频转换器设备节点为 "/dev/nvhost-vic"。转换器的类别名称为 "NVVIDCONV"。
有关转换器的更多信息,请参阅 V4L2 视频转换器。
定义于文件 64 行 NvVideoConverter.h。


公有成员函数 | |
| ~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 NvVideoConverter * | createVideoConverter (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 | ( | ) |
|
继承自 |
立即终止排队缓冲区的处理。
所有缓冲区都返回给应用程序。
内部在两个平面上调用 VIDIOC_STREAMOFF IOCTL。
|
static |
创建一个名为 name 的新 V4L2 视频转换器对象。
此方法内部在转换器设备节点 "/dev/nvhost-vic" 上调用 v4l2_open,并检查设备是否具有 V4L2_CAP_VIDEO_M2M_MPLANE 功能。此方法允许调用者指定打开设备时使用的其他标志。
设备以阻塞模式打开,可以通过将 O_NONBLOCK 标志传递给此方法来修改。
|
继承自 |
从元素中出队一个事件。
内部调用 VIDIOC_DQEVENT IOCTL。调用者可以指定出队事件的最大等待时间。该调用将阻塞,直到事件成功出队或达到超时时间。
| [输入/输出] | event | 要填充的 v4l2_event 结构的引用。 |
| [输入] | max_wait_ms | 指定出队事件的最大等待时间,以毫秒为单位。 |
|
virtualinherited |
|
继承自 |
获取一个控件的值。
内部调用 VIDIOC_G_CTRL IOCTL。
| [输入] | id | 要获取的控件的 ID。 |
| [输出] | value | 对将控制值读入的变量的引用。 |
|
继承自 |
获取多个控件的值。
内部调用 VIDIOC_G_EXT_CTRLS IOCTL。
| [输入/输出] | ctl | 指向要获取的控件的指针。 |
|
继承自 |
获取元素的性能分析数据。
|
virtualinherited |
从 NvElement 重新实现。
|
继承自 |
检查是否为元素启用了性能分析。
|
继承自 |
将元素的性能分析数据打印到输出流。
| [输入] | out_stream | 要将数据打印到的 std::ostream 类型的输出流。如果未指定,则采用默认值 std::cout。 |
| 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 枚举类型之一。 |
| 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 枚举类型之一。 |
|
继承自 |
设置一个控件的值。
内部调用 VIDIOC_S_CTRL IOCTL。
| [输入] | id | 要设置的控件的 ID。 |
| [输入] | value | 要在控件上设置的值。 |
| int NvVideoConverter::setCropRect | ( | uint32_t | left, |
| uint32_t | top, | ||
| uint32_t | width, | ||
| uint32_t | height | ||
| ) |
设置转换器的裁剪矩形。
内部在捕获平面上调用 VIDIOC_S_SELECTION。必须在任何平面上调用 setFormat() 之前调用。
| [输入] | left | 矩形的水平偏移量,以像素为单位。 |
| [输入] | top | 矩形的垂直偏移量,以像素为单位。 |
| [输入] | width | 矩形的宽度,以像素为单位。 |
| [输入] | height | 矩形的高度,以像素为单位。 |
| int NvVideoConverter::setDestRect | ( | uint32_t | left, |
| uint32_t | top, | ||
| uint32_t | width, | ||
| uint32_t | height | ||
| ) |
设置转换器的目标矩形。
内部在输出平面上调用 VIDIOC_S_SELECTION。必须在任何平面上调用 setFormat() 之前调用。
| [输入] | left | 矩形的水平偏移量,以像素为单位 |
| [输入] | top | 矩形的垂直偏移量,以像素为单位 |
| [输入] | width | 矩形的宽度,以像素为单位 |
| [输入] | height | 矩形的高度,以像素为单位 |
|
继承自 |
设置多个控件的值。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL。
| [输入] | ctl | 指向要设置的控件的指针。 |
| 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 枚举类型之一。 |
| 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 枚举类型之一。 |
| 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 枚举类型之一。 |
| 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 枚举类型之一。 |
| int NvVideoConverter::setTnrAlgorithm | ( | enum v4l2_tnr_algorithm | algorithm | ) |
设置要使用的 TNR(时域降噪)算法。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_VIDEO_CONVERT_TNR_ALGORITHM。必须在任何平面上调用 setForma() 之前调用。
| [输入] | algorithm | TNR 算法类型,为 v4l2_tnr_algorithm 枚举类型之一。 |
| int NvVideoConverter::setYUVRescale | ( | enum v4l2_yuv_rescale_method | method | ) |
设置要使用的 YUV 重新缩放方法。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 #V4L2_CID_VIDEO_CONVERT_YUV_RESCALE_METHOD。必须在任何平面上调用 setFormat() 之前调用。
| [输入] | method | YUV 重新缩放方法类型,为 v4l2_yuv_rescale_method 枚举类型之一。 |
|
继承自 |
订阅一个 V4L2 事件。
内部调用 VIDIOC_SUBSCRIBE_EVENT IOCTL。
| [输入] | type | 事件类型。 |
| [输入] | id | 事件源 ID。 |
| [输入] | flags | 事件标志。 |
|
virtual |
等待直到输出平面上排队的所有缓冲区都已转换并从捕获平面出队。
这是一个阻塞调用。
| [输入] | max_wait_ms | 最大等待时间,以毫秒为单位 |
从 NvV4l2Element 重新实现。
|
继承自 |
指向应用程序特定数据的指针。
定义于文件 169 行 NvV4l2Element.h。
|
继承自 |
|
protectedinherited |
捕获平面缓冲区的像素格式。
定义于文件 182 行 NvV4l2Element.h。
|
protectedinherited |
指定组件的名称,用于调试。
定义于文件 122 行 NvElement.h。
|
protectedinherited |
指定使用 v4l2_open 打开的设备的 FD。
定义于文件 179 行 NvV4l2Element.h。
|
protectedinherited |
|
继承自 |
|
protectedinherited |
输出平面缓冲区的像素格式。
定义于文件 181 行 NvV4l2Element.h。
|
protectedinherited |
元素的性能分析器。
定义于文件 124 行 NvElement.h。