Jetson Linux API Reference

32.7.5 Release
NvVideoConverter Class Reference

Detailed Description

Defines a helper class for V4L2 Video Converter.

Use video converter for color space conversion, scaling, and conversion between hardware buffer memory (V4L2_MEMORY_MMAP/ V4L2_MEMORY_DMABUF) and software buffer memory (V4L2_MEMORY_USERPTR).

The video converter device node is "/dev/nvhost-vic". The category name for the converter is "NVVIDCONV".

Refer to V4L2 Video Converter for more information on the converter.

Definition at line 64 of file NvVideoConverter.h.

Inheritance diagram for NvVideoConverter:
Collaboration diagram for NvVideoConverter:

Public Member Functions

 ~NvVideoConverter ()
 
int setCapturePlaneFormat (uint32_t pixfmt, uint32_t width, uint32_t height, enum v4l2_nv_buffer_layout type)
 Sets the format on the converter output plane. More...
 
int setOutputPlaneFormat (uint32_t pixfmt, uint32_t width, uint32_t height, enum v4l2_nv_buffer_layout type)
 Sets the format on the converter output plane. More...
 
int setOutputPlaneBufferLayout (enum v4l2_nv_buffer_layout type)
 Sets the buffer layout of the output plane buffers. More...
 
int setCapturePlaneBufferLayout (enum v4l2_nv_buffer_layout type)
 Sets the buffer layout of the capture plane buffers. More...
 
int setInterpolationMethod (enum v4l2_interpolation_method method)
 Sets the interpolation(filter) method used for scaling. More...
 
int setFlipMethod (enum v4l2_flip_method method)
 Sets the flip method. More...
 
int setTnrAlgorithm (enum v4l2_tnr_algorithm algorithm)
 Sets the TNR(Temporal Noise Reduction) algorithm to use. More...
 
int setYUVRescale (enum v4l2_yuv_rescale_method method)
 Sets the YUV Rescale method to use. More...
 
int setCropRect (uint32_t left, uint32_t top, uint32_t width, uint32_t height)
 Set the cropping rectangle for the converter. More...
 
int setDestRect (uint32_t left, uint32_t top, uint32_t width, uint32_t height)
 Sets the destnation rectangle for the converter. More...
 
int waitForIdle (uint32_t max_wait_ms)
 Waits until all buffers queued on the output plane are converted and dequeued from the capture plane. More...
 
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...
 
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...
 

Static Public Member Functions

static NvVideoConvertercreateVideoConverter (const char *name, int flags=0)
 Creates a new V4L2 Video Converter object named name. 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 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...
 

Constructor & Destructor Documentation

◆ ~NvVideoConverter()

NvVideoConverter::~NvVideoConverter ( )

Member Function Documentation

◆ abort()

int NvV4l2Element::abort ( )
inherited

Terminates processing of queued buffers immediately.

All the buffers are returned to the application.

Calls VIDIOC_STREAMOFF IOCTL on both of the planes internally.

Returns
0 for success, -1 otherwise.

◆ createVideoConverter()

static NvVideoConverter* NvVideoConverter::createVideoConverter ( const char *  name,
int  flags = 0 
)
static

Creates a new V4L2 Video Converter object named name.

This method internally calls v4l2_open on the converter dev node "/dev/nvhost-vic" and checks for V4L2_CAP_VIDEO_M2M_MPLANE capability on the device. This method allows the caller to specify additional flags with which the device should be opened.

The device is opened in blocking mode, which can be modified by passing the O_NONBLOCK flag to this method.

Returns
Reference to the newly created converter object, else NULL in case of failure during initialization.

◆ dqEvent()

int NvV4l2Element::dqEvent ( struct v4l2_event &  event,
uint32_t  max_wait_ms 
)
inherited

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.

Parameters
[in,out]eventA reference to the v4l2_event structure to fill.
[in]max_wait_msSpecifies the max wait time for dequeuing an event, in milliseconds.
Returns
0 for success, -1 otherwise.

◆ enableProfiling()

void NvV4l2Element::enableProfiling ( )
virtualinherited

Enables profiling for the V4l2Element.

Must be called before setting either plane formats.

Reimplemented from NvElement.

◆ getControl()

int NvV4l2Element::getControl ( uint32_t  id,
int32_t &  value 
)
inherited

Gets the value of a control.

Calls VIDIOC_G_CTRL IOCTL internally.

Parameters
[in]idID of the control to get.
[out]valueA reference to the variable into which the control value is read.
Returns
0 for success, -1 otherwise.

◆ getExtControls()

int NvV4l2Element::getExtControls ( struct v4l2_ext_controls &  ctl)
inherited

Gets the value of several controls.

Calls VIDIOC_G_EXT_CTRLS IOCTL internally.

Parameters
[in,out]ctlA pointer to the controls to get.
Returns
0 for success, -1 otherwise.

◆ getProfilingData()

void NvElement::getProfilingData ( NvElementProfiler::NvElementProfilerData data)
inherited

Gets profiling data for the element.

Returns
A constant reference to the element's profiling data.

◆ isInError()

virtual int NvV4l2Element::isInError ( )
virtualinherited

Reimplemented from NvElement.

◆ isProfilingEnabled()

bool NvElement::isProfilingEnabled ( )
inherited

Checks whether profiling is enabled for the element.

Returns
Boolean value indicating if profiling is enabled.

◆ printProfilingStats()

void NvElement::printProfilingStats ( std::ostream &  out_stream = std::cout)
inherited

Prints profiling data for the element to an output stream.

Parameters
[in]out_streamOutput stream of type std::ostream to print the data to. It takes the default value std::cout if not specified.

◆ setCapturePlaneBufferLayout()

int NvVideoConverter::setCapturePlaneBufferLayout ( enum v4l2_nv_buffer_layout  type)

Sets the buffer layout of the capture plane buffers.

Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_VIDEO_CONVERT_CAPTURE_PLANE_LAYOUT. Must be called before setFormat() on any of the planes.

Parameters
[in]typeType of layout, one of enum v4l2_nv_buffer_layout.
Returns
0 for success, -1 otherwise.

◆ setCapturePlaneFormat()

int NvVideoConverter::setCapturePlaneFormat ( uint32_t  pixfmt,
uint32_t  width,
uint32_t  height,
enum v4l2_nv_buffer_layout  type 
)

Sets the format on the converter output plane.

Calls VIDIOC_S_FMT IOCTL internally on the capture plane.

Parameters
[in]pixfmtOne of the raw V4L2 pixel formats.
[in]widthWidth of the output buffers in pixels.
[in]heightHeight of the output buffers in pixels.
[in]typeLayout of the buffers in plane, one of enum v4l2_nv_buffer_layout.
Returns
0 for success, -1 otherwise.

◆ setControl()

int NvV4l2Element::setControl ( uint32_t  id,
int32_t  value 
)
inherited

Sets the value of a control.

Calls VIDIOC_S_CTRL IOCTL internally.

Parameters
[in]idID of the control to be set.
[in]valueValue to be set on the control.
Returns
0 for success, -1 otherwise.

◆ setCropRect()

int NvVideoConverter::setCropRect ( uint32_t  left,
uint32_t  top,
uint32_t  width,
uint32_t  height 
)

Set the cropping rectangle for the converter.

Calls the VIDIOC_S_SELECTION internally on the capture plane. Must be called before setFormat() on any of the planes.

Parameters
[in]leftHorizontal offset of the rectangle, in pixels.
[in]topVerticaal offset of the rectangle, in pixels.
[in]widthWidth of the rectangle, in pixels.
[in]heightHeight of the rectangle, in pixels.
Returns
0 for success, -1 for failure

◆ setDestRect()

int NvVideoConverter::setDestRect ( uint32_t  left,
uint32_t  top,
uint32_t  width,
uint32_t  height 
)

Sets the destnation rectangle for the converter.

Calls the VIDIOC_S_SELECTION internally on output plane. Must be called before setFormat() on any of the planes.

Parameters
[in]leftHorizontal offset of the rectangle, in pixels
[in]topVerticaal offset of the rectangle, in pixels
[in]widthWidth of the rectangle, in pixels
[in]heightHeight of the rectangle, in pixels
Returns
0 for success, -1 for failure

◆ setExtControls()

int NvV4l2Element::setExtControls ( struct v4l2_ext_controls &  ctl)
inherited

Sets the value of several controls.

Calls VIDIOC_S_EXT_CTRLS IOCTL internally.

Parameters
[in]ctlA pointer to the controls to set.
Returns
0 for success, -1 otherwise.

◆ setFlipMethod()

int NvVideoConverter::setFlipMethod ( enum v4l2_flip_method  method)

Sets the flip method.

Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_VIDEO_CONVERT_FLIP_METHOD. Must be called before setFormat() on any of the planes.

Parameters
[in]methodType of flip method, one of enum v4l2_flip_method.
Returns
0 for success, -1 otherwise.

◆ setInterpolationMethod()

int NvVideoConverter::setInterpolationMethod ( enum v4l2_interpolation_method  method)

Sets the interpolation(filter) method used for scaling.

Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_VIDEO_CONVERT_INTERPOLATION_METHOD. Must be called before setFormat() on any of the planes.

Parameters
[in]methodType of interpolation method, one of enum v4l2_interpolation_method.
Returns
0 for success, -1 otherwise.

◆ setOutputPlaneBufferLayout()

int NvVideoConverter::setOutputPlaneBufferLayout ( enum v4l2_nv_buffer_layout  type)

Sets the buffer layout of the output plane buffers.

Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with control ID V4L2_CID_VIDEO_CONVERT_OUTPUT_PLANE_LAYOUT. Must be called before setFormat() on any of the planes.

Parameters
[in]typeType of layout, one of enum v4l2_nv_buffer_layout.
Returns
0 for success, -1 otherwise.

◆ setOutputPlaneFormat()

int NvVideoConverter::setOutputPlaneFormat ( uint32_t  pixfmt,
uint32_t  width,
uint32_t  height,
enum v4l2_nv_buffer_layout  type 
)

Sets the format on the converter output plane.

Calls VIDIOC_S_FMT IOCTL internally on the output plane.

Parameters
[in]pixfmtOne of the raw V4L2 pixel formats.
[in]widthWidth of the output buffers in pixels.
[in]heightHeight of the output buffers in pixels.
[in]typeLayout of the buffers in plane, one of enum v4l2_nv_buffer_layout.
Returns
0 for success, -1 otherwise.

◆ setTnrAlgorithm()

int NvVideoConverter::setTnrAlgorithm ( enum v4l2_tnr_algorithm  algorithm)

Sets the TNR(Temporal Noise Reduction) algorithm to use.

Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_VIDEO_CONVERT_TNR_ALGORITHM. Must be called before setForma() on any of the planes.

Parameters
[in]algorithmType of TNR algorithm to use, one of enum v4l2_tnr_algorithm.
Returns
0 for success, -1 otherwise.

◆ setYUVRescale()

int NvVideoConverter::setYUVRescale ( enum v4l2_yuv_rescale_method  method)

Sets the YUV Rescale method to use.

Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_VIDEO_CONVERT_YUV_RESCALE_METHOD. Must be called before setFormat() on any of the planes.

Parameters
[in]methodType of YUV Rescale method to use, one of enum v4l2_yuv_rescale_method.
Returns
0 for success, -1 otherwise.

◆ subscribeEvent()

int NvV4l2Element::subscribeEvent ( uint32_t  type,
uint32_t  id,
uint32_t  flags 
)
inherited

Subscribes to an V4L2 event.

Calls VIDIOC_SUBSCRIBE_EVENT IOCTL internally.

Parameters
[in]typeType of the event.
[in]idID of the event source.
[in]flagsEvent flags.
Returns
0 for success, -1 otherwise.

◆ waitForIdle()

int NvVideoConverter::waitForIdle ( uint32_t  max_wait_ms)
virtual

Waits until all buffers queued on the output plane are converted and dequeued from the capture plane.

This is a blocking call.

Parameters
[in]max_wait_msMaximum time to wait in milliseconds
Returns
0 for success, -1 for timeout.

Reimplemented from NvV4l2Element.

Field Documentation

◆ app_data

void* NvV4l2Element::app_data
inherited

A pointer to the application-specific data.

Definition at line 169 of file NvV4l2Element.h.

◆ capture_plane

NvV4l2ElementPlane NvV4l2Element::capture_plane
inherited

Sets the capture plane.

Capture plane of the element

Definition at line 145 of file NvV4l2Element.h.

◆ capture_plane_pixfmt

uint32_t NvV4l2Element::capture_plane_pixfmt
protectedinherited

Pixel format of capture plane buffers.

Definition at line 182 of file NvV4l2Element.h.

◆ comp_name

const char* NvElement::comp_name
protectedinherited

Specifies the name of the component, for debugging.

Definition at line 122 of file NvElement.h.

◆ fd

int NvV4l2Element::fd
protectedinherited

Specifies the FD of the device opened using v4l2_open.

Definition at line 179 of file NvV4l2Element.h.

◆ is_in_error

int NvElement::is_in_error
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().

◆ output_plane

NvV4l2ElementPlane NvV4l2Element::output_plane
inherited

Sets the output plane.

Output plane of the element

Definition at line 141 of file NvV4l2Element.h.

◆ output_plane_pixfmt

uint32_t NvV4l2Element::output_plane_pixfmt
protectedinherited

Pixel format of output plane buffers.

Definition at line 181 of file NvV4l2Element.h.

◆ profiler

NvElementProfiler NvElement::profiler
protectedinherited

Profiler for the element.

Definition at line 124 of file NvElement.h.


The documentation for this class was generated from the following file: