Picture processing and UI
Picture processing and UI configuration
Pixop Prime separates what the GPU does to pixels from how the encoder packages the transport stream. Picture processing—restoration, scaling, inverse tone mapping (ITM), grain, and look controls—runs inside the Pixop LIVE filter and is tuned through the management UI or REST API. Encoded output resolution, chroma subsampling, bitrate, GOP, and HEVC VUI signalling (SDR vs HLG vs PQ) live in /etc/pixop-live/nvencc.args and require pixopctl restart when changed. See Configuration and Live output and encoding for the encoder plane; this page covers the picture plane only.
Version caveat: This guide may describe UI and REST capabilities not present on every AMI recipe. Confirm :8080 fields, Save behaviour, REST endpoints, and optional auth with pixop-version and live probing on your appliance—some images expose a smaller UI and API surface, and not every parameter hot-applies at runtime.
Two configuration planes
| Plane | Where it lives | Typical operator changes | Takes effect |
|---|---|---|---|
| Picture processing | Management UI / REST API; saved configuration stored on the appliance | Restoration depth, ITM, grain, PostFX, runtime disable flags | Many fields apply immediately via PUT /v1/params/runtime; durable changes need Save or POST /v1/params/save |
| Encoder / packaging | /etc/pixop-live/nvencc.args | Output resolution, --output-csp, --colormatrix / transfer for encoded stream, bitrate, optional pre-Pixop --vpp-yadif | After pixopctl restart (SRT ingest/egress stay up) |
When Pixop LIVE restarts, it loads previously saved picture settings, if any. These settings take precedence over the corresponding appliance defaults. On a new deployment, no user customizations may have been saved yet.
Important: Adjusting picture processing does not automatically change encoder VUI metadata or HEVC HDR signalling. If the enhanced image looks correct on a reference display but downstream reports wrong HDR/SDR flags, align nvencc.args with the workflow—picture-side ITM and encoder-side signalling are related but not the same knob.
What the pipeline does (conceptual)
Incoming MPEG-TS is decoded, optionally passed through pre-Pixop YADIF when enabled in nvencc.args (--vpp-yadif mode=bob), then through --vpp-resize pixop-live. The Pixop stage can include:
| Area | Role (high level) | Persistence class |
|---|---|---|
| Restoration / upscaling | AI restoration and super-resolution; depth modes include AUTO, FULL, and reduced strengths (e.g. two-thirds) | Restoration depth and quality presets are startup settings loaded at restart; on/off toggles may be runtime |
| Deinterlace | DNN deinterlace on progressive frames vs optional upstream YADIF bob in nvencc.args—do not enable both blindly | DNN path: runtime disable; deinterlace model choice: startup |
| SDR→HDR / ITM | Inverse tone mapping algorithms, saturation and knee controls, optional auto-peak shaping, input/output HDR nits | Mostly runtime; toggling SDR→HDR upconversion is only accepted when the pipeline is paused |
| Color mapping | Input/output matrix, primaries, transfer (TRC), range, input clamping, HDR passthrough (auto / on / off) | Startup in OpenAPI; GET /v1/params shows resolved signalling; Save stores configured intent (AUTO may remain AUTO) |
| Grain | Film-grain strength, size, mono/RGB weights | Runtime |
| Post-processing (PostFX) | Final look: clarity, tone, contrast, saturation, temperature/tint, RGB gain | Runtime |
Not every field in the OpenAPI document is exposed in every shipped remote-control UI build, and licenses can gate IO or feature sets. Consult the API reference for your installed appliance version—do not assume fields from a newer engineering doc exist on an older AMI.
Avoid pasting full saved parameter exports, license paths, or internal preset identifiers into public tickets. pixop-pack-config produces a sanitized tarball of /etc/pixop-live only—it does not include saved picture-processing settings. Keep private parameter backups in your change-control process; sanitized packs help support compare host config, not substitute picture rollback.
Runtime vs persisted parameters
The REST surface (default base http://<appliance>:8080/v1) distinguishes live filter state, runtime patches, and disk persistence:
| Endpoint | Purpose |
|---|---|
GET /v1/params | Current effective parameters from the running filter (resolved color where applicable) |
PUT /v1/params/runtime | Merge-patch runtime subtree; applies immediately when validation passes |
GET /v1/params/persisted | Last saved on-disk snapshot |
PUT /v1/params/persisted | Write a full persisted parameter document to disk (startup fields)—does not by itself redefine live runtime the way runtime PUT does |
POST /v1/params/save | Persist configured intent from the running filter (not a raw copy of resolved GET /v1/params) |
Saving configuration: Picture adjustments made in the UI take effect on the running stream. Select Save to disk to retain approved changes across restarts. Before an appliance upgrade or rollback, back up your saved settings and follow Configuration change control to verify compatibility.
Some picture settings apply immediately, whereas startup-only settings take effect after a controlled Pixop restart. The UI and REST API expose only the controls supported by your installed build.
What the UI does
- On connect, loads current effective settings from the device (
GET /v1/params) into the controls. - Slider and checkbox changes send runtime updates (
PUT /v1/params/runtime) so you can preview adjustments on air. - Save to disk persists configured intent (
POST /v1/params/save); Load from disk reads the saved snapshot (GET /v1/params/persisted) into the UI only—it does not replace live output until you apply or adjust controls.
If a startup field (e.g. restoration depth) is not on your build’s page, it stays at values from nvencc.args or your last saved on-disk settings until you change it through support workflows or PUT /v1/params/persisted with a validated full document.
Safe image review and commissioning
Broadcast commissioning should be signal-aware, not “turn on HDR and hope.”
- Document the chain: source mastering (SDR gamma vs PQ vs HLG), whether the encoder VUI in
nvencc.argsmatches the plant, and how the mastering monitor is calibrated (SDR reference vs HDR display with correct EOTF). - Use repeatable content: fixed test clips or known on-air scenes with skin tones, speculars, and shadows—not one-off sliders judged on a single frame.
- Separate stages: judge pre-Pixop deinterlace (if any), DNN restoration, ITM, and PostFX in isolation where possible; change one control at a time in the secured UI.
- Do not over-promise: SDR→HDR and ITM improve appearance when input assumptions and output signalling align; mismatched input metadata or wrong monitor path can look worse than conservative SDR passthrough.
- Capture baseline before changes: UI screenshots if your process allows, a private backup of
/var/lib/pixop-live/parameters/params.json, and optionallypixop-pack-config(sanitized/etc/pixop-liveonly) for host-side comparison.
Operator workflow (on-air discipline)
- Open
http://<appliance-ip>:8080only from management networks (not the public internet). - Confirm ingest is healthy (
pixopctl health, frame counters in monitoring and health signals). - Capture baseline (
pixop-pack-configor documented screenshots). - Adjust one runtime control; watch program output and GPU/frame metrics; for SDR→HDR enable/disable, pause the pipeline first if the API requires it.
- When the look is approved, click Save to disk; record the save in your change log (include a backup of
/var/lib/pixop-live/parameters/params.jsonwhen your process requires it). - Avoid unplanned
pixopctl restartduring critical air time; restarts are fornvencc.argsand image updates, not routine grain tweaks. - Rollback: restore a known-good
/var/lib/pixop-live/parameters/params.jsonfrom backup; ensure ownership allows the container user (host checks use UID 1001 write probes under/var/lib/pixop-live/parameters). Restart Pixop LIVE if startup fields changed or the process must reload file state. Do not hand-edit JSON on production without a maintenance window and a verified backup.
For encoder bitrate, resolution, or HLG/PQ signalling changes, follow Configuration change control and pixopctl restart—outside this page’s runtime PUT path.
GUI vs REST and security
| Approach | When to use |
|---|---|
| Web UI | Interactive shading, operator Save/Load, comparison viewing |
| REST | Automation, integration with orchestration, CI-style config promotion |
HTTP on port 8080 is plaintext unless you terminate TLS on a customer-operated reverse proxy. Restrict the port to trusted management CIDRs. Optional REST Basic and/or Bearer authentication may be configured in NVEnc restapi.yaml; when enabled, anonymous scrapes of /v1/metrics or params may fail—supply credentials to monitors. Do not document or assume a universal default login; configure auth per your security policy.
Troubleshooting picture issues
| Symptom | Likely causes | Checks |
|---|---|---|
| Changes lost after reboot | Never Saved; only runtime PUT | GET /v1/params/persisted; operator Save; mtime on /var/lib/pixop-live/parameters/params.json |
| Change in UI, no effect on air | Wrong plane (encoder vs picture); startup field needs restart | Compare nvencc.args vs params; pixopctl restart after encoder edits |
PUT /v1/params/runtime 400 | Validation (e.g. ITM auto-peak vs output nits); SDR→HDR while not paused | Error body; pause pipeline for SDR→HDR toggle |
| Save fails 500 | Permissions on /var/lib/pixop-live/parameters | pixop-preflight UID 1001 write probe; ownership/mode on /var/lib/pixop-live/parameters/params.json |
| Washed or clipped HDR | Input nits/ITM vs monitor; encoder signalling mismatch | Align input metadata, ITM, and nvencc.args HDR mode |
| Soft or blocky detail | Restoration disabled; GPU overload | Runtime restoration flag; GPU FAQ and metrics |
| License errors | Invalid or wrong IO policy JWT | pixop-license doctor; host JWT mode 0400, UID 1001 |
| API field “unknown” | Older build | OpenAPI on your release; upgrade path via Pixop |
If filters look wrong but metadata is “correct,” remember encoder VUI is independent of ITM—fix signalling in live output and encoding.
Related documentation
- Configuration — file layout and
nvencc.argsvsparams.json - Configuration change control — promotion, backups, change windows
- Monitoring and health signals — metrics and preflight probes
- Supported GPUs FAQ — hardware headroom and chroma limits
- pixopctl — restart and health without transport tear-down
Updated about 8 hours ago
