This toolkit includes NVIDIA Multimedia API sample applications that you can use as building blocks to construct applications for your product use case, such as:
The sample applications demonstrate how to use the Multimedia API and other libraries, such as:
The following table describes the samples.
Directory Location Relative to ll_samples/samples | Description |
---|---|
00_video_decode (video decode) | Decodes H.264, H.265, VP8, VP9, MPEG4, and MPEG2 video from a local file and then shares the YUV buffer with egl renderer. |
01_video_encode (video encode) | Encodes YUV bitstream from local file and then write elementary H.264/H.265 into file. |
02_video_dec_cuda (CUDA processing with decode) | Decodes H.264/H.265 video from a local file and then shares the YUV buffer with CUDA to draw a black box in the left corner. |
03_video_cuda_enc (CUDA processing with encode) | Use CUDA to draw a black box in the YUV buffer and then feeds it to video encoder to generate an H.264/H.265 video file. |
04_video_dec_trt (TensorRT video decode) | Uses simple TensorRT calls to save the bounding box info to a file. |
05_jpeg_encode (JPEG encode) | Uses libjpeg-8b APIs to encode JPEG images from software-allocated buffers. |
06_jpeg_decode (JPEG decode) | Uses libjpeg-8b APIs to decode a JPEG image from software-allocated buffers. |
07_video_convert (NvBuffer conversion) | Uses V4L2 APIs to do video format conversion and video scaling. |
08_video_dec_drm (Direct Rendering Manager) | Uses the NVIDIA® Tegra® Direct Rendering Manager (DRM) to render video stream or UI. |
09_camera_jpeg_capture (libargus & libjpeg-8b) | Simultaneously uses Libargus API to preview camera stream and libjpeg-8b APIs to encode JPEG images. |
10_camera_recording (libargus capture) | Gets the real-time camera stream from the Libargus API and feeds it into the video encoder to generate H.264/H.265 video files. |
12_camera_v4l2_cuda (camera capture CUDA processing) | Captures images from a V4L2 camera and shares the stream with CUDA engines to draw a black box in the upper left corner. |
13_multi_camera (multi image capture & composite) | Captures multiple cameras and composites them to one frame. |
14_multivideo_decode (multi video decode) | Decodes multiple H.264, H.265, VP8, VP9, MPEG4, and MPEG2 videos from local files and writes YUV buffer into corresponding files. |
15_multivideo_encode (multi video encode) | Encodes multiple YUV bitstreams from local files and writes elementary H.264/H.265/VP8/VP9 into corresponding files. |
16_multivideo_encode (multi video transcode) | Transcodes multiple bitstreams from local files and writes elementary H.264/H.265/VP8/VP9 into corresponding files. |
unittest_samples/camera_unit_sample (capture with libv4l2_nvargus) | Unit level sample; uses libv4l2_nvargus to preview camera stream. |
unittest_samples/decoder_unit_sample (video decode unit sample) | Unit level sample; decodes H.264 video from a local file and dumps the raw YUV buffer. |
unittest_samples/encoder_unit_sample (video encode unit samples) | Unit level sample; encodes YUV bitstream from a local file and writes elementary H.264 bitstream into file. |
unittest_samples/transform_unit_sample (nvbuf_utils pixel format conversion) | Unit level sample; uses nvbuf_utils utility to convert one colorspace YUV bitstream to another. |
backend (video analytics) | Performs intelligent video analytics on four concurrent video streams going through a decoding process using the on chip decoders, video scaling using on chip scalar, and GPU compute. |
frontend (TensorRT multichannel video capture) | Performs independent processing on four different resolutions of video capture coming directly from camera. |
v4l2cuda (CUDA format conversion) | Uses V4L2 image capturing with CUDA format conversion. |
The following diagram illustrates the L4T software stack. Of the Multimedia box (center, bottom), the Multimedia API provides the following components:
With these components, you can access the other libraries, such as TensorRT and cuDNN.