gstreamer: add VP8 and VP9 codec support#1632
Conversation
H.264, H.265, AV1, AAC, and Opus were already wired into the GStreamer plugin, but VP8 and VP9 were missing even though moq-mux already has the importers. This plumbs the GStreamer caps through to them. moqsink: accept video/x-vp8 and video/x-vp9 pads and map them to FramedFormat::Vp8 / Vp9. Like AV1, they initialize with an empty buffer since VP8/VP9 carry no out-of-band config; the track is created lazily from the first keyframe's inline dimensions. moqsrc: emit video/x-vp8 / video/x-vp9 caps for VP8/VP9 catalog entries. No codec_data is attached since the decoders read configuration inline. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
WalkthroughThis PR adds VP8 and VP9 video codec support to the moq-gst GStreamer elements. The sink element's capability template was extended to advertise 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ 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 |
Summary
Adds VP8 and VP9 support to the GStreamer plugin (
moqsink/moqsrc). H.264, H.265, AV1, AAC, and Opus were already wired up, and the VP8/VP9 importers already exist inmoq-mux, so this is purely plumbing the GStreamer caps through to them.Changes
video/x-vp8andvideo/x-vp9sink pads and map them toFramedFormat::Vp8/Vp9. Like AV1, they initialize with an empty buffer since VP8/VP9 carry no out-of-band config; the track is created lazily from the first keyframe's inline dimensions.video/x-vp8/video/x-vp9caps for VP8/VP9 catalog entries. Nocodec_datais attached since the decoders parse profile/bit-depth from the bitstream itself.doc/bin/gstreamer.md(per the Cross-Package Sync rule).Reviewer notes
codec_datafor VP9, so the catalog'svpcCconfig record isn't propagated into the GStreamer caps.vp9dec/decodebin3parse the needed config from the bitstream, so this works in practice. If strict caps negotiation is later desired, we could translatevpcC→ theprofile/bit-depthcaps fields.Test plan
cargo build -p moq-gst— cleancargo clippy -p moq-gst(via nix to match CI toolchain) — clean, no warnings(Written by Claude)