Skip to content

ffmpeg8 [skip ci] [ci skip] [no ci]#58253

Open
zlice wants to merge 110 commits into
void-linux:masterfrom
zlice:ffmpeg8
Open

ffmpeg8 [skip ci] [ci skip] [no ci]#58253
zlice wants to merge 110 commits into
void-linux:masterfrom
zlice:ffmpeg8

Conversation

@zlice

@zlice zlice commented Dec 22, 2025

Copy link
Copy Markdown
Contributor

Testing the changes

  • I tested the changes in this PR: yes (end of year and all) ffmpeg/shotcut/obs/firefox with intel gpu-vpl-rt

fwiw someone on reddit said they tested 8 for some other bug.

Local build testing

  • I built this PR locally for my native architecture, x86_64
  • I built this PR locally for these architectures (if supported. mark crossbuilds):
    • x86_64-musl
    • aarch64-musl
    • armv7l
    • armv6l-musl
    • i686

[skip ci] [ci skip] [no ci]

Build issues

cmus

can easily patch ffmpeg file for git.

not ready - cmus/cmus#1459

cmus/cmus#1486

(donno if this is new, but for some reason you cant go directly to that link in a private browser/not logged in?)

fooyin - fixed with libgme bump jkkt mentioned update libgme to 0.6.4 (gst-plugings-bad1, QMPlay2, musikcube, and qmmp all revbumped anyway - srb2 only outlier) - update to 0.9.2

wasn't building with 8, updated, still doesnt build.

fooyin/fooyin#779

fooyin/fooyin#780

something with c++23 ? tons of

/usr/include/qt6/QtCore/qline.h:122:26: error: 'const class QPoint' has no member named 'yp'; did you mean 'y'?
  122 |     return (pt2.yp - pt1.yp).value();
      |                          ^~
      |                          y

ssr

update: updated to git commit. there has been no release and git works fine. have patches if current release would be better for whatever reason (git has pipewire stuff, i assume for wayland).

simple-screen-recorder does not have a ffmpeg8 ready release. supposedly git works fine. seen some other packages have a version but just use git...and more projects have been going this way (see tvheadend which still uses ffmpeg4 on the last 'release' version - #56647)

ssr pr - MaartenBaert/ssr#1078 - ai patch that doesnt work, also git does work

kodi

could use -DENABLE_INTERNAL_FFMPEG=ON. the next release is due to have ffmpeg8 support. similar to qt5/6.

internal ffmpeg does not seem to obey void's cmake vars and fails to configure. get some -R/usr/lib for aarch64-gcc.

update: switched to internal ffmpeg

see version bump and plugin adds - #58781

RFC

qt5-webengine and qt6-pdf

update: qt6 apparently builds fine, and it was easier to copy other distros homework for qt5 than mess with the inline asm in their packaged ffmpeg and whatever compiler stuff was going on.

i think qt should use its own packaged ffmpeg. they do not really support over 5 and patching+building becomes a pain. i know this was done with chromium a while back so i figure it should be fine for qt too.

(i have these revbumped from testing but building would require more patching, and that will likely go on forever)

ffmpeg 8 vs 4 package names - ffmpeg=8, ffmpeg4=4

update: can fully remove 4.

  • ppsspp - use internal ffmpeg (their own fork on git)
  • tvheadend - merged
  • vlc - works with ffmpeg8

the previous idea was to move ffmpeg8 into ffmpeg and ffmpeg into ffmpeg4, re-rev/dep things for 8 vs 4.

is that still the desired way to go about this? currently this branch is just a new package for ffmpeg8, didn't touch 6 or 4.

it looks like the only ffmpeg4 packages left are vlc, tvheadend and ppsspp which was backed out from 6 because it doesn't play videos in certain games. alternatively for 4, the few stragglers may have their own ffmpeg bundled versions that can be used, and 4 could be removed entirely.

tracking issue - #51522

ppsspp backout - 59fd9d1

ccextractor updated

please check my rust-isms. some other packages seem to do similar XBPS_RUST_CROSS_TARGET seds or symlinks.

gifski

update: waiting for ffmpeg8.1 crate/build - zmwangx/rust-ffmpeg-sys@6ab3d0d

please check my rust-isms. looks like ffmpeg6 was patched for do_check ? but cross says it doesn't do checks for me, maybe it runs check ci or build server side.

some changes were post_extract but that botches patching for ffmpeg8, moved to post_patch - if still needed then we can move around extract/patch/cfg etc. not sure if the cache clear function is needed since lock was removed.

also needed to remove --lock to download the ffmpeg8 crate

chromaprint

do_check is no longer make_check_target=check but all_tests. however all_tests runs with BUILD_TESTS so? do_check essentially does squat...

mlt7

semi dupe of shotcut update #56922 - updated by johnny def5079

new version builds for 8

Updated packages

@zlice zlice changed the title [WIP] ffmpeg8 [skip ci] [WIP] ffmpeg8 [skip ci] [ci skip] [no ci] Dec 22, 2025
@ahesford

Copy link
Copy Markdown
Member

I would like to move away from versioned ffmpeg packages with every release. We should try mightily to update everything for the newest version and just call that ffmpeg. If we need to keep legacy versions around for compatibility with a few packages, we can always make, e.g., ffmpeg8 when we move ffmpeg to 9 at some point in the future. But making ffmpeg8 up front just means that those packages will stick around the repos when we make ffmpeg9 later, and they may not even be required for legacy compatibility when that time comes.

I made this point in an earlier ffmpeg7 PR, and nobody made a compelling argument about why introducing versioned names up front is beneficial.

For Qt5, we can do whatever; eventually we'll retire Qt5 outright, so it can languish with an old, vendored FFmpeg now. For Qt6, I don't have a strong opinion.

@zlice

zlice commented Dec 22, 2025

Copy link
Copy Markdown
Contributor Author

I would like to move away from versioned ffmpeg packages with every release.

Alright, I'll update the versioning in this to ffmpeg as 8 and ffmpeg4 with the few deps.

I'll check qt5/6 for packaged ffmpeg too and probably do separate prs and ping johnny.

@JkktBkkt

Copy link
Copy Markdown
Contributor

fooyin: revbump libgme (sgn added the necessary patch but didn't bump both it and fooyin when mass-rebuilding for qt6.10)
This will also be necessary for 0.9.2 to build: https://github.com/fooyin/fooyin/commit/7b171c0da2b9289468696424fe51f76e1c365bb5.patch

@zlice

zlice commented Dec 23, 2025

Copy link
Copy Markdown
Contributor Author

looks like that works for fooyin, thanks!

edit: k looks like repo is just in the middle of sync or something

small problem, repo looks like it needs a fix? had to change from default to build arm7

armv7l

=> ERROR: libgme-0.6.3_2: failed to install target dependencies! (error 16)

ERROR: [trans] failed to download `xorgproto-2025.1_1' signature from `https://repo-default.voidlinux.org/current': Not Found
ERROR: Transaction failed! see above for errors.

@zlice

zlice commented Dec 24, 2025

Copy link
Copy Markdown
Contributor Author

update: libgme swapped from bitbucket to github, 0.6.4 seems to work fine

the libgme thing a39927f seems to break gst-plugins-bad1 and probably other packages ?

assume the internal bit strips the functions?

edit: removing the patch/cxxflags does allow gst-plugins-bad1 to build


FAILED: [code=1] ext/gme/libgstgme.so 
cc  -o ext/gme/libgstgme.so ext/gme/libgstgme.so.p/gstgme.c.o -flto -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,-soname,libgstgme.so -Wl,-Bsymbolic-functions -Wl,-z,nodelete -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -fstack-clash-protection -D_FORTIFY_SOURCE=2 -mtune=generic -O2 -pipe -ffile-prefix-map=/builddir/gst-plugins-bad1-1.26.5/build=. -O2 -Wl,-rpath,/usr/lib64 -Wl,--start-group /usr/lib64/libgstaudio-1.0.so /usr/lib64/libgstbase-1.0.so /usr/lib64/libgstreamer-1.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so -lgme -Wl,--end-group
/usr/bin/ld: /tmp/ccp9q0lq.ltrans0.ltrans.o: in function `gst_gme_dec_src_query':
<artificial>:(.text+0x312): undefined reference to `gme_tell'
/usr/bin/ld: /tmp/ccp9q0lq.ltrans0.ltrans.o: in function `gst_gme_play':
<artificial>:(.text+0x3c6): undefined reference to `gme_tell'
/usr/bin/ld: <artificial>:(.text+0x3fa): undefined reference to `gme_play'
/usr/bin/ld: <artificial>:(.text+0x465): undefined reference to `gme_tell'
/usr/bin/ld: <artificial>:(.text+0x4be): undefined reference to `gme_seek'
/usr/bin/ld: /tmp/ccp9q0lq.ltrans0.ltrans.o: in function `gst_gme_dec_sink_event':
<artificial>:(.text+0x8b9): undefined reference to `gme_track_info'
/usr/bin/ld: <artificial>:(.text+0x9ab): undefined reference to `gme_start_track'
/usr/bin/ld: <artificial>:(.text+0x9bf): undefined reference to `gme_set_fade'
/usr/bin/ld: <artificial>:(.text+0xbb9): undefined reference to `gme_open_data'
/usr/bin/ld: <artificial>:(.text+0xbe9): undefined reference to `gme_delete'
/usr/bin/ld: <artificial>:(.text+0xf7c): undefined reference to `gme_start_track'
/usr/bin/ld: /tmp/ccp9q0lq.ltrans0.ltrans.o: in function `gst_gme_dec_src_event':
<artificial>:(.text+0x1101): undefined reference to `gme_tell'
/usr/bin/ld: /tmp/ccp9q0lq.ltrans0.ltrans.o: in function `gst_gme_dec_change_state':
<artificial>:(.text+0x1331): undefined reference to `gme_delete'
collect2: error: ld returned 1 exit status

@zlice zlice force-pushed the ffmpeg8 branch 2 times, most recently from 8351fde to c97e1a3 Compare December 24, 2025 19:39
@zlice

zlice commented Dec 24, 2025

Copy link
Copy Markdown
Contributor Author

i noticed qt5 'says' it uses ffmpeg, and we swapped and revbumped for ffmpeg6, but does it really? don't see anything in configure that mentions it besides installing the package as a dep. i think only qt5-webengine uses it?

@ahesford ahesford marked this pull request as draft December 30, 2025 17:36
@newbluemoon

Copy link
Copy Markdown
Contributor

I just opened an update for ccextractor (#58345), which still uses ffmpeg6, will try make it work with this PR.

@newbluemoon

Copy link
Copy Markdown
Contributor

I have built ccextractor in with ffmpeg 8 from this branch, patches aren’t necessary. The only problem was the new gpac dependency for which I had to use the latest snapshot instead of the old release from april 2024.

Runtime test was successful.

The only thing to do to make #58345 work with this PR is to change the dependency from ffmpeg6 to ffmpeg.

@newbluemoon

Copy link
Copy Markdown
Contributor

gpac finally released a new version, no patching needed anymore. :)
So when #58838 is merged all that’s left to do ist changing the dependency in gpac and ccextractor from ffmpeg6 to ffmpeg. Just tested it with ccextractor and everything works like a charm!

Comment thread srcpkgs/gpac/patches/ffmpeg8-4e9091c4568e4574eeaf8714256d20a916735603.patch Outdated
@zlice zlice force-pushed the ffmpeg8 branch 2 times, most recently from e9e95f2 to 8b903e2 Compare March 17, 2026 14:41
@zlice zlice force-pushed the ffmpeg8 branch 2 times, most recently from 9aa18c1 to 4f64888 Compare April 7, 2026 17:45
@zlice

zlice commented Apr 7, 2026

Copy link
Copy Markdown
Contributor Author

so vlc builds with ffmpeg8. going to just axe the 4 stuff. ppsspp should have its own ffmpeg, johnny had some games for video to test with. tvheadend is up in the air but should be removed or updated to git versioning.

@zlice zlice force-pushed the ffmpeg8 branch 2 times, most recently from f4cb53f to 0e21eee Compare April 15, 2026 17:43
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.

4 participants