Jetson Linux Multimedia API Reference

32.4.2 Release

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
encode_sample

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 $HOME/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.

  1. The encoder instance is created.
  2. V4L2_EVENT_EOS is subscribed.
  3. Output Plane and Capture Plane are set up.
  4. External controls are set.
  5. The Output Plane receives input in YUV frame format and delivers it to the Encoder for encoding.
  6. The Capture Plane transfers encoded frames to the application in bitstream format.
  7. The encoded bitstream is written to a file.
  8. 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.