diff options
Diffstat (limited to 'user')
-rw-r--r-- | user/ffmpeg/APKBUILD | 2 | ||||
-rw-r--r-- | user/ffmpeg/altivec-fix.patch | 39 |
2 files changed, 33 insertions, 8 deletions
diff --git a/user/ffmpeg/APKBUILD b/user/ffmpeg/APKBUILD index 50d5d6084..04f196d61 100644 --- a/user/ffmpeg/APKBUILD +++ b/user/ffmpeg/APKBUILD @@ -100,4 +100,4 @@ libs() { sha512sums="2dc2b8c66d9c31b6d06da5da336ef45415e3c24fac8c9063cd47f7d4cf688ec4846f88cdd9e841b956cea81e56bb3c6b7655aef503400c7367c32910c28990ac ffmpeg-4.0.2.tar.xz 32652e18d4eb231a2e32ad1cacffdf33264aac9d459e0e2e6dd91484fced4e1ca5a62886057b1f0b4b1589c014bbe793d17c78adbaffec195f9a75733b5b18cb 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch -39b7c7346a45ef80ea1122bba2b228ed5e45189bf6f726bb4bf3c7839bb1c91e2358629f85f123106be7ab470ead91d16db2d85b9984093a26c71ed9a01e0d9d altivec-fix.patch" +225a87ad4b5564e2cbf35e669cc54adddf7f8ca05fbcfc27ed92f4406d0fd3b27558477afaf4c3c13079b19035d0761d8b2f8af9bc25fcfd727183faa606e4f6 altivec-fix.patch" diff --git a/user/ffmpeg/altivec-fix.patch b/user/ffmpeg/altivec-fix.patch index 6356c60ef..e0d6230a3 100644 --- a/user/ffmpeg/altivec-fix.patch +++ b/user/ffmpeg/altivec-fix.patch @@ -1,22 +1,47 @@ ---- ffmpeg-4.0.2/libavcodec/ppc/hevcdsp.c.old 2018-07-18 13:52:01.000000000 +0000 -+++ ffmpeg-4.0.2/libavcodec/ppc/hevcdsp.c 2018-07-19 08:24:42.480000000 +0000 -@@ -41,8 +41,8 @@ +From c0f58c3d4da82aaf5774b1bc3a11b8a416664e18 Mon Sep 17 00:00:00 2001 +From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> +Date: Sat, 21 Jul 2018 00:42:00 -0500 +Subject: [PATCH] libavcodec/ppc: Fix HEVC AltiVec routines + +GCC requires the argument to vec_splat_u32 to be a literal. The easiest +way to accomplish this is to change 'shift' to be const in scale (as it +is in the transform routine above), and convert both routines to be +inline. This way, GCC can coerce the values to literals. + +Tested on a 970 (Apple G5) and POWER9 (Talos II); passed fate and played +a clip of Big Buck Bunny correctly. + +Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com> +--- + libavcodec/ppc/hevcdsp.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/libavcodec/ppc/hevcdsp.c b/libavcodec/ppc/hevcdsp.c +index 4b1037d792..c8679c2de2 100644 +--- a/libavcodec/ppc/hevcdsp.c ++++ b/libavcodec/ppc/hevcdsp.c +@@ -41,8 +41,9 @@ static const vec_u8 mask[2] = { { 0x04, 0x05, 0x0C, 0x0D, 0x14, 0x15, 0x1C, 0x1D, 0x06, 0x07, 0x0E, 0x0F, 0x16, 0x17, 0x1E, 0x1F }, }; -static void transform4x4(vec_s16 src_01, vec_s16 src_23, vec_s32 res[4], - const int shift, int16_t *coeffs) -+static inline void transform4x4(vec_s16 src_01, vec_s16 src_23, vec_s32 res[4], -+ const int shift, int16_t *coeffs) ++static av_always_inline void transform4x4(vec_s16 src_01, vec_s16 src_23, ++ vec_s32 res[4], const int shift, ++ int16_t *coeffs) { vec_s16 src_02, src_13; vec_s32 zero = vec_splat_s32(0); -@@ -67,7 +67,7 @@ +@@ -67,7 +68,8 @@ static void transform4x4(vec_s16 src_01, vec_s16 src_23, vec_s32 res[4], res[3] = vec_sub(e0, o0); } -static void scale(vec_s32 res[4], vec_s16 res_packed[2], int shift) -+static inline void scale(vec_s32 res[4], vec_s16 res_packed[2], const int shift) ++static av_always_inline void scale(vec_s32 res[4], vec_s16 res_packed[2], ++ const int shift) { int i; vec_u32 v_shift = vec_splat_u32(shift); +-- +2.17.1 + |