Files
hms-mediaengine/docs/adr/0004-renderkern-rust-gstreamer.md
T
HMS MediaEngine Agent 9536e08748 Phase 1: IPC-Verbindungsschicht + Build-first-Strategie (ADR-0008)
- ADR-0008: Build-first, gesammelte Windows-Validierung (Auftraggeber-Freigabe)
- ADR-0004 vorläufig: Rust auf GStreamer-D3D11-Elementpfad
- ADR-0005 vorläufig: Nuitka Onefolder
- hms_protocol: IpcServer/IpcClient mit Handshake (hello/welcome),
  Capabilities-Austausch, Heartbeat 500 ms bidirektional, Snapshot/Delta,
  Loopback-only-Enforcement, Re-Sync nach Reconnect, Version-Mismatch-Fehler
- 9 Integrationstests: echter TCP-Loopback, kein Mock
2026-09-11 00:50:03 +02:00

48 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ADR-0004: Nativer Renderkern Rust auf dem GStreamer-D3D11-Elementpfad
- **Status:** Vorläufig angenommen (Bestätigung oder Revision im Windows-Durchlauf)
- **Datum:** 2026-09-11
- **Phase:** ursprünglich Phase 0; wegen ADR-0008 vorgezogen
- **Bauplan:** §6.1C, §7.1, §12.6
## Entscheidung
1. Sprache des nativen Moduls: **Rust**.
2. Einbindung: **GStreamer-Plugin-Ansatz** der Rendergraph nutzt die
erprobten D3D11-Elemente (d3d11h264dec → d3d11convert → d3d11compositor →
d3d11videosink) und eigene Rust-GStreamer-Elemente für Effekt-/Shader-Pässe,
statt sofort eine komplett eigenständige Render-Bridge mit eigener
Swapchain zu bauen.
## Begründung (ohne Messdaten, deshalb vorläufig)
- D3D11Memory-Residenz ist Eigenschaft der GStreamer-Elemente; das Risiko
eigengebauten Swapchain-Compositings entfällt.
- gstreamer-rs bietet stabile Bindings; Rust liefert Gedächtnissicherheit im
nativen Pfad.
- Die Effektkette skaliert als Elementkette; der Plugin-Vertrag (§14) bleibt
vollständig gewahrt.
- Eine spätere wgpu-/eigenständige Bridge bleibt über dasselbe IPC- und
Capability-Protokoll anschließbar (§6.1C).
## Alternativen
- C++: kein Vorteil, höheres Fehlerrisiko im Speichermanagement.
- Sofortige eigenständige Bridge: mehr Kontrolle, aber hohes Risiko ohne
Hardware-Feedback (ADR-0008).
## Folgen
- Der Renderer-Prozess orchestriert Pipelines; Rust-Elemente übernehmen die
Shader-Pässe (HLSL aus dem Plugin-Vertrag).
- Rust-Kompilierung erfolgt im Windows-Durchlauf (Container ohne cargo).
## Messwerte / Nachweise
- Ausstehend. Gate-0-Messungen bestätigen das Elementpfad-Budget oder lösen
eine Revision (eigenständige D3D11-Bridge) aus ohne API-Änderung (§12.6).
## Freigabe
Vorläufig gemäß ADR-0008; endgültig nach Windows-Messung.