Jetson Linux API Reference

32.7.3 Release
encoder_unit_sample (video encode unit samples)

Overview

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:

  • H.264


Building and Running

Prerequisites

To build

  • Enter:
     $ cd /usr/src/jetson_multimedia_api/samples/unittest_samples/encoder_unit_sample
     $ make
    

To run

  • Enter:
    $ ./encode_sample <in-file> <in-width> <in-height> <out-file>
    

Example

   $ ./encode_sample ../../data/Video/sample_outdoor_car_1080p_10fps.yuv 1920 1080 sample_outdoor_car_1080p_10fps.h264


Flow

The following steps show the flow through this sample.

  • The encoder instance is created.
  • V4L2_EVENT_EOS is subscribed.
  • Output Plane and Capture Plane are set up.
  • External controls are set.
  • The Output Plane receives input in YUV frame format and delivers it to the Encoder for encoding.
  • The Capture Plane transfers encoded frames to the application in bitstream format.
  • The encoded bitstream is written to a file.
  • For the Output Plane the application supports MMAP memory type. For the Capture Plane it supports MMAP memory type.


Key Structure and Classes

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.