This is the API documentation for VART-X, AMD's C++ framework for building hardware-accelerated, end-to-end vision and media pipelines. It provides modular building blocks covering frame lifecycle, device-aware data movement, preprocessing, postprocessing and visualization around model inference.
The VART-X framework is designed to empower applications with comprehensive device management, efficient preparation of input and result retrieval for inference operations, video format conversion, hardware acceleration, and frame overlay capabilities.
The VART-X modules utilize the pimpl (pointer to implementation) design pattern, which encapsulates implementation details in a separate implementation class. Applications interact solely with the public interface, ensuring a clean abstraction.
All modules are exposed under the vart namespace (Vitis AI Runtime) — providing a unified entry point across the framework.
Features
- Hardware Acceleration: Utilizes AMD hardware acceleration to enhance performance.
- Extendability: All modules in VART-X are extendable, enabling users to develop custom implementations and integrate them without requiring recompilation of
vart-x.
- Device Management: Handles hardware context and xclbin loading on the device.
- Memory: Raw memory allocation/deallocation, read/write and user allocated memory wrapping.
- VideoFrame: Video frame allocation/deallocation, read/write and user allocated memory wrapping for both physical and virtual memory.
- Pre-Processing: Hardware accelerated pre-processing support using the
image-processing IP.
- Post-Processing: Post-processing for several models.
- MetaConvert: Utility for converting
InferResult to Overlay constructs.
- Overlay: Utility for drawing
InferResult over VideoFrame.
- InferResult: Multi-level inference result representation.
Modules
- vart::Device – Manages the hardware context and xclbin loading on the device.
- vart::Memory – Device memory allocation/deallocation, read/write, and user-allocated memory wrapping.
- vart::VideoFrame – Video frame memory management for physical and virtual memory.
- vart::PreProcess – Hardware-accelerated pre-processing using the
image-processing IP.
- vart::InferResult – Multi-level inference result representation.
- vart::MetaConvert – Converts inference results to overlay constructs.
- vart::Overlay – Draws inference results over a video frame.
- vart::PLKernel – Programmable-logic (PL) kernel invocation.
Headers
Each module has a public header in include/ (e.g., vart_device.hpp, vart_memory.hpp, vart_videoframe.hpp). Modules that define enums and plain data structures provide a companion *_types.hpp header (e.g., vart_memory_types.hpp).