| name | jetson-video-capability |
| license | Apache-2.0 |
| description | Use when Jetson codec, profile, chroma, bit-depth, dimension, engine-count, or operational support must be reconciled using live SDK APIs, authenticated NVIDIA samples, and NVIDIA documentation. Also use for Jetson questions about Netflix, Widevine, or other DRM-protected streaming-service playback to apply the codec-scope boundary. |
| metadata | {"author":"Vinit Bansal <vinitkumarb@nvidia.com>","tags":["jetson","video-codec-sdk","pynvvideocodec","nvenc","nvdec","capability"],"languages":["python"],"data-classification":"public"} |
Jetson Video Capability
Purpose
Answer Video Codec SDK and PyNvVideoCodec support questions without confusing an
API response, a successful operation, and product documentation. Query the live
target first, retain exact operation evidence separately, and publish the final
product-support verdict from applicable NVIDIA documentation.
Prerequisites
- Fresh evidence from
jetson-video-setup is an optional authority, not a
prerequisite. When it is supplied, authenticate and use it exactly. When it
is absent, this skill authenticates only the selected installed surface:
package-owned native sources and requested report targets, or the exact
invoking PyNvVideoCodec interpreter and wheel. It never installs, repairs,
scans for a venv, or imports setup code. A fresh environment artifact that
the agent obtains from setup's public read-only probe counts as supplied
evidence; it need not originate in the customer's prompt.
- Run live queries on the target Jetson with direct GPU access. Do not claim
current availability from an x86 host or a result copied from another target.
- If selected-surface prerequisites are missing, stop without mutation and
route that surface to
jetson-video-setup. If that skill is not installed,
tell the user to install it. Never infer codec or product support from a
missing Python import or native build prerequisite.
- Keep the installed native and Python surfaces independent. Query only the
requested surface unless the user explicitly selects
both.
- Query execution requires this capability skill plus either valid supplied
setup evidence or the selected local prerequisites described below. An exact
operation check also requires
jetson-video-recipe, which owns recipe resolution, and
jetson-video-pipeline, which owns authenticated
encode-to-independent-decode execution.
- Before a bounded operation check, when setup is installed read its shared
video content policy.
Query-only work is media-free; only the documented setup fixture is allowed
for the capability-smoke exception. Setup is not required solely for this
policy: without it, require one exact user-selected path or URL for any other
operation, never substitute catalog or synthetic media, and preserve source
URL, license, attribution, path, size, and SHA-256.
Resolve this skill from the installed skills root and set CAPABILITY_SKILL to
its canonical absolute path. Invoke each owning script directly under isolated
Python:
python3 -I "$CAPABILITY_SKILL/scripts/query_native_sample_reports.py" --help
python3 -I "$CAPABILITY_SKILL/scripts/query_encoder_caps.py" --help
python3 -I "$CAPABILITY_SKILL/scripts/query_decoder_caps.py" --help
python3 -I "$CAPABILITY_SKILL/scripts/validate_appenc_av1_ivf.py" --help
If an owning script is missing, stop with dependency_required. A setup
artifact is optional; a supplied one is never optional to validate. Do not copy
modules from another skill or add a fallback import path.
Compose requested sibling stages
Capability queries and documentation reconciliation require no sibling when
the selected SDK prerequisites already exist. Use jetson-video-setup for
installation, repair, or one read-only readiness handoff when registered
PyNvVideoCodec authority is required; use jetson-video-recipe plus
jetson-video-pipeline for an exact requested operation, and
jetson-video-benchmark for requested throughput. Check the agent's installed
skill catalog before each such stage.
If the sibling is present, read its SKILL.md and invoke its documented public
entry point; pass artifacts as data and never import sibling code. If it is
absent, preserve every completed query result and say, using the actual names:
I can run <stage>, but it requires <skill>, which is not installed. Install <skill> and retry this stage. Never require a sibling for an unrequested or
optional refinement.
Instructions
-
Classify the request first, before any target probe, capability query, or
other workflow step. For a request solely for objective quality
metrics, including PSNR or SSIM, state only that this skill does not provide
them and that a separately authorized quality workflow is required, then
stop. Do not name or recommend an external tool, and do not offer to
configure or run the comparison; do not request media, probe, install
anything, or launch an operation.
For a request solely about Netflix, Widevine, or other DRM-protected
streaming-service playback, state only that this skill covers hardware
encode/decode of user-supplied non-DRM bitstreams and does not cover,
enable, or verify streaming-service or content-DRM playback. Do not claim
whether the service will work; do not describe Jetson content-DRM
certification; do not recommend or offer to install a browser, a content-DRM
module (Widevine, PlayReady), a playback tool, a workaround, or a bypass; do
not probe the target or launch an operation. NVDEC decode of supported
user-supplied non-DRM bitstreams stays fully in scope for this skill and is
never discouraged by this boundary, so you may say so. Then stop. A mixed
request that also asks an in-scope codec question is not refused wholesale:
answer the in-scope part normally and apply this boundary only to the
streaming-service part.
An unqualified “DRM” does not by itself mean content protection: on Jetson it
commonly means the Linux Direct Rendering Manager (DRM/KMS, /dev/dri,
modesetting, display connectors), which this boundary does not cover. Apply
this boundary only when the request identifies Netflix, Widevine, PlayReady,
streaming-service protection, or otherwise clearly means content Digital
Rights Management; if the request says only “DRM” and the context does not
resolve which is meant, ask the user which before answering. A local
DRM-free MP4 shown on a display is likewise not a content-DRM request, and
its codec portion stays in scope.
Otherwise handle capability discovery, exact support questions, and
interpretation of saved capability evidence. Route package installation to
jetson-video-setup, recipe construction to jetson-video-recipe,
throughput measurement to jetson-video-benchmark, and multi-stage media
work to jetson-video-pipeline. Within a capability request, a genuinely
bare “video SDK” phrase with no product qualifier is ambiguous: ask whether
the customer means native Video Codec SDK, PyNvVideoCodec, or both, then
stop before probing either surface. Report-only intent or “probe the target”
does not authorize --runtime both.
A capability support/catalog request that names no SDK surface or product
phrase uses native-preferred fallback selection, whether it is broad, exact,
or a bounded subset. Select native when its route is eligible. Only when
native is ineligible, evaluate the PyNvVideoCodec candidate in the authority
order defined in step 3; select Py when that candidate is eligible. Do not
ask the user to choose merely because this fallback was used. When native is
selected, do not evaluate Py; if the response displays that unselected peer,
report it as with reason . If neither
route is eligible, preserve both typed reasons and provide the applicable
setup remediation. Serialize a successful fallback as an explicit
or request before applying the shared routing truth table. Carry that
resolved surface explicitly into any authorized downstream operation so the
operation controller does not reclassify it as . This capability-only
unnamed policy is not : only
explicit “auto”, “whichever”, “best available”, “choose for me”, or
equivalent wording that expressly delegates the SDK choice is genuine
; it is never . Naming Python or PyNvVideoCodec is explicit
. Naming Video Codec SDK, , , or is
explicit and never falls back.
Read capability-queries.md for exact evidence
semantics and surface-selection-contract.md
for native, pynvc, auto, and both behavior.
Available Scripts
The four owning scripts are listed in the prerequisite help commands above.
Invoke them directly, and read
capability-queries.md for route-specific
purposes, arguments, and contracts.
Published artifacts
Capability artifacts are optional refinements; authenticated schema-1.2
nvcodec-environment capabilities remain sufficient for sibling workflows.
Read capability-queries.md for their exact
contracts. Never promote sample/API evidence to support or operation proof.
Troubleshooting
- Preserve
capability_reported, operation_verified, operation_failed,
raw API unsupported, and unknown as distinct internal states.
- Treat missing query authority, failed registry authentication, absent API
fields, nonzero-GPU PyNv queries, and unavailable exact operations as
unknown or not_tested with a concrete next action.
- Report a launched exact operation failure as
operation_failed, not global
product unsupported. A native -ec/-dc report failure remains raw
unknown.
- Retry at most once and only after an evidenced condition changes. Use a fresh
work directory and output path for the retry.
Limitations
- PyNvVideoCodec 2.1 encoder and decoder capability helpers select GPU 0;
nonzero-GPU results remain unknown.
- Capability fields do not measure throughput, quality, latency, camera count,
or successful concurrent sessions.
- Objective quality measurement, including PSNR and SSIM, is outside this
skill.
- Results apply to the exact target, software versions, GPU, codec tuple, and
operation that produced the evidence.