96 lines
3.6 KiB
Markdown
96 lines
3.6 KiB
Markdown
|
|
# HMS MediaEngine
|
|||
|
|
|
|||
|
|
**Arbeitstitel** – der Produktname kann später ohne technische Auswirkung geändert werden.
|
|||
|
|
|
|||
|
|
Modularer Medienserver, VJ-System und generativer Licht-/Pixeleffekt-Server.
|
|||
|
|
|
|||
|
|
- **Primärplattform:** Windows 11 x64, portabel ohne Installation
|
|||
|
|
- **Weitere Zielplattformen:** Linux x64, Raspberry Pi 5 / Linux ARM64
|
|||
|
|
- **Steuerung:** lokale Webanwendung (Browser), Art-Net/DMX, spätere Timeline/Audio/KI
|
|||
|
|
|
|||
|
|
## Leitsatz
|
|||
|
|
|
|||
|
|
> **Python steuert. Native Bibliotheken decodieren. Die GPU rendert. Der Browser bedient.**
|
|||
|
|
|
|||
|
|
## Projektstatus
|
|||
|
|
|
|||
|
|
Das Projekt befindet sich in **Phase 0 – technischer Spike und Go/No-Go**.
|
|||
|
|
|
|||
|
|
Aktueller Stand, Gates und nächste Aufgaben: [`STATUS.md`](STATUS.md)
|
|||
|
|
Fehlerverfolgung: [`ERRORS.md`](ERRORS.md)
|
|||
|
|
Messergebnisse: [`TEST_REPORT.md`](TEST_REPORT.md)
|
|||
|
|
Bauplan (normativ): [`PLAN.md`](PLAN.md)
|
|||
|
|
|
|||
|
|
## Repository-Struktur (Eigentumsgrenzen)
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
/
|
|||
|
|
├─ apps/ launcher, control_server, renderer, web
|
|||
|
|
├─ native/ render_bridge (Rust oder C++, Entscheidung per ADR)
|
|||
|
|
├─ packages/ domain, protocol, parameter_engine, render_backend,
|
|||
|
|
│ capabilities, adaptive_quality, plugin_sdk, artnet,
|
|||
|
|
│ cluster, content_sync, timeline, audio_analysis,
|
|||
|
|
│ persistence
|
|||
|
|
├─ plugins/ builtin (generators, filters, transitions, outputs), examples
|
|||
|
|
├─ schemas/ project, plugin, ipc, cluster, api
|
|||
|
|
├─ fixture_profiles/ master32, layer64
|
|||
|
|
├─ tests/ unit, integration, rendering, cluster, visual,
|
|||
|
|
│ performance, portability, e2e
|
|||
|
|
├─ tools/ media_probe, shader_validate, artnet_emulator,
|
|||
|
|
│ capability_probe, cluster_test_node, fixture_generator
|
|||
|
|
├─ build/ windows, linux, raspberry_pi
|
|||
|
|
└─ docs/ architecture, adr, plugin-sdk, api, fixture,
|
|||
|
|
performance, operator
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Code darf nicht beliebig zwischen Paketen quer importiert werden.
|
|||
|
|
|
|||
|
|
## Entwicklung
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Python-Umgebung
|
|||
|
|
uv sync
|
|||
|
|
|
|||
|
|
# Tests
|
|||
|
|
uv run pytest
|
|||
|
|
|
|||
|
|
# Lint + Typprüfung
|
|||
|
|
uv run ruff check .
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Frontend (ab Phase 5): `pnpm` mit Lockfile, Vite-Build, siehe `apps/web`.
|
|||
|
|
|
|||
|
|
## Phasenmodell
|
|||
|
|
|
|||
|
|
Die Entwicklung folgt strikt dem Phasenmodell aus `PLAN.md` Abschnitt 31.
|
|||
|
|
Jede Phase endet mit einem Gate; **keine neue Phase ohne grünes Gate.**
|
|||
|
|
|
|||
|
|
| Phase | Inhalt | Gate
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| 0 | Technischer Spike, Machbarkeitsnachweis, ADRs | Gate 0: D3D11-HW-Decode, GPU-Compositing, Adaptive Quality, Art-Net-Latenz, portable Auslieferung reproduzierbar grün
|
|||
|
|
| 1 | Fundament: Supervisor, Control Core, Renderer, IPC, Node-Identität, Discovery, Paarung | Gate 1
|
|||
|
|
| 2 | Medien-, Layer-, Basissync-Engine | Gate 2
|
|||
|
|
| 3 | Plugin-SDK, Starterpaket Generatoren + Filter | Gate 3
|
|||
|
|
| 4 | Art-Net-Fixtures Master32/Layer64 | Gate 4
|
|||
|
|
| 5 | Vollständige Browser-Liveoberfläche | Gate 5 / V1.0-Kernrelease
|
|||
|
|
| 6+ | Cue/Timeline, Audio, Mapping, Pixel-Ausgabe, KI, Pi 5, Härtung | eigene Gates
|
|||
|
|
|
|||
|
|
## Verbindliche Regeln (Auszug)
|
|||
|
|
|
|||
|
|
- Keine Pixelverarbeitung in Python-Schleifen.
|
|||
|
|
- Kein CPU-Readback im normalen HDMI-Renderpfad (Windows: D3D11Memory durchgängig).
|
|||
|
|
- Kein Mock als fertige Funktion gemeldet; Hardwaretests nur auf echter Hardware.
|
|||
|
|
- Jede Architekturabweichung braucht ein ADR und Freigabe.
|
|||
|
|
- Projektschema versioniert, Migrationen getestet.
|
|||
|
|
|
|||
|
|
## Dokumentation
|
|||
|
|
|
|||
|
|
- Architektur: `docs/architecture/`
|
|||
|
|
- ADRs: `docs/adr/` (Vorlage: `docs/adr/_template.md`)
|
|||
|
|
- Plugin-SDK: `docs/plugin-sdk/` (ab Phase 3)
|
|||
|
|
- Fixture-Handbücher: `docs/fixture/` (ab Phase 4)
|
|||
|
|
|
|||
|
|
## Lizenz
|
|||
|
|
|
|||
|
|
TBD – wird mit dem ersten Release entschieden (SBOM und Lizenzverzeichnis sind Teil der Release-Anforderungen, PLAN.md Abschnitt 30).
|