Defines a helper class for V4L2 Video Decoder.
The video decoder device node is /dev/nvhost-nvdec
. The category name for the decoder is "NVDEC"
.
Refer to V4L2 Video Decoder for more information on the decoder.
Definition at line 58 of file NvVideoDecoder.h.
Public Member Functions | |
~NvVideoDecoder () | |
int | setCapturePlaneFormat (uint32_t pixfmt, uint32_t width, uint32_t height) |
Sets the format on the decoder output plane. More... | |
int | setOutputPlaneFormat (uint32_t pixfmt, uint32_t sizeimage) |
Sets the format on the decoder output plane. More... | |
int | disableCompleteFrameInputBuffer () |
Informs the decoder that input buffers may not contain complete frames. More... | |
int | setFrameInputMode (unsigned int ctrl_value) |
Informs the decoder that input buffers may not contain complete frames. More... | |
int | disableDPB () |
Disables the display picture buffer. More... | |
int | getMinimumCapturePlaneBuffers (int &num) |
Gets the minimum number of buffers to be requested on the decoder capture plane. More... | |
int | setSkipFrames (enum v4l2_skip_frames_type skip_frames) |
Sets the skip-frames parameter of the decoder. More... | |
int | setMaxPerfMode (int flag) |
Sets the decoder for maximum performance. More... | |
int | enableMetadataReporting () |
Enables video decoder output metadata reporting. More... | |
int | checkifMasteringDisplayDataPresent (v4l2_ctrl_video_displaydata &displaydata) |
int | MasteringDisplayData (v4l2_ctrl_video_hdrmasteringdisplaydata *hdrmasteringdisplaydata) |
int | getMetadata (uint32_t buffer_index, v4l2_ctrl_videodec_outputbuf_metadata &metadata) |
Gets metadata for the decoded capture plane buffer. More... | |
int | getInputMetadata (uint32_t buffer_index, v4l2_ctrl_videodec_inputbuf_metadata &input_metadata) |
Gets metadata for the decoder output plane buffer. More... | |
int | getSAR (uint32_t &sar_width, uint32_t &sar_height) |
Gets Sample Aspect Ratio (SAR) width and height for decoder. More... | |
int | DevicePoll (v4l2_ctrl_video_device_poll *devicepoll) |
Issues Poll on the device which blocks until : a) Either there is something to dequeue from capture or output plane or any events. More... | |
int | SetPollInterrupt () |
Sets the polling interrupt, now if the application calls Poll, the device should not block, in other words polling is disabled. More... | |
int | ClearPollInterrupt () |
Clears the polling interrupt, now if the application calls Poll, the device should block until the event is triggered, in other words polling is enabled. 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... | |
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... | |
Static Public Member Functions | |
static NvVideoDecoder * | createVideoDecoder (const char *name, int flags=0) |
Creates a new V4L2 Video Decoder 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... | |
NvVideoDecoder::~NvVideoDecoder | ( | ) |
|
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.
int NvVideoDecoder::checkifMasteringDisplayDataPresent | ( | v4l2_ctrl_video_displaydata & | displaydata | ) |
int NvVideoDecoder::ClearPollInterrupt | ( | ) |
Clears the polling interrupt, now if the application calls Poll, the device should block until the event is triggered, in other words polling is enabled.
|
static |
Creates a new V4L2 Video Decoder object named name.
This method internally calls v4l2_open
on the decoder dev node "/dev/nvhost-nvdec"
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.
int NvVideoDecoder::DevicePoll | ( | v4l2_ctrl_video_device_poll * | devicepoll | ) |
Issues Poll on the device which blocks until : a) Either there is something to dequeue from capture or output plane or any events.
b) Poll was interrupted by a call to the device using V4L2_CID_SET_POLL_INTERRUPT c) Application has already interrupted polling by V4L2_CID_SET_POLL_INTERRUPT
int NvVideoDecoder::disableCompleteFrameInputBuffer | ( | ) |
Informs the decoder that input buffers may not contain complete frames.
Deprecated interface, Use setFrameInputMode instead.
Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_MPEG_VIDEO_DISABLE_COMPLETE_FRAME_INPUT.
int NvVideoDecoder::disableDPB | ( | ) |
Disables the display picture buffer.
Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_MPEG_VIDEO_DISABLE_DPB. Must be called after setFormat on both the planes and before requestBuffers on any of the planes.
|
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.
[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. |
int NvVideoDecoder::enableMetadataReporting | ( | ) |
Enables video decoder output metadata reporting.
Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_MPEG_VIDEO_ERROR_REPORTING. Must be called after setFormat on both the planes and before requestBuffers on any of the planes.
|
virtualinherited |
Enables profiling for the V4l2Element.
Must be called before setting either plane formats.
Reimplemented from NvElement.
|
inherited |
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. |
|
inherited |
Gets the value of several controls.
Calls VIDIOC_G_EXT_CTRLS
IOCTL internally.
[in,out] | ctl | A pointer to the controls to get. |
int NvVideoDecoder::getInputMetadata | ( | uint32_t | buffer_index, |
v4l2_ctrl_videodec_inputbuf_metadata & | input_metadata | ||
) |
Gets metadata for the decoder output plane buffer.
Calls the VIDIOC_G_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_MPEG_VIDEODEC_INPUT_METADATA. Must be called for a buffer that has been dequeued from the output plane. The returned metadata corresponds to the last dequeued buffer with index buffer_index.
[in] | buffer_index | Index of the output plane buffer whose metadata is required. |
[in,out] | input_metadata | Reference to the metadata structure v4l2_ctrl_videodec_inputbuf_metadata to be filled. |
int NvVideoDecoder::getMetadata | ( | uint32_t | buffer_index, |
v4l2_ctrl_videodec_outputbuf_metadata & | metadata | ||
) |
Gets metadata for the decoded capture plane buffer.
Calls the VIDIOC_G_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_MPEG_VIDEODEC_METADATA. Must be called for a buffer that has been dequeued from the capture plane. The returned metadata corresponds to the last dequeued buffer with index buffer_index.
[in] | buffer_index | Index of the capture plane buffer whose metadata is required. |
[in,out] | metadata | Reference to the metadata structure v4l2_ctrl_videodec_outputbuf_metadata to be filled. |
int NvVideoDecoder::getMinimumCapturePlaneBuffers | ( | int & | num | ) |
Gets the minimum number of buffers to be requested on the decoder capture plane.
Calls the VIDIOC_G_CTRL IOCTL internally with Control ID V4L2_CID_MIN_BUFFERS_FOR_CAPTURE. It is valid after the first V4L2_RESOLUTION_CHANGE_EVENT and may change after each subsequent event.
[out] | num | A reference to the integer to return the number of buffers. |
|
inherited |
Gets profiling data for the element.
int NvVideoDecoder::getSAR | ( | uint32_t & | sar_width, |
uint32_t & | sar_height | ||
) |
Gets Sample Aspect Ratio (SAR) width and height for decoder.
Calls the VIDIOC_G_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_MPEG_VIDEODEC_SAR_WIDTH and V4L2_CID_MPEG_VIDEODEC_SAR_HEIGHT. Must be called after V4L2_EVENT_RESOLUTION_CHANGE is dequeued.
[in,out] | sar_width | Reference to the SAR width to be filled. |
[in,out] | sar_height | Reference to the SAR height to be filled. |
|
virtualinherited |
Reimplemented from NvElement.
|
inherited |
Checks whether profiling is enabled for the element.
int NvVideoDecoder::MasteringDisplayData | ( | v4l2_ctrl_video_hdrmasteringdisplaydata * | hdrmasteringdisplaydata | ) |
|
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 NvVideoDecoder::setCapturePlaneFormat | ( | uint32_t | pixfmt, |
uint32_t | width, | ||
uint32_t | height | ||
) |
Sets the format on the decoder output plane.
Calls VIDIOC_S_FMT
IOCTL internally on the capture plane.
[in] | pixfmt | One of the raw V4L2 pixel formats. |
[in] | width | Width of the output buffers in pixels. |
[in] | height | Height of the output buffers in pixels. |
|
inherited |
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. |
|
inherited |
Sets the value of several controls.
Calls VIDIOC_S_EXT_CTRLS
IOCTL internally.
[in] | ctl | A pointer to the controls to set. |
int NvVideoDecoder::setFrameInputMode | ( | unsigned int | ctrl_value | ) |
Informs the decoder that input buffers may not contain complete frames.
Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_MPEG_VIDEO_DISABLE_COMPLETE_FRAME_INPUT.
[in] | ctrl_value | control value to disable complete frame input buffer. |
int NvVideoDecoder::setMaxPerfMode | ( | int | flag | ) |
Sets the decoder for maximum performance.
Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_MPEG_VIDEO_MAX_PERFORMANCE. Must be called after setFormat on both the planes and before requestBuffers on any of the planes.
[in] | flag | Integer variable to indicate whether max performance is to be enabled/disabled. |
int NvVideoDecoder::setOutputPlaneFormat | ( | uint32_t | pixfmt, |
uint32_t | sizeimage | ||
) |
Sets the format on the decoder output plane.
Calls the VIDIOC_S_FMT
IOCTL internally on the output plane.
[in] | pixfmt | One of the coded V4L2 pixel formats. |
[in] | sizeimage | Maximum size of the buffers on the output plane. containing encoded data in bytes. |
int NvVideoDecoder::SetPollInterrupt | ( | ) |
Sets the polling interrupt, now if the application calls Poll, the device should not block, in other words polling is disabled.
int NvVideoDecoder::setSkipFrames | ( | enum v4l2_skip_frames_type | skip_frames | ) |
Sets the skip-frames parameter of the decoder.
Calls the VIDIOC_S_EXT_CTRLS IOCTL internally with Control ID V4L2_CID_MPEG_VIDEO_SKIP_FRAMES. Must be called after setFormat on both the planes and before requestBuffers on any of the planes.
[in] | skip_frames | Type of frames to skip decoding, one of enum v4l2_skip_frames_type. |
|
inherited |
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. |
|
virtualinherited |
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.
|
inherited |
A pointer to the application-specific data.
Definition at line 169 of file NvV4l2Element.h.
|
inherited |
Sets the capture plane.
Capture plane of the element
Definition at line 145 of file NvV4l2Element.h.
|
protectedinherited |
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.
|
protectedinherited |
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().
|
inherited |
|
protectedinherited |
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.