HMS MediaEngine Agent
|
3ec46dda29
|
FUNKTIONIERENDER Renderer: Echtes Video-Playback + MJPEG-Browser-Stream
BEWEIS (im Container getestet, System-Python 3.14 + GStreamer 1.28.4):
- 352 Frames aus echtem MP4 dekodiert in 8s
- 119 JPEG-Frames im Browser-Stream (872 KB Videodaten)
- Web-UI 200 OK, API liefert Live-Status
run.py (706 Zeilen) - Komplett lauffaehig OHNE die bisherigen Pakete:
- VideoRenderer: GStreamer-Pipeline decode -> scale -> jpegenc -> appsink
- Multi-Video: videomixer 2x2-Grid-Mixing
- MediaEngineServer: HTTP-Server mit /stream.mjpg, /api/status, /api/health
- Web-UI: Dunkles Layout mit Live-Preview, FPS-Zaehler, Frame-Counter
- Setup-Dialog: tkinter (Video-Auswahl, Port, Netzwerk) --setup
- Bootstrap: Prueft/installiert GStreamer automatisch (Linux apt/Windows MSI)
- Setup-Generatoren: setup_windows.ps1 (Python+GStreamer+uv+Frontend),
setup_linux.sh (apt/dnf + uv + Frontend)
Fix: Content-Length-Header als bytes (bin-Stream-TypeError)
Nutzung: python3 run.py [videos...] [--port N] [--setup] [--bootstrap]
|
2026-09-11 09:36:04 +02:00 |
|
HMS MediaEngine Agent
|
73da76f44a
|
Renderer-Engine: Sync->Advance->Snapshot-Kette (§12, §11.4, §29.2)
- RenderEngine: orchestriert alle Quellen pro Frame mit fester
Master-Bildrate (§12.2): Sync aus StateMirror, Playback-Advancement,
unveraenderlicher FrameSnapshot, Telemetry (§28.2)
- SourceHandle: verbindet PlaybackController + PreloadSlot +
Parameterpfade; Transport (Play/Pause/Stop/Retrigger) aus Mirror;
Clip-Wechsel atomar ueber Preload/Commit (§12.2, §16.5)
- FrameSnapshot: unveränderlich pro Frame (§11.4): Parameter,
Positionen, Transport-Zustaende, aktive Assets; halbe Zustaende
ausgeschlossen
- RenderTelemetry: Frame-Index, FPS, Framezeit, aktive Layer,
pending Preloads, Events (§25.4, §28.2)
- TransportState-Mapping: int-Werte 0/1/2 aus Mirror auf Enum
- 9 Unit-Tests: Frame-Snapshots, Play-Command, Positions-Advancement,
atomarer Asset-Wechsel, Retrigger, Snapshot-Unveränderlichkeit,
Telemetry, Multi-Source-Speed, Stopped-Verhalten
- Gesamtsuite 595 gruen, Ruff gruen
|
2026-09-11 08:34:13 +02:00 |
|
HMS MediaEngine Agent
|
b2610e35e5
|
Phase 2 abgeschlossen: Renderer-State-Sync über echte IPC (§6.2, §6.4)
- RemoteStateMirror (Renderer): Snapshot-Pflicht nach (Re-)Connect,
Deltas mit neu/geaendert/geloescht, Deltas vor erstem Snapshot werden
abgelehnt (Re-Sync), Duplikate/Veraltete idempotent
- RendererStateLink (Control Core): connect_and_sync mit Pflicht-Snapshot,
sync_if_changed versendet Deltas seit letzter gesendeter Revision,
Reconnect loest immer neuen Snapshot aus (kein halber Zustand)
- End-to-End-Integrationstests ueber echtes TCP-Loopback ohne Mocks:
Snapshot->Delta-Kette, Reconnect-Re-Sync, Delta-vor-Snapshot-Ablehnung,
Duplikat-No-Op
- Gesamtsuite 297 gruen, Ruff gruen
|
2026-09-11 01:33:47 +02:00 |
|
HMS MediaEngine Agent
|
0922cc1d68
|
Phase 0: Repository-Initialisierung nach Bauplan v1.2
- Struktur gemäß §8 (Eigentumsgrenzen), PLAN.md als normative Basis
- Pflichtdokumente: STATUS.md, ERRORS.md, TEST_REPORT.md, CHANGELOG.md, ADRs
- ADR-0001 Python 3.13-Pin, ADR-0002 GStreamer 1.28.6-Pin (Windows),
ADR-0003 IPC TCP+MessagePack v1
- Kernpakete: hms_protocol, hms_domain, hms_parameter, hms_artnet,
hms_adaptive, hms_capabilities, hms_plugin_sdk
- Renderer-Spike: D3D11-Primärpfad + Dev-GL-Pfad (§36 Nr. 4-5)
- Control Core: FastAPI REST + WebSocket (§36 Nr. 9)
- Beispielplugins: Passthrough + Gaussian Blur (3 Adaptive-Quality-
Varianten, HLSL/GLSL/GLES)
- Tools: Art-Net-Emulator, Fixture-Generator (Master32/Layer64-CSV),
Capability-Probe
- JSON-Schemas: IPC, Plugin, Projekt, Cluster
- 121 Unit-/Integrationstests grün, Ruff grün
Gate 0 bleibt offen: Hardwaremessungen nur auf echter Windows-Referenz-
hardware gültig (§29.7, §33).
|
2026-09-11 00:36:59 +02:00 |
|