Add a GStreamer (moqsrc) subscriber to the media matrix#6
Conversation
moq-gst ships the moqsink/moqsrc GStreamer elements via apt
(gstreamer1.0-moq), brew, rpm, nix, and release tarballs, but the only
coverage was a gst-inspect load check in the moq repo -- nothing proved a
real pipeline moves bytes end-to-end against the other implementations.
Adds a `gst` subscriber cell. Like the C client, it downloads the latest
moq-gst prebuilt tarball, points GST_PLUGIN_PATH at it, and confirms the
plugin loads (gst-inspect) against the host's *system* GStreamer -- the
.deb/brew/tarball scenario, since the prebuilt plugin dynamic-links system
libgstreamer. The subscriber runs `moqsrc url=... broadcast=... ! filesink
location=/dev/stdout` and grabs one byte, the same "bytes moved" bar and
head -c 1 early-exit idiom as the rust subscriber (no decode). MoQ-GST is
subscribe-only for now; publishing via moqsink needs an encoder plus
request-pad muxing (a follow-up).
No moq-gst release has been cut yet, so the cell currently marks itself
broken ("no moq-gst-v* release found") and fails only its own cells, like
the Go cell -- the red is the signal. The interop itself is validated:
built from source and pointed at via the new MOQ_GST_PLUGIN_DIR override,
moqsrc reads a rust-published H.264 broadcast end-to-end. The cell flips
green automatically once the first release ships.
Wires it into CI (system gstreamer on every runner + gst in the
subscriber list), the freshness policy (moq-gst resolved at latest
release), the justfile (gst in `just full`), and the README.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 44 minutes and 49 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
✨ Finishing Touches✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Re-opens the GStreamer work after #5 was auto-marked "merged" when its stacked base (
token-interop-smoke, #4) merged — the gst commit was never actually inmain. Same single commit, now based directly onmain.Why
moq-gstships themoqsink/moqsrcGStreamer elements via apt (gstreamer1.0-moq), brew, rpm, nix, and release tarballs — but the only coverage was agst-inspectload check. Nothing proved a real pipeline moves bytes end-to-end against the other implementations.What
A
gstsubscriber cell. Like the C client, it downloads the latestmoq-gsttarball, pointsGST_PLUGIN_PATHat it, confirms the plugin loads (gst-inspect) against the host's system GStreamer, then runs:and grabs one byte — the same "did a frame's bytes arrive" bar and
head -c 1early-exit idiom as the rust subscriber (no decode). Subscribe-only for now; publishing viamoqsinkneeds an encoder + request-pad muxing (a follow-up).Current state: red, on purpose
No
moq-gstrelease has been cut yet (nomoq-gst-v*tag), so there's nothing to install and the cell reportsno moq-gst-v* release found— failing only its own cells, like the Go cell. That red is the signal. The interop itself is validated locally: built from source (cargo build -p moq-gst) and pointed at via the newMOQ_GST_PLUGIN_DIRoverride,moqsrcreads a rust-published H.264 broadcast end-to-end (rust -> gstPASS), with the negative control and broken-channel paths confirmed too. The cell greens automatically once the first release ships.Wiring
gstadded to the subscriber list.smoke.shresolves the newestmoq-gst-v*release (never pinned).gstadded tojust full.MOQ_GST_PLUGIN_DIRpoints the cell at a localcargo build -p moq-gstoutput.shellcheck clean; actionlint clean.
🤖 Generated with Claude Code