29 @page l4t_mm_test_group Multimedia API Sample Applications
31 This toolkit includes NVIDIA Multimedia API sample applications that
32 you can use as building blocks to construct applications
for
33 your product use
case, such as:
35 - IVA camera surveillance
39 The sample applications
40 demonstrate how to use the Multimedia API and other libraries, such as:
41 - NVIDIA<sup>®</sup> TensorRT<sup>™</sup>
42 - NVIDIA<sup>®</sup> CUDA<sup>®</sup>
48 The following table describes the samples.
50 | Directory Location Relative to ll_samples/samples | Description |
51 |---------------------------------------------------|-------------|
52 | @ref l4t_mm_00_video_decode_group | Decodes H.264, H.265, VP8, VP9, MPEG4, and MPEG2 video from a local file and then shares the YUV buffer with egl renderer. |
53 | @ref l4t_mm_01_video_encode_group | Encodes YUV bitstream from local file and then write elementary H.264/H.265 into file. |
54 | @ref l4t_mm_video_decode_cuda | 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. | <!-- l4t_mm_video_decode_cuda.md -->
55 | @ref l4t_mm_video_cuda_enc_group | 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. | <!-- l4t_mm_video_cuda_enc_guide.md -->
56 | @ref l4t_mm_vid_decode_trt | Uses simple TensorRT calls to save the bounding box info to a file. | <!-- l4t_mm_video_dec_tensorrt.md -->
57 | @ref l4t_mm_jpeg_encode | Uses `libjpeg-8b` APIs to encode JPEG images from software-allocated buffers. | <!-- l4t_mm_jpeg_encode.md -->
58 | @ref l4t_mm_jpeg_decode | Uses `libjpeg-8b` APIs to decode a JPEG image from software-allocated buffers. | <!-- l4t_mm_jpeg_decode.md -->
59 | @ref nvvid_scal_col_group | Uses `V4L2` APIs to
do video format conversion and video scaling. | <!-- l4t_mm_vid_scal_col_fmt_conv.md -->
60 | @ref l4t_mm_08_video_decode_drm | Uses the NVIDIA<sup>®</sup> Tegra<sup>®</sup> Direct Rendering Manager (DRM) to render video stream or UI. | <!-- l4t_mm_08_video_decode_drm.md -->
61 | @ref l4t_mm_jpeg_capture_group | Simultaneously uses Libargus API to preview camera stream and libjpeg-8b APIs to encode JPEG images. | <!-- l4t_mm_camera_jpeg_capture.md -->
62 | @ref l4t_mm_camera_recording | 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. | <!-- l4t_mm_camera_recording.md -->
63 | @ref l4t_mm_v4l2_cam_cuda_group | Captures images from a V4L2 camera and shares the stream with CUDA engines to draw a black box in the upper left corner. | <!-- l4t_mm_v4l2_cam_cuda.md -->
64 | @ref nvvid_13_multi_camera_group | Captures multiple cameras and composites them to one frame.| <!-- l4t_mm_caffe_to_tensorrt_guide.md -->
65 | @ref l4t_mm_14_multivideo_decode_group | Decodes multiple H.264, H.265, VP8, VP9, MPEG4, and MPEG2 videos from local files and writes YUV buffer into corresponding files. |
66 | @ref l4t_mm_15_multivideo_encode_group | Encodes multiple YUV bitstreams from local files and writes elementary H.264/H.265/VP8/VP9 into corresponding files. |
67 | unittest_samples/@ref l4t_mm_decoder_unit_sample_group | Unit level sample; decodes H.264 video from a local file and dumps the raw YUV buffer. | <!-- l4t_mm_decoder_unit_sample.md -->
68 | unittest_samples/@ref l4t_mm_encoder_unit_sample_group | Unit level sample; encodes YUV bitstream from a local file and writes elementary H.264 bitstream into file. | <!-- l4t_mm_encoder_unit_sample.md -->
69 | unittest_samples/@ref l4t_mm_transform_unit_sample_group | Unit level sample; uses nvbuf_utils utility to convert one colorspace YUV bitstream to another. | <!-- l4t_mm_transform_unit_sample.md -->
70 | @ref nvvid_backend_group | 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. | <!-- l4t_mm_backend.md -->
71 | @ref l4t_mm_camcap_tensorrt_multichannel_group | Performs independent processing on four different resolutions of video capture coming directly from camera. | <!-- l4t_mm_camcap_tensorrt_and_multi_enc.md -->
72 | @ref l4t_mm_v4l2cuda_group | Uses V4L2 image capturing with CUDA format conversion. | <!-- l4t_mm_v4l2cuda.md -->
74 There is one tool that the samples can use.
76 | Tool Name | Description | Directory Location |
77 |-------------|-------------|--------------------|
78 | @ref l4t_mm_caffe_to_tensorRT_group | Standalone tool that converts a CAFFE network to a TensorRT-compatible model and saves the model stream into local file for subsequent usage. | tools/ConvertCaffeToTrtModel | <!-- l4t_mm_caffe_to_tensorrt_guide.md -->
82 The following diagram illustrates the L4T software stack.
83 Of the Multimedia box (center, bottom), the Multimedia API
84 provides the following components:
85 - libargus
for imaging applications
86 - NVDC-DRM
for non-X11 display system
87 - V4L2 API
for encoding, decoding, scaling, and other media functions
88 - NVOSD
for drawing text and box on the screen
90 With these components, you can access the other libraries, such as TensorRT
93 