mpv vervangen door GStreamer als afspeel-engine #114

Merged
roelof merged 1 commit from mpv-naar-gstreamer into main 2026-08-20 13:16:55 +02:00
Owner

De speler draait nu playbin in-process via GirCore.Gst-1.0 in plaats van een los mpv-proces over een IPC-socket aan te sturen.

Belangrijkste wijzigingen

  • MpvPlaybackService vervangen door GstPlaybackService, met dezelfde IPlaybackService-contract.
  • De Authorization-header gaat mee via het source-setup-signaal (rauw g_signal_connect_data, want playbin is een plugin-element zonder eigen GObject.Signal-binding), niet via de source-property achteraf uitlezen — dat bleek te laat: gemeten tegen een lokale logging-server ging het HTTP-verzoek er al uit voordat die property-read ooit iets anders dan null teruggaf.
  • PKGBUILD, SRCINFO, README.md en CLAUDE.md bijgewerkt naar de nieuwe afhankelijkheid (gstreamer, gst-plugins-base, gst-plugins-good) en het nieuwe gedrag.

Getest

  • Volledige solution build (Debug en Release), 0 warnings/errors.
  • End-to-end tegen een echte GStreamer-installatie en een lokale HTTP-server met header-logging: Authorization-header aanwezig op zowel het normale verzoek als het Range-verzoek na een seek, correcte duur/positie-rapportage, correcte foutafhandeling.

Bekend gedragsverschil
Geen gapless meer tussen tracks (mpv had dit via --gapless-audio); niet nagebouwd omdat dat low-level signal-marshaling zou vergen voor een enkele-gebruiker muziekspeler.

De speler draait nu playbin in-process via GirCore.Gst-1.0 in plaats van een los mpv-proces over een IPC-socket aan te sturen. **Belangrijkste wijzigingen** - `MpvPlaybackService` vervangen door `GstPlaybackService`, met dezelfde `IPlaybackService`-contract. - De Authorization-header gaat mee via het `source-setup`-signaal (rauw `g_signal_connect_data`, want playbin is een plugin-element zonder eigen `GObject.Signal`-binding), niet via de `source`-property achteraf uitlezen — dat bleek te laat: gemeten tegen een lokale logging-server ging het HTTP-verzoek er al uit voordat die property-read ooit iets anders dan null teruggaf. - `PKGBUILD`, `SRCINFO`, `README.md` en `CLAUDE.md` bijgewerkt naar de nieuwe afhankelijkheid (`gstreamer`, `gst-plugins-base`, `gst-plugins-good`) en het nieuwe gedrag. **Getest** - Volledige solution build (Debug en Release), 0 warnings/errors. - End-to-end tegen een echte GStreamer-installatie en een lokale HTTP-server met header-logging: Authorization-header aanwezig op zowel het normale verzoek als het Range-verzoek na een seek, correcte duur/positie-rapportage, correcte foutafhandeling. **Bekend gedragsverschil** Geen gapless meer tussen tracks (mpv had dit via `--gapless-audio`); niet nagebouwd omdat dat low-level signal-marshaling zou vergen voor een enkele-gebruiker muziekspeler.
De speler draait nu playbin in-process via GirCore.Gst-1.0 in plaats van
een los mpv-proces over een IPC-socket aan te sturen. De Authorization-header
gaat mee via het source-setup-signaal (rauw g_signal_connect_data, omdat
playbin een plugin-element is zonder eigen GObject.Signal-binding) en niet
via de source-property achteraf uitlezen, wat te laat bleek te zijn -
gemeten tegen een lokale logging-server ging het HTTP-verzoek er al uit
voordat die property-read ooit iets anders dan null teruggaf.

PKGBUILD, SRCINFO, README en CLAUDE.md zijn bijgewerkt naar de nieuwe
afhankelijkheid (gstreamer, gst-plugins-base, gst-plugins-good) en het
nieuwe gedrag.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
roelof merged commit 8e60739d03 into main 2026-08-20 13:16:55 +02:00
roelof deleted branch mpv-naar-gstreamer 2026-08-20 13:16:55 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
KavalirOS/RockHeaven!114
No description provided.