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_eventstructure 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. | 
Reimplemented in NvVideoConverter.
| 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.