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. |
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.