Skip to content

[V2]Update GStreamer packages to 1.28.6 + attempt fix ARM32 - #30205

Open
commodo wants to merge 7 commits into
openwrt:masterfrom
commodo:gst1-plugins-base-arm-neon-a32
Open

[V2]Update GStreamer packages to 1.28.6 + attempt fix ARM32#30205
commodo wants to merge 7 commits into
openwrt:masterfrom
commodo:gst1-plugins-base-arm-neon-a32

Conversation

@commodo

@commodo commodo commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

📦 Package Details

Maintainer: @thess @flyn-org @dangowrt

Description:

V2 of PR #29616
But trying to fix the ARM32 stuff here.

If this works, we will try to find an upstreamable fix for ARM32


🧪 Run Testing Details

  • OpenWrt Version:
  • OpenWrt Target/Subtarget:
  • OpenWrt Device:

✅ Formalities

  • I have reviewed the CONTRIBUTING.md file for detailed contributing guidelines.

@commodo
commodo force-pushed the gst1-plugins-base-arm-neon-a32 branch from 3635ba9 to 0d37872 Compare August 9, 2026 09:15
@commodo
commodo force-pushed the gst1-plugins-base-arm-neon-a32 branch from 0d37872 to 6bcca65 Compare August 9, 2026 09:50

@openwrt-ai openwrt-ai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 7 commits (fresh review, full PR diff). Version/hash bumps are consistent across the six packages, PKG_RELEASE is correctly reset to 1 on gstreamer1 and gst1-plugins-base (both were at 2), no stale 1.26 references are left in the feed, and each commit subject matches the files it touches — no commit-message problems found. The new NEON patch is clean (18/18 add.wadd, no CRLF or trailing whitespace, diffstat matches).

Nothing here blocks a merge from my side. The three inline notes are: an undocumented user-visible package removal (gst1-mod-y4mdec) plus a question about whether the y4m functionality should move to gst-plugins-good, an undocumented dependency-graph change (libgst1videolibgst1allocators → libdrm), and a request for an upstream reference on the new patch.

Note that I could not reach the upstream GStreamer sources from this environment, so anything about what 1.28 changed upstream is phrased as a question rather than an assertion.


Generated by Claude Code

$(eval $(call GstBuildPlugin,videoparsersbad,videoparsersbad support,codecparsers,,))
$(eval $(call GstBuildPlugin,videosignal,videosignal support,,,))
$(eval $(call GstBuildPlugin,vmnc,vmnc support,,,))
$(eval $(call GstBuildPlugin,y4mdec,y4mdec support,,,))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: this drops the user-selectable gst1-mod-y4mdec package (together with the -Dy4m= meson arg on line 159), which is a user-visible removal that the commit message ("update to 1.28.6" + release-notes link) does not mention. Worth a sentence in the commit body saying the y4m plugin is gone from gst-plugins-bad in 1.28 so anyone bisecting a missing package finds it.

Related question: gst-plugins-good already carries the plumbing for a y4m plugin — $(call GST_COND_SELECT,y4m) at gst1-plugins-good/Makefile:139 with the package itself commented out at line 265. If upstream folded y4mdec into the -good y4m plugin, enabling that entry would keep the functionality available instead of losing it in this bump. I could not verify the upstream source from this environment, so this is a question rather than a claim — is the drop intended to be a straight removal?


Generated by Claude Code

$(eval $(call GstBuildLibrary,sdp,SDP,pbutils rtp,))
$(eval $(call GstBuildLibrary,tag,tag support,,))
$(eval $(call GstBuildLibrary,video,video,,))
$(eval $(call GstBuildLibrary,video,video,allocators,))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding allocators here makes libgst1video depend on libgst1allocators, which in turn carries +libdrm (GstBuildLibrary,allocators at line 258). Since practically every gst consumer in the feed pulls libgst1video (gst1-libav, the -good/-bad/-ugly plugins), this quietly adds libdrm to a lot of installs. If it reflects a real link-time dependency in 1.28 that is fine, but it is a dependency-graph change rather than a version bump, and neither it nor the audio addition on line 318 is mentioned in the "update to 1.28.6" commit message — please note both in the commit body so the reason survives.


Generated by Claude Code


Drop the .w suffix: plain add selects the identical 32-bit encoding in A32, and
in Thumb-2 the high-register/shift operands force the wide encoding anyway, so
the generated code is unchanged on both. Reported upstream.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: "Reported upstream." without a pointer makes this hard to retire later. This patch is a real code change that is expected to go upstream (the PR body says so), so please add the GStreamer issue/MR URL — or an Upstream-Status: line — so a future bump can tell at a glance whether the patch can be dropped.

For context on validation: on this head the Test arm_cortex-a15_neon-vfpv4 job was cancelled at the 6h runner limit rather than completing, so the NEON target this patch exists for is not actually covered by a green run yet (aarch64_generic was cancelled the same way). Not something to fix in the diff, just worth knowing before merge.


Generated by Claude Code

@commodo
commodo force-pushed the gst1-plugins-base-arm-neon-a32 branch 3 times, most recently from 83b691d to 5371599 Compare August 11, 2026 13:33

@openwrt-ai openwrt-ai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed at 5371599 (previous review was at 6bcca65).

The push since my last review is a pure rebase onto a newer master: git range-diff 6bcca65~7..6bcca65 5371599~7..5371599 reports all seven commits as identical (=), and nothing landed on master in the rebase window that touches multimedia/gst*. No new commits and no content changes, so no new issues found.

The three inline notes from the previous review are still open and still apply to the current head:

  • the undocumented removal of gst1-mod-y4mdec (and the related question about the y4m plugin in gst-plugins-good),
  • the undocumented libgst1videolibgst1allocators (→ libdrm) dependency-graph change, plus the audio addition to pbtypes,
  • the missing upstream reference / Upstream-Status: on 100-audio-resampler-neon-a32-syntax.patch.

One piece of context worth repeating for this head: Test arm_cortex-a15_neon-vfpv4 and Test aarch64_generic were again cancelled at the ~6h runner limit rather than completing, so the NEON target this patch exists for still has no completed build behind it. That is a harness limitation, not a defect in the diff — nothing here blocks a merge from my side.


Generated by Claude Code

@flyn-org

Copy link
Copy Markdown
Contributor

I see two build targets timed out. It looks like the build succeeded in both cases. Can anyone else comment on this?Please add a reference to where you submitted/reported 100-audio-resampler-neon-a32-syntax.patch upstream. Thank you—I am very glad to see this progress.

@commodo

commodo commented Aug 24, 2026

Copy link
Copy Markdown
Contributor Author

I see two build targets timed out. It looks like the build succeeded in both cases. Can anyone else comment on this?Please add a reference to where you submitted/reported 100-audio-resampler-neon-a32-syntax.patch upstream. Thank you—I am very glad to see this progress.

Right.
I wanted to start upstreaming this but got derailed by other stuff + vacation.
Will get back

Upstream list of changes is available at
https://gstreamer.freedesktop.org/releases/1.28/#1.28.6.

Signed-off-by: W. Michael Petullo <mike@flyn.org>
Upstream list of changes is available at
https://gstreamer.freedesktop.org/releases/1.28/#1.28.6.

Signed-off-by: W. Michael Petullo <mike@flyn.org>
Upstream list of changes is available at
https://gstreamer.freedesktop.org/releases/1.28/#1.28.6.

Signed-off-by: W. Michael Petullo <mike@flyn.org>
Upstream list of changes is available at
https://gstreamer.freedesktop.org/releases/1.28/#1.28.6.

Signed-off-by: W. Michael Petullo <mike@flyn.org>
Upstream list of changes is available at
https://gstreamer.freedesktop.org/releases/1.28/#1.28.6.

Signed-off-by: W. Michael Petullo <mike@flyn.org>
Upstream list of changes is available at
https://gstreamer.freedesktop.org/releases/1.28/#1.28.6.

Signed-off-by: W. Michael Petullo <mike@flyn.org>
@commodo
commodo force-pushed the gst1-plugins-base-arm-neon-a32 branch from 5371599 to 90bbe40 Compare August 26, 2026 11:16
The NEON audio-resampler asm advances pointers with the wide mnemonic
add.w since 1.28 (upstream commit f635638777, MR !11472). The .w suffix
is Thumb-2 only; gas rejects it in ARM (A32) state, which is how OpenWrt
builds ARM ("bad instruction `add.w'"), so gst1-plugins-base fails on
every NEON target (e.g. cortex-a15). Clang's integrated assembler ignores
the suffix, so upstream (built with Clang) never noticed; 1.28.x and main
are affected.

Backport a patch dropping the .w suffix. The operands are plain registers
(r8 = r8 + stride), so the addressing !11472 fixed for openwrt#5075 is unchanged;
in A32 add is the sole 32-bit encoding, in Thumb-2 the equivalent 16-bit.

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
@commodo
commodo force-pushed the gst1-plugins-base-arm-neon-a32 branch from 90bbe40 to 26a541f Compare August 26, 2026 11:20

@openwrt-ai openwrt-ai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed at 26a541f (previous review was at 5371599).

The only change to this feed since then is a rebase plus a rewrite of the commit body and the patch header on the last commit. git diff 5371599..26a541f -- multimedia/ touches nothing but the header of 100-audio-resampler-neon-a32-syntax.patch; all 18 add.wadd hunks are byte-identical, and git range-diff reports the six version/hash-bump commits as =.

Two things worth recording for this head:

  • Test arm_cortex-a15_neon-vfpv4 completed successfully instead of being cancelled at the runner limit, so the NEON A32 target this patch exists for finally has a green build behind it. That was the main open unknown in my last two reviews.
  • I checked the "OpenWrt builds ARM in A32 mode" premise against openwrt/openwrt — there is no -mthumb or USE_THUMB anywhere in the userspace build flags, only CONFIG_ARM_THUMB in kernel configs — so the reasoning in the patch header holds. The encoding claims check out too (e0888001 is add r8, r8, rN in A32; the 16-bit Thumb ADD (register) form supports high registers and leaves flags alone).

Commit checks

  • 26a541f "gst1-plugins-base: fix NEON resampler build in ARM A32 mode" — the reworded body now says "Backport a patch dropping the .w suffix". "Backport" asserts the fix already exists upstream, but as of your 2026-08-24 reply upstreaming had not started, and the sentence that previously hedged this ("Reported upstream.") was dropped rather than replaced with a link. If the fix has landed upstream since, please cite the commit/MR in the body; if not, "Add a patch" is the accurate verb. I could not reach the GStreamer repo from this environment, so this is a question rather than an assertion. Same point inline on the patch header.

Still open from the first review and unchanged on this head: the undocumented removal of gst1-mod-y4mdec in gst1-plugins-bad, and the libgst1videolibgst1allocators (→ libdrm) dependency change plus the audio addition to pbtypes.

One CI note so it is not mistaken for a regression: Test x86_64 failed at the runtime-test install step with libmesa (no such package): required by: libgst1gl-1.28.6-r1[libmesa]. That +libmesa dependency is pre-existing on master (GstBuildLibrary,gl at gst1-plugins-base/Makefile:262, untouched by this PR), so it reads as a feed/index gap in the test harness rather than something this diff introduced. aarch64_generic was again cancelled at the 6h limit.

Nothing here blocks a merge from my side.


Generated by Claude Code

sole 32-bit encoding (e0888001); in Thumb-2 it picks the 16-bit encoding
(4488) instead of add.w (eb08 0801), same result, flags untouched.

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The upstream reference is still missing, and this reword moved it backwards rather than forwards: the previous header ended with "Reported upstream.", and that sentence was deleted without a link taking its place — while the commit body now calls the change a "Backport". flyn-org asked for the reference explicitly and your reply said upstreaming had not started yet, so as the patch stands there is nothing a future maintainer can check to decide whether it can be dropped at the next version bump.

The minimum that keeps the patch retirable — swap Pending for the MR URL once it is filed:

Suggested change
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Upstream-Status: Pending

Related, on line 1: From 3664d240c434969e6e460faa323704a4c579261e Mon Sep 17 00:00:00 2001 is the id of a commit in your own tree, not an upstream one (unless the fix has landed upstream since — I could not reach the GStreamer repo from this environment to check). Combined with "Backport a patch..." in the commit body, that header reads like an upstream commit someone is meant to be able to look up. Either drop the From <sha> line or make the commit body say "Add a patch", so the provenance is unambiguous.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants