Skip to main content
NVIDIA
Explore
Models
Skills
Blueprints
GPUs
Docs
Help Center
Getting Started
  1. Create and verify your account to unlock full access to NVIDIA NIM APIs.
ResourcesDeveloper ForumsContact Support
FAQs
  • Terms of Use
    Privacy Policy
    Your Privacy Choices
    Contact

    Copyright © 2026 NVIDIA Corporation

    NVIDIA

    Video Super Resolution NIM

    Downloadable

    Upscale encoded or ST 2110 video to higher resolutions with NVIDIA Video Super Resolution.

    • broadcast
    • nvidia ai for media
    • streaming
    • video super resolution
    • video upscaling
    Get API Key
    API ReferenceAPI Reference
    Accelerated by DGX Cloud
    Deploying your application in production? Get started with a 90-day evaluation of NVIDIA AI Enterprise

    Follow the steps below to download and run the NVIDIA NIM inference microservice for this model on your infrastructure of choice.

    Step 1
    Prepare the H4M Platform

    This guide covers VSR NIM ST 2110 deployments on NVIDIA Holoscan for Media.

    Before deploying VSR NIM for ST 2110, verify that your platform meets these requirements:

    • Holoscan for Media-capable Kubernetes or Red Hat OpenShift cluster.
    • Ada-generation or later NVIDIA GPU with NVIDIA Driver 590.33 or later and CUDA 13.1 or later.
    • kubectl or oc access to the target cluster.
    • Helm v3.x.
    • NVIDIA GPU Operator.
    • NVIDIA Network Operator, Multus, and SR-IOV for high-speed media networking.
    • Rivermax with a valid Rivermax license secret.
    • ST 2110-capable, PTP-disciplined high-speed media networking configured for Holoscan for Media.
    • NetworkAttachmentDefinition resources for ST 2110 media traffic in the workload namespace.
    • On OpenShift, a Security Context Constraint that grants allowPrivilegeEscalation: true and the IPC_LOCK, NET_RAW, SYS_NICE, and DAC_READ_SEARCH Linux capabilities to the service accounts used by the workloads.
    • Topology-aware scheduler when the cluster uses topologyManagerPolicy: single-numa-node.
    • NMOS registry when using NMOS for dynamic stream connection management.

    For complete platform setup, see the NVIDIA Holoscan for Media user guide and the VSR NIM ST 2110 support matrix.

    Step 2
    Authenticate to NGC

    Generate an NGC API key from NGC API Keys. When creating a personal key, select at least NGC Catalog from the Services Included dropdown.

    Export the key and log in to the NGC Helm registry:

    export NGC_API_KEY=<value>
    printf "%s" "$NGC_API_KEY" | helm registry login nvcr.io \
      --username '$oauthtoken' \
      --password-stdin
    

    Create an image pull secret in the workload namespace when the kubelet does not already have registry credentials:

    kubectl create secret docker-registry <secret-name> \
      --docker-server=nvcr.io \
      '--docker-username=$oauthtoken' \
      --docker-password=<NGC-API-KEY> \
      --docker-email=<your-email> \
      -n <namespace>
    

    On Red Hat OpenShift, replace kubectl with oc.

    Step 3
    Prepare Rivermax and Media Networks

    Rivermax is required for SMPTE ST 2110 streaming. When the license file is available, create a Kubernetes secret in the workload namespace:

    kubectl create secret generic rivermax-license \
      --from-file=rivermax.lic \
      -n <namespace>
    

    VSR NIM receives and transmits ST 2110 traffic, so the media function pod uses both input-side and output-side network attachments. The sample defaults are:

    media-a-rx-net
    media-a-tx-net
    

    NetworkAttachmentDefinition resources are namespace-scoped. If the required attachments exist in another namespace, copy them into the workload namespace before deploying.

    On OpenShift clusters, bind an SCC that allows the required ST 2110 security context to each service account used by the sender, VSR NIM, and receiver pods. For development and evaluation, the built-in privileged SCC can be bound to the deployment namespace:

    oc adm policy add-scc-to-user privileged -z default -n <namespace>
    

    For production, prefer a least-privilege SCC that grants only allowPrivilegeEscalation: true and the required Linux capabilities.

    Step 4
    Pull the H4M Charts

    Use the production NGC org and team that host the VSR NIM H4M charts:

    ngc config set
    ngc registry chart pull nim/nvidia/nvidia-vsr-nim-h4m-service:1.0.10
    ngc registry chart pull nim/nvidia/nvidia-vsr-nim-h4m-sample:1.0.10
    

    Verify that the downloaded sample archive is the umbrella sample chart, not the service-only chart:

    helm show chart nvidia-vsr-nim-h4m-sample-1.0.10.tgz | grep '^name: nvidia-vsr-nim-h4m-sample$'
    

    The H4M VSR NIM service image for this release is:

    nvcr.io/nim/nvidia/vsr-h4m-nim:1.0.10
    

    Step 5
    Deploy with Helm

    VSR NIM ST 2110 deployment provides two Helm chart paths:

    • nvidia-vsr-nim-h4m-service: VSR NIM media function only, for integration with existing ST 2110 endpoints.
    • nvidia-vsr-nim-h4m-sample: end-to-end sample pipeline with sender, VSR NIM service, and receiver.

    Use the service chart when upstream and downstream ST 2110 endpoints are deployed separately. Use the sample chart when you want a packaged sender to VSR NIM to receiver pipeline for validation. The sample sender generates a live SMPTE color bars test pattern by default and requires no input asset.

    Extract the service values:

    tar xzf nvidia-vsr-nim-h4m-service-1.0.10.tgz \
      nvidia-vsr-nim-h4m-service/values-nmos.yaml \
      nvidia-vsr-nim-h4m-service/values-st2110.yaml
    

    Deploy the service chart in NMOS mode:

    helm upgrade --install vsr-nim-service \
      nvidia-vsr-nim-h4m-service-1.0.10.tgz \
      -f nvidia-vsr-nim-h4m-service/values-nmos.yaml \
      --set nodeSelector.hostname=<node-hostname>
    

    Deploy the service chart in static ST 2110 mode:

    helm upgrade --install vsr-nim-service \
      nvidia-vsr-nim-h4m-service-1.0.10.tgz \
      -f nvidia-vsr-nim-h4m-service/values-st2110.yaml \
      --set nodeSelector.hostname=<node-hostname>
    

    If the kubelet does not already have registry credentials, set the VSR NIM service image pull secret:

    --set image.secret=<secret-name>
    

    For clusters without topo-aware-scheduler, clear the scheduler name:

    helm upgrade --install vsr-nim-service \
      nvidia-vsr-nim-h4m-service-1.0.10.tgz \
      -f nvidia-vsr-nim-h4m-service/values-nmos.yaml \
      --set schedulerName="" \
      --set nodeSelector.hostname=<node-hostname>
    

    Extract the sample values:

    tar xzf nvidia-vsr-nim-h4m-sample-1.0.10.tgz \
      nvidia-vsr-nim-h4m-sample/values.yaml \
      nvidia-vsr-nim-h4m-sample/values-nmos.yaml \
      nvidia-vsr-nim-h4m-sample/values-st2110.yaml
    

    Deploy the sample pipeline in NMOS mode:

    helm upgrade --install vsr-nim-h4m \
      nvidia-vsr-nim-h4m-sample-1.0.10.tgz \
      -f nvidia-vsr-nim-h4m-sample/values-nmos.yaml \
      --set sender.enabled=true \
      --set receiver.enabled=true \
      --set nvidia-vsr-nim-h4m-service.enabled=true \
      --set sender.nodeSelector.hostname=<node-hostname> \
      --set receiver.nodeSelector.hostname=<node-hostname> \
      --set nvidia-vsr-nim-h4m-service.nodeSelector.hostname=<node-hostname>
    

    Deploy the sample pipeline in static ST 2110 mode:

    helm upgrade --install vsr-nim-h4m \
      nvidia-vsr-nim-h4m-sample-1.0.10.tgz \
      -f nvidia-vsr-nim-h4m-sample/values-st2110.yaml \
      --set sender.enabled=true \
      --set receiver.enabled=true \
      --set nvidia-vsr-nim-h4m-service.enabled=true \
      --set sender.nodeSelector.hostname=<node-hostname> \
      --set receiver.nodeSelector.hostname=<node-hostname> \
      --set nvidia-vsr-nim-h4m-service.nodeSelector.hostname=<node-hostname>
    

    For the sample chart, set image pull secrets as needed:

    --set nvidia-vsr-nim-h4m-service.image.secret=<secret-name>
    --set sender.image.secret=<secret-name>
    --set receiver.image.secret=<secret-name>
    

    For clusters without topo-aware-scheduler, clear both sample-chart scheduler settings:

    --set h4m.schedulerName="" \
    --set nvidia-vsr-nim-h4m-service.schedulerName=""
    

    Set site-specific values for node selection, image pull secrets, network attachment names, SR-IOV pool resources, multicast groups, ports, packet sizes, and Rivermax secret names before production use. On clusters where VSR input and output media interfaces must use the same SR-IOV pool, configure both VSR interfaces and pool counts explicitly; do not collapse separate RX and TX pools unless the cluster exposes one shared pool.

    In NMOS mode, use DNS-SD registration by default. If DNS-SD is unavailable, set nmos.registrationUrl for each component to the NMOS IS-04 registration endpoint and verify that the VSR NIM image registers correctly before relying on this mode for NMOS Connection Manager workflows.

    For NMOS validation, deploy the receiver and VSR NIM first, wait for both pods to become ready, and then enable the sender. This avoids filling the VSR output queue before the downstream receiver is connected.

    Step 6
    Deploy with the Operator

    The Holoscan for Media operator for VSR NIM manages the VSR NIM media function through a NvidiaVsrNimMediaFunction custom resource. The operator manages only the VSR NIM media function; source and receiver endpoints must be provided by existing ST 2110 equipment, platform services, or the sample Helm chart with its VSR service disabled.

    Pull the operator chart:

    ngc registry chart pull nim/nvidia/nvidia-vsr-nim-h4m-operator:1.0.10
    

    Install the operator:

    helm upgrade --install vsr-nim-operator \
      nvidia-vsr-nim-h4m-operator-1.0.10.tgz \
      -n <operator-namespace> \
      --create-namespace
    

    If the operator image requires a pull secret, set it in the operator chart values:

    --set imagePullSecrets[0].name=<secret-name>
    

    If generated media function pods should use a default pull secret when the CR omits spec.parameters.imagePullSecrets, set it separately:

    --set mediaFunction.imagePullSecrets[0].name=<secret-name>
    

    Wait for the operator:

    kubectl rollout status deployment \
      -n <operator-namespace> \
      -l app.kubernetes.io/instance=vsr-nim-operator \
      --timeout=180s
    

    Create a NvidiaVsrNimMediaFunction custom resource to define one ST 2110-20 video input, one ST 2110-20 video output, NMOS or inline SDP control, VSR processing parameters, GPU resources, high-speed network attachments, Rivermax, logging, security, resources, and scheduler settings. Use transfer_characteristic: SDR for SDP generation in this release.

    Step 7
    Verify

    Check deployments and pods:

    kubectl get deploy -n <namespace>
    kubectl get pods -n <namespace>
    kubectl rollout status deployment/<deployment-name> -n <namespace> --timeout=300s
    kubectl logs deployment/<deployment-name> -n <namespace> --tail=100
    

    Check the operator-managed custom resource:

    kubectl get nvidiavsrnimmediafunction -n <namespace>
    kubectl describe nvidiavsrnimmediafunction <cr-name> -n <namespace>
    

    In NMOS mode, connect the sender, VSR NIM media function, and receiver through the NMOS Controller UI. Connect the VSR NIM output to the receiver before connecting the sender to the VSR NIM input. In static ST 2110 mode, the chart self-activates from the configured transport values.

    When using the sample receiver, copy the output file from the receiver pod:

    kubectl cp -n <namespace> <receiver-pod>:/workspace/recv_4k_h264.ts ./out.ts
    ffprobe ./out.ts
    

    The sample pipeline is expected to produce a 4Kp30 H.264 MPEG-TS output file from the receiver. The ST 2110 output over the wire is UYVP / YCbCr 4:2:2 10-bit video; the saved receiver artifact is encoded as H.264 High, yuv420p, 8-bit.

    For complete deployment, configuration, NMOS, static ST 2110, operator, and verification details, see the VSR NIM ST 2110 documentation.