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

PlaneWhere it livesTypical operator changesTakes effect
Picture processingManagement UI / REST API; saved configuration stored on the applianceRestoration depth, ITM, grain, PostFX, runtime disable flagsMany fields apply immediately via PUT /v1/params/runtime; durable changes need Save or POST /v1/params/save
Encoder / packaging/etc/pixop-live/nvencc.argsOutput resolution, --output-csp, --colormatrix / transfer for encoded stream, bitrate, optional pre-Pixop --vpp-yadifAfter 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:

AreaRole (high level)Persistence class
Restoration / upscalingAI 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
DeinterlaceDNN deinterlace on progressive frames vs optional upstream YADIF bob in nvencc.args—do not enable both blindlyDNN path: runtime disable; deinterlace model choice: startup
SDR→HDR / ITMInverse tone mapping algorithms, saturation and knee controls, optional auto-peak shaping, input/output HDR nitsMostly runtime; toggling SDR→HDR upconversion is only accepted when the pipeline is paused
Color mappingInput/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)
GrainFilm-grain strength, size, mono/RGB weightsRuntime
Post-processing (PostFX)Final look: clarity, tone, contrast, saturation, temperature/tint, RGB gainRuntime

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:

EndpointPurpose
GET /v1/paramsCurrent effective parameters from the running filter (resolved color where applicable)
PUT /v1/params/runtimeMerge-patch runtime subtree; applies immediately when validation passes
GET /v1/params/persistedLast saved on-disk snapshot
PUT /v1/params/persistedWrite a full persisted parameter document to disk (startup fields)—does not by itself redefine live runtime the way runtime PUT does
POST /v1/params/savePersist 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.”

  1. Document the chain: source mastering (SDR gamma vs PQ vs HLG), whether the encoder VUI in nvencc.args matches the plant, and how the mastering monitor is calibrated (SDR reference vs HDR display with correct EOTF).
  2. 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.
  3. 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.
  4. 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.
  5. Capture baseline before changes: UI screenshots if your process allows, a private backup of /var/lib/pixop-live/parameters/params.json, and optionally pixop-pack-config (sanitized /etc/pixop-live only) for host-side comparison.

Operator workflow (on-air discipline)

  1. Open http://<appliance-ip>:8080 only from management networks (not the public internet).
  2. Confirm ingest is healthy (pixopctl health, frame counters in monitoring and health signals).
  3. Capture baseline (pixop-pack-config or documented screenshots).
  4. 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.
  5. 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.json when your process requires it).
  6. Avoid unplanned pixopctl restart during critical air time; restarts are for nvencc.args and image updates, not routine grain tweaks.
  7. Rollback: restore a known-good /var/lib/pixop-live/parameters/params.json from 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

ApproachWhen to use
Web UIInteractive shading, operator Save/Load, comparison viewing
RESTAutomation, 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

SymptomLikely causesChecks
Changes lost after rebootNever Saved; only runtime PUTGET /v1/params/persisted; operator Save; mtime on /var/lib/pixop-live/parameters/params.json
Change in UI, no effect on airWrong plane (encoder vs picture); startup field needs restartCompare nvencc.args vs params; pixopctl restart after encoder edits
PUT /v1/params/runtime 400Validation (e.g. ITM auto-peak vs output nits); SDR→HDR while not pausedError body; pause pipeline for SDR→HDR toggle
Save fails 500Permissions on /var/lib/pixop-live/parameterspixop-preflight UID 1001 write probe; ownership/mode on /var/lib/pixop-live/parameters/params.json
Washed or clipped HDRInput nits/ITM vs monitor; encoder signalling mismatchAlign input metadata, ITM, and nvencc.args HDR mode
Soft or blocky detailRestoration disabled; GPU overloadRuntime restoration flag; GPU FAQ and metrics
License errorsInvalid or wrong IO policy JWTpixop-license doctor; host JWT mode 0400, UID 1001
API field “unknown”Older buildOpenAPI 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


Did this page help you?