Skip to content

AJA Source Operator#

Authors: Holoscan Team (NVIDIA)
Supported platforms: x86_64, aarch64
Language: C++, Python
Last modified: August 5, 2025
Latest version: 1.0
Minimum Holoscan SDK version: 1.0.3
Tested Holoscan SDK versions: 2.0.0
Contribution metric: Level 1 - Highly Reliable

The AJA Source operator provides functionality to capture high-quality video streams from AJA capture cards and devices. It offers comprehensive support for both SDI (Serial Digital Interface) and HDMI (High-Definition Multimedia Interface) input sources, allowing for professional video capture in various formats and resolutions. The operator is designed to work seamlessly with AJA's hardware capabilities, including features like frame synchronization and format detection. Additionally, it provides an optional overlay channel capability that enables real-time mixing and compositing of multiple video streams, making it suitable for applications requiring picture-in-picture, graphics overlay, or other video mixing scenarios.

Requirements#

  • AJA capture card (e.g., KONA HDMI)
  • CUDA-capable GPU
  • Holoscan SDK 1.0.3 or later

Parameters#

The following parameters can be configured for this operator:

Parameter Type Description Default
device string Device specifier (e.g., "0" for device 0) "0"
channel NTV2Channel Camera channel to use for input NTV2_CHANNEL1
width uint32_t Width of the video stream 1920
height uint32_t Height of the video stream 1080
framerate uint32_t Frame rate of the video stream 60
interlaced bool Whether the video is interlaced false
rdma bool Enable RDMA for video input false
enable_overlay bool Enable overlay channel false
overlay_channel NTV2Channel Camera channel to use for overlay NTV2_CHANNEL2
overlay_rdma bool Enable RDMA for overlay false

Supported Video Formats#

The operator supports various video formats based on resolution, frame rate, and scan type:

  • 720p (1280x720) at 50/59.94/60 fps
  • 1080i (1920x1080) at 50/59.94/60 fps
  • 1080p (1920x1080) at 23.98/24/25/29.97/30/50/59.94/60 fps
  • UHD (3840x2160) at 23.98/24/25/29.97/30/50/59.94/60 fps
  • 4K (4096x2160) at 23.98/24/25/29.97/30/50/59.94/60 fps

Input Ports#

  • overlay_buffer_input (optional): Video buffer for overlay mixing when enable_overlay is true

Output Ports#

  • video_buffer_output: Video buffer containing the captured frame
  • overlay_buffer_output (optional): Empty video buffer for overlay when enable_overlay is true

API Reference#

Python#

AJASourceOp#

Operator to get a video stream from an AJA capture card.

==Named Inputs==

overlay_buffer_input : nvidia::gxf::VideoBuffer (optional)
    The operator does not require a message on this input port in order for ``compute`` to be
    called. If a message is found, and ``enable_overlay`` is ``True``, the image will be mixed
    with the image captured by the AJA card. If ``enable_overlay`` is ``False``, any message on
    this port will be ignored.

==Named Outputs==

video_buffer_output : nvidia::gxf::VideoBuffer
    The output video frame from the AJA capture card. If ``overlay_rdma`` is ``True``, this
    video buffer will be on the device, otherwise it will be in pinned host memory.
overlay_buffer_output : nvidia::gxf::VideoBuffer (optional)
    This output port will only emit a video buffer when ``enable_overlay`` is ``True``. If
    ``overlay_rdma`` is ``True``, this video buffer will be on the device, otherwise it will be
    in pinned host memory.

Parameters#

fragment : holoscan.core.Fragment (constructor only) The fragment that the operator belongs to. device : str, optional The device to target (e.g., "0" for device 0). Default value is "0". channel : holoscan.operators.NTV2Channel or int, optional The camera NTV2Channel to use for output (e.g., NTV2Channel.NTV2_CHANNEL1 (0) or "NTV2_CHANNEL1" (in YAML) for the first channel). Default value is NTV2Channel.NTV2_CHANNEL1 ("NTV2_CHANNEL1" in YAML). width : int, optional Width of the video stream. Default value is 1920. height : int, optional Height of the video stream. Default value is 1080. framerate : int, optional Frame rate of the video stream. Default value is 60. interlaced : bool, optional Whether or not the video is an interlaced format. Default value is False ("false" in YAML). rdma : bool, optional Boolean indicating whether RDMA is enabled. Default value is False ("false" in YAML). enable_overlay : bool, optional Boolean indicating whether a separate overlay channel is enabled. Default value is False ("false" in YAML). overlay_channel : holoscan.operators.NTV2Channel or int, optional The camera NTV2Channel to use for overlay output. Default value is NTV2Channel.NTV2_CHANNEL2 ("NTV2_CHANNEL2" in YAML). overlay_rdma : bool, optional Boolean indicating whether RDMA is enabled for the overlay. Default value is False ("false" in YAML). name : str, optional (constructor only) The name of the operator. Default value is "aja_source".