Skip to content
Skip to content
All examples

Legacy example · C++ · Python · Version 2.0

H.264 Video Decode

AuthorsHoloscan Team (NVIDIA)
Supported platformsx86_64, aarch64
LanguageC++, Python
Version2.0
CompatibilityHSDK 3.6.1
Contribution levelLevel 1 · Very high-quality code
SourceHoloHub

Legacy HoloHub application

This application comes from HoloHub and was last tested with Holoscan SDK (HSDK) 3.6.1. It runs with the HoloHub CLI, ./holohub.

This is a minimal reference application demonstrating usage of H.264 video decode operators. This application makes use of H.264 elementary stream reader operator for reading H.264 elementary stream input and uses Holoviz operator for rendering decoded data to the native window.

The H.264 video decode operators do not adjust framerate as it reads the elementary stream input. As a result the video stream can be displayed as quickly as the decoding can be performed. This application uses PeriodicCondition to play video at the same speed as the source video.

Requirements

  • NVIDIA GPU with display driver >= 580 for CUDA 13 support. See the Holoscan SDK User Guide for a list of all Holoscan SDK supported platforms.
  • Orin platforms (Jetpack 6.x, IGX OS 1.x) are not supported at this time.
  • This application is configured to use H.264 elementary stream from endoscopy sample data as input. To use any other stream, the filename / path for the input file can be specified in the 'h264_video_decode.yaml' file.

Data

📦️ (NGC) Sample App Data for AI-based Endoscopy Tool Tracking

The data is automatically downloaded when building the application.

Build and Run the H.264 Endoscopy Tool Tracking Application

C++

./holohub run h264_video_decode --language cpp

Python

Separate build and run commands are required to address the known symbol loading issue.

# C++ version
./holohub build h264_video_decode --language python

# Python version
# Note: LD_PRELOAD required to address symbol issue
./holohub run h264_video_decode --language python \
    --docker-opts="-e LD_PRELOAD=/opt/nvidia/holoscan/lib/libgxf_core.so"

Important: on aarch64, applications also need tegra folder mounted inside the container and the LD_LIBRARY_PATH environment variable should be updated to include tegra folder path.

Open and edit the Dockerfile and uncomment line 66:

# Uncomment the following line for aarch64 support
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/aarch64-linux-gnu/tegra/
All examples