summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
Diffstat (limited to 'user')
-rw-r--r--user/ffmpeg/APKBUILD2
-rw-r--r--user/ffmpeg/altivec-fix.patch39
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
+