Defines a helper class for V4L2 based components.
This derived class provides common functionality for V4L2 components. V4L2-based components such as encoder/decoder extend from this class.
This class is modeled on V4L2 M2M devices. It includes the file descriptor (FD) of the device opened using v4l2_open, two planes (NvV4l2ElementPlane), output plane, capture plane, and other helper methods, such as setting/getting controls, subscribing/dequeueing events, etc.
Definition at line 65 of file NvV4l2Element.h.


Public Member Functions | |
| virtual | ~NvV4l2Element () |
| int | subscribeEvent (uint32_t type, uint32_t id, uint32_t flags) |
| Subscribes to an V4L2 event. More... | |
| int | dqEvent (struct v4l2_event &event, uint32_t max_wait_ms) |
| Dequeues an event from the element. More... | |
| int | setControl (uint32_t id, int32_t value) |
| Sets the value of a control. More... | |
| int | getControl (uint32_t id, int32_t &value) |
| Gets the value of a control. More... | |
| int | setExtControls (struct v4l2_ext_controls &ctl) |
| Sets the value of several controls. More... | |
| int | getExtControls (struct v4l2_ext_controls &ctl) |
| Gets the value of several controls. More... | |
| virtual int | isInError () |
| int | abort () |
| Terminates processing of queued buffers immediately. More... | |
| virtual int | waitForIdle (uint32_t max_wait_ms) |
| Waits until the element processes all the output plane buffers. More... | |
| void | enableProfiling () |
| Enables profiling for the V4l2Element. More... | |
| void | getProfilingData (NvElementProfiler::NvElementProfilerData &data) |
| Gets profiling data for the element. More... | |
| void | printProfilingStats (std::ostream &out_stream=std::cout) |
| Prints profiling data for the element to an output stream. More... | |
| bool | isProfilingEnabled () |
| Checks whether profiling is enabled for the element. More... | |
Data Fields | |
| NvV4l2ElementPlane | output_plane |
| Sets the output plane. More... | |
| NvV4l2ElementPlane | capture_plane |
| Sets the capture plane. More... | |
| void * | app_data |
| A pointer to the application-specific data. More... | |
Protected Member Functions | |
| NvV4l2Element (const char *comp_name, const char *dev_node, int flags, NvElementProfiler::ProfilerField fields) | |
| Creates a new V4l2Element named name. More... | |
Protected Attributes | |
| int | fd |
Specifies the FD of the device opened using v4l2_open. More... | |
| uint32_t | output_plane_pixfmt |
| Pixel format of output plane buffers. More... | |
| uint32_t | capture_plane_pixfmt |
| Pixel format of capture plane buffers. More... | |
| int | is_in_error |
| Indicates if an error was encountered during the operation of the element. More... | |
| const char * | comp_name |
| Specifies the name of the component, for debugging. More... | |
| NvElementProfiler | profiler |
| Profiler for the element. More... | |
|
virtual |
|
protected |
Creates a new V4l2Element named name.
This constructor calls v4l2_open on the dev_node. It sets an error if v4l2_open fails.
This function also checks if the device supports V4L2_CAP_VIDEO_M2M_MPLANE capability.
| [in] | comp_name | A pointer to the unique name to identity the element instance. |
| [in] | dev_node | A pointer to /dev/ * node of the device. |
| [in] | flags | Flags with which to open the device. |
| [in] | fields | Profiler fields that are valid for the element. |
| int NvV4l2Element::abort | ( | ) |
Terminates processing of queued buffers immediately.
All the buffers are returned to the application.
Calls VIDIOC_STREAMOFF IOCTL on both of the planes internally.
| int NvV4l2Element::dqEvent | ( | struct v4l2_event & | event, |
| uint32_t | max_wait_ms | ||
| ) |
Dequeues an event from the element.
Calls VIDIOC_DQEVENT IOCTL internally. The caller can specify the maximum time to wait for dequeuing the event. The call blocks until an event is dequeued successfully or timeout is reached.
| [in,out] | event | A reference to the v4l2_event structure to fill. |
| [in] | max_wait_ms | Specifies the max wait time for dequeuing an event, in milliseconds. |
|
virtual |
Enables profiling for the V4l2Element.
Must be called before setting either plane formats.
Reimplemented from NvElement.
| int NvV4l2Element::getControl | ( | uint32_t | id, |
| int32_t & | value | ||
| ) |
Gets the value of a control.
Calls VIDIOC_G_CTRL IOCTL internally.
| [in] | id | ID of the control to get. |
| [out] | value | A reference to the variable into which the control value is read. |
| int NvV4l2Element::getExtControls | ( | struct v4l2_ext_controls & | ctl | ) |
Gets the value of several controls.
Calls VIDIOC_G_EXT_CTRLS IOCTL internally.
| [in,out] | ctl | A pointer to the controls to get. |
|
inherited |
Gets profiling data for the element.
|
virtual |
Reimplemented from NvElement.
|
inherited |
Checks whether profiling is enabled for the element.
|
inherited |
Prints profiling data for the element to an output stream.
| [in] | out_stream | Output stream of type std::ostream to print the data to. It takes the default value std::cout if not specified. |
| int NvV4l2Element::setControl | ( | uint32_t | id, |
| int32_t | value | ||
| ) |
Sets the value of a control.
Calls VIDIOC_S_CTRL IOCTL internally.
| [in] | id | ID of the control to be set. |
| [in] | value | Value to be set on the control. |
| int NvV4l2Element::setExtControls | ( | struct v4l2_ext_controls & | ctl | ) |
Sets the value of several controls.
Calls VIDIOC_S_EXT_CTRLS IOCTL internally.
| [in] | ctl | A pointer to the controls to set. |
| int NvV4l2Element::subscribeEvent | ( | uint32_t | type, |
| uint32_t | id, | ||
| uint32_t | flags | ||
| ) |
Subscribes to an V4L2 event.
Calls VIDIOC_SUBSCRIBE_EVENT IOCTL internally.
| [in] | type | Type of the event. |
| [in] | id | ID of the event source. |
| [in] | flags | Event flags. |
|
virtual |
Waits until the element processes all the output plane buffers.
Objects extending V4l2Element must implement this because the idle condition is component-specific.
| [in] | max_wait_ms | Max time to wait in milliseconds. |
| void* NvV4l2Element::app_data |
A pointer to the application-specific data.
Definition at line 169 of file NvV4l2Element.h.
| NvV4l2ElementPlane NvV4l2Element::capture_plane |
Sets the capture plane.
Capture plane of the element
Definition at line 145 of file NvV4l2Element.h.
|
protected |
Pixel format of capture plane buffers.
Definition at line 182 of file NvV4l2Element.h.
|
protectedinherited |
Specifies the name of the component, for debugging.
Definition at line 122 of file NvElement.h.
|
protected |
Specifies the FD of the device opened using v4l2_open.
Definition at line 179 of file NvV4l2Element.h.
|
protectedinherited |
Indicates if an error was encountered during the operation of the element.
Definition at line 120 of file NvElement.h.
Referenced by NvElement::isInError().
| NvV4l2ElementPlane NvV4l2Element::output_plane |
|
protected |
Pixel format of output plane buffers.
Definition at line 181 of file NvV4l2Element.h.
|
protectedinherited |
Profiler for the element.
Definition at line 124 of file NvElement.h.