void-packages icon indicating copy to clipboard operation
void-packages copied to clipboard

ffmpeg6 split

Open zlice opened this issue 1 year ago • 39 comments

[ci skip]

Testing the changes

  • I tested the changes in this PR: YES

main testing has been vaapi in Firefox Nightly and enc/dec in Shotcut on Intel A770

New package

Local build testing

  • I built this PR locally for my native architecture, x86_64

Discussion

Continuation of https://github.com/void-linux/void-packages/pull/36315

libavresample is deprecated, but marked as a dependency when trying to build other packages and install ffmpeg(6). I think the right way to handle this is make a meta package and the add to removals?

Commit naming / misc

~~Commits are 'dirty' right now, running with gstreamer 1.22.1 updates and Intel OpenCL. This will also make intel packages pr obsolete.~~ (see Requirements below)

Maintainer for previous ffmpeg(4) was orphaned, I can put my name in there if that matters, though I don't exactly see myself keeping up on ffmpeg.

~~This updates QT5 which looks like it is usually hosted by Johnny. Not sure if there's any reason to stay there or these sources are fine.~~ Using qt5.15.11 now, revbumps and some patches.

STILL FFMPEG4

These are a mix of emulators, games and/or older packages.

  • ~~attract~~ (2.7 builds)
  • ~~audacity (https://github.com/audacity/audacity/issues/2305 and https://sourceforge.net/p/portmedia/wiki/portsmf/ is 'beta')~~ (updated to 3.x, compiles with ffmpeg6)
  • ~~ccextractor~~ (master patches)
  • ~~vice (3.8 compiles, needs makedepends libcurl-devel)~~ ty yosh
  • kodi (doesn't build)
  • mlt (only dep left is flowblade - flowblade 2.12.0.2 with mlt7-python3 can 'render' videos with cpu and gpu - ~~https://github.com/void-linux/void-packages/pull/47195~~ https://github.com/void-linux/void-packages/pull/50385)
  • ~~synfig (mlt)~~ (work with mlt7, bump synfigstudio)
  • tvheadend (download page recommends using 4.3 which compiles fine, 4.4 eta is Q1 2024)
  • ~~ssr~~ (patches)
  • ~~spek-alternative~~ (replace with spek-x)
  • ~~ppsspp~~ ~~(1.17.1 is out, but there's 5+ distfiles that are all git commits)~~ (minor patch)
  • olive (has been in alpha since 2020, seems they do nightly builds and appimages)
  • moc
  • mediastreamer (linphone links are dead, changed to github belladonne. their stuff never worked for me but there are updates if someone wants to give it a try)
  • ~~libextractor (1.13 compiles, remove exiv2 patch)~~ (as yosh pointed out, 1.13 just removes ffmpeg bits)
  • idjc (0.9.8 compiles, remove python3.10 patch, needs makedepends libebur128-devel and libshout-idjc 2.4.6 with '-r1' for distfile - https://github.com/void-linux/void-packages/pull/48944)
  • ~~hedgewars~~ (patch for 6 https://github.com/hedgewars/hw/pull/74)
  • ~~ffmpegthumbnailer~~ (patches for moviedecoder.xxx files)
  • ~~ffmpegthumbs~~ (latest compiles)
  • deadbeef (1.9.6 may work but requires libdispatch from apple)
  • ~~omxplayer~~ (package removed, deprecated in favor of vlc)
  • qtav (fork has ffmpeg 5 patch - https://github.com/cmguo/QtAV)
  • vlc (vlc4 will support ffmpeg5, there's a patch to build 3.x with ffmpeg5 but it will lack vaapi)
  • ~~osg (OpenSceneGraph plus xine-lib) (patches from osg issue build with ffmpeg6, ffmpeg5.patch.txt)~~ used ffmpeg6 patch
HAVE NOT BUILT YET
  • ~~omxplayer (rpi only? ffmpeg4)~~ (removed)
  • kodi (big, but ffmpeg4)
UPDATED (for ffmpeg6)
  • ~~blender: update to 3.5.1~~ ~~will be revbump with~~ https://github.com/void-linux/void-packages/pull/43992
  • unpaper: update to 7.0.0.
  • guvcview: update to 2.0.8.
  • ~~qt5: update to 5.15.8~~ updated by another PR to 5.15.11
  • ~~qt5-webengine: update to 5.18.15~~ updated by another PR to 5.15.16 (some patching for ffmpeg build)
  • ~~shiboken2: revbump for qt5.15.8 (patch)~~ updated by another PR to 5.15.10
  • ~~python3-pyside2: update to 5.15.8 (patch)~~ updated by another PR to 5.15.10
  • New package: spex-x replaces spek-alternative for ffmpeg-6.0
Requirements
  • ~~gstreamer 1.22.2~~ - a few packages use ffmpeg-devel and require a revbump

  • ~~Intel Packages Intel Packages v2 - ffmpeg4 uses different libraries than 6 (libmfx / Intel-MediaSDK vs only oneVPL that Intel is moving to), both are included here~~. Using replacement oneVPL from OBS update.

  • ~~shotcut 23.05.14~~

  • https://github.com/void-linux/void-packages/pull/44781 will remove from this PR

zlice avatar May 05 '23 13:05 zlice

xlint questions

============ qt5 ===============
qt5:35: verify python_version and remove "#unverified"
qt5:529: use <pkgname>-doc subpackage for documentation

what counts as 'verified' for python?

does doc pkg need changed? looks like a separate package (still on 5.15.2 and out of sync with current qt5 5.15.7)

edit: per irc i was told docs is nothing to worry about rn. the python2 vs 3 thing i guess i can't verify because i don't use any qt scripts for that

zlice avatar May 05 '23 13:05 zlice

are the commits for a blender update, gstreamer and new intel packages really necessary for this PR? If not, please drop them. If yes and they could be merged before merging this PR, please split them to a separate PR and mention that it should be merged before this PR in this PR's description.

paper42 avatar May 07 '23 19:05 paper42

Intel OpenCL commits removed

blender - uses ffmpeg-devel, added to update list

gstreamer - added to 'Requirements' section and only revbumped the appropriate packages

Intel Packages - added to 'Requirements'

zlice avatar May 07 '23 22:05 zlice

ICU updated, and many other things since my last full build test. building fine for now

zlice avatar Jul 09 '23 14:07 zlice

we can replace spek-alternative with spek-x, a more actively maintained fork that supports ffmpeg6. the original spek has also become maintained again, but it claims to only support up to ffmpeg 5.1.

yoshiyoshyosh avatar Oct 02 '23 00:10 yoshiyoshyosh

Blocked by https://github.com/void-linux/void-packages/pull/46172

Already quite a few updates to sift through and I don't feel comfortable trying until I know I can update mesa.

zlice avatar Oct 11 '23 12:10 zlice

Blocked by #46172

Already quite a few updates to sift through and I don't feel comfortable trying until I know I can update mesa.

Sup, 23.1.8 should build, but it doesn't work because 32-bit subpackage problem. i still don't know how to solve this issue. EDIT: on my personal way, i'm currently running mesa 23.2.1 on my void-install, no issues whatsoever.

SpidFightFR avatar Oct 11 '23 17:10 SpidFightFR

Got 64/32bit x86 building again. tyvm spid

zlice avatar Oct 16 '23 12:10 zlice

Got 64/32bit x86 building again. tyvm spid

it's not ready yet, i believe there is an issue with arm and aarch64 archs. Mesa still can't be updated atm.

Edit, if i'm lucky, i might get it ready for tonight, but nothing's set in the stone.

SpidFightFR avatar Oct 16 '23 12:10 SpidFightFR

see here: https://github.com/void-linux/void-packages/issues/46674

SpidFightFR avatar Oct 16 '23 12:10 SpidFightFR

we can replace spek-alternative with spek-x, a more actively maintained fork that supports ffmpeg6. the original spek has also become maintained again, but it claims to only support up to ffmpeg 5.1.

added to here, separate PR was building off ffmpeg4 and looked like everything was bombing out.

not sure if i did the transitional dummy package to replace spek-alternative with spek-x right

zlice avatar Oct 17 '23 12:10 zlice

I'd like to help move this along, is there anything I can do?

triallax avatar Dec 03 '23 16:12 triallax

I'd like to help move this along, is there anything I can do?

I know paper mentioned splitting things where appropriate but I made some QT(5) changes to get this to work. Sure there are some revbumps missing there. Not sure if QT stuff should be separated first.

Have not tested electronXX builds in a bit because they're long.

Have not built kodi or omxplayer, but should work fine since they're still 4.

I suspect hedgewars could be made to work fine with 6. I haven't checked if there's any updates or patches in a while.

Any misc packages could be tested for sanity but should work fine. I only run a few vaapi/ffmpeg things regularly: shotcut, firefox(nightly), discord, mpv. Other packages "use" ffmpeg but for side features I never touch like dolphin-emu and blender.

The spek-alternative replacement idk if I did the 'remove old package' thing right.

Did not test 'depends' of packages that bring in 4, just kind of installed it and am able to remove 4 in case of reinstall conflicts. I assume that's good enough to be covered in patch notes?

zlice avatar Dec 03 '23 16:12 zlice

Thanks for all the info, when I get a bit more time (hopefully in a couple weeks), I'll sift through the items you mentioned. :)

triallax avatar Dec 05 '23 16:12 triallax

Using QT 5.15.11 that was just updated. Revbump for qt5 and some hacky patch to build qt5-webengine by forcing -system-ffmpeg and knocking out the test was complaining. If that should be fixed properly lmk.

zlice avatar Dec 09 '23 17:12 zlice

tbd: new gonic package - https://github.com/void-linux/void-packages/pull/46013

zlice avatar Dec 29 '23 17:12 zlice

updated comments for ffmpeg4 packages. flowblade seems to work for me with mlt7-python3, should be the last user of mlt (6), so mlt may be good to remove

vice, libextractor and idjc i wouldn't know how to test. mediastreamer is linphone based so i didn't check beyond seeing a new version (complained about optr cmake files?)

zlice avatar Feb 02 '24 22:02 zlice

I'm about to make all revisions 99 until this is about to merge x-x

zlice avatar Feb 03 '24 20:02 zlice

add flowblade PR link: https://github.com/void-linux/void-packages/pull/47195

Luciogi avatar Feb 06 '24 05:02 Luciogi

heya, I have enough time that I'd like to help move this along. has much changed in terms of what needs to be done since your last comment about what needs to be done?

yoshiyoshyosh avatar Feb 22 '24 17:02 yoshiyoshyosh

i don't think much more can be done besides vice, libextractor and idjc being tested real quick. tvheadend update should hit at some point. nvidia headers could be merged. mlt (flowblade) can happen after. new gonic package can use ffmpeg6.

really just need to clean up commits and double check things.

as for testing, even slackware has ffmpeg 6.1, so i'm sure package compatibility fine at least for glibc.

zlice avatar Feb 22 '24 17:02 zlice

vice and idjc work well (well, idjc spews a bunch of syntax parsing warnings but that's python stuff rather than ffmpeg stuff). libextractor's throwing an error with exiv2 and I'm not sure if that's affecting the ffmpeg part or not--no video/audio stuff is being returned

yoshiyoshyosh avatar Feb 24 '24 02:02 yoshiyoshyosh

vice and idjc work well

@yoshiyoshyosh would you mind making PRs to update vice/idjc version since you tested them? then i'll bump them in here

zlice avatar Feb 25 '24 17:02 zlice

@yoshiyoshyosh would you mind making PRs to update vice/idjc version since you tested them? then i'll bump them in here

@zlice sounds good. also, I figured out something with libextractor: it doesn't need ffmpeg or any of ffmpeg's core libraries anymore with the latest versions (commit 2332716ae48d6b899e4d2bb07f468e8c076d2608). can also make a pr to update it and you can remove the revbump here

yoshiyoshyosh avatar Feb 25 '24 19:02 yoshiyoshyosh

must be why it built lol. odd, they removed it and didn't replace it with anything so opus and thumbnails are gone? only thing that uses it is gnunet. thanks

zlice avatar Feb 25 '24 19:02 zlice

so opus and [video] thumbnails are gone?

~~yup. I think it's just a symptom of being really old and half-abandoned by now haha~~

actually, they use gstreamer now, so opus is still there. video thumbnails are gone though

yoshiyoshyosh avatar Feb 25 '24 19:02 yoshiyoshyosh

it seems like the latest idjc versions can build and run the ffmpeg-required portions with ffmpeg6 perfectly fine.

it's almost the same with vice? they started using the ffmpeg executable as a fork rather than relying on the library functions. h264 encoding works but not h265

yoshiyoshyosh avatar Feb 25 '24 21:02 yoshiyoshyosh

idk if you did tests for spek-x when building it but they seem to fail for me without this patch:

--- a/tests/perf.cc	2024-03-09 17:13:49.086603418 -0500
+++ b/tests/perf.cc	2024-03-09 17:13:59.453603753 -0500
@@ -1,3 +1,4 @@
+#include <cstdint>
 #include <cstdlib>
 #include <iostream>
 #include <fstream>

yoshiyoshyosh avatar Mar 09 '24 22:03 yoshiyoshyosh

idk if you did tests for spek-x when building it but they seem to fail for me without this patch:

haven't done full builds for musl yet. when your PRs get merged i'll probably start bugging people. coming up on a year now and my updates just needed another kick. probably doing a full reinstall once this merges.

zlice avatar Mar 09 '24 22:03 zlice

haven't done full builds for musl yet

that's odd, it was failing while I was testing on glibc O.o, wonder if there's some differing strict compiler flags present somewhere. whatever, so long as it works

yoshiyoshyosh avatar Mar 09 '24 22:03 yoshiyoshyosh