Jetson Linux Multimedia API Reference

32.4.2 Release

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

Overview

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:

  • H.264


Building and Running

Prerequisites

To build

  • Enter:
     $ cd $HOME/multimedia_api/samples/unittest_samples/decoder_unit_sample
     $ make
    

To run

  • Enter:
     $ ./decode_sample <in-file> <out-file>
    

Example

  $ ./decode_sample ../../data/Video/sample_outdoor_car_1080p_10fps.h264 out_sample_outdoor_car_1080p_10fps.yuv


Flow

The following steps show the flow through this sample.

  1. The decoder instance is created.
  2. V4L2_EVENT_RESOLUTION_CHANGE is subscribed.
  3. Output Plane and Capture Plane are set up.
  4. External controls are set.
  5. The Output Plane receives input in bitstream format and delivers it to the Decoder for decoding.
  6. The Capture Plane transfers decoded frames to the application in YUV format.
  7. For the Output Plane the application supports MMAP memory type. For the Capture Plane it supports DMABUF memory type.
  8. The application takes decoded buffers from Capture Plane and dumps into a file.


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
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.