Repository navigation
Some features to the Fluster Dockerfile: 26.04, reference decoders and libva-fake-driver - #408
rgonzalezfluendo wants to merge 3 commits into
Conversation
===== State of the union ----------------- * Encoders: adaptative preset for nv and x264: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11092 * v4l2src: add capture timestamp (https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10211) * No ORC was included * Project has a big dependency in sdroge * More Rust rewrites will come (parsers and VA decoders are WIP) Unify GstAnalytics ------------------- * New document with Analytics Metadata Relation Conventions: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/subprojects/gst-docs/markdown/additional/design/machine-learning-analytics.md#analytics-metadata-relation-conventions * Intel DLStreamer is updating to use last metadatas, Nvidia DeepSeek and NNStreamer not Write once, run everywhere ----------------------- * Nvidia DeepSeek, Intel DLStreamer, Qualcom XXXXX ([ ] to gstnotes) * NNStreamer is hardware agnostics * onnxinference: CUDA, ROCm, DirectML (Windows), Vitis AI/VSI (NPUs), ... In MRs: CoreML (Apple), OpenVINO (Intel), NNAPI (Android * [ ] Share pipeline with cascade * Zero copy working for DX12 and HiP The quest for pyhton analitics -------------------- * About https://github.com/collabora/gst-python-ml * Easily integrate any model on any framework) Other * MSE RiiR: https://gitlab.freedesktop.org/slomo/gstmse-rs * Vulkan for embedded by Nicolas in Linux Plumbers (YouTube link) * full of people for gst-audit * Nirbheek Chauhan linkedin points to https://www.coram.ai/ DAY2 ==== Intel ----- TODO check https://github.com/open-edge-platform/edge-ai-libraries/blob/main/tools/visual-pipeline-and-platform-evaluation-tool/docs/user-guide/_assets/ViPPET-UI-Vision-Props-light.png VA and Vulkan (Igalia) ----------------------- MR !11772 for interoperability in Vulkan Ringbuffer: V4l2 and Pipewire ------------------------------- Company doing cameras for railways MR in Pipewire will be created Other: * https://gitlab.freedesktop.org/thiblahute/gstreamer2 * Good feedback from * Fulfilling a Childhood Dream: Video Streaming for Remotely Controlling a Train * Exploring GStreamer as a media backend for game engines * End-to-end video quality measurement on a lossy WebRTC/RTP path HACKFEST ======== * reference decoders in list -> fluendo/fluster#405 * issue with multiple devices: fluendo/fluster#407 * skip profile fluendo/fluster#406 * ubuntu 26.04, ref decoders and libva-fake-driver fluendo/fluster#408 * https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12692: Fix ./builddir/subprojects/gst-plugins-base/tests/examples/playback/playback-test * mpeghparse https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3302/diffs
Ubuntu 26.04 ships the default `ubuntu` user at UID 1000, so the image build failed at user creation because the removal step was gated to 24.04. The same version checks also selected the wrong Python package path (26.04 is PEP 668 externally managed, so `pip3 install --upgrade` fails) and skipped the non-root meson install. Replace the hard-coded 24.04 checks with `dpkg --compare-versions` so 24.04 and newer take the modern path, and make 26.04 the default base. On 26.04, install the distro `nvidia-vaapi-driver` instead of building it from source, and use libvpl (oneVPL) instead of the removed libmfx when building FFmpeg or GStreamer from source. Also update the wrapper script and documentation to list 26.04.
Add a BUILD_REFERENCE_DECODERS build arg, exposed as the --build-reference-decoders wrapper flag, which downloads the ISO reference software and builds the reference decoders with meson. The ISO licence agreement is accepted automatically during the build. Stop excluding build/ in .dockerignore so the download and build scripts are present in the image, and pass -D_DEFAULT_SOURCE to meson because GCC 15 in Ubuntu 26.04 rejects the implicit fileno declaration in libtsp under -std=c99.
Add a BUILD_LIBVA_FAKE_DRIVER build arg, exposed as the --build-libva-fake-driver wrapper flag, which builds the libva fake VA-API backend from https://github.com/rgonzalezfluendo/libva-fake-driver for headless testing. The revision is pinned through LIBVA_FAKE_DRIVER_VERSION. The driver is installed into LIBVA_DRIVERS_PATH so it is picked up with LIBVA_DRIVER_NAME=fake, and used together with LD_PRELOAD of the companion fake_gbm.so.
462f78f to
a0d150b
Compare
|
Tested locally (clean worktrees of base and PR head, Docker, RTX 4050) ✅ Default image (26.04) builds; user |
| *.egg-info/ | ||
| dist/ | ||
| build/ | ||
| builddir/ |
There was a problem hiding this comment.
Dropping build/ lets a local build/lib/ into the image. I put a marker in build/lib/fluster/ and found it at /usr/local/lib/python3.14/dist-packages/fluster/ in the image. Adding these fixes it (marker gone, tracked build/*.py, compat/, patches/ still copied):
build/lib/
build/bdist.*/
There was a problem hiding this comment.
The next files/directories are generated by pip3 install . --no-cache-dir --break-system-packages:
build/bdist.linux-x86_64/build/lib/fluster_conformance.egg-info/
Do you want I added in .dockerignore?
There was a problem hiding this comment.
Yes please. *.egg-info/ is already ignored (line 15), so only these two are missing:
build/lib/
build/bdist.*/
They are what pip3 install . leaves in build/ on the host, and without them a stale build/lib/ ends up installed in the image (I checked with a marker file). Tracked build/*.py, build/compat/ and build/patches/ are still copied
| && if dpkg --compare-versions "${UBUNTU_VERSION}" ge 26.04; then \ | ||
| apt-get install -y libvpl-dev; \ | ||
| else \ | ||
| apt-get install -y libmfx-dev; \ | ||
| fi \ |
There was a problem hiding this comment.
libvpl-dev is already installed by the base layer (L135, same line as in the base commit). In a 26.04 image built with the default system FFmpeg/GStreamer, where these blocks don’t run, dpkg -l libvpl-dev shows ii libvpl-dev 1:2.16.0-1. Only libmfx-dev needs the condition; the libvpl-dev branch is a no-op
rsanchez87
left a comment
There was a problem hiding this comment.
LGTM, only a couple of comments
Review commit by commit: