Skip to content
Skip to content
All examples

Legacy example · C++ · Python · Version 2.1

H.264 Endoscopy Tool Tracking

AuthorsHoloscan Team (NVIDIA)
Supported platformsx86_64, aarch64
LanguageC++, Python
Version2.1
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.

The application showcases how to use H.264 video source as input to and output from the Holoscan pipeline. This application is a modified version of Endoscopy Tool Tracking reference application in Holoscan SDK that supports H.264 elementary streams as the input and output.

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. The recording of the output can be enabled by setting record_output flag in the config file to true. If the record_output flag in the config file is set to true, the output of the pipeline is again recorded to a H.264 elementary stream on the disk, file name / path for this can be specified in the 'h264_endoscopy_tool_tracking.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++ (command line)

./holohub run h264_endoscopy_tool_tracking --language cpp

Python (command line)

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

./holohub build h264_endoscopy_tool_tracking --language python

# Python version
# Note: LD_PRELOAD required to address symbol issue
./holohub run h264_endoscopy_tool_tracking --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/

Enable recording of the output

The recording of the output can be enabled by setting record_output flag in the config file <build_dir>/applications/h264/endoscopy_tool_tracking/h264_endoscopy_tool_tracking.yaml to true.

All examples