Repository navigation
Build egress images on prod plus only the gst-plugins-rs plugins egress uses - #1445
Merged
pksgit merged 2 commits intoOct 15, 2026
Conversation
prod-rs is prod plus the full gst-plugins-rs build, about 300 plugins in total. Egress uses three Rust elements: rtpav1depay (rsrtp), dav1ddec (dav1d) and isofmp4mux (isobmff, for fmp4 output). The rs build stage now deletes every gst-plugins-rs file except the plugins that provide an element listed in build/gstreamer/egress-rs-elements. The build fails if a listed element is missing, both in the build stage and in the final image. prod-rs keeps prod as its base, so its first three layers stay the same and C elements need no entry. Bumps .gst-version to 1.28.7-2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
AV-sync stats summary: view in run #38518124449 |
biglittlebigben
left a comment
Contributor
There was a problem hiding this comment.
I think we should leave the gstreamer:prod-rs image alone and remove the files from the egress image only at build time
Contributor
To actually prevent the extra data from being downloaded and then deleted in the next layer, we should start the egress build from the gstreamer:prod image and manually copy the plugins we need from the -rs image. |
…ss uses The egress and test images were built on prod-rs, which is prod plus the full gst-plugins-rs build. Egress uses three Rust elements: rtpav1depay (rsrtp), dav1ddec (dav1d) and isofmp4mux (isobmff, for fmp4 output). Both images now build on prod. A build-only stage on prod-rs copies just the plugin files providing the elements listed in build/egress/egress-rs-elements, which land in the final image as one small layer. The build fails if a listed element is missing from prod-rs or doesn't load in the final image. C elements need no entry, since all C plugins are in prod. This replaces trimming prod-rs itself, so build/gstreamer and .gst-version match main again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
@biglittlebigben , let me know if you have any more comments. Thanks |
biglittlebigben
approved these changes
Oct 15, 2026
pksgit
deleted the
pradeepsharma/cs-2110-remove-unused-gstreamer-modules-from-egress-image
branch
October 15, 2026 23:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The egress and test images were built on
prod-rs, which isprodplus the full gst-plugins-rs build (about 50 Rust plugins). Egress uses three Rust elements:rtpav1depay(rsrtp),dav1ddec(dav1d) andisofmp4mux(isobmff, for fmp4 output in #1419).Both images now build on
prod. A build-only stage onprod-rscopies just the plugin files providing the elements listed inbuild/egress/egress-rs-elements, which land in the final image as one small layer. The build fails if a listed element is missing fromprod-rsor doesn't load in the final image. C elements need no entry, since all C plugins are inprod.prodprod-rs(old base)prod-rsSo the GStreamer part of the egress image goes from
prod-rstoprod+ 2.3 MB, about 62 MB less to download.Adding a Rust element: add it to
build/egress/egress-rs-elements. No GStreamer image rebuild is needed:prod-rsstill has every Rust plugin to copy from.Verified (arm64, locally): built both images and ran the integration groups on the test image.
file-room,file-track(including AV1),file-media,stream,segments,imagesandedgepassed.multifailed inWebandParticipantCompositewhile reading back the HLS manifest, identically on images built on unmodifiedprod-rsand onprod; it needs cloud storage this local setup doesn't have.🤖 Generated with Claude Code