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/pipeline-workflow.md
Pipeline workflow
Use direct, authenticated NVIDIA samples for codec work. The agent owns planning, execution, artifact handoffs, and the final report.
Before planning
Apply the scope and request-classification gates in
SKILL.md. Architecture questions end with a direct route answer and stated assumptions. Dry runs use only user-supplied identity and metadata. The target and media steps below apply to execution; recipe-bearing dry runs still use step 4.Preserve an explicit
native,pynvc, orboth; otherwise useauto. Obtain fresh direct readiness from setup for the selected local runtime. Withauto, run the only eligible surface, block with zero, or returnselection_requiredofferingnative,pynvc, andbothwhen both are eligible.Require
full-samplesfor Python encode, advanced decode, segmentation, or encode-performance. The smallerpynvc-smokeprofile is sufficient only for its documented setup smoke and Python decode-performance route.For encode or transcode dry runs and execution, obtain a validated schema-2 recipe. Decode-only, segmentation, and container triage do not require one.
Canonicalize and hash the exact user media. Preserve URL or
null, license, attribution, path, byte count, SHA-256, and media metadata established by the user or a media parser/sample. Never infer metadata from the filename or replace the input with setup's synthetic fixture. For a URL, disable redirects; bound connection time, total time, and accepted bytes using an explicit user ceiling or trusted local metadata. Resolve the host first and accept only HTTP(S) addresses outside loopback, private, link-local, multicast, and reserved ranges. Recheck the connected peer address on every connection and preserve hostname-based TLS validation.
Plan, then execute
For a dry run, emit a readable planned result using the user-supplied media
identity and metadata. Show the intended argument arrays, inputs, outputs,
expected markers, frame counts, producer-to-consumer handoffs, and applicable
io_contract from
buffer-sharing-and-synchronization.md.
Do not open the media, inspect the target, authenticate launchers, or claim the
commands were verified.
For execution:
When a native binary still needs compilation, return dependency_required
with the exact build command and source/tool identities.
Create a new mode-0700 workspace. Require every output path to be absent.
Authenticate the selected sample and every required helper as specified in official-sample-contract.md. Record canonical path, size, and SHA-256. Recheck them immediately before launch.
Launch the exact argument array directly, without a shell or
eval, under the selected interpreter when Python is used. Retain unedited stdout/stderr in separate stage logs and capture exit code, elapsed monotonic time, timeout state, and working directory. Use a finite per-process timeout: 300 seconds unless the user supplies a different finite bound. Record the bound and terminate the launched process group on expiry before returningfailed.Require exit zero, the allowed positive marker set with every expected cardinality, count, and path, no explicit failure line, and a fresh nonempty output. A timeout, launch error, stale output, contradictory marker, or exit-zero unusable file fails that operation.
Immediately before a handoff, reopen the original producer output and verify its path, size, and SHA-256. The independent consumer must open that same path. Rehash it again after the consumer completes. Preserve the canonical
io_contracton successful and failed boundaries and in the final result.Apply the reference's byte/layout table to the actual raw source and decoded file. Do not infer usability from a marker or byte count alone.
Retain a successful branch when another selected surface or segment fails; label the aggregate
partial. Retry once at most, with fresh paths, and only after the input, executable/package/interpreter, readiness, or unavailable resource has demonstrably changed. Retain both attempts and stop after the retry.
Routes
Encode and independently decode
Native: validated recipe →
AppEncCuda→ fresh elementary stream →AppDec.Python: validated recipe/config → wheel-owned
basic/encode.py→ fresh elementary stream → wheel-ownedadvanced/decode.py.Require producer and decoder counts to equal the requested frame count.
Require exact raw-input and decoded-output byte sizes from the format, geometry, and frame count. Record the independently decoded layout.
For
both, keep each surface's identities, commands, and result separate.
Native H.264-to-HEVC transcode
Require an H.264 input and an exact native HEVC recipe projection. Do not infer
the input frame count from its filename. Run
AppTrans with recipe options except raw-only -s, -if, and -gpu; supply
the selected GPU once. Accept exactly one legacy or current transcode count
marker, never both. Rehash the HEVC output and independently decode it with
AppDec for the same positive frame count. If the input frame count was known
before launch, both counts must also equal it; otherwise the two authenticated
sample counts establish the tested frame count.
PyNvVideoCodec segments
Authenticate the wheel-owned segment sample, segments.txt,
transcode_config.json, and advanced decoder. Validate every schedule row as
finite 0 <= start < end. The created-file markers must exactly match the
declared output set and the summary must equal its size. Each segment must be
fresh, nonempty, rehashed, and independently decoded. Report failed segments
without discarding verified peers.
Container triage
First establish an eligible released Jetson route. Decode the exact local or
retrieved container through AppDec's intrinsic libavformat demux or the
wheel-owned advanced decoder. Record the same content provenance and require a
fresh usable decoded output. This route reports the tested operation only; it
does not generalize hardware support.
AV1 verification
Require an AV1 recipe with an exact native projection and positive frame count.
Run both requested host-output and video-memory modes independently. For every
fresh IVF output, rehash it and have AppDec consume that exact path. Require
the expected positive decoded frame count; do not claim a separate container-
structure verdict from header bytes alone.
Concise acceptance report
Acceptance is a human-readable reproducibility report. Include only requested
stages, with one row per stage and one of
complete, partial, blocked, failed, not_evaluated, or deferred.
Retain:
readiness result and selected target/runtime;
raw API capability facts separately from documentation and operations;
P4/P5 recipe identities and the exact input identity they share;
every encode/decode producer/consumer command, marker, frame count, output identity, decoded layout, and byte-size validation;
every benchmark warmup, measured repetition, timing scope, and recomputed statistics as required by
jetson-video-benchmark;limitations, failed/retained branches, and exact retry actions.
One report, a command log, and compact JSON evidence are sufficient when they contain those facts. Write a checksum manifest last if packaging is requested. Keep media, raw frames, bitstreams, SDK trees, builds, venvs, and caches outside the small evidence package; bind them by canonical path, bytes, and SHA-256.
Status meaning
planned: an architecture plan with conceptual steps or a dry run with concrete commands was provided; nothing was launched. State unresolved assumptions.complete: every requested branch passed operation and handoff validation.partial: at least one independent requested branch passed and another did not.blocked: no requested branch could safely run.failed: launch or observable validation failed.input_required,dependency_required, andselection_required: the named terminal gate stopped work before launch.operation_verified: only the exact tested route worked.unsupported: reserve for directly applicable product documentation; never derive it from an API field or failed operation.
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