gst-ffmpeg: fix build on armv6 without thumb2 (e.g. RaspberryPi)
authorArnout Vandecappelle <arnout@mind.be>
Wed, 18 Jun 2014 23:16:18 +0000 (01:16 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 22 Jun 2014 17:18:41 +0000 (19:18 +0200)
[Thomas: rename existing patch and the one added by Arnout to follow
the patch naming convention.]

Cc: Marco Trapanese <marcotrapanese@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/gstreamer/gst-ffmpeg/gst-ffmpeg-0.10.13_gcc47.patch [deleted file]
package/gstreamer/gst-ffmpeg/gst-ffmpeg-0001-gcc47.patch [new file with mode: 0644]
package/gstreamer/gst-ffmpeg/gst-ffmpeg-0002-arm-avoid-using-the-movw-instruction.patch [new file with mode: 0644]

diff --git a/package/gstreamer/gst-ffmpeg/gst-ffmpeg-0.10.13_gcc47.patch b/package/gstreamer/gst-ffmpeg/gst-ffmpeg-0.10.13_gcc47.patch
deleted file mode 100644 (file)
index 16744ab..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-gst-ffmpeg libav: Fixes compiling gst-ffmpeg with gcc-4.7
-
-Fetch from: http://www.slackware.com/~alien/slackbuilds/gst-plugins-ffmpeg/build/gst-ffmpeg-0.10.13_gcc47.patch
-
-Signed-off-by: Bernd Kuhls <berndkuhls@hotmail.com>
----
-Submitted By: Andrew Benton <andy@benton.eu.com>
-Date: 2012-06-15
-Initial Package Version: 0.10.13
-Upstream Status: From upstream
-Origin:
-http://git.videolan.org/?p=ffmpeg.git;a=patch;h=5f654897e325349dacf2546674e0510bb72ecb50
-
-Description: Fixes compiling gst-ffmpeg with gcc-4.7
-
-libavcodec/x86/h264_qpel_mmx.c: Assembler messages:
-libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp'
-libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp'
-libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp'
-libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp'
-libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
-libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
-libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
-make[5]: *** [libavcodec/x86/dsputil_mmx.o] Error 1
-
-Index: gst-ffmpeg-0.10.13/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c
-===================================================================
---- gst-ffmpeg-0.10.13.orig/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c  2012-03-30 11:39:41.324522051 -0700
-+++ gst-ffmpeg-0.10.13/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c       2012-03-30 11:54:08.152564075 -0700
-@@ -398,7 +398,7 @@
-             "2:                         \n\t"\
-             \
-             : "+a"(src), "+c"(dst)\
--            : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "g"(h)\
-+            : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "rm"(h)\
-             : "memory"\
-         );\
-         src += 4-(h+5)*srcStride;\
-@@ -446,7 +446,7 @@
-             QPEL_H264HV(%%mm3, %%mm4, %%mm5, %%mm0, %%mm1, %%mm2, 15*48)\
-             "2:                     \n\t"\
-             : "+a"(src)\
--            : "c"(tmp), "S"((x86_reg)srcStride), "g"(size)\
-+            : "c"(tmp), "S"((x86_reg)srcStride), "rm"(size)\
-             : "memory"\
-             );\
-         tmp += 4;\
-@@ -823,7 +823,7 @@
-         "2:                          \n\t"\
-         \
-         : "+a"(src), "+c"(dst)\
--        : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "g"(h)\
-+        : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "rm"(h)\
-         : XMM_CLOBBERS("%xmm0", "%xmm1", "%xmm2", "%xmm3", \
-                        "%xmm4", "%xmm5", "%xmm6", "%xmm7",)\
-           "memory"\
-@@ -878,7 +878,7 @@
-             QPEL_H264HV_XMM(%%xmm3, %%xmm4, %%xmm5, %%xmm0, %%xmm1, %%xmm2, 15*48)
-             "2:                         \n\t"
-             : "+a"(src)
--            : "c"(tmp), "S"((x86_reg)srcStride), "g"(size)
-+            : "c"(tmp), "S"((x86_reg)srcStride), "rm"(size)
-             : XMM_CLOBBERS("%xmm0", "%xmm1", "%xmm2", "%xmm3",
-                            "%xmm4", "%xmm5", "%xmm6", "%xmm7",)
-               "memory"
diff --git a/package/gstreamer/gst-ffmpeg/gst-ffmpeg-0001-gcc47.patch b/package/gstreamer/gst-ffmpeg/gst-ffmpeg-0001-gcc47.patch
new file mode 100644 (file)
index 0000000..16744ab
--- /dev/null
@@ -0,0 +1,65 @@
+gst-ffmpeg libav: Fixes compiling gst-ffmpeg with gcc-4.7
+
+Fetch from: http://www.slackware.com/~alien/slackbuilds/gst-plugins-ffmpeg/build/gst-ffmpeg-0.10.13_gcc47.patch
+
+Signed-off-by: Bernd Kuhls <berndkuhls@hotmail.com>
+---
+Submitted By: Andrew Benton <andy@benton.eu.com>
+Date: 2012-06-15
+Initial Package Version: 0.10.13
+Upstream Status: From upstream
+Origin:
+http://git.videolan.org/?p=ffmpeg.git;a=patch;h=5f654897e325349dacf2546674e0510bb72ecb50
+
+Description: Fixes compiling gst-ffmpeg with gcc-4.7
+
+libavcodec/x86/h264_qpel_mmx.c: Assembler messages:
+libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
+make[5]: *** [libavcodec/x86/dsputil_mmx.o] Error 1
+
+Index: gst-ffmpeg-0.10.13/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c
+===================================================================
+--- gst-ffmpeg-0.10.13.orig/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c  2012-03-30 11:39:41.324522051 -0700
++++ gst-ffmpeg-0.10.13/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c       2012-03-30 11:54:08.152564075 -0700
+@@ -398,7 +398,7 @@
+             "2:                         \n\t"\
+             \
+             : "+a"(src), "+c"(dst)\
+-            : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "g"(h)\
++            : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "rm"(h)\
+             : "memory"\
+         );\
+         src += 4-(h+5)*srcStride;\
+@@ -446,7 +446,7 @@
+             QPEL_H264HV(%%mm3, %%mm4, %%mm5, %%mm0, %%mm1, %%mm2, 15*48)\
+             "2:                     \n\t"\
+             : "+a"(src)\
+-            : "c"(tmp), "S"((x86_reg)srcStride), "g"(size)\
++            : "c"(tmp), "S"((x86_reg)srcStride), "rm"(size)\
+             : "memory"\
+             );\
+         tmp += 4;\
+@@ -823,7 +823,7 @@
+         "2:                          \n\t"\
+         \
+         : "+a"(src), "+c"(dst)\
+-        : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "g"(h)\
++        : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "rm"(h)\
+         : XMM_CLOBBERS("%xmm0", "%xmm1", "%xmm2", "%xmm3", \
+                        "%xmm4", "%xmm5", "%xmm6", "%xmm7",)\
+           "memory"\
+@@ -878,7 +878,7 @@
+             QPEL_H264HV_XMM(%%xmm3, %%xmm4, %%xmm5, %%xmm0, %%xmm1, %%xmm2, 15*48)
+             "2:                         \n\t"
+             : "+a"(src)
+-            : "c"(tmp), "S"((x86_reg)srcStride), "g"(size)
++            : "c"(tmp), "S"((x86_reg)srcStride), "rm"(size)
+             : XMM_CLOBBERS("%xmm0", "%xmm1", "%xmm2", "%xmm3",
+                            "%xmm4", "%xmm5", "%xmm6", "%xmm7",)
+               "memory"
diff --git a/package/gstreamer/gst-ffmpeg/gst-ffmpeg-0002-arm-avoid-using-the-movw-instruction.patch b/package/gstreamer/gst-ffmpeg/gst-ffmpeg-0002-arm-avoid-using-the-movw-instruction.patch
new file mode 100644 (file)
index 0000000..288dc3d
--- /dev/null
@@ -0,0 +1,41 @@
+Date: Mon, 1 Aug 2011 20:21:04 +0300
+Subject: [libavcodec] arm: Avoid using the movw instruction needlessly
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf8
+Content-Transfer-Encoding: 8bit
+
+This fixes building for ARM11 without Thumb2.
+
+Signed-off-by: Martin Storsjö <martin@martin.st>
+
+[Arnout: backported to gst-ffmpeg, from ffmpeg 9a83adaf3]
+Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
+---
+ gst-libs/ext/libav/libavcodec/arm/ac3dsp_armv6.S |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gst-libs/ext/libav/libavcodec/arm/ac3dsp_armv6.S b/gst-libs/ext/libav/libavcodec/arm/ac3dsp_armv6.S
+index d3058ff..b6aee86 100644
+--- a/gst-libs/ext/libav/libavcodec/arm/ac3dsp_armv6.S
++++ b/gst-libs/ext/libav/libavcodec/arm/ac3dsp_armv6.S
+@@ -37,7 +37,7 @@ function ff_ac3_bit_alloc_calc_bap_armv6, export=1
+         ldrb            r10, [r4], #1
+ 1:
+         ldrsh           r9,  [r0], #2                   @ mask[band]
+-        movw            r8,  #0x1fe0
++        mov             r8,  #0xff0
+         sub             r9,  r9,  r12                   @   - snr_offset
+         mov             r11, r10
+         ldrb            r10, [r4], #1                   @ band_start_tab[band++]
+@@ -44,7 +44,7 @@ function ff_ac3_bit_alloc_calc_bap_armv6, export=1
+         subs            r9,  r9,  r5                    @   - floor
+         movlt           r9,  #0
+         cmp             r10, r3                         @   - end
+-        and             r9,  r9,  r8                    @   & 0x1fe0
++        and             r9,  r9,  r8, lsl #1            @   & 0x1fe0
+         subgt           r8,  r3,  r11
+         suble           r8,  r10, r11
+         add             r9,  r9,  r5                    @   + floor => m
+--
+1.7.10.4
+