summaryrefslogtreecommitdiff
path: root/package/ffmpeg/patches/patch-libavcodec_arm_synth_filter_vfp_S
diff options
context:
space:
mode:
Diffstat (limited to 'package/ffmpeg/patches/patch-libavcodec_arm_synth_filter_vfp_S')
-rw-r--r--package/ffmpeg/patches/patch-libavcodec_arm_synth_filter_vfp_S93
1 files changed, 93 insertions, 0 deletions
diff --git a/package/ffmpeg/patches/patch-libavcodec_arm_synth_filter_vfp_S b/package/ffmpeg/patches/patch-libavcodec_arm_synth_filter_vfp_S
new file mode 100644
index 000000000..1472699be
--- /dev/null
+++ b/package/ffmpeg/patches/patch-libavcodec_arm_synth_filter_vfp_S
@@ -0,0 +1,93 @@
+--- ffmpeg-3.4.1.orig/libavcodec/arm/synth_filter_vfp.S 2016-03-29 04:25:11.000000000 +0200
++++ ffmpeg-3.4.1/libavcodec/arm/synth_filter_vfp.S 2017-07-27 02:09:00.326946211 +0200
+@@ -1,6 +1,5 @@
+ /*
+ * Copyright (c) 2013 RISC OS Open Ltd
+- * Author: Ben Avison <bavison@riscosopen.org>
+ *
+ * This file is part of FFmpeg.
+ *
+@@ -17,6 +16,8 @@
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
++ *
++ * Author: Ben Avison <bavison@riscosopen.org>
+ */
+
+ #include "libavutil/arm/asm.S"
+@@ -124,7 +125,7 @@ function ff_synth_filter_float_vfp, expo
+ push {r3-r7,lr}
+ vpush {s16-s31}
+ ldr lr, [P_SB_OFF]
+- add a2, ORIG_P_SB, lr, lsl #2 @ calculate synth_buf to pass to imdct_half
++ add a2, ORIG_P_SB, lr, LSL #2 @ calculate synth_buf to pass to imdct_half
+ mov P_SB, a2 @ and keep a copy for ourselves
+ bic J_WRAP, lr, #63 @ mangled to make testing for wrap easier in inner loop
+ sub lr, lr, #32
+@@ -132,12 +133,12 @@ function ff_synth_filter_float_vfp, expo
+ str lr, [P_SB_OFF] @ rotate offset, modulo buffer size, ready for next call
+ ldr a3, [sp, #(16+6+2)*4] @ fetch in from stack, to pass to imdct_half
+ VFP vmov s16, SCALE @ imdct_half is free to corrupt s0, but it contains one of our arguments in hardfp case
+- bl X(ff_imdct_half_vfp)
++ bl ff_imdct_half_c
+ VFP vmov SCALE, s16
+
+- fmrx OLDFPSCR, FPSCR
++ vmrs OLDFPSCR, FPSCR
+ ldr lr, =0x03030000 @ RunFast mode, short vectors of length 4, stride 1
+- fmxr FPSCR, lr
++ vmsr FPSCR, lr
+ ldr P_SB2_DN, [sp, #16*4]
+ ldr P_WIN_DN, [sp, #(16+6+0)*4]
+ ldr P_OUT_DN, [sp, #(16+6+1)*4]
+@@ -196,48 +197,10 @@ NOVFP vldr SCALE, [sp, #(16+6+3)*4]
+ vstmdb P_SB2_DN!, {VD0-VD3}
+ bne 1b
+
+- fmxr FPSCR, OLDFPSCR
++ vmsr FPSCR, OLDFPSCR
+ vpop {s16-s31}
+ pop {r3-r7,pc}
+ endfunc
+
+- .unreq IMDCT
+- .unreq ORIG_P_SB
+- .unreq P_SB_OFF
+- .unreq I
+- .unreq P_SB2_UP
+- .unreq OLDFPSCR
+- .unreq P_SB2_DN
+- .unreq P_WIN_DN
+- .unreq P_OUT_DN
+- .unreq P_SB
+- .unreq J_WRAP
+- .unreq P_WIN_UP
+- .unreq P_OUT_UP
+-
+- .unreq SCALE
+- .unreq SBUF_DAT_REV0
+- .unreq SBUF_DAT_REV1
+- .unreq SBUF_DAT_REV2
+- .unreq SBUF_DAT_REV3
+- .unreq VA0
+- .unreq VA3
+- .unreq VB0
+- .unreq VB3
+- .unreq VC0
+- .unreq VC3
+- .unreq VD0
+- .unreq VD3
+- .unreq SBUF_DAT0
+- .unreq SBUF_DAT1
+- .unreq SBUF_DAT2
+- .unreq SBUF_DAT3
+- .unreq SBUF_DAT_ALT0
+- .unreq SBUF_DAT_ALT1
+- .unreq SBUF_DAT_ALT2
+- .unreq SBUF_DAT_ALT3
+- .unreq WIN_DN_DAT0
+- .unreq WIN_UP_DAT0
+-
+ .align 3
+ zero: .word 0, 0