commit:     44b6376a81a1912b0a5337585b694d38521025e9
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  7 17:03:52 2020 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Oct  7 17:07:01 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=44b6376a

media-video/ffmpeg: fix ppc build for 4.3.1

See: https://trac.ffmpeg.org/ticket/8750
Package-Manager: Portage-3.0.4, Repoman-3.0.1
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-video/ffmpeg/ffmpeg-4.3.1.ebuild             |  1 +
 .../files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch   | 23 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/media-video/ffmpeg/ffmpeg-4.3.1.ebuild 
b/media-video/ffmpeg/ffmpeg-4.3.1.ebuild
index e1d995bd1cf..f1f6178b251 100644
--- a/media-video/ffmpeg/ffmpeg-4.3.1.ebuild
+++ b/media-video/ffmpeg/ffmpeg-4.3.1.ebuild
@@ -327,6 +327,7 @@ S=${WORKDIR}/${P/_/-}
 PATCHES=(
        "${FILESDIR}"/chromium-r1.patch
        "${FILESDIR}"/${PN}-4.3-fix-build-without-SSSE3.patch
+       "${FILESDIR}"/${PN}-4.3-altivec-novsx-yuv2rgb.patch
 )
 
 MULTILIB_WRAPPED_HEADERS=(

diff --git a/media-video/ffmpeg/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch 
b/media-video/ffmpeg/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch
new file mode 100644
index 00000000000..40e7f916172
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-4.3-altivec-novsx-yuv2rgb.patch
@@ -0,0 +1,23 @@
+Fixes build on ppc.
+https://trac.ffmpeg.org/attachment/ticket/8750/ffmpeg_altivec_yuv2rgb_novsx.patch
+diff --git a/libswscale/ppc/yuv2rgb_altivec.c 
b/libswscale/ppc/yuv2rgb_altivec.c
+index 536545293d..930ef6b98f 100644
+--- a/libswscale/ppc/yuv2rgb_altivec.c
++++ b/libswscale/ppc/yuv2rgb_altivec.c
+@@ -283,6 +283,16 @@ static inline void cvtyuvtoRGB(SwsContext *c, vector 
signed short Y,
+  * 
------------------------------------------------------------------------------
+  */
+
++#if !HAVE_VSX
++static inline vector unsigned char vec_xl(signed long long offset, const 
ubyte *addr)
++{
++    const vector unsigned char *v_addr = (const vector unsigned char *) (addr 
+ offset);
++    vector unsigned char align_perm = vec_lvsl(offset, addr);
++
++    return (vector unsigned char) vec_perm(v_addr[0], v_addr[1], align_perm);
++}
++#endif /* !HAVE_VSX */
++
+ #define DEFCSP420_CVT(name, out_pixels)                                       
\
+ static int altivec_ ## name(SwsContext *c, const unsigned char **in,          
\
+                             int *instrides, int srcSliceY, int srcSliceH,     
\

Reply via email to