Kubernetes operator for Holoscan for Media that manages NVIDIA media functions with ST 2110 support.
Reference Media Functions Operator
The Reference Media Functions Operator is a Kubernetes operator for Holoscan for Media that manages the lifecycle of NVIDIA media function microservices. It provides declarative Custom Resources for deploying ST 2110 media processing workloads with integrated NMOS control plane support.
The operator reconciles each Custom Resource into a fully configured Deployment that includes the media function container and optional observability sidecars. It continuously monitors the running pods to reflect NMOS sender/receiver identifiers, SDP data, and readiness conditions back into the Custom Resource status.
Media Functions
| Custom Resource | Description |
|---|---|
NvidiaSrtGatewayMediaFunction | Receives ST 2110-20 video and ST 2110-30 audio via NMOS, encodes them, and forwards the stream over SRT. Supports listener and caller modes with optional Kubernetes Service exposure. |
NvidiaVideoFlipperMediaFunction | Receives a video stream via ST 2110, applies a flip or rotation transform, and re-sends it via ST 2110. Useful for orientation correction in live pipelines. |
NvidiaStreamDelayMediaFunction | Receives ST 2110-20 video and/or ST 2110-30 audio, delays the streams, and re-sends them over ST 2110. |
NvidiaColorPatternMediaFunction | Generates video test patterns (color bars, SMPTE, gradients) and outputs them as ST 2110-20 uncompressed video via RTP. Useful for pipeline validation and bring-up. |
NvidiaFilePlayerMediaFunction | Plays a PVC-hosted MPEG-TS file as ST 2110 video and audio using a referenced NvidiaFilePlayerContext. |
Installation
Install the operator using the associated Helm chart:
helm repo add holoscan-for-media \
https://helm.ngc.nvidia.com/nvidia/holoscan-for-media/ \
'--username=$oauthtoken' \
--password=<API-KEY>
helm repo update
helm install reference-media-functions-operator \
holoscan-for-media/reference-media-functions-operator \
--version 0.1.0 \
--namespace <your-namespace> --create-namespace \
--set image.imagePullSecrets[0].name=ngc-secret \
--set mediaFunction.imagePullSecrets[0].name=ngc-secret
Helm Values
| Value | Description | Default |
|---|---|---|
image.repository | Operator container image | controller |
image.tag | Operator image tag | "" (chart appVersion) |
image.imagePullSecrets[0].name | Kubernetes NGC secret name for pulling the operator image | "" |
mediaFunction.image | Container image for media function pods | nvcr.io/nvidia/holoscan-for-media/nvds-nmos-bin:0.8.0 |
mediaFunction.imagePullSecrets[0].name | Kubernetes NGC secret for pulling the media function image | "" |
mediaFunction.schedulerName | Scheduler for media function pods | topo-aware-scheduler |
mediaFunction.rivermaxLicenseSecretName | Kubernetes Secret containing the Rivermax license | rivermax-license |
Uninstallation
Remove all media function instances, then uninstall the operator:
kubectl delete nvidiasrtgatewaymediafunctions --all -A
kubectl delete nvidiavideoflippermediafunctions --all -A
kubectl delete nvidiastreamdelaymediafunctions --all -A
kubectl delete nvidiacolorpatternmediafunctions --all -A
kubectl delete nvidiafileplayermediafunctions --all -A
kubectl delete nvidiafileplayercontexts --all -A
helm uninstall reference-media-functions-operator -n <your-namespace>
Quick Start
Color Pattern Generator
The following Custom Resource deploys a color pattern generator that outputs 1080p60 SMPTE color bars over ST 2110 with NMOS control:
apiVersion: nvidia.com/v1alpha1
kind: NvidiaColorPatternMediaFunction
metadata:
name: colorbars-1080p60
spec:
parameters:
label: "1080p60-colorbars"
description: "SMPTE color bars at 1080p60"
pattern: 0
outputs:
video_output:
control:
nmos: {}
transport:
rtp: {}
format:
video:
media_type: "video/raw"
frame_width: 1920
frame_height: 1080
frame_rate: "60"
Apply the resource:
kubectl apply -f colorpattern.yaml
Verify that the media function is provisioned:
kubectl get nvidiacolorpatternmediafunction colorbars-1080p60
The Provisioned condition transitions to True once the underlying
Deployment is available and the NMOS node has registered its sender.
Spec Reference
spec.parameters
| Field | Type | Default | Description |
|---|---|---|---|
label | string | Human-readable label exposed via NMOS IS-04. | |
description | string | Description exposed via NMOS IS-04. | |
pattern | int | 0 | Test pattern index (0=SMPTE, 1=mandelbrot, 2=gradient). |
horizontalSpeed | int | 0 | Horizontal animation speed (0 = static). |
displayTimestamp | bool | false | Overlay a clock on the video output. |
highSpeedNetwork | list | Multus NetworkAttachmentDefinition references for media traffic. | |
resources | object | Container resource requests and limits override. |
spec.outputs.video_output.format.video
| Field | Type | Allowed Values |
|---|---|---|
media_type | string | video/raw |
frame_width | int | e.g. 1920, 3840 |
frame_height | int | e.g. 1080, 2160 |
frame_rate | string | 25, 30000/1001, 30, 50, 60000/1001, 60 |
color_sampling | string | e.g. YCbCr-4:2:2 |
component_depth | int | e.g. 8, 10, 12 |
colorspace | string | e.g. BT709, BT2020 |
transfer_characteristic | string | e.g. SDR |
interlace_mode | string | progressive, interlaced_tff, interlaced_bff, interlaced_psf |
License
By downloading and using this software, you accept the terms and conditions of the NVIDIA AI Product Agreement.