Generated banner for Jetson Video Pipeline
Generated logo for Jetson Video Pipeline

Jetson Video Pipeline

NVIDIAOfficialCreated by Vinit BansalDistributed by NVIDIA

  • Skill
  • Workflow
  • Software development
  • Apache-2.0
  • Medium risk

From the author

Use when planning, executing, and independently validating Jetson Video Codec SDK or PyNvVideoCodec encode/decode, transcode, segmentation, container decode, AV1, or concise acceptance workflows.
— the description by Vinit Bansal

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The Jetson Video Pipeline skill provides a structured framework for managing video encode, decode, and transcode operations on NVIDIA Jetson hardware. It focuses on using official Jetson Video Codec SDK and PyNvVideoCodec samples to perform codec tasks while ensuring each stage of the pipeline is independently verified. The skill enforces strict evidence-based reporting, requiring that every consumer validates the output bytes produced by its preceding stage. It is designed for developers needing to perform codec triage, AV1 verification, or acceptance testing, while maintaining clear boundaries regarding what constitutes proven performance or interoperability.

What it does

  • Plans and executes video codec workflows including encode, decode, and transcode.
  • Validates pipeline stages by re-hashing and re-authenticating artifacts between producers and consumers.
  • Provides structured acceptance reports for codec readiness and capability.
  • Supports container triage and AV1 verification using official NVIDIA sample contracts.
  • Enforces strict filesystem-based artifact sharing and synchronization protocols.
  • Manages dry-run planning for codec architecture and route verification.

When to use it

  • When you need to verify the correctness of a video codec pipeline on Jetson hardware.
  • When performing acceptance testing for encode/decode performance or functionality.
  • When you need to triage containerized video streams using official SDK tools.
  • When you require a reproducible, evidence-based report of codec pipeline execution.

Advantages

  • Ensures data integrity by requiring independent verification of every pipeline stage.
  • Provides a standardized, reproducible approach to codec testing.
  • Strictly adheres to official NVIDIA sample contracts and API usage patterns.
  • Clear separation between planning, execution, and validation phases.

Usage examples

“Plan an encode-decode pipeline for a 1080p H.264 file.”
The agent will outline the required stages, identify the necessary sample tools, and state the assumptions for execution without launching any processes.
“Execute an AV1 verification workflow for /data/input.ivf.”
The agent will authenticate the media, run the appropriate AV1 sample, verify the output frame count, and provide a report with checksums.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/nvidia/jetson-video-pipeline/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip jetson-video-pipeline.zip -d .agents/skills

Documentation by Vinit Bansal

Jetson Video Pipeline

Purpose

Build and run direct NVIDIA sample commands, then prove each consumer used the exact bytes produced by the preceding stage. This skill owns codec workflow and evidence policy; it does not own environment installation or product-support claims.

Terminal gates

Apply these before inspecting the target, another skill, or a command:

  1. For a PSNR/SSIM-only request, state that objective quality measurement is outside this skill and requires a separately authorized workflow, return not_evaluated with reason out_of_scope, then stop. Do not name a tool or request media. Do the same for a request limited to capture, transport, AI, display, or glass-to-glass latency. For a mixed codec-plus-quality request, continue only the codec portion and report the quality portion as not_evaluated with reason out_of_scope rather than silently omitting it.

  2. Classify every other request before applying the media gate:

    • Return planned for architecture and route questions; they need no media. State assumptions and what execution would verify, then stop before target inspection, retrieval, authentication, recipe dispatch, or workspace creation.

    • A dry run with concrete commands needs a user-named path or placeholder and the metadata required by those commands. The media need not exist. Obtain recipe options through jetson-video-recipe, report planned, and do not inspect, authenticate, or launch anything.

    • Execution, verification, and performance require one exact target-local media path or one user-supplied HTTP(S) URL. Without it, return input_required, identify the intended route briefly using only stages expressible by this skill's allowlisted samples, ask for that one item, and stop before target inspection, retrieval, authentication, recipe dispatch, or workspace creation. Label every other requested transform as unresolved rather than inventing an executable route.

    Never choose catalog or synthetic media. The deterministic setup smoke fixture is allowed only for a bounded capability operation and is never representative pipeline or performance evidence.

Select and authenticate the execution surface

Steps 3–4 apply to execution; step 5 also applies to recipe-bearing dry runs. For other planning, preserve an explicit surface without claiming live eligibility; delegated surface-specific dry runs return selection_required without ranking the choices.

  1. Preserve explicit native, pynvc, and both. Map “whichever”, “best available”, “choose for me”, or otherwise delegated selection to auto, not both. For auto: zero eligible surfaces is blocked, one runs, and two is selection_required; do not rank them or consult old results.

  2. Obtain a fresh read-only readiness result from jetson-video-setup through public skill dispatch. For Python, pass any exact user-supplied or current-conversation interpreter. Otherwise select the profile before dispatch: decode-performance may use pynvc-smoke; encode, segmentation, advanced/decode.py, pipeline, and encode-benchmark work require full-samples. Setup checks that profile's conventional path; never scan for a venv. If only the smoke profile is ready for full-samples work, return dependency_required before workspace creation and direct the user to provision a separate full-samples venv; never upgrade the smoke venv in place. Native eligibility requires one installed, package-verified SDK and one package-owned Samples root. Python eligibility requires that exact interpreter, an importable PyNvVideoCodec distribution loaded from its environment, and a clean pip check. The result must match the requested Jetson and GPU. Preserve the setup reason when a candidate is ineligible. The requested pipeline supplies its own operation proof.

  3. Recipe-bearing encode and transcode work requires jetson-video-recipe; an acceptance request containing a performance stage also requires jetson-video-benchmark. Invoke either through public skill dispatch and pass its result as data. If a needed sibling is absent, preserve completed stages and say: I can run <stage>, but it requires <skill>, which is not installed. Install <skill> and retry this stage.

    “Preserve” means retain each completed stage's status and current path/size/SHA-256 identities in the user-facing partial result; it does not create hidden resumable state. On retry in the same request, reopen and rehash those artifacts and skip only unchanged complete stages. With a changed/missing identity, or a later request that does not supply the prior evidence, use a new workspace and rerun the stage.

Execute

  1. Choose the smallest route: encode_decode, native_transcode, pynvc_segments, container_triage, av1_verify, or acceptance.

  2. Read pipeline-workflow.md for stage order, content handling, retry policy, and reporting. Read official-sample-contract.md completely once; it covers sample allowlists, direct arguments, marker grammar, and frame-layout checks. Read buffer-sharing-and-synchronization.md completely once for filesystem boundaries. For a custom in-process CUVID/CUDA/NVENC graph, also read in-process-codec-boundaries.md completely once.

  3. For execution, canonicalize the exact media, record its provenance and identity, and use a new mode-0700 workspace with fresh outputs. For a dry run, use only the supplied identity and metadata, state assumptions, and show planned commands and handoffs without opening the media or authenticating launchers.

  4. For execution, authenticate each selected native sample or wheel member, launch its literal argument list directly, and retain unedited logs. Require the reference's exit, marker, count, error, freshness, and layout checks.

  5. Reopen and rehash every producer output before and after its independent consumer. Preserve successful branches, report a failed peer as partial, and apply the reference's single-retry rule.

  6. Emit the applicable io_contract directly in every plan, result, and producer/consumer boundary. Do not depend on a contract module or infer external sharing from a device-memory mode.

Route requirements

RouteRequired proof
encode_decodeOne validated recipe; direct AppEncCuda→AppDec or wheel-owned basic encode→advanced decode; exact raw and decoded byte counts.
native_transcodeH.264 input, exact HEVC native projection, AppTrans output, exactly one accepted transcode marker, then AppDec over the same hash; require the AppTrans and AppDec frame counts to be equal and positive, and to equal the known input count when available.
pynvc_segmentsWheel-owned schedule/config; every declared segment is fresh and nonempty; decode and rehash every segment independently.
container_triageEligible Jetson, exact local/retrieved container, intrinsic libavformat demux in AppDec or wheel-owned advanced decode, fresh decoded output.
av1_verifyExact AV1 native recipe; host and video-memory modes; AppDec consumes each exact IVF output and reports the expected frame count.
acceptanceA concise reproducible report covering requested readiness, capability, recipe, codec, and benchmark stages with per-stage status and identities.

Report

Use the statuses and concise report defined in pipeline-workflow.md. Include the selected runtime, exact media and recipe identities, literal commands, producer and consumer results, decoded layout/size validation, logs, limitations, and retry reason. Add compact JSON or a checksum manifest when useful or requested.

Limitations

  • Codec work does not prove capture, transport, inference, display, quality, or end-to-end latency.

  • API fields and inventory are not operation proof or product support.

  • Container demux is allowed only inside an authenticated released NVIDIA sample.

  • Apply every deterministic acceptance check in the references.

  • Codec/API capability and benchmark results do not prove buffer interoperability, zero copy, or synchronization compatibility.

Files

references/in-process-codec-boundaries.md

<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. SPDX-License-Identifier: Apache-2.0 -->

In-process decoder and encoder boundaries

Use this profile when a custom in-process graph connects the traditional CUVID decoder path or a CUDA producer to NVENC. It defines codec-facing ports only. An intermediate node owns its transform, allocation, copy, format conversion, completion signal, and input-release decision. Authenticate all selected APIs against installed target headers and samples.

This is not a single-allocation zero-copy claim. Decoder mapping can perform a driver-managed conversion or copy, and an intermediate producer can write a distinct encoder-input allocation.

Required request and capacity

Record codec/framing, coded and output dimensions, format, planes, pitch, alignment, allocation owner, GPU/context, bounded frame or EOS policy, timeout, pool and queue depths, backpressure policy, and release conditions. Do not silently default memory ownership or capacities. Derive decoder surface and mapping capacity from maximum simultaneous ownership. If a callback maps before it can acquire downstream capacity, include the mapping that can wait; otherwise acquire capacity before mapping when the authenticated callback design permits it. Validate the choice under pressure rather than relying on a fixed formula.

Decoder input and mapped output

Compressed input is CPU-addressable host memory consumed through cuvidParseVideoData() and cuvidDecodePicture(). Every in-process plan must state explicitly that cuvidDecodePicture() has no decoder-input CUDA-stream or event wait parameter. Bytes and slice metadata must be valid for their required lifetime. Reconcile submitted, decoded, displayed, and independently decoded counts.

A mapped output uses a CUdeviceptr plus pitch in CUDA device memory. Supply CUVIDPROCPARAMS::output_stream for mapping/post-processing order, and retain the picture index, pointer, pitch, layout, timestamp, stream, and exactly-one unmap obligation. Call cuvidUnmapVideoFrame() only after authenticated downstream completion. Treat CUDA_ERROR_MAP_FAILED as capacity or lifetime failure, not permission to unmap an in-use frame. A helper that copies a mapped frame into another allocation and unmaps early does not establish this retained mapped-surface boundary.

CUDA producer to NVENC

Use a bounded, reusable CUDA-device-pointer input pool. Register allocations persistently with NV_ENC_INPUT_RESOURCE_TYPE_CUDADEVICEPTR when supported, then map them according to the installed API lifecycle. Record a CUDA event after the producer's final write and make the NVENC-bound input stream wait on that event before encode submission.

Follow the installed NvEncSetIOCudaStreams() ABI exactly: pass pointers to live CUstream handle variables as NV_ENC_CUSTREAM_PTR, not raw handle values, and keep those variables alive for the session. Zero-initialize and version every NVENC structure. Establish the stream binding only after successful encoder initialization and before submitting pictures; authenticate that lifecycle against the installed headers and samples. For CUDA-pointer image registration, declare NV_ENC_INPUT_IMAGE, use the format returned by NvEncMapInputResource(), and populate required picture fields including NV_ENC_PIC_STRUCT_FRAME.

Do not call CUDA or codec APIs from a CUDA host callback unless their installed contracts explicitly permit it. A callback may issue a bounded nonblocking notification; defer other work to a permitted worker with the correct CUDA context current. Propagate failures to the owning slot.

Conservatively retain an encoder input allocation through successful encoded output completion and NVENC input unmap. Earlier reuse requires authenticated input-consumed evidence. Unlock bitstream output only after its positive payload is copied or written; unregister resources before freeing the pool.

Per-slot proof

Associate compressed-input identity, decoder picture index and mapping, downstream frame, CUDA event, NVENC registered/mapped input, output buffer, timestamps, and state transitions. Require bounded backpressure, event-before- wait ordering, no early reuse, exact-once cleanup on success and failure, EOS drain, and independent decode of the exact fresh bitstream. Profiling must separate application synchronization/copies from library and driver activity. Missing evidence leaves the edge unresolved.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

What our scanner noticed· Medium risk

  • Large base64-encoded blobs

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Vinit Bansal
Publisher
NVIDIA (Official)
Distributed by
NVIDIA
Source
NVIDIA/skills · skills/jetson-video-pipeline · commit fce3cca
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE-APACHE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Vinit Bansal or NVIDIA.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download jetson-video-pipeline.zip