Jetson Video Pipeline
NVIDIAOfficialCreated by Vinit BansalDistributed by NVIDIA
- Skill
- Workflow
- Software development
- Apache-2.0
- Medium risk
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
Download the skill as a ZIP:
https://autogineer.com/agent-skills/nvidia/jetson-video-pipeline/downloadUnzip 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:
For a PSNR/SSIM-only request, state that objective quality measurement is outside this skill and requires a separately authorized workflow, return
not_evaluatedwith reasonout_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 asnot_evaluatedwith reasonout_of_scoperather than silently omitting it.Classify every other request before applying the media gate:
Return
plannedfor 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, reportplanned, 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.
Preserve explicit
native,pynvc, andboth. Map “whichever”, “best available”, “choose for me”, or otherwise delegated selection toauto, notboth. Forauto: zero eligible surfaces isblocked, one runs, and two isselection_required; do not rank them or consult old results.Obtain a fresh read-only readiness result from
jetson-video-setupthrough public skill dispatch. For Python, pass any exact user-supplied or current-conversation interpreter. Otherwise select the profile before dispatch: decode-performance may usepynvc-smoke; encode, segmentation,advanced/decode.py, pipeline, and encode-benchmark work requirefull-samples. Setup checks that profile's conventional path; never scan for a venv. If only the smoke profile is ready for full-samples work, returndependency_requiredbefore 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 cleanpip 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.Recipe-bearing encode and transcode work requires
jetson-video-recipe; an acceptance request containing a performance stage also requiresjetson-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
completestages. 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
Choose the smallest route:
encode_decode,native_transcode,pynvc_segments,container_triage,av1_verify, oracceptance.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.
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.
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.
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.Emit the applicable
io_contractdirectly 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
| Route | Required proof |
|---|---|
encode_decode | One validated recipe; direct AppEncCuda→AppDec or wheel-owned basic encode→advanced decode; exact raw and decoded byte counts. |
native_transcode | H.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_segments | Wheel-owned schedule/config; every declared segment is fresh and nonempty; decode and rehash every segment independently. |
container_triage | Eligible Jetson, exact local/retrieved container, intrinsic libavformat demux in AppDec or wheel-owned advanced decode, fresh decoded output. |
av1_verify | Exact AV1 native recipe; host and video-memory modes; AppDec consumes each exact IVF output and reports the expected frame count. |
acceptance | A 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
- ATTRIBUTION.mdAdded by AutoGineer927 B
- BENCHMARK.md7.5 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md8.8 KiB
- evals/evals.json4.5 KiB
- references/buffer-sharing-and-synchronization.md2.5 KiB
- references/in-process-codec-boundaries.md4.4 KiB
- references/official-sample-contract.md10.0 KiB
- references/pipeline-workflow.md8.3 KiB
- skill-card.md4.4 KiB
- skill.oms.sig5.5 KiB
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