Files
hms-mediaengine/docs/plugin-sdk/adaptive-quality.md
T
HMS MediaEngine Agent 985f156525 Phase 3: Plugin-SDK-Dokumentation (docs/plugin-sdk/, 7 Dateien)
- README: Pluginarten, Verzeichnisstruktur, Quick Start (§14.1/§14.2)
- manifest-reference: komplette plugin.json-Feldreferenz mit
  Validator-Regeln und ZIP-Sicherheit (§27.2)
- shader-contract: Standard-Uniformsatz je Backend, cbuffer-Layout,
  16-Byte-Alignment, Multipass, AQ-Bindung, GLES-Einschraenkungen (§14.4)
- parameters-and-dmx: dmx_slots max 8 (§14.7), Kurven, 16-Bit-Werte,
  gemeinsamer Effektvertrag mix/blend/quality (§14.8)
- lifecycle: Zustandsmaschine, Quarantaene, Show-Lock (§14.5/§26.3)
- adaptive-quality: Varianten, Semantik-Erhalt, Kompilierung vor
  Aktivierung, Framegrenzen-Wechsel (§5.2)
- example-walkthrough: komplettes Filter-Plugin anhand vignette
- 1199 Zeilen, Deutsch, alle Beispiele aus echten Repo-Dateien
2026-09-11 01:57:30 +02:00

3.7 KiB
Raw Blame History

Adaptive Quality

Dieses Dokument beschreibt Adaptive Quality (AQ) für Plugins. Grundlage sind PLAN.md §14.3 (Beispielmanifest), §15.3 (Bedien- und Presetpflichten), §15.4 (Abnahme) und das JSON-Schema schemas/plugin/plugin_manifest_v1.schema.json.

Zweck

Adaptive Quality erlaubt es einem Effekt, die interne Rechenlast an die verfügbare Hardware anzupassen, ohne die semantische Wirkung der Parameter zu verändern. Die Engine wählt automatisch eine Variante oder der Bediener setzt eine feste Qualitätsstufe (Quality: Auto oder fest, PLAN.md §14.8).

Varianten-Deklaration

AQ-Varianten werden im Manifest unter adaptive_quality deklariert:

"adaptive_quality": {
  "default": "auto",
  "variants": [
    {"id": "low", "internal_scale": 0.25, "samples": 5},
    {"id": "medium", "internal_scale": 0.5, "samples": 9},
    {"id": "high", "internal_scale": 1.0, "samples": 17}
  ],
  "transition_ms": 180,
  "semantic_parameters_unchanged": ["radius", "mix"]
}

Felder

Feld Typ Pflicht Beschreibung
default string ja Standard-Variante, z. B. auto
variants array, minItems 1 ja Liste der Varianten
transition_ms number, minimum 0 nein Übergangszeit in Millisekunden
semantic_parameters_unchanged array of string nein Parameter, deren Semantik beim Wechsel unverändert bleibt

Jede Variante ist ein Objekt mit:

Feld Typ Pflicht Beschreibung
id string ja Varianten-ID, z. B. low, medium, high
internal_scale number, exclusiveMinimum 0, maximum 1 nein Interne Auflösungsskala
samples integer, minimum 1 nein Sample-Anzahl

semantic_parameters_unchanged

Dieses Feld listet Parameter, deren semantische Bedeutung beim Wechsel der Qualitätsstufe unverändert bleibt. Ein Parameterwert wie radius oder mix muss auf allen Varianten dasselbe visuelle Ergebnis liefern; nur die interne Abtastung (Auflösung, Sample-Anzahl) darf variieren (PLAN.md §15.3).

Kompilierung vor Aktivierung

Die Validierung verlangt vollständige, vorab kompilierbare Adaptive-Quality-Varianten (PLAN.md §14.5). Jede deklarierte Variante muss vor der Aktivierung kompilierbar sein. Ein Plugin, dessen Varianten nicht vollständig kompilierbar sind, wird nicht aktiviert.

Wechsel nur an der Framegrenze

Der Wechsel der Qualitätsstufe erfolgt atomar an einer Framegrenze (PLAN.md §14.8). Verschieben, Bypass, Kopieren und Presetwechsel müssen ebenfalls atomar an einer Framegrenze erfolgen. Dadurch wird verhindert, dass ein halber Frame mit gemischten Qualitätsstufen gerendert wird.

Beispiel: Vignette

Das eingebaute Vignette-Plugin deklariert drei Varianten, die alle dieselbe interne Auflösung und Sample-Anzahl verwenden (ein GPU-Pass, PLAN.md §15.2):

"adaptive_quality": {
  "default": "auto",
  "variants": [
    {"id": "low", "internal_scale": 1.0, "samples": 1},
    {"id": "medium", "internal_scale": 1.0, "samples": 1},
    {"id": "high", "internal_scale": 1.0, "samples": 1}
  ],
  "transition_ms": 180,
  "semantic_parameters_unchanged": ["mix"]
}

Abnahme (§15.4)

Für jedes eingebaute Plugin sind verpflichtend:

  • HLSL-Implementierung für D3D11 sowie GLSL/GLES-Varianten gemäß Capability;
  • Golden Images bei mindestens drei Parametersätzen;
  • zeitabhängige Tests mit festem Seed und festem Frameindex;
  • Alpha-/Premultiplication-Test und definierter Farbraum;
  • Test für Extremwerte, NaN/Infinity und Auflösung 1 × 1;
  • atomarer Bypass-, Preset- und Quality-Wechsel;
  • dokumentierte GPU-Zeit bei 1080p und, sofern Tier erlaubt, 4K;
  • Layer-, Adjustment-/Group- und Master-Scope-Test;
  • P1P8-/G1G8-Kanalbelegung im generierten Fixture-Handbuch.