定义了基于 V4L2 组件的辅助类。
这个派生类为 V4L2 组件提供了通用功能。诸如编码器/解码器等基于 V4L2 的组件从此类扩展。
此类以 V4L2 M2M 设备为模型。它包括使用 v4l2_open 打开的设备的文件描述符 (FD)、两个平面 (NvV4l2ElementPlane)、输出平面、捕获平面和其他辅助方法,例如设置/获取控件、订阅/出队事件等。
定义位于文件 65 行 NvV4l2Element.h。
公共成员函数 | |
virtual | ~NvV4l2Element () |
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 () |
立即终止排队缓冲区的处理。 更多... | |
virtual int | waitForIdle (uint32_t max_wait_ms) |
等待直到元素处理完所有输出平面缓冲区。 更多... | |
void | enableProfiling () |
为 V4l2Element 启用性能分析。 更多... | |
void | getProfilingData (NvElementProfiler::NvElementProfilerData &data) |
获取元素的性能分析数据。 更多... | |
void | printProfilingStats (std::ostream &out_stream=std::cout) |
将元素的性能分析数据打印到输出流。 更多... | |
bool | isProfilingEnabled () |
检查是否为元素启用了性能分析。 更多... | |
数据字段 | |
NvV4l2ElementPlane | output_plane |
设置输出平面。 更多... | |
NvV4l2ElementPlane | capture_plane |
设置捕获平面。 更多... | |
void * | app_data |
指向应用程序特定数据的指针。 更多... | |
保护成员函数 | |
NvV4l2Element (const char *comp_name, const char *dev_node, int flags, NvElementProfiler::ProfilerField fields) | |
创建一个名为 name 的新 V4l2Element。 更多... | |
保护属性 | |
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 |
元素的性能分析器。 更多... | |
|
virtual |
|
protected |
创建一个名为 name 的新 V4l2Element。
此构造函数在 dev_node 上调用 v4l2_open。如果 v4l2_open 失败,则设置一个错误。
此函数还会检查设备是否支持 V4L2_CAP_VIDEO_M2M_MPLANE 功能。
[in] | comp_name | 指向标识元素实例的唯一名称的指针。 |
[in] | dev_node | 指向设备的 /dev/ * 节点的指针。 |
[in] | flags | 用于打开设备的标志。 |
[in] | fields | 对元素有效的性能分析器字段。 |
int NvV4l2Element::abort | ( | ) |
立即终止排队缓冲区的处理。
所有缓冲区都返回给应用程序。
在内部对两个平面调用 VIDIOC_STREAMOFF IOCTL。
int NvV4l2Element::dqEvent | ( | struct v4l2_event & | event, |
uint32_t | max_wait_ms | ||
) |
从元素中出队一个事件。
在内部调用 VIDIOC_DQEVENT
IOCTL。调用者可以指定等待事件出队的最长时间。调用会阻塞,直到事件成功出队或达到超时时间。
[in,out] | event | 对要填充的 v4l2_event 结构的引用。 |
[in] | max_wait_ms | 指定事件出队的最长等待时间,以毫秒为单位。 |
|
virtual |
int NvV4l2Element::getControl | ( | uint32_t | id, |
int32_t & | value | ||
) |
获取控件的值。
在内部调用 VIDIOC_G_CTRL
IOCTL。
[in] | id | 要获取的控件的 ID。 |
[out] | value | 对将从中读取控件值的变量的引用。 |
int NvV4l2Element::getExtControls | ( | struct v4l2_ext_controls & | ctl | ) |
获取多个控件的值。
在内部调用 VIDIOC_G_EXT_CTRLS
IOCTL。
[in,out] | ctl | 指向要获取的控件的指针。 |
|
继承自 |
获取元素的性能分析数据。
|
virtual |
从 NvElement 重新实现。
|
继承自 |
检查是否为元素启用了性能分析。
|
继承自 |
将元素的性能分析数据打印到输出流。
[in] | out_stream | 要将数据打印到的 std::ostream 类型的输出流。如果未指定,则采用默认值 std::cout。 |
int NvV4l2Element::setControl | ( | uint32_t | id, |
int32_t | value | ||
) |
设置控件的值。
在内部调用 VIDIOC_S_CTRL
IOCTL。
[in] | id | 要设置的控件的 ID。 |
[in] | value | 要在控件上设置的值。 |
int NvV4l2Element::setExtControls | ( | struct v4l2_ext_controls & | ctl | ) |
设置多个控件的值。
在内部调用 VIDIOC_S_EXT_CTRLS
IOCTL。
[in] | ctl | 指向要设置的控件的指针。 |
int NvV4l2Element::subscribeEvent | ( | uint32_t | type, |
uint32_t | id, | ||
uint32_t | flags | ||
) |
订阅 V4L2 事件。
在内部调用 VIDIOC_SUBSCRIBE_EVENT
IOCTL。
[in] | type | 事件的类型。 |
[in] | id | 事件源的 ID。 |
[in] | flags | 事件标志。 |
|
virtual |
等待直到元素处理完所有输出平面缓冲区。
扩展 V4l2Element
的对象必须实现此方法,因为空闲条件是组件特定的。
[in] | max_wait_ms | 以毫秒为单位的最长等待时间。 |
在 NvVideoConverter 中重新实现。
void* NvV4l2Element::app_data |
指向应用程序特定数据的指针。
定义位于文件 169 行 NvV4l2Element.h。
NvV4l2ElementPlane NvV4l2Element::capture_plane |
|
protected |
捕获平面缓冲区的像素格式。
定义位于文件 182 行 NvV4l2Element.h。
|
protectedinherited |
指定组件的名称,用于调试。
定义位于文件 122 行 NvElement.h。
|
protected |
指定使用 v4l2_open
打开的设备的 FD。
定义位于文件 179 行 NvV4l2Element.h。
|
protectedinherited |
NvV4l2ElementPlane NvV4l2Element::output_plane |
|
protected |
输出平面缓冲区的像素格式。
定义位于文件 181 行 NvV4l2Element.h。
|
protectedinherited |
元素的性能分析器。
定义位于文件 124 行 NvElement.h。