From 88e84cb836675e3b45330f0e58dd0efb587794c6 Mon Sep 17 00:00:00 2001 From: zlice Date: Tue, 7 Jan 2025 10:16:41 -0500 Subject: [PATCH 1/8] ffmpeg: meta package for ffmpeg6 --- srcpkgs/ffmpeg/files/altivec.patch | 60 ----- .../patches/intel-media-driver-32bit.patch | 15 -- srcpkgs/ffmpeg/patches/v4l2-fix-glibc.patch | 17 -- srcpkgs/ffmpeg/patches/vulkan-gcc14.patch | 13 -- srcpkgs/ffmpeg/template | 209 ++---------------- srcpkgs/ffmpeg6/template | 2 +- 6 files changed, 24 insertions(+), 292 deletions(-) delete mode 100644 srcpkgs/ffmpeg/files/altivec.patch delete mode 100644 srcpkgs/ffmpeg/patches/intel-media-driver-32bit.patch delete mode 100644 srcpkgs/ffmpeg/patches/v4l2-fix-glibc.patch delete mode 100644 srcpkgs/ffmpeg/patches/vulkan-gcc14.patch diff --git a/srcpkgs/ffmpeg/files/altivec.patch b/srcpkgs/ffmpeg/files/altivec.patch deleted file mode 100644 index 9c57200463320e..00000000000000 --- a/srcpkgs/ffmpeg/files/altivec.patch +++ /dev/null @@ -1,60 +0,0 @@ -revert some altivec specific change on all ppc* except ppc64le* - -q66: "We should also throw in a revert of FFmpeg/FFmpeg@3a557c5 but only -conditionally, for ppc* but not ppc64le* (the new code is valid for -POWER8 VSX which LE targets as a baseline but not BE)" - - -This reverts commit 3a557c5d88b7b15b5954ba2743febb055549b536. ---- - libswscale/ppc/yuv2rgb_altivec.c | 24 ++++++++++++++++++++---- - 1 file changed, 20 insertions(+), 4 deletions(-) - -diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c -index 536545293d..c1e2852adb 100644 ---- a/libswscale/ppc/yuv2rgb_altivec.c -+++ b/libswscale/ppc/yuv2rgb_altivec.c -@@ -305,6 +305,9 @@ static int altivec_ ## name(SwsContext *c, const unsigned char **in, \ - vector signed short R1, G1, B1; \ - vector unsigned char R, G, B; \ - \ -+ const vector unsigned char *y1ivP, *y2ivP, *uivP, *vivP; \ -+ vector unsigned char align_perm; \ -+ \ - vector signed short lCY = c->CY; \ - vector signed short lOY = c->OY; \ - vector signed short lCRV = c->CRV; \ -@@ -335,13 +338,26 @@ static int altivec_ ## name(SwsContext *c, const unsigned char **in, \ - vec_dstst(oute, (0x02000002 | (((w * 3 + 32) / 32) << 16)), 1); \ - \ - for (j = 0; j < w / 16; j++) { \ -- y0 = vec_xl(0, y1i); \ -+ y1ivP = (const vector unsigned char *) y1i; \ -+ y2ivP = (const vector unsigned char *) y2i; \ -+ uivP = (const vector unsigned char *) ui; \ -+ vivP = (const vector unsigned char *) vi; \ -+ \ -+ align_perm = vec_lvsl(0, y1i); \ -+ y0 = (vector unsigned char) \ -+ vec_perm(y1ivP[0], y1ivP[1], align_perm); \ - \ -- y1 = vec_xl(0, y2i); \ -+ align_perm = vec_lvsl(0, y2i); \ -+ y1 = (vector unsigned char) \ -+ vec_perm(y2ivP[0], y2ivP[1], align_perm); \ - \ -- u = (vector signed char) vec_xl(0, ui); \ -+ align_perm = vec_lvsl(0, ui); \ -+ u = (vector signed char) \ -+ vec_perm(uivP[0], uivP[1], align_perm); \ - \ -- v = (vector signed char) vec_xl(0, vi); \ -+ align_perm = vec_lvsl(0, vi); \ -+ v = (vector signed char) \ -+ vec_perm(vivP[0], vivP[1], align_perm); \ - \ - u = (vector signed char) \ - vec_sub(u, \ --- -2.27.0 - diff --git a/srcpkgs/ffmpeg/patches/intel-media-driver-32bit.patch b/srcpkgs/ffmpeg/patches/intel-media-driver-32bit.patch deleted file mode 100644 index 567169f0e4afae..00000000000000 --- a/srcpkgs/ffmpeg/patches/intel-media-driver-32bit.patch +++ /dev/null @@ -1,15 +0,0 @@ -Fix type to be consistent with intel-media-driver - -diff -rup libavutil/hwcontext_vaapi.c.orig libavutil/hwcontext_vaapi.c ---- a/libavutil/hwcontext_vaapi.c -+++ b/libavutil/hwcontext_vaapi.c -@@ -1032,7 +1032,7 @@ static int vaapi_map_from_drm(AVHWFrames - uint32_t va_fourcc; - int err, i, j, k; - -- unsigned long buffer_handle; -+ uintptr_t buffer_handle; - VASurfaceAttribExternalBuffers buffer_desc; - VASurfaceAttrib attrs[2] = { - { - diff --git a/srcpkgs/ffmpeg/patches/v4l2-fix-glibc.patch b/srcpkgs/ffmpeg/patches/v4l2-fix-glibc.patch deleted file mode 100644 index e4c9b1eb6c8f5b..00000000000000 --- a/srcpkgs/ffmpeg/patches/v4l2-fix-glibc.patch +++ /dev/null @@ -1,17 +0,0 @@ -libv4l2.h uses #ifdef, not #if - -diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c -index 42d4b97c8f701..0ae68723382f4 100644 ---- a/libavdevice/v4l2.c -+++ b/libavdevice/v4l2.c -@@ -47,6 +47,10 @@ - #include "v4l2-common.h" - #include - -+#if ! HAVE_POSIX_IOCTL -+#undef HAVE_POSIX_IOCTL -+#endif -+ - #if CONFIG_LIBV4L2 - #include - #endif diff --git a/srcpkgs/ffmpeg/patches/vulkan-gcc14.patch b/srcpkgs/ffmpeg/patches/vulkan-gcc14.patch deleted file mode 100644 index d8da6251db05f7..00000000000000 --- a/srcpkgs/ffmpeg/patches/vulkan-gcc14.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -rup libavutil/hwcontext_vulkan.c.orig libavutil/hwcontext_vulkan.c ---- a/libavutil/hwcontext_vulkan.c -+++ b/libavutil/hwcontext_vulkan.c -@@ -862,7 +862,7 @@ static void free_exec_ctx(AVHWFramesCont - - av_freep(&cmd->queues); - av_freep(&cmd->bufs); -- cmd->pool = NULL; -+ cmd->pool = VK_NULL_HANDLE; - } - - static VkCommandBuffer get_buf_exec_ctx(AVHWFramesContext *hwfc, VulkanExecCtx *cmd) - diff --git a/srcpkgs/ffmpeg/template b/srcpkgs/ffmpeg/template index 55f762324028fd..5870d8d7f03b62 100644 --- a/srcpkgs/ffmpeg/template +++ b/srcpkgs/ffmpeg/template @@ -1,235 +1,72 @@ # Template file for 'ffmpeg' -# audacity also needs to be bumped when a new ffmpeg version bumps libavformat's soname! pkgname=ffmpeg -version=4.4.6 -revision=1 +version=6.1.2 +revision=9 metapackage=yes -hostmakedepends="pkg-config perl" -makedepends="zlib-devel bzip2-devel freetype-devel alsa-lib-devel libXfixes-devel - libXext-devel libXvMC-devel libxcb-devel lame-devel libtheora-devel - libvorbis-devel x264-devel xvidcore-devel jack-devel SDL2-devel - libcdio-paranoia-devel librtmp-devel libmodplug-devel gnutls-devel - speex-devel celt-devel harfbuzz-devel libass-devel opus-devel ocl-icd-devel - libbs2b-devel libvidstab-devel libbluray-devel - $(vopt_if pulseaudio pulseaudio-devel) - $(vopt_if vaapi libva-devel) $(vopt_if vdpau libvdpau-devel) - $(vopt_if x265 x265-devel) $(vopt_if v4l2 v4l-utils-devel) - $(vopt_if fdk_aac fdk-aac-devel) $(vopt_if vpx libvpx-devel) - $(vopt_if aom libaom-devel) $(vopt_if sndio sndio-devel) - $(vopt_if dav1d libdav1d-devel) $(vopt_if zimg zimg-devel) - $(vopt_if webp libwebp-devel) $(vopt_if sofa libmysofa-devel) - $(vopt_if drm libdrm-devel) libsvt-av1-devel - $(vopt_if srt srt-devel) $(vopt_if rist librist-devel) - $(vopt_if vulkan 'vulkan-loader-devel') - $(vopt_if nvenc nv-codec-headers12.0) $(vopt_if nvdec nv-codec-headers12.0)" -# ffmpeg6 provides ffmpeg, ffprobe, ffplay, etc depends="ffmpeg6" short_desc="Decoding, encoding and streaming software (transitional dummy package)" maintainer="Orphaned " license="GPL-3.0-or-later" homepage="https://www.ffmpeg.org" -changelog="https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog" -distfiles="https://www.ffmpeg.org/releases/ffmpeg-${version}.tar.xz" -checksum=2290461f467c08ab801731ed412d8e724a5511d6c33173654bd9c1d2e25d0617 - -build_options="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio - dav1d zimg webp sofa vulkan drm srt rist nvdec" -build_options_default="x265 v4l2 vpx aom sndio pulseaudio dav1d webp vulkan drm srt rist" - -desc_option_srt="Enable support for SRT (Secure, Reliable, Transport)" -desc_option_rist="Enable support for RIST (Reliable Internet Stream Transport)" -desc_option_sofa="Enable support for AES SOFA" -desc_option_webp="Enable support for WebP" - -case "$XBPS_TARGET_MACHINE" in - i686*|x86_64*) - hostmakedepends+=" nasm" - build_options_default+=" vaapi vdpau nvenc nvdec" - ;; - ppc64*) build_options_default+=" vaapi vdpau";; - mips*) CFLAGS="-mnan=legacy";; -esac - -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - patch -N $args -i $2 - touch .${pname}_done - fi -} - -post_patch() { - case "$XBPS_TARGET_MACHINE" in - ppc64le*) ;; - ppc*) _apply_patch -p1 ${FILESDIR}/altivec.patch ;; - esac -} - -do_configure() { - # Fix gcc on x86_64-musl only - if [ "$XBPS_TARGET_MACHINE" = "x86_64-musl" ]; then - vsed -i configure -e "s;_cflags_speed='-O3';_cflags_speed='-O2';" - fi - - if [ "$CROSS_BUILD" ]; then - case "$XBPS_TARGET_MACHINE" in - arm*) _arch="arm";; - aarch64*) _arch="aarch64";; - mips*) _arch="mips";; - ppc64*) _arch="ppc64";; - ppc*) _arch="ppc";; - *) _arch="${XBPS_TARGET_MACHINE%%-musl}";; - esac - - _args+=" --enable-cross-compile - --sysroot=$XBPS_CROSS_BASE - --cross-prefix=${XBPS_CROSS_TRIPLET}- - --target-os=linux --arch=${_arch}" - fi - - case "$XBPS_TARGET_MACHINE" in - ppc|ppc-musl) _args+=" --disable-altivec";; - esac - - if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then - _args+=" --extra-libs=-latomic" - fi - - ./configure --prefix=/usr --disable-debug --enable-gpl --enable-gnutls \ - --disable-stripping \ - --enable-libcdio --enable-version3 --enable-runtime-cpudetect \ - --enable-libmp3lame --enable-libvorbis --enable-libxvid \ - --enable-libx264 $(vopt_enable vpx libvpx) --enable-libtheora \ - --enable-shared --enable-static --enable-libxcb \ - $(vopt_enable pulseaudio libpulse) --enable-libfreetype --enable-libmodplug \ - --enable-libspeex --enable-libcelt --enable-libass \ - --enable-libopus --enable-librtmp --enable-libjack \ - $(vopt_if fdk_aac '--enable-nonfree --enable-libfdk-aac') \ - --disable-libopencore_amrnb --disable-libopencore_amrwb \ - --disable-libopenjpeg --enable-libbluray --enable-libsvtav1 \ - --enable-postproc --enable-opencl --disable-libvmaf ${_args} \ - $(vopt_enable x265 libx265) \ - $(vopt_enable v4l2 libv4l2) \ - $(vopt_enable aom libaom) $(vopt_enable vaapi) $(vopt_enable vdpau) \ - --enable-libbs2b --enable-avresample --enable-libvidstab \ - $(vopt_enable dav1d libdav1d) \ - $(vopt_enable zimg libzimg) \ - $(vopt_enable webp libwebp) \ - $(vopt_enable sofa libmysofa) \ - $(vopt_enable vulkan) \ - $(vopt_enable drm libdrm) \ - $(vopt_enable srt libsrt) \ - $(vopt_enable rist librist) \ - $(vopt_if nvenc '--enable-nvenc') \ - $(vopt_if nvdec '--enable-nvdec') -} - -do_build() { - make ${makejobs} -} - -# transitional dummy package for ffmpeg6 -# binaries conflict with 6 -do_install() { - make DESTDIR=${DESTDIR} install - rm -rf ${DESTDIR}/usr/bin - rm -rf ${DESTDIR}/usr/share/man/man1 - rm -rf ${DESTDIR}/usr/share/ffmpeg/ffprobe.xsd - rm -rf ${DESTDIR}/usr/share/ffmpeg/libvpx*ffpreset -} libavcodec_package() { short_desc="FFmpeg codec library" - pkg_install() { - vmove "usr/lib/libavcodec.so.*" - } + metapackage=yes + depends="libavcodec6" } libavdevice_package() { short_desc="FFmpeg device handling library" - pkg_install() { - vmove "usr/lib/libavdevice.so.*" - } + metapackage=yes + depends="libavdevice6" } libavresample_package() { - short_desc="FFmpeg audio resampling library" - pkg_install() { - vmove "usr/lib/libavresample.so.*" - } + short_desc="Package deprecated, removal needed" + metapackage=yes + depends="libavresample6" } libavformat_package() { short_desc="FFmpeg file format library" - pkg_install() { - vmove "usr/lib/libavformat.so.*" - } + metapackage=yes + depends="libavformat6" } libavutil_package() { short_desc="FFmpeg utility library" - pkg_install() { - vmove "usr/lib/libavutil.so.*" - } + metapackage=yes + depends="libavutil6" } libavfilter_package() { short_desc="FFmpeg audio/video filter library" - pkg_install() { - vmove "usr/lib/libavfilter.so.*" - } + metapackage=yes + depends="libavfilter6" } libpostproc_package() { short_desc="FFmpeg video postprocessing library" - pkg_install() { - vmove "usr/lib/libpostproc.so.*" - } + metapackage=yes + depends="libpostproc6" } libswscale_package() { short_desc="FFmpeg video scaling library" - pkg_install() { - vmove "usr/lib/libswscale.so.*" - } + metapackage=yes + depends="libswscale6" } libswresample_package() { short_desc="FFmpeg video resampling library" - pkg_install() { - vmove "usr/lib/libswresample.so.*" - } + metapackage=yes + depends="libswresample6" } ffmpeg-devel_package() { - depends=" - libavcodec>=${version}_${revision} - libavdevice>=${version}_${revision} - libavformat>=${version}_${revision} - libavutil>=${version}_${revision} - libavfilter>=${version}_${revision} - libpostproc>=${version}_${revision} - libswscale>=${version}_${revision} - libswresample>=${version}_${revision} - libavresample>=${version}_${revision}" + depends="ffmpeg6-devel" + metapackage=yes short_desc="Decoding, encoding and streaming software - development files" - conflicts="ffmpeg6-devel" - replaces="ffmpeg6-devel>=0" - case "$XBPS_TARGET_MACHINE" in - i686*) - # /usr/bin/strip: error: the input file '/destdir//ffmpeg-devel-4.4.4/usr/lib/libavfilter.a(vf_atadenoise.o)' has no sections - nostrip_files="/usr/lib/libavfilter.a";; - esac - - pkg_install() { - vmove usr/include - vmove usr/lib/pkgconfig - vmove "usr/lib/*.a" - vmove "usr/lib/*.so" - vmove usr/share/ffmpeg/examples - vmove usr/share/man/man3 - } } ffplay_package() { diff --git a/srcpkgs/ffmpeg6/template b/srcpkgs/ffmpeg6/template index 037ffc547b306b..8594771a493c2e 100644 --- a/srcpkgs/ffmpeg6/template +++ b/srcpkgs/ffmpeg6/template @@ -2,7 +2,7 @@ # audacity also needs to be bumped when a new ffmpeg version bumps libavformat's soname! pkgname=ffmpeg6 version=6.1.2 -revision=8 +revision=9 hostmakedepends="pkg-config perl" makedepends="zlib-devel bzip2-devel freetype-devel alsa-lib-devel libXfixes-devel libXext-devel libXvMC-devel libxcb-devel lame-devel libtheora-devel From cc87e7c5064867d136cc93c34c4ba00ba1f4c510 Mon Sep 17 00:00:00 2001 From: zlice Date: Tue, 7 Jan 2025 10:20:16 -0500 Subject: [PATCH 2/8] ffmpeg4: New package 4.4.6 --- common/shlibs | 10 + srcpkgs/ffmpeg4-devel | 1 + srcpkgs/ffmpeg4/files/altivec.patch | 60 +++++ .../patches/intel-media-driver-32bit.patch | 15 ++ srcpkgs/ffmpeg4/patches/v4l2-fix-glibc.patch | 17 ++ srcpkgs/ffmpeg4/patches/vulkan-gcc14.patch | 13 + srcpkgs/ffmpeg4/template | 233 ++++++++++++++++++ srcpkgs/libavcodec4 | 1 + srcpkgs/libavdevice4 | 1 + srcpkgs/libavfilter4 | 1 + srcpkgs/libavformat4 | 1 + srcpkgs/libavresample4 | 1 + srcpkgs/libavutil4 | 1 + srcpkgs/libpostproc4 | 1 + srcpkgs/libswresample4 | 1 + srcpkgs/libswscale4 | 1 + 16 files changed, 358 insertions(+) create mode 120000 srcpkgs/ffmpeg4-devel create mode 100644 srcpkgs/ffmpeg4/files/altivec.patch create mode 100644 srcpkgs/ffmpeg4/patches/intel-media-driver-32bit.patch create mode 100644 srcpkgs/ffmpeg4/patches/v4l2-fix-glibc.patch create mode 100644 srcpkgs/ffmpeg4/patches/vulkan-gcc14.patch create mode 100644 srcpkgs/ffmpeg4/template create mode 120000 srcpkgs/libavcodec4 create mode 120000 srcpkgs/libavdevice4 create mode 120000 srcpkgs/libavfilter4 create mode 120000 srcpkgs/libavformat4 create mode 120000 srcpkgs/libavresample4 create mode 120000 srcpkgs/libavutil4 create mode 120000 srcpkgs/libpostproc4 create mode 120000 srcpkgs/libswresample4 create mode 120000 srcpkgs/libswscale4 diff --git a/common/shlibs b/common/shlibs index 484715f7d72a74..065c78246ee741 100644 --- a/common/shlibs +++ b/common/shlibs @@ -414,6 +414,16 @@ libavcodec.so.58 libavcodec-4.0_1 libavutil.so.56 libavutil-4.0_1 libavfilter.so.7 libavfilter-4.0_1 libSDL-1.2.so.0 sdl12-compat-1.2.68_1 +libavdevice.so.58 libavdevice4-4.4.4_1 +libavformat.so.58 libavformat4-4.4.4_1 +libswscale.so.5 libswscale4-4.4.4_1 +libswresample.so.3 libswresample4-4.4.4_1 +libavresample.so.4 libavresample4-4.4.4_1 +libpostproc.so.55 libpostproc4-4.4.4_1 +libavcodec.so.58 libavcodec4-4.4.4_1 +libavutil.so.56 libavutil4-4.4.4_1 +libavfilter.so.7 libavfilter4-4.4.4_1 +libSDL-1.2.so.0 SDL-1.2.14_1 libSDL_image-1.2.so.0 SDL_image-1.2.10_1 libx264.so.157 x264-20190507.2245_1 libopenh264.so.7 openh264-2.4.1_1 diff --git a/srcpkgs/ffmpeg4-devel b/srcpkgs/ffmpeg4-devel new file mode 120000 index 00000000000000..887f354e7c6be3 --- /dev/null +++ b/srcpkgs/ffmpeg4-devel @@ -0,0 +1 @@ +ffmpeg4 \ No newline at end of file diff --git a/srcpkgs/ffmpeg4/files/altivec.patch b/srcpkgs/ffmpeg4/files/altivec.patch new file mode 100644 index 00000000000000..9c57200463320e --- /dev/null +++ b/srcpkgs/ffmpeg4/files/altivec.patch @@ -0,0 +1,60 @@ +revert some altivec specific change on all ppc* except ppc64le* + +q66: "We should also throw in a revert of FFmpeg/FFmpeg@3a557c5 but only +conditionally, for ppc* but not ppc64le* (the new code is valid for +POWER8 VSX which LE targets as a baseline but not BE)" + + +This reverts commit 3a557c5d88b7b15b5954ba2743febb055549b536. +--- + libswscale/ppc/yuv2rgb_altivec.c | 24 ++++++++++++++++++++---- + 1 file changed, 20 insertions(+), 4 deletions(-) + +diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c +index 536545293d..c1e2852adb 100644 +--- a/libswscale/ppc/yuv2rgb_altivec.c ++++ b/libswscale/ppc/yuv2rgb_altivec.c +@@ -305,6 +305,9 @@ static int altivec_ ## name(SwsContext *c, const unsigned char **in, \ + vector signed short R1, G1, B1; \ + vector unsigned char R, G, B; \ + \ ++ const vector unsigned char *y1ivP, *y2ivP, *uivP, *vivP; \ ++ vector unsigned char align_perm; \ ++ \ + vector signed short lCY = c->CY; \ + vector signed short lOY = c->OY; \ + vector signed short lCRV = c->CRV; \ +@@ -335,13 +338,26 @@ static int altivec_ ## name(SwsContext *c, const unsigned char **in, \ + vec_dstst(oute, (0x02000002 | (((w * 3 + 32) / 32) << 16)), 1); \ + \ + for (j = 0; j < w / 16; j++) { \ +- y0 = vec_xl(0, y1i); \ ++ y1ivP = (const vector unsigned char *) y1i; \ ++ y2ivP = (const vector unsigned char *) y2i; \ ++ uivP = (const vector unsigned char *) ui; \ ++ vivP = (const vector unsigned char *) vi; \ ++ \ ++ align_perm = vec_lvsl(0, y1i); \ ++ y0 = (vector unsigned char) \ ++ vec_perm(y1ivP[0], y1ivP[1], align_perm); \ + \ +- y1 = vec_xl(0, y2i); \ ++ align_perm = vec_lvsl(0, y2i); \ ++ y1 = (vector unsigned char) \ ++ vec_perm(y2ivP[0], y2ivP[1], align_perm); \ + \ +- u = (vector signed char) vec_xl(0, ui); \ ++ align_perm = vec_lvsl(0, ui); \ ++ u = (vector signed char) \ ++ vec_perm(uivP[0], uivP[1], align_perm); \ + \ +- v = (vector signed char) vec_xl(0, vi); \ ++ align_perm = vec_lvsl(0, vi); \ ++ v = (vector signed char) \ ++ vec_perm(vivP[0], vivP[1], align_perm); \ + \ + u = (vector signed char) \ + vec_sub(u, \ +-- +2.27.0 + diff --git a/srcpkgs/ffmpeg4/patches/intel-media-driver-32bit.patch b/srcpkgs/ffmpeg4/patches/intel-media-driver-32bit.patch new file mode 100644 index 00000000000000..567169f0e4afae --- /dev/null +++ b/srcpkgs/ffmpeg4/patches/intel-media-driver-32bit.patch @@ -0,0 +1,15 @@ +Fix type to be consistent with intel-media-driver + +diff -rup libavutil/hwcontext_vaapi.c.orig libavutil/hwcontext_vaapi.c +--- a/libavutil/hwcontext_vaapi.c ++++ b/libavutil/hwcontext_vaapi.c +@@ -1032,7 +1032,7 @@ static int vaapi_map_from_drm(AVHWFrames + uint32_t va_fourcc; + int err, i, j, k; + +- unsigned long buffer_handle; ++ uintptr_t buffer_handle; + VASurfaceAttribExternalBuffers buffer_desc; + VASurfaceAttrib attrs[2] = { + { + diff --git a/srcpkgs/ffmpeg4/patches/v4l2-fix-glibc.patch b/srcpkgs/ffmpeg4/patches/v4l2-fix-glibc.patch new file mode 100644 index 00000000000000..e4c9b1eb6c8f5b --- /dev/null +++ b/srcpkgs/ffmpeg4/patches/v4l2-fix-glibc.patch @@ -0,0 +1,17 @@ +libv4l2.h uses #ifdef, not #if + +diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c +index 42d4b97c8f701..0ae68723382f4 100644 +--- a/libavdevice/v4l2.c ++++ b/libavdevice/v4l2.c +@@ -47,6 +47,10 @@ + #include "v4l2-common.h" + #include + ++#if ! HAVE_POSIX_IOCTL ++#undef HAVE_POSIX_IOCTL ++#endif ++ + #if CONFIG_LIBV4L2 + #include + #endif diff --git a/srcpkgs/ffmpeg4/patches/vulkan-gcc14.patch b/srcpkgs/ffmpeg4/patches/vulkan-gcc14.patch new file mode 100644 index 00000000000000..d8da6251db05f7 --- /dev/null +++ b/srcpkgs/ffmpeg4/patches/vulkan-gcc14.patch @@ -0,0 +1,13 @@ +diff -rup libavutil/hwcontext_vulkan.c.orig libavutil/hwcontext_vulkan.c +--- a/libavutil/hwcontext_vulkan.c ++++ b/libavutil/hwcontext_vulkan.c +@@ -862,7 +862,7 @@ static void free_exec_ctx(AVHWFramesCont + + av_freep(&cmd->queues); + av_freep(&cmd->bufs); +- cmd->pool = NULL; ++ cmd->pool = VK_NULL_HANDLE; + } + + static VkCommandBuffer get_buf_exec_ctx(AVHWFramesContext *hwfc, VulkanExecCtx *cmd) + diff --git a/srcpkgs/ffmpeg4/template b/srcpkgs/ffmpeg4/template new file mode 100644 index 00000000000000..73c86e55140432 --- /dev/null +++ b/srcpkgs/ffmpeg4/template @@ -0,0 +1,233 @@ +# Template file for 'ffmpeg4' +# audacity also needs to be bumped when a new ffmpeg version bumps libavformat's soname! +pkgname=ffmpeg4 +version=4.4.6 +revision=2 +metapackage=yes +hostmakedepends="pkg-config perl" +makedepends="zlib-devel bzip2-devel freetype-devel alsa-lib-devel libXfixes-devel + libXext-devel libXvMC-devel libxcb-devel lame-devel libtheora-devel + libvorbis-devel x264-devel xvidcore-devel jack-devel SDL2-devel + libcdio-paranoia-devel librtmp-devel libmodplug-devel gnutls-devel + speex-devel celt-devel harfbuzz-devel libass-devel opus-devel ocl-icd-devel + libbs2b-devel libvidstab-devel libbluray-devel + $(vopt_if pulseaudio pulseaudio-devel) + $(vopt_if vaapi libva-devel) $(vopt_if vdpau libvdpau-devel) + $(vopt_if x265 x265-devel) $(vopt_if v4l2 v4l-utils-devel) + $(vopt_if fdk_aac fdk-aac-devel) $(vopt_if vpx libvpx-devel) + $(vopt_if aom libaom-devel) $(vopt_if sndio sndio-devel) + $(vopt_if dav1d libdav1d-devel) $(vopt_if zimg zimg-devel) + $(vopt_if webp libwebp-devel) $(vopt_if sofa libmysofa-devel) + $(vopt_if drm libdrm-devel) libsvt-av1-devel + $(vopt_if srt srt-devel) $(vopt_if rist librist-devel) + $(vopt_if vulkan 'vulkan-loader-devel') + $(vopt_if nvenc nv-codec-headers12.0) $(vopt_if nvdec nv-codec-headers12.0)" +# ffmpeg6 provides ffmpeg, ffprobe, ffplay, etc +depends="ffmpeg6" +short_desc="Decoding, encoding and streaming software (transitional dummy package)" +maintainer="Orphaned " +license="GPL-3.0-or-later" +homepage="https://www.ffmpeg.org" +changelog="https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog" +distfiles="https://www.ffmpeg.org/releases/ffmpeg-${version}.tar.xz" +checksum=2290461f467c08ab801731ed412d8e724a5511d6c33173654bd9c1d2e25d0617 + +build_options="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio + dav1d zimg webp sofa vulkan drm srt rist nvdec" +build_options_default="x265 v4l2 vpx aom sndio pulseaudio dav1d webp vulkan drm srt rist" + +desc_option_srt="Enable support for SRT (Secure, Reliable, Transport)" +desc_option_rist="Enable support for RIST (Reliable Internet Stream Transport)" +desc_option_sofa="Enable support for AES SOFA" +desc_option_webp="Enable support for WebP" + +case "$XBPS_TARGET_MACHINE" in + i686*|x86_64*) + hostmakedepends+=" nasm" + build_options_default+=" vaapi vdpau nvenc nvdec" + ;; + ppc64*) build_options_default+=" vaapi vdpau";; + mips*) CFLAGS="-mnan=legacy";; +esac + +_apply_patch() { + local args="$1" pname="$(basename $2)" + + if [ ! -f ".${pname}_done" ]; then + patch -N $args -i $2 + touch .${pname}_done + fi +} + +post_patch() { + case "$XBPS_TARGET_MACHINE" in + ppc64le*) ;; + ppc*) _apply_patch -p1 ${FILESDIR}/altivec.patch ;; + esac +} + +do_configure() { + # Fix gcc on x86_64-musl only + if [ "$XBPS_TARGET_MACHINE" = "x86_64-musl" ]; then + vsed -i configure -e "s;_cflags_speed='-O3';_cflags_speed='-O2';" + fi + + if [ "$CROSS_BUILD" ]; then + case "$XBPS_TARGET_MACHINE" in + arm*) _arch="arm";; + aarch64*) _arch="aarch64";; + mips*) _arch="mips";; + ppc64*) _arch="ppc64";; + ppc*) _arch="ppc";; + *) _arch="${XBPS_TARGET_MACHINE%%-musl}";; + esac + + _args+=" --enable-cross-compile + --sysroot=$XBPS_CROSS_BASE + --cross-prefix=${XBPS_CROSS_TRIPLET}- + --target-os=linux --arch=${_arch}" + fi + + case "$XBPS_TARGET_MACHINE" in + ppc|ppc-musl) _args+=" --disable-altivec";; + esac + + if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then + _args+=" --extra-libs=-latomic" + fi + + ./configure --prefix=/usr --disable-debug --enable-gpl --enable-gnutls \ + --disable-stripping \ + --enable-libcdio --enable-version3 --enable-runtime-cpudetect \ + --enable-libmp3lame --enable-libvorbis --enable-libxvid \ + --enable-libx264 $(vopt_enable vpx libvpx) --enable-libtheora \ + --enable-shared --enable-static --enable-libxcb \ + $(vopt_enable pulseaudio libpulse) --enable-libfreetype --enable-libmodplug \ + --enable-libspeex --enable-libcelt --enable-libass \ + --enable-libopus --enable-librtmp --enable-libjack \ + $(vopt_if fdk_aac '--enable-nonfree --enable-libfdk-aac') \ + --disable-libopencore_amrnb --disable-libopencore_amrwb \ + --disable-libopenjpeg --enable-libbluray --enable-libsvtav1 \ + --enable-postproc --enable-opencl --disable-libvmaf ${_args} \ + $(vopt_enable x265 libx265) \ + $(vopt_enable v4l2 libv4l2) \ + $(vopt_enable aom libaom) $(vopt_enable vaapi) $(vopt_enable vdpau) \ + --enable-libbs2b --enable-avresample --enable-libvidstab \ + $(vopt_enable dav1d libdav1d) \ + $(vopt_enable zimg libzimg) \ + $(vopt_enable webp libwebp) \ + $(vopt_enable sofa libmysofa) \ + $(vopt_enable vulkan) \ + $(vopt_enable drm libdrm) \ + $(vopt_enable srt libsrt) \ + $(vopt_enable rist librist) \ + $(vopt_if nvenc '--enable-nvenc') \ + $(vopt_if nvdec '--enable-nvdec') +} + +do_build() { + make ${makejobs} +} + +# transitional dummy package for ffmpeg6 +# binaries conflict with 6 +do_install() { + make DESTDIR=${DESTDIR} install + rm -rf ${DESTDIR}/usr/bin + rm -rf ${DESTDIR}/usr/share/man/man1 + rm -rf ${DESTDIR}/usr/share/ffmpeg/ffprobe.xsd + rm -rf ${DESTDIR}/usr/share/ffmpeg/libvpx*ffpreset +} + +libavcodec4_package() { + short_desc="FFmpeg codec library" + pkg_install() { + vmove "usr/lib/libavcodec.so.*" + } +} + +libavdevice4_package() { + short_desc="FFmpeg device handling library" + pkg_install() { + vmove "usr/lib/libavdevice.so.*" + } +} + +libavresample4_package() { + short_desc="FFmpeg audio resampling library" + pkg_install() { + vmove "usr/lib/libavresample.so.*" + } +} + +libavformat4_package() { + short_desc="FFmpeg file format library" + pkg_install() { + vmove "usr/lib/libavformat.so.*" + } +} + +libavutil4_package() { + short_desc="FFmpeg utility library" + pkg_install() { + vmove "usr/lib/libavutil.so.*" + } +} + +libavfilter4_package() { + short_desc="FFmpeg audio/video filter library" + pkg_install() { + vmove "usr/lib/libavfilter.so.*" + } +} + +libpostproc4_package() { + short_desc="FFmpeg video postprocessing library" + pkg_install() { + vmove "usr/lib/libpostproc.so.*" + } +} + +libswscale4_package() { + short_desc="FFmpeg video scaling library" + pkg_install() { + vmove "usr/lib/libswscale.so.*" + } +} + +libswresample4_package() { + short_desc="FFmpeg video resampling library" + pkg_install() { + vmove "usr/lib/libswresample.so.*" + } +} + +ffmpeg4-devel_package() { + depends=" + libavcodec4>=${version}_${revision} + libavdevice4>=${version}_${revision} + libavformat4>=${version}_${revision} + libavutil4>=${version}_${revision} + libavfilter4>=${version}_${revision} + libpostproc4>=${version}_${revision} + libswscale4>=${version}_${revision} + libswresample4>=${version}_${revision} + libavresample4>=${version}_${revision}" + short_desc="Decoding, encoding and streaming software - development files" + conflicts="ffmpeg6-devel" + replaces="ffmpeg6-devel>=0" + case "$XBPS_TARGET_MACHINE" in + i686*) + # /usr/bin/strip: error: the input file '/destdir//ffmpeg-devel-4.4.4/usr/lib/libavfilter.a(vf_atadenoise.o)' has no sections + nostrip_files="/usr/lib/libavfilter.a";; + esac + + pkg_install() { + vmove usr/include + vmove usr/lib/pkgconfig + vmove "usr/lib/*.a" + vmove "usr/lib/*.so" + vmove usr/share/ffmpeg/examples + vmove usr/share/man/man3 + } +} diff --git a/srcpkgs/libavcodec4 b/srcpkgs/libavcodec4 new file mode 120000 index 00000000000000..887f354e7c6be3 --- /dev/null +++ b/srcpkgs/libavcodec4 @@ -0,0 +1 @@ +ffmpeg4 \ No newline at end of file diff --git a/srcpkgs/libavdevice4 b/srcpkgs/libavdevice4 new file mode 120000 index 00000000000000..887f354e7c6be3 --- /dev/null +++ b/srcpkgs/libavdevice4 @@ -0,0 +1 @@ +ffmpeg4 \ No newline at end of file diff --git a/srcpkgs/libavfilter4 b/srcpkgs/libavfilter4 new file mode 120000 index 00000000000000..887f354e7c6be3 --- /dev/null +++ b/srcpkgs/libavfilter4 @@ -0,0 +1 @@ +ffmpeg4 \ No newline at end of file diff --git a/srcpkgs/libavformat4 b/srcpkgs/libavformat4 new file mode 120000 index 00000000000000..887f354e7c6be3 --- /dev/null +++ b/srcpkgs/libavformat4 @@ -0,0 +1 @@ +ffmpeg4 \ No newline at end of file diff --git a/srcpkgs/libavresample4 b/srcpkgs/libavresample4 new file mode 120000 index 00000000000000..887f354e7c6be3 --- /dev/null +++ b/srcpkgs/libavresample4 @@ -0,0 +1 @@ +ffmpeg4 \ No newline at end of file diff --git a/srcpkgs/libavutil4 b/srcpkgs/libavutil4 new file mode 120000 index 00000000000000..887f354e7c6be3 --- /dev/null +++ b/srcpkgs/libavutil4 @@ -0,0 +1 @@ +ffmpeg4 \ No newline at end of file diff --git a/srcpkgs/libpostproc4 b/srcpkgs/libpostproc4 new file mode 120000 index 00000000000000..887f354e7c6be3 --- /dev/null +++ b/srcpkgs/libpostproc4 @@ -0,0 +1 @@ +ffmpeg4 \ No newline at end of file diff --git a/srcpkgs/libswresample4 b/srcpkgs/libswresample4 new file mode 120000 index 00000000000000..887f354e7c6be3 --- /dev/null +++ b/srcpkgs/libswresample4 @@ -0,0 +1 @@ +ffmpeg4 \ No newline at end of file diff --git a/srcpkgs/libswscale4 b/srcpkgs/libswscale4 new file mode 120000 index 00000000000000..887f354e7c6be3 --- /dev/null +++ b/srcpkgs/libswscale4 @@ -0,0 +1 @@ +ffmpeg4 \ No newline at end of file From 4308c39e98b8b246e2361aac2171be809a5791bb Mon Sep 17 00:00:00 2001 From: zlice Date: Tue, 7 Jan 2025 10:21:21 -0500 Subject: [PATCH 3/8] vlc: revbump for ffmpeg4 --- srcpkgs/vlc/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/vlc/template b/srcpkgs/vlc/template index f98ea01934465d..d5f10aad0c554d 100644 --- a/srcpkgs/vlc/template +++ b/srcpkgs/vlc/template @@ -1,7 +1,7 @@ # Template file for 'vlc' pkgname=vlc version=3.0.21 -revision=4 +revision=5 build_style=gnu-configure configure_args="--disable-gme --disable-libtar --enable-jack --enable-live555 --disable-fluidsynth --enable-dvdread @@ -25,7 +25,7 @@ lib32disabled=yes hostmakedepends="automake libtool pkg-config flex gettext libgcrypt-devel live555-devel gettext-devel $(vopt_if lua lua52) $(vopt_if chromecast protobuf)" makedepends=" - avahi-libs-devel dbus-glib-devel faad2-devel ffmpeg-devel freefont-ttf + avahi-libs-devel dbus-glib-devel faad2-devel ffmpeg4-devel freefont-ttf gnutls-devel jack-devel liba52-devel libass-devel libbluray-devel libcdio-devel libdca-devel libdvbpsi-devel libdvdnav-devel libmad-devel libmatroska-devel libmodplug-devel libmpcdec-devel libmpeg2-devel From 881e0027d27d3298451f7d66f30aa1b376d5978b Mon Sep 17 00:00:00 2001 From: zlice Date: Tue, 7 Jan 2025 10:22:30 -0500 Subject: [PATCH 4/8] ppsspp: revbump for ffmpeg4 --- srcpkgs/ppsspp/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/ppsspp/template b/srcpkgs/ppsspp/template index a2ca9dd0cd1b09..40aec531fdd0cc 100644 --- a/srcpkgs/ppsspp/template +++ b/srcpkgs/ppsspp/template @@ -3,7 +3,7 @@ # major ffmpeg updates have a high likelyhood of breaking video playback pkgname=ppsspp version=1.18.1 -revision=1 +revision=2 _glslang_commit=b34f619e1c85810dcb3c578107d2e48ba4ee2b37 _SPIRV_Cross_commit=4212eef67ed0ca048cb726a6767185504e7695e5 _armips_commit=a8d71f0f279eb0d30ecf6af51473b66ae0cf8e8d @@ -18,7 +18,7 @@ configure_args="-DHEADLESS=1 -DUSE_SYSTEM_FFMPEG=1 -DUNITTEST=ON -DUSING_QT_UI=$(vopt_if qt ON OFF) -DUSE_SYSTEM_ZSTD=ON -DARMIPS_USE_STD_FILESYSTEM=ON" hostmakedepends="pkg-config python3 $(vopt_if qt qt5-host-tools)" -makedepends="zlib-devel glew-devel ffmpeg-devel libzip-devel +makedepends="zlib-devel glew-devel ffmpeg4-devel libzip-devel snappy-devel rapidjson libpng-devel libzstd-devel $(vopt_if sdl2 'SDL2_ttf-devel SDL2-devel') wayland-devel $(vopt_if qt 'qt5-devel qt5-multimedia-devel')" From 13b905ae9f635ec5b7c492aec62796a18aa7e434 Mon Sep 17 00:00:00 2001 From: zlice Date: Tue, 7 Jan 2025 10:22:44 -0500 Subject: [PATCH 5/8] tvheadend: revbump for ffmpeg4 --- srcpkgs/tvheadend/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/tvheadend/template b/srcpkgs/tvheadend/template index 9aea7de4ec7057..ef4cdddb9de0d6 100644 --- a/srcpkgs/tvheadend/template +++ b/srcpkgs/tvheadend/template @@ -1,14 +1,14 @@ # Template file for 'tvheadend' pkgname=tvheadend version=4.2.8 -revision=7 +revision=8 build_style=gnu-configure configure_args="--enable-dvbscan --disable-ffmpeg_static --disable-hdhomerun_static --disable-bintray_cache --disable-libx264_static --disable-libx265_static --disable-libvpx_static --disable-libtheora_static --disable-libvorbis_static --disable-libfdkaac_static" hostmakedepends="gettext pkg-config python3 git which" -makedepends="avahi-libs-devel openssl-devel zlib-devel libcurl-devel ffmpeg-devel" +makedepends="avahi-libs-devel openssl-devel zlib-devel libcurl-devel ffmpeg4-devel" short_desc="TV streaming server" maintainer="lemmi " license="GPL-3.0-only" From c5a7fdb97f5567268c90947cf95d576f93625e95 Mon Sep 17 00:00:00 2001 From: zlice Date: Tue, 17 Jun 2025 14:16:52 -0400 Subject: [PATCH 6/8] rsgain: revbump for ffmpeg4 --- srcpkgs/rsgain/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/rsgain/template b/srcpkgs/rsgain/template index 3613cfe9ea3efd..82c5ca20c4c9ae 100644 --- a/srcpkgs/rsgain/template +++ b/srcpkgs/rsgain/template @@ -1,10 +1,10 @@ # Template file for 'rsgain' pkgname=rsgain version=3.6 -revision=1 +revision=2 build_style=cmake hostmakedepends="pkg-config" -makedepends="ffmpeg-devel taglib-devel libebur128-devel inih-devel fmt-devel" +makedepends="ffmpeg4-devel taglib-devel libebur128-devel inih-devel fmt-devel" short_desc="Simple, but powerful ReplayGain 2.0 tagging utility" maintainer="lemmi " license="BSD-2-Clause" From 7247aeda23e605343723084e61f80f89f29869aa Mon Sep 17 00:00:00 2001 From: zlice Date: Tue, 17 Jun 2025 14:17:09 -0400 Subject: [PATCH 7/8] kew: revbump for ffmpeg4 --- srcpkgs/kew/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/kew/template b/srcpkgs/kew/template index ceab36431fb828..b61f15416d750b 100644 --- a/srcpkgs/kew/template +++ b/srcpkgs/kew/template @@ -1,11 +1,11 @@ # Template file for 'kew' pkgname=kew version=3.3.2 -revision=1 +revision=2 build_style=gnu-makefile make_use_env=yes hostmakedepends="pkg-config" -makedepends="faad2-devel libnotify-devel taglib-devel chafa-devel ffmpeg-devel fftw-devel +makedepends="faad2-devel libnotify-devel taglib-devel chafa-devel ffmpeg4-devel fftw-devel freeimage-devel libglib-devel libogg-devel libvorbis-devel opus-devel opusfile-devel libcurl-devel" short_desc="Command-line music player" From 31e7b0b3e8fe0d87aa4d57c225173e9e82f1c732 Mon Sep 17 00:00:00 2001 From: zlice Date: Tue, 17 Jun 2025 14:17:36 -0400 Subject: [PATCH 8/8] electron24: revbump for ffmpeg4 --- srcpkgs/electron24/template | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srcpkgs/electron24/template b/srcpkgs/electron24/template index eafb9a0c696131..49a4cd31c5c824 100644 --- a/srcpkgs/electron24/template +++ b/srcpkgs/electron24/template @@ -1,7 +1,7 @@ # Template file for 'electron24' pkgname=electron24 version=24.3.0 -revision=3 +revision=4 _nodever=18.14.0 _chromiumver=112.0.5615.165 archs="x86_64* aarch64*" @@ -9,7 +9,7 @@ create_wrksrc=yes build_wrksrc="src" hostmakedepends="$(vopt_if clang "clang lld") pkgconf perl gperf bison ninja nodejs hwids libwebp-devel freetype-devel harfbuzz-devel libpng-devel nss-devel which git libevent-devel - pciutils-devel ffmpeg-devel libxml2-devel libglib-devel yarn openjdk8 libxslt-devel + pciutils-devel ffmpeg4-devel libxml2-devel libglib-devel yarn openjdk8 libxslt-devel opus-devel libXcursor-devel libXcomposite-devel libXtst-devel libXrandr-devel libXScrnSaver-devel alsa-lib-devel re2-devel snappy-devel mit-krb5-devel $(vopt_if pulseaudio pulseaudio-devel) $(vopt_if sndio sndio-devel) jq python3.11" @@ -22,7 +22,7 @@ makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel libjpeg-turbo-devel libevent-devel json-c-devel harfbuzz-devel minizip-devel jsoncpp-devel zlib-devel libcap-devel libXdamage-devel re2-devel fontconfig-devel freetype-devel opus-devel libffi-devel - $(vopt_if sndio sndio-devel) ffmpeg-devel libva-devel libuv-devel c-ares-devel libnotify-devel + $(vopt_if sndio sndio-devel) ffmpeg4-devel libva-devel libuv-devel c-ares-devel libnotify-devel $(vopt_if pipewire pipewire-devel) wayland-devel libcurl-devel libxshmfence-devel" short_desc="Cross platform application framework based on web technologies" maintainer="John "