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://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/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

  1. 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.

  2. Preserve an explicit native, pynvc, or both; otherwise use auto. Obtain fresh direct readiness from setup for the selected local runtime. With auto, run the only eligible surface, block with zero, or return selection_required offering native, pynvc, and both when both are eligible.

  3. Require full-samples for Python encode, advanced decode, segmentation, or encode-performance. The smaller pynvc-smoke profile is sufficient only for its documented setup smoke and Python decode-performance route.

  4. For encode or transcode dry runs and execution, obtain a validated schema-2 recipe. Decode-only, segmentation, and container triage do not require one.

  5. 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.

  1. Create a new mode-0700 workspace. Require every output path to be absent.

  2. 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.

  3. 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 returning failed.

  4. 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.

  5. 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_contract on successful and failed boundaries and in the final result.

  6. 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.

  7. 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-owned advanced/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, and selection_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