Accelerated Decode with ffmpeg¶
The NVIDIA ffmpeg
package supports hardware-accelerated decode on NVIDIA® Jetson™ device.
An application can use accelerated decode to read video files in the following elementary formats and container formats and dump them in YUV 420 format:
H.264
H.265
VP8
VP9
MPEG2
MPEG4
Note
The ffmpeg
package does not support MPEG4 container files.
To install the ffmpeg binary package¶
Enter this command:
$ sudo apt install ffmpeg
To get source files for the ffmpeg package¶
Enter this command:
$ apt source ffmpeg
To include the ffmpeg library in Jetson Linux builds¶
Add the following lines to /etc/apt/sources.list:
$ echo "deb https://repo.download.nvidia.com/jetson/ffmpeg main main" | sudo tee -a /etc/apt/sources.list $ echo "deb-src https://repo.download.nvidia.com/jetson/ffmpeg main main" | sudo tee -a /etc/apt/sources.list
Enter this command:
$ sudo apt update
Decode Functional Flow¶
This section describes the function flow of the ffmpeg
decoding process:
Call
nvv4l2dec_init_decoder()
to create a new V4L2 Video Decoder object on the device node/dev/nvhost-nvdec
.Call
subscribe_event()
to subscribe to resolution change events.Call
set_output_plane_format()
to set the format on the output plane.Call
capture_thread()
to start a capture thread.Call
set_capture_plane_format()
to set the format on the capture plane.Call
nvv4l2dec_decode()
to read buffers from ffmpeg and start the decode process.Call
nvv4l2dec_decoder_get_frame()
to get the hardware-accelerated decoded data and pass it toffmpeg
for dumping.Call
nvv4l2dec_decoder_close()
to destroy the buffers and close the device.
The following table describes the key structure.
Element |
Description |
---|---|
nvPacket |
Contains information about input packets. |
nvFrame |
Contains information about decoded frames. |
nvCodingType |
Specifies a different codec type. |
BufferPlane |
Holds the buffer plane parameters. |
Buffer |
Holds the buffer information. |
context_t |
Defines the decoder context. |
This table describes the key function:
Element |
Description |
---|---|
nvv4l2dec_create_decoder |
Creates a new V4L2 Video Decoder object on the
device node |
subscribe_event |
Subscribes to resolution change events. |
set_output_plane_format |
Sets the format on the output plane. |
req_buffers_on_output_plane |
Requests buffers on the output plane to be filled from the input bit stream. |
dq_buffer |
Dequeues the V4L2 buffer. |
q_buffer |
Queues the V4L2 buffer. |
capture_thread |
Starts the capture thread. |
dq_event |
Dequeues an event reported by the V4L2 device. |
req_buffers_on_capture_plane |
Requests buffers on the capture plane. |
set_capture_plane_format |
Sets the capture plane format. |