diff --git a/srcpkgs/ffmpeg/files/altivec.patch b/srcpkgs/ffmpeg/files/altivec.patch new file mode 100644 index 0000000000..9c57200463 --- /dev/null +++ b/srcpkgs/ffmpeg/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/ffmpeg/template b/srcpkgs/ffmpeg/template index ee7bd6ee48..1e66e654e4 100644 --- a/srcpkgs/ffmpeg/template +++ b/srcpkgs/ffmpeg/template @@ -1,15 +1,15 @@ # Template file for 'ffmpeg' # audacity also needs to be bumped when a new ffmpeg version bumps libavformat's soname! pkgname=ffmpeg -version=4.2.3 -revision=6 +version=4.3.1 +revision=1 short_desc="Decoding, encoding and streaming software" maintainer="Johannes " license="GPL-3.0-or-later" homepage="https://www.ffmpeg.org" changelog="https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog" distfiles="${homepage}/releases/ffmpeg-${version}.tar.xz" -checksum=9df6c90aed1337634c1fb026fb01c154c29c82a64ea71291ff2da9aacb9aad31 +checksum=ad009240d46e307b4e03a213a0f49c11b650e445b1f8be0dda2a9212b34d2ffb hostmakedepends="pkg-config perl yasm" makedepends="zlib-devel bzip2-devel freetype-devel alsa-lib-devel libXfixes-devel @@ -34,6 +34,22 @@ case "$XBPS_TARGET_MACHINE" in 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