The encode_sample application is a unit level implementation that demonstrates how to encode H.264 video streams.
The application reads YUV input buffers from a file, performs H.264 video encoding, and saves the encoded bitstream to an elementary .264
file.
The application runs on file source simulated input buffers, and so does not require a camera.
Supported video formats are:
$ cd /usr/src/jetson_multimedia_api/samples/unittest_samples/encoder_unit_sample $ make
$ ./encode_sample <in-file> <in-width> <in-height> <out-file>
$ ./encode_sample ../../data/Video/sample_outdoor_car_1080p_10fps.yuv 1920 1080 sample_outdoor_car_1080p_10fps.h264
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 |
---|---|
encoder_process_blocking | Function loop to DQ and EnQ buffers on output plane till eos is signalled. |
dq_buffer | Function to dequeue a buffer from the plane. |
capture_plane_callback | Callback function when enc_cap_thread is created. |
q_buffer | Function to queue a buffer on the plane. |
req_buffers_on_capture_plane | Function to request for buffers on the encoder capture plane. |
req_buffers_on_output_plane | Function to request for buffers on the encoder output plane. |
set_capture_plane_format | Function to set the format on the encoder capture plane. |
set_output_plane_format | Function to set the format on the encoder output plane. |
set_ext_controls | Function to set the value of controls. |
subscribe_event | Function to subscrive to a V4L2 event. |