The decode_sample application is a unit level implementation that demonstrates how to use the buffer allocated by the libv4l2
component to decode H.264 video streams.
The application reads an H.264 elementary video file, decodes it, and writes the raw YUV buffer into a file without any extra memory copy.
Supported video formats are:
$ cd /usr/src/jetson_multimedia_api/samples/unittest_samples/decoder_unit_sample $ make
$ ./decode_sample <in-file> <out-file>
$ ./decode_sample ../../data/Video/sample_outdoor_car_1080p_10fps.h264 out_sample_outdoor_car_1080p_10fps.yuv
The following steps show the flow through this sample.
The sample uses the following key class:
Element | Description |
---|---|
Buffer | Class modeled on v4l2_buffer structure. |
The key structures and functions used in the sample are:
Function | Description |
---|---|
decode_process | Function loop to DQ and EnQ buffers on output plane till eos is signalled. |
capture_thread | A pointer to the thread handler for the decoding capture loop. |
dq_event | Function to dequeue an event. |
dq_buffer | Function to dequeue a buffer from the plane. |
q_buffer | Function to queue a buffer on the plane. |
req_buffers_on_capture_plane | Function to request for buffers on the decoder capture plane. |
req_buffers_on_output_plane | Function to request for buffers on the decoder output plane. |
set_capture_plane_format | Function to set the format on the decoder capture plane. |
set_output_plane_format | Function to set the format on the decoder output plane. |
set_ext_controls | Function to set the value of controls. |
subscribe_event | Function to subscribes to a V4L2 event. |