[SCM] FFmpeg packaging branch, master, updated. debian/0.5+svn20090420-2-5-g2cfd355

ceros-guest at users.alioth.debian.org ceros-guest at users.alioth.debian.org
Mon May 11 05:52:24 UTC 2009


The following commit has been merged in the master branch:
commit 2cfd35526d280ec3130ed86971be97e11d52970b
Author: Andres Mejia <mcitadel at gmail.com>
Date:   Mon May 11 01:52:19 2009 -0400

    Add more fixes for non-PIC lintian error
    Disable all fPIC fixes for now

diff --git a/debian/changelog b/debian/changelog
index 6d9b20d..80ef319 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -15,8 +15,6 @@ ffmpeg-debian (4:0.5+svn20090420-3) unstable; urgency=low
     + Fix ordering of debhelper calls.
     + Remove redundant Section fields in control file for binary packages.
     + Add comment in patch, also refreshed it.
-    + Partially fix for lintian error shlib-with-non-pic-code, remaining fix
-      needs further investigation. Overrides will be installed in the meanwhile.
     + Don't install LICENSE. The licensing information should be, and is,
       covered in debian/copyright.
     + Fix 'breaks-without-version libavcodec51' warning.
diff --git a/debian/confflags b/debian/confflags
index b3e54d0..4f5195f 100644
--- a/debian/confflags
+++ b/debian/confflags
@@ -117,7 +117,9 @@ shared_build_confflags += $(nooptflags)
 endif
 shared_build_confflags += --enable-shared
 shared_build_confflags += --disable-static
+ifneq (,$(findstring fix-fpic,$(DEB_BUILD_OPTIONS)))
 shared_build_confflags += --extra-cflags="-fPIC -DPIC"
+endif
 
 ## armel architecture specific
 # Configuration flags for the optimised shared libraries
@@ -145,7 +147,9 @@ cmov_build_confflags += --shlibdir=/usr/lib/i686/cmov
 cmov_build_confflags += --cpu='i686'
 cmov_build_confflags += --enable-shared
 cmov_build_confflags += --disable-static
+ifneq (,$(findstring fix-fpic,$(DEB_BUILD_OPTIONS)))
 cmov_build_confflags += --extra-cflags="-fPIC -DPIC"
+endif
 cmov_build_confflags += --disable-ffmpeg
 cmov_build_confflags += --disable-ffserver
 cmov_build_confflags += --disable-ffplay
diff --git a/debian/patches/fpic-fix.patch b/debian/patches/fpic-fix.patch
deleted file mode 100644
index 673a953..0000000
--- a/debian/patches/fpic-fix.patch
+++ /dev/null
@@ -1,552 +0,0 @@
-This patch fixes FTBFS issue when using -fPIC.
-==========================================================================
---- a/libavcodec/x86/dsputil_mmx.c
-+++ b/libavcodec/x86/dsputil_mmx.c
-@@ -695,14 +695,14 @@
-         "punpckhdq %%mm1, %%mm1         \n\t"
-         "movd  %%mm1, %3                \n\t"
- 
--        : "=m" (*(uint32_t*)(dst + 0*dst_stride)),
--          "=m" (*(uint32_t*)(dst + 1*dst_stride)),
--          "=m" (*(uint32_t*)(dst + 2*dst_stride)),
--          "=m" (*(uint32_t*)(dst + 3*dst_stride))
--        :  "m" (*(uint32_t*)(src + 0*src_stride)),
--           "m" (*(uint32_t*)(src + 1*src_stride)),
--           "m" (*(uint32_t*)(src + 2*src_stride)),
--           "m" (*(uint32_t*)(src + 3*src_stride))
-+        : "=r" (*(uint32_t*)(dst + 0*dst_stride)),
-+          "=r" (*(uint32_t*)(dst + 1*dst_stride)),
-+          "=r" (*(uint32_t*)(dst + 2*dst_stride)),
-+          "=r" (*(uint32_t*)(dst + 3*dst_stride))
-+        :  "r" (*(uint32_t*)(src + 0*src_stride)),
-+           "r" (*(uint32_t*)(src + 1*src_stride)),
-+           "r" (*(uint32_t*)(src + 2*src_stride)),
-+           "r" (*(uint32_t*)(src + 3*src_stride))
-     );
- }
- 
---- a/libavcodec/x86/h264dsp_mmx.c
-+++ b/libavcodec/x86/h264dsp_mmx.c
-@@ -943,8 +943,8 @@
- \
-     __asm__ volatile(\
-         "pxor %%mm7, %%mm7          \n\t"\
--        "movq %5, %%mm4             \n\t"\
--        "movq %6, %%mm5             \n\t"\
-+        "movq ff_pw_5, %%mm4        \n\t"\
-+        "movq ff_pw_16, %%mm5       \n\t"\
-         "1:                         \n\t"\
-         "movd  -1(%0), %%mm1        \n\t"\
-         "movd    (%0), %%mm2        \n\t"\
-@@ -974,17 +974,15 @@
-         "decl %2                    \n\t"\
-         " jnz 1b                    \n\t"\
-         : "+a"(src), "+c"(dst), "+g"(h)\
--        : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride), "m"(ff_pw_5), "m"(ff_pw_16)\
--        : "memory"\
-+        : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride)\
-     );\
- }\
- static av_noinline void OPNAME ## h264_qpel4_h_lowpass_l2_ ## MMX(uint8_t *dst, uint8_t *src, uint8_t *src2, int dstStride, int src2Stride){\
-     int h=4;\
-     __asm__ volatile(\
--        "pxor %%mm7, %%mm7          \n\t"\
--        "movq %0, %%mm4             \n\t"\
--        "movq %1, %%mm5             \n\t"\
--        :: "m"(ff_pw_5), "m"(ff_pw_16)\
-+        "pxor %mm7, %mm7          \n\t"\
-+        "movq ff_pw_5, %mm4        \n\t"\
-+        "movq ff_pw_16, %mm5       \n\t"\
-     );\
-     do{\
-     __asm__ volatile(\
-@@ -1117,7 +1115,7 @@
-     int h=8;\
-     __asm__ volatile(\
-         "pxor %%mm7, %%mm7          \n\t"\
--        "movq %5, %%mm6             \n\t"\
-+        "movq ff_pw_5, %%mm6        \n\t"\
-         "1:                         \n\t"\
-         "movq    (%0), %%mm0        \n\t"\
-         "movq   1(%0), %%mm2        \n\t"\
-@@ -1151,7 +1149,7 @@
-         "punpcklbw %%mm7, %%mm5     \n\t"\
-         "paddw %%mm3, %%mm2         \n\t"\
-         "paddw %%mm5, %%mm4         \n\t"\
--        "movq %6, %%mm5             \n\t"\
-+        "movq ff_pw_16, %%mm5       \n\t"\
-         "paddw %%mm5, %%mm2         \n\t"\
-         "paddw %%mm5, %%mm4         \n\t"\
-         "paddw %%mm2, %%mm0         \n\t"\
-@@ -1165,17 +1163,15 @@
-         "decl %2                    \n\t"\
-         " jnz 1b                    \n\t"\
-         : "+a"(src), "+c"(dst), "+g"(h)\
--        : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride), "m"(ff_pw_5), "m"(ff_pw_16)\
--        : "memory"\
-+        : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride)\
-     );\
- }\
- \
- static av_noinline void OPNAME ## h264_qpel8_h_lowpass_l2_ ## MMX(uint8_t *dst, uint8_t *src, uint8_t *src2, int dstStride, int src2Stride){\
-     int h=8;\
-     __asm__ volatile(\
--        "pxor %%mm7, %%mm7          \n\t"\
--        "movq %0, %%mm6             \n\t"\
--        :: "m"(ff_pw_5)\
-+        "pxor %mm7, %mm7          \n\t"\
-+        "movq ff_pw_5, %mm6        \n\t"\
-     );\
-     do{\
-     __asm__ volatile(\
-@@ -1211,7 +1207,7 @@
-         "punpcklbw %%mm7, %%mm5     \n\t"\
-         "paddw %%mm3, %%mm2         \n\t"\
-         "paddw %%mm5, %%mm4         \n\t"\
--        "movq %5, %%mm5             \n\t"\
-+        "movq ff_pw_16, %%mm5       \n\t"\
-         "paddw %%mm5, %%mm2         \n\t"\
-         "paddw %%mm5, %%mm4         \n\t"\
-         "paddw %%mm2, %%mm0         \n\t"\
-@@ -1226,9 +1222,7 @@
-         "add %4, %1                 \n\t"\
-         "add %3, %2                 \n\t"\
-         : "+a"(src), "+c"(dst), "+d"(src2)\
--        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride),\
--          "m"(ff_pw_16)\
--        : "memory"\
-+        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride)\
-     );\
-     }while(--h);\
- }\
-@@ -1494,8 +1488,8 @@
-     int h=16;\
-     __asm__ volatile(\
-         "pxor %%xmm15, %%xmm15      \n\t"\
--        "movdqa %6, %%xmm14         \n\t"\
--        "movdqa %7, %%xmm13         \n\t"\
-+        "movdqa ff_pw_5, %%xmm14    \n\t"\
-+        "movdqa ff_pw_16, %%xmm13   \n\t"\
-         "1:                         \n\t"\
-         "lddqu    3(%0), %%xmm1     \n\t"\
-         "lddqu   -5(%0), %%xmm7     \n\t"\
-@@ -1549,9 +1543,7 @@
-         "decl %3                    \n\t"\
-         "jg 1b                      \n\t"\
-         : "+a"(src), "+c"(dst), "+d"(src2), "+g"(h)\
--        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride),\
--          "m"(ff_pw_5), "m"(ff_pw_16)\
--        : "memory"\
-+        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride)\
-     );\
- }
- #else // ARCH_X86_64
-@@ -1571,9 +1563,8 @@
- static av_noinline void OPNAME ## h264_qpel8_h_lowpass_l2_ ## MMX(uint8_t *dst, uint8_t *src, uint8_t *src2, int dstStride, int src2Stride){\
-     int h=8;\
-     __asm__ volatile(\
--        "pxor %%xmm7, %%xmm7        \n\t"\
--        "movdqa %0, %%xmm6          \n\t"\
--        :: "m"(ff_pw_5)\
-+        "pxor %xmm7, %xmm7        \n\t"\
-+        "movdqa ff_pw_5, %xmm6     \n\t"\
-     );\
-     do{\
-     __asm__ volatile(\
-@@ -1596,7 +1587,7 @@
-         "psllw   $2,     %%xmm2     \n\t"\
-         "movq    (%2),   %%xmm3     \n\t"\
-         "psubw   %%xmm1, %%xmm2     \n\t"\
--        "paddw   %5,     %%xmm5     \n\t"\
-+        "paddw   ff_pw_16,%%xmm5    \n\t"\
-         "pmullw  %%xmm6, %%xmm2     \n\t"\
-         "paddw   %%xmm5, %%xmm2     \n\t"\
-         "psraw   $5,     %%xmm2     \n\t"\
-@@ -1607,9 +1598,7 @@
-         "add %4, %1                 \n\t"\
-         "add %3, %2                 \n\t"\
-         : "+a"(src), "+c"(dst), "+d"(src2)\
--        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride),\
--          "m"(ff_pw_16)\
--        : "memory"\
-+        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride)\
-     );\
-     }while(--h);\
- }\
-@@ -1619,7 +1608,7 @@
-     int h=8;\
-     __asm__ volatile(\
-         "pxor %%xmm7, %%xmm7        \n\t"\
--        "movdqa %5, %%xmm6          \n\t"\
-+        "movdqa ff_pw_5, %%xmm6     \n\t"\
-         "1:                         \n\t"\
-         "lddqu   -5(%0), %%xmm1     \n\t"\
-         "movdqa  %%xmm1, %%xmm0     \n\t"\
-@@ -1639,7 +1628,7 @@
-         "paddw   %%xmm4, %%xmm1     \n\t"\
-         "psllw   $2,     %%xmm2     \n\t"\
-         "psubw   %%xmm1, %%xmm2     \n\t"\
--        "paddw   %6,     %%xmm5     \n\t"\
-+        "paddw   ff_pw_16, %%xmm5   \n\t"\
-         "pmullw  %%xmm6, %%xmm2     \n\t"\
-         "paddw   %%xmm5, %%xmm2     \n\t"\
-         "psraw   $5,     %%xmm2     \n\t"\
-@@ -1650,9 +1639,7 @@
-         "decl %2                    \n\t"\
-         " jnz 1b                    \n\t"\
-         : "+a"(src), "+c"(dst), "+g"(h)\
--        : "D"((x86_reg)srcStride), "S"((x86_reg)dstStride),\
--          "m"(ff_pw_5), "m"(ff_pw_16)\
--        : "memory"\
-+        : "D"((x86_reg)srcStride), "S"((x86_reg)dstStride)\
-     );\
- }\
- static void OPNAME ## h264_qpel16_h_lowpass_ ## MMX(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){\
---- a/libavcodec/x86/flacdsp_mmx.c
-+++ b/libavcodec/x86/flacdsp_mmx.c
-@@ -108,10 +108,13 @@
-                 "addsd     %%xmm5, %%xmm2           \n\t"
-                 "movsd     %%xmm0, %1               \n\t"
-                 "movsd     %%xmm1, %2               \n\t"
--                "movsd     %%xmm2, %3               \n\t"
--                :"+&r"(i), "=m"(autoc[j]), "=m"(autoc[j+1]), "=m"(autoc[j+2])
-+                :"+&r"(i), "=m"(autoc[j]), "=m"(autoc[j+1])
-                 :"r"(data1+len), "r"(data1+len-j)
-             );
-+            __asm__ volatile(
-+                "movsd     %%xmm2, %0               \n\t"
-+                :"=m"(autoc[j+2])
-+            );
-         } else {
-             __asm__ volatile(
-                 "movsd    "MANGLE(ff_pd_1)", %%xmm0 \n\t"
---- a/libswscale/rgb2rgb_template.c
-+++ b/libswscale/rgb2rgb_template.c
-@@ -1424,9 +1424,12 @@
-     __asm__ volatile (
-     "test             %%"REG_a", %%"REG_a"          \n\t"
-     "jns                     2f                     \n\t"
--    "movq     "MANGLE(mask24r)", %%mm5              \n\t"
--    "movq     "MANGLE(mask24g)", %%mm6              \n\t"
--    "movq     "MANGLE(mask24b)", %%mm7              \n\t"
-+    "movq                    %0, %%mm5              \n\t"
-+    "movq                    %1, %%mm6              \n\t"
-+    "movq                    %2, %%mm7              \n\t"
-+    : : "m"(mask24r), "m"(mask24g), "m"(mask24b)
-+    );
-+    __asm__ volatile (
-     ASMALIGN(4)
-     "1:                                             \n\t"
-     PREFETCH" 32(%1, %%"REG_a")                     \n\t"
---- a/libpostproc/postprocess_template.c
-+++ b/libpostproc/postprocess_template.c
-@@ -369,16 +369,16 @@
- // FIXME rounding
-     __asm__ volatile(
-         "pxor %%mm7, %%mm7                      \n\t" // 0
--        "movq "MANGLE(b80)", %%mm6              \n\t" // MIN_SIGNED_BYTE
-+        "movq %2, %%mm6                         \n\t" // MIN_SIGNED_BYTE
-         "leal (%0, %1), %%"REG_a"               \n\t"
-         "leal (%%"REG_a", %1, 4), %%"REG_c"     \n\t"
- //      0       1       2       3       4       5       6       7       8       9
- //      %0      eax     eax+%1  eax+2%1 %0+4%1  ecx     ecx+%1  ecx+2%1 %0+8%1  ecx+4%1
--        "movq "MANGLE(pQPb)", %%mm0             \n\t" // QP,..., QP
-+        "movq %3, %%mm0                         \n\t" // QP,..., QP
-         "movq %%mm0, %%mm1                      \n\t" // QP,..., QP
--        "paddusb "MANGLE(b02)", %%mm0           \n\t"
-+        "paddusb %4, %%mm0                      \n\t"
-         "psrlw $2, %%mm0                        \n\t"
--        "pand "MANGLE(b3F)", %%mm0              \n\t" // QP/4,..., QP/4
-+        "pand %5, %%mm0                         \n\t" // QP/4,..., QP/4
-         "paddusb %%mm1, %%mm0                   \n\t" // QP*1.25 ...
-         "movq (%0, %1, 4), %%mm2                \n\t" // line 4
-         "movq (%%"REG_c"), %%mm3                \n\t" // line 5
-@@ -407,8 +407,8 @@
- 
-         "paddb %%mm6, %%mm5                     \n\t"
-         "psrlw $2, %%mm5                        \n\t"
--        "pand "MANGLE(b3F)", %%mm5              \n\t"
--        "psubb "MANGLE(b20)", %%mm5             \n\t" // (l5-l4)/8
-+        "pand %5, %%mm5                         \n\t"
-+        "psubb %6, %%mm5                        \n\t" // (l5-l4)/8
- 
-         "movq (%%"REG_a", %1, 2), %%mm2         \n\t"
-         "paddb %%mm6, %%mm2                     \n\t" // line 3 + 0x80
-@@ -423,7 +423,8 @@
-         "movq %%mm2, (%%"REG_c", %1)            \n\t"
- 
-         :
--        : "r" (src), "r" ((x86_reg)stride)
-+        : "r" (src), "r" ((x86_reg)stride), "m"(b80), "m"(pQPb), "m"(b02),
-+          "m"(b3f), "m"(b20)
-         : "%"REG_a, "%"REG_c
-     );
- #else //HAVE_MMX2 || HAVE_AMD3DNOW
-@@ -496,7 +497,7 @@
-         "paddusb %%mm0, %%mm0                   \n\t"
-         "psubusb %%mm0, %%mm4                   \n\t"
-         "pcmpeqb %%mm7, %%mm4                   \n\t" // d <= QP ? -1 : 0
--        "psubusb "MANGLE(b01)", %%mm3           \n\t"
-+        "psubusb %3, %%mm3                      \n\t"
-         "pand %%mm4, %%mm3                      \n\t" // d <= QP ? d : 0
- 
-         PAVGB(%%mm7, %%mm3)                           // d/2
-@@ -545,7 +546,7 @@
-         "movq %%mm0, (%%"REG_c", %1, 2)         \n\t" // line 7
- 
-         :
--        : "r" (src), "r" ((x86_reg)stride), "m" (co->pQPb)
-+        : "r" (src), "r" ((x86_reg)stride), "m" (co->pQPb), "m"(b01)
-         : "%"REG_a, "%"REG_c
-     );
- #else //HAVE_MMX2 || HAVE_AMD3DNOW
-@@ -675,17 +676,17 @@
- 
-         PMINUB(%%mm2, %%mm1, %%mm4)                   // MIN(|lenergy|,|renergy|)/8
-         "movq %2, %%mm4                         \n\t" // QP //FIXME QP+1 ?
--        "paddusb "MANGLE(b01)", %%mm4           \n\t"
-+        "paddusb %5, %%mm4                      \n\t"
-         "pcmpgtb %%mm3, %%mm4                   \n\t" // |menergy|/8 < QP
-         "psubusb %%mm1, %%mm3                   \n\t" // d=|menergy|/8-MIN(|lenergy|,|renergy|)/8
-         "pand %%mm4, %%mm3                      \n\t"
- 
-         "movq %%mm3, %%mm1                      \n\t"
--//        "psubusb "MANGLE(b01)", %%mm3           \n\t"
-+//        "psubusb %5, %%mm3                    \n\t"
-         PAVGB(%%mm7, %%mm3)
-         PAVGB(%%mm7, %%mm3)
-         "paddusb %%mm1, %%mm3                   \n\t"
--//        "paddusb "MANGLE(b01)", %%mm3           \n\t"
-+//        "paddusb %5, %%mm3                    \n\t"
- 
-         "movq (%%"REG_a", %1, 2), %%mm6         \n\t" //l3
-         "movq (%0, %1, 4), %%mm5                \n\t" //l4
-@@ -698,7 +699,7 @@
-         "pand %%mm0, %%mm3                      \n\t"
-         PMINUB(%%mm5, %%mm3, %%mm0)
- 
--        "psubusb "MANGLE(b01)", %%mm3           \n\t"
-+        "psubusb %5, %%mm3                      \n\t"
-         PAVGB(%%mm7, %%mm3)
- 
-         "movq (%%"REG_a", %1, 2), %%mm0         \n\t"
-@@ -730,7 +731,7 @@
-         "movq (%%"REG_a", %1), %%mm3            \n\t" // l2
-         "pxor %%mm6, %%mm2                      \n\t" // -l5-1
-         "movq %%mm2, %%mm5                      \n\t" // -l5-1
--        "movq "MANGLE(b80)", %%mm4              \n\t" // 128
-+        "movq %3, %%mm4                         \n\t" // 128
-         "lea (%%"REG_a", %1, 4), %%"REG_c"      \n\t"
-         PAVGB(%%mm3, %%mm2)                           // (l2-l5+256)/2
-         PAVGB(%%mm0, %%mm4)                           // ~(l4-l3)/4 + 128
-@@ -742,7 +743,7 @@
-         "pxor %%mm6, %%mm2                      \n\t" // -l1-1
-         PAVGB(%%mm3, %%mm2)                           // (l2-l1+256)/2
-         PAVGB((%0), %%mm1)                            // (l0-l3+256)/2
--        "movq "MANGLE(b80)", %%mm3              \n\t" // 128
-+        "movq %3, %%mm3                        \n\t" // 128
-         PAVGB(%%mm2, %%mm3)                           // ~(l2-l1)/4 + 128
-         PAVGB(%%mm1, %%mm3)                           // ~(l0-l3)/4 +(l2-l1)/8 + 128
-         PAVGB(%%mm2, %%mm3)                           // ~(l0-l3)/8 +5(l2-l1)/16 + 128
-@@ -752,14 +753,14 @@
-         "movq (%%"REG_c", %1, 2), %%mm1         \n\t" // l7
-         "pxor %%mm6, %%mm1                      \n\t" // -l7-1
-         PAVGB((%0, %1, 4), %%mm1)                     // (l4-l7+256)/2
--        "movq "MANGLE(b80)", %%mm2              \n\t" // 128
-+        "movq %3, %%mm2                        \n\t" // 128
-         PAVGB(%%mm5, %%mm2)                           // ~(l6-l5)/4 + 128
-         PAVGB(%%mm1, %%mm2)                           // ~(l4-l7)/4 +(l6-l5)/8 + 128
-         PAVGB(%%mm5, %%mm2)                           // ~(l4-l7)/8 +5(l6-l5)/16 + 128
- // mm0=128-q, mm2=renergy/16 + 128, mm3=lenergy/16 + 128, mm4= menergy/16 + 128
- 
--        "movq "MANGLE(b00)", %%mm1              \n\t" // 0
--        "movq "MANGLE(b00)", %%mm5              \n\t" // 0
-+        "movq %4, %%mm1                         \n\t" // 0
-+        "movq %4, %%mm5                         \n\t" // 0
-         "psubb %%mm2, %%mm1                     \n\t" // 128 - renergy/16
-         "psubb %%mm3, %%mm5                     \n\t" // 128 - lenergy/16
-         PMAXUB(%%mm1, %%mm2)                          // 128 + |renergy/16|
-@@ -768,7 +769,7 @@
- 
- // mm0=128-q, mm3=128 + MIN(|lenergy|,|renergy|)/16, mm4= menergy/16 + 128
- 
--        "movq "MANGLE(b00)", %%mm7              \n\t" // 0
-+        "movq %4, %%mm7                         \n\t" // 0
-         "movq %2, %%mm2                         \n\t" // QP
-         PAVGB(%%mm6, %%mm2)                           // 128 + QP/2
-         "psubb %%mm6, %%mm2                     \n\t"
-@@ -782,13 +783,13 @@
- // mm0=128-q, mm1= SIGN(menergy), mm2= |menergy|/16 < QP/2, mm4= d/16
- 
-         "movq %%mm4, %%mm3                      \n\t" // d
--        "psubusb "MANGLE(b01)", %%mm4           \n\t"
-+        "psubusb %5, %%mm4                      \n\t"
-         PAVGB(%%mm7, %%mm4)                           // d/32
-         PAVGB(%%mm7, %%mm4)                           // (d + 32)/64
-         "paddb %%mm3, %%mm4                     \n\t" // 5d/64
-         "pand %%mm2, %%mm4                      \n\t"
- 
--        "movq "MANGLE(b80)", %%mm5              \n\t" // 128
-+        "movq %3, %%mm5                         \n\t" // 128
-         "psubb %%mm0, %%mm5                     \n\t" // q
-         "paddsb %%mm6, %%mm5                    \n\t" // fix bad rounding
-         "pcmpgtb %%mm5, %%mm7                   \n\t" // SIGN(q)
-@@ -810,7 +811,8 @@
-         "movq %%mm2, (%0, %1, 4)                \n\t"
- 
-         :
--        : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb)
-+        : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb), "m"(b80),
-+          "m"(b00), "m"(b01)
-         : "%"REG_a, "%"REG_c
-     );
- 
-@@ -1045,10 +1047,10 @@
-         "psubusw %%mm1, %%mm5                   \n\t" // ld
- 
- 
--        "movq "MANGLE(w05)", %%mm2              \n\t" // 5
-+        "movq %3, %%mm2                         \n\t" // 5
-         "pmullw %%mm2, %%mm4                    \n\t"
-         "pmullw %%mm2, %%mm5                    \n\t"
--        "movq "MANGLE(w20)", %%mm2              \n\t" // 32
-+        "movq %4, %%mm2                         \n\t" // 32
-         "paddw %%mm2, %%mm4                     \n\t"
-         "paddw %%mm2, %%mm5                     \n\t"
-         "psrlw $6, %%mm4                        \n\t"
-@@ -1098,7 +1100,7 @@
-         "movq %%mm0, (%0, %1)                   \n\t"
- 
-         : "+r" (src)
--        : "r" ((x86_reg)stride), "m" (c->pQPb)
-+        : "r" ((x86_reg)stride), "m" (c->pQPb), "m"(w05), "m"(w20)
-         : "%"REG_a, "%"REG_c
-     );
- #else //HAVE_MMX2 || HAVE_AMD3DNOW
-@@ -1237,7 +1239,7 @@
-         "movq %%mm6, %%mm0                      \n\t" // max
-         "psubb %%mm7, %%mm6                     \n\t" // max - min
-         "movd %%mm6, %%ecx                      \n\t"
--        "cmpb "MANGLE(deringThreshold)", %%cl   \n\t"
-+        "cmpb %4, %%cl                          \n\t"
-         " jb 1f                                 \n\t"
-         "lea -24(%%"REG_SP"), %%"REG_c"         \n\t"
-         "and "ALIGN_MASK", %%"REG_c"            \n\t"
-@@ -1264,9 +1266,9 @@
-         "psubusb %%mm7, %%mm0                   \n\t"
-         "psubusb %%mm7, %%mm2                   \n\t"
-         "psubusb %%mm7, %%mm3                   \n\t"
--        "pcmpeqb "MANGLE(b00)", %%mm0           \n\t" // L10 > a ? 0 : -1
--        "pcmpeqb "MANGLE(b00)", %%mm2           \n\t" // L20 > a ? 0 : -1
--        "pcmpeqb "MANGLE(b00)", %%mm3           \n\t" // L00 > a ? 0 : -1
-+        "pcmpeqb %5, %%mm0                      \n\t" // L10 > a ? 0 : -1
-+        "pcmpeqb %5, %%mm2                      \n\t" // L20 > a ? 0 : -1
-+        "pcmpeqb %5, %%mm3                      \n\t" // L00 > a ? 0 : -1
-         "paddb %%mm2, %%mm0                     \n\t"
-         "paddb %%mm3, %%mm0                     \n\t"
- 
-@@ -1287,9 +1289,9 @@
-         "psubusb %%mm7, %%mm2                   \n\t"
-         "psubusb %%mm7, %%mm4                   \n\t"
-         "psubusb %%mm7, %%mm5                   \n\t"
--        "pcmpeqb "MANGLE(b00)", %%mm2           \n\t" // L11 > a ? 0 : -1
--        "pcmpeqb "MANGLE(b00)", %%mm4           \n\t" // L21 > a ? 0 : -1
--        "pcmpeqb "MANGLE(b00)", %%mm5           \n\t" // L01 > a ? 0 : -1
-+        "pcmpeqb %5, %%mm2                      \n\t" // L11 > a ? 0 : -1
-+        "pcmpeqb %5, %%mm4                      \n\t" // L21 > a ? 0 : -1
-+        "pcmpeqb %5, %%mm5                      \n\t" // L01 > a ? 0 : -1
-         "paddb %%mm4, %%mm2                     \n\t"
-         "paddb %%mm5, %%mm2                     \n\t"
- // 0, 2, 3, 1
-@@ -1314,7 +1316,7 @@
-         "psubusb " #lx ", " #t1 "               \n\t"\
-         "psubusb " #lx ", " #t0 "               \n\t"\
-         "psubusb " #lx ", " #sx "               \n\t"\
--        "movq "MANGLE(b00)", " #lx "            \n\t"\
-+        "movq %5, " #lx "                       \n\t"\
-         "pcmpeqb " #lx ", " #t1 "               \n\t" /* src[-1] > a ? 0 : -1*/\
-         "pcmpeqb " #lx ", " #t0 "               \n\t" /* src[+1] > a ? 0 : -1*/\
-         "pcmpeqb " #lx ", " #sx "               \n\t" /* src[0]  > a ? 0 : -1*/\
-@@ -1330,8 +1332,8 @@
-         PMINUB(t1, pplx, t0)\
-         "paddb " #sx ", " #ppsx "               \n\t"\
-         "paddb " #psx ", " #ppsx "              \n\t"\
--        "#paddb "MANGLE(b02)", " #ppsx "        \n\t"\
--        "pand "MANGLE(b08)", " #ppsx "          \n\t"\
-+        "#paddb %6, " #ppsx "                   \n\t"\
-+        "pand %7, " #ppsx "                     \n\t"\
-         "pcmpeqb " #lx ", " #ppsx "             \n\t"\
-         "pand " #ppsx ", " #pplx "              \n\t"\
-         "pandn " #dst ", " #ppsx "              \n\t"\
-@@ -1367,7 +1369,8 @@
- DERING_CORE((%0, %1, 8)    ,(%%REGd, %1, 4),%%mm2,%%mm4,%%mm0,%%mm3,%%mm5,%%mm1,%%mm6,%%mm7)
- 
-         "1:                        \n\t"
--        : : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb), "m"(c->pQPb2)
-+        : : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb), "m"(c->pQPb2),
-+            "m"(deringThreshold), "m"(b00), "m"(b02), "m"(b08)
-         : "%"REG_a, "%"REG_d, "%"REG_c
-     );
- #else //HAVE_MMX2 || HAVE_AMD3DNOW
-@@ -2227,7 +2230,7 @@
- #else //L1_DIFF
- #if defined (FAST_L2_DIFF)
-         "pcmpeqb %%mm7, %%mm7                   \n\t"
--        "movq "MANGLE(b80)", %%mm6              \n\t"
-+        "movq %4, %%mm6                         \n\t"
-         "pxor %%mm0, %%mm0                      \n\t"
- #define REAL_L2_DIFF_CORE(a, b)\
-         "movq " #a ", %%mm5                     \n\t"\
-@@ -2476,7 +2479,8 @@
- 
-         "4:                                     \n\t"
- 
--        :: "r" (src), "r" (tempBlurred), "r"((x86_reg)stride), "m" (tempBlurredPast)
-+        :: "r" (src), "r" (tempBlurred), "r"((x86_reg)stride),
-+           "m" (tempBlurredPast), "m"(b80)
-         : "%"REG_a, "%"REG_d, "%"REG_c, "memory"
-     );
- #else //HAVE_MMX2 || HAVE_AMD3DNOW
-@@ -2730,8 +2734,8 @@
-             "movq %%mm6, %%mm1                      \n\t"
-             "psllw $2, %%mm0                        \n\t"
-             "psllw $2, %%mm1                        \n\t"
--            "paddw "MANGLE(w04)", %%mm0             \n\t"
--            "paddw "MANGLE(w04)", %%mm1             \n\t"
-+            "paddw %5, %%mm0                        \n\t"
-+            "paddw %5, %%mm1                        \n\t"
- 
- #define NEXT\
-             "movq (%0), %%mm2                       \n\t"\
-@@ -2820,7 +2824,7 @@
-             "mov %4, %0                             \n\t" //FIXME
- 
-             : "+&r"(src)
--            : "r" ((x86_reg)step), "m" (c->pQPb), "r"(sums), "g"(src)
-+            : "r" ((x86_reg)step), "m" (c->pQPb), "r"(sums), "g"(src), "m"(w04)
-         );
- 
-         src+= step; // src points to begin of the 8x8 Block
-@@ -3037,10 +3041,10 @@
-             "psubusw %%mm1, %%mm5                   \n\t" // ld
- 
- 
--            "movq "MANGLE(w05)", %%mm2              \n\t" // 5
-+            "movq %4, %%mm2                         \n\t" // 5
-             "pmullw %%mm2, %%mm4                    \n\t"
-             "pmullw %%mm2, %%mm5                    \n\t"
--            "movq "MANGLE(w20)", %%mm2              \n\t" // 32
-+            "movq %5, %%mm2                         \n\t" // 32
-             "paddw %%mm2, %%mm4                     \n\t"
-             "paddw %%mm2, %%mm5                     \n\t"
-             "psrlw $6, %%mm4                        \n\t"
-@@ -3092,7 +3096,8 @@
-             "movq %%mm0, (%0, %1)                   \n\t"
- 
-             : "+r" (temp_src)
--            : "r" ((x86_reg)step), "m" (c->pQPb), "m"(eq_mask)
-+            : "r" ((x86_reg)step), "m" (c->pQPb), "m"(eq_mask), "m"(w05),
-+              "m"(w20)
-             : "%"REG_a, "%"REG_c
-         );
-     }
diff --git a/debian/patches/fpic-ftbfs-fix.patch b/debian/patches/fpic-ftbfs-fix.patch
new file mode 100644
index 0000000..70b654d
--- /dev/null
+++ b/debian/patches/fpic-ftbfs-fix.patch
@@ -0,0 +1,261 @@
+This patch fixes FTBFS issue when using -fPIC.
+==========================================================================
+--- a/libavcodec/x86/dsputil_mmx.c
++++ b/libavcodec/x86/dsputil_mmx.c
+@@ -695,14 +695,14 @@
+         "punpckhdq %%mm1, %%mm1         \n\t"
+         "movd  %%mm1, %3                \n\t"
+ 
+-        : "=m" (*(uint32_t*)(dst + 0*dst_stride)),
+-          "=m" (*(uint32_t*)(dst + 1*dst_stride)),
+-          "=m" (*(uint32_t*)(dst + 2*dst_stride)),
+-          "=m" (*(uint32_t*)(dst + 3*dst_stride))
+-        :  "m" (*(uint32_t*)(src + 0*src_stride)),
+-           "m" (*(uint32_t*)(src + 1*src_stride)),
+-           "m" (*(uint32_t*)(src + 2*src_stride)),
+-           "m" (*(uint32_t*)(src + 3*src_stride))
++        : "=r" (*(uint32_t*)(dst + 0*dst_stride)),
++          "=r" (*(uint32_t*)(dst + 1*dst_stride)),
++          "=r" (*(uint32_t*)(dst + 2*dst_stride)),
++          "=r" (*(uint32_t*)(dst + 3*dst_stride))
++        :  "r" (*(uint32_t*)(src + 0*src_stride)),
++           "r" (*(uint32_t*)(src + 1*src_stride)),
++           "r" (*(uint32_t*)(src + 2*src_stride)),
++           "r" (*(uint32_t*)(src + 3*src_stride))
+     );
+ }
+ 
+--- a/libavcodec/x86/h264dsp_mmx.c
++++ b/libavcodec/x86/h264dsp_mmx.c
+@@ -943,8 +943,8 @@
+ \
+     __asm__ volatile(\
+         "pxor %%mm7, %%mm7          \n\t"\
+-        "movq %5, %%mm4             \n\t"\
+-        "movq %6, %%mm5             \n\t"\
++        "movq ff_pw_5, %%mm4        \n\t"\
++        "movq ff_pw_16, %%mm5       \n\t"\
+         "1:                         \n\t"\
+         "movd  -1(%0), %%mm1        \n\t"\
+         "movd    (%0), %%mm2        \n\t"\
+@@ -974,17 +974,15 @@
+         "decl %2                    \n\t"\
+         " jnz 1b                    \n\t"\
+         : "+a"(src), "+c"(dst), "+g"(h)\
+-        : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride), "m"(ff_pw_5), "m"(ff_pw_16)\
+-        : "memory"\
++        : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride)\
+     );\
+ }\
+ static av_noinline void OPNAME ## h264_qpel4_h_lowpass_l2_ ## MMX(uint8_t *dst, uint8_t *src, uint8_t *src2, int dstStride, int src2Stride){\
+     int h=4;\
+     __asm__ volatile(\
+-        "pxor %%mm7, %%mm7          \n\t"\
+-        "movq %0, %%mm4             \n\t"\
+-        "movq %1, %%mm5             \n\t"\
+-        :: "m"(ff_pw_5), "m"(ff_pw_16)\
++        "pxor %mm7, %mm7          \n\t"\
++        "movq ff_pw_5, %mm4        \n\t"\
++        "movq ff_pw_16, %mm5       \n\t"\
+     );\
+     do{\
+     __asm__ volatile(\
+@@ -1117,7 +1115,7 @@
+     int h=8;\
+     __asm__ volatile(\
+         "pxor %%mm7, %%mm7          \n\t"\
+-        "movq %5, %%mm6             \n\t"\
++        "movq ff_pw_5, %%mm6        \n\t"\
+         "1:                         \n\t"\
+         "movq    (%0), %%mm0        \n\t"\
+         "movq   1(%0), %%mm2        \n\t"\
+@@ -1151,7 +1149,7 @@
+         "punpcklbw %%mm7, %%mm5     \n\t"\
+         "paddw %%mm3, %%mm2         \n\t"\
+         "paddw %%mm5, %%mm4         \n\t"\
+-        "movq %6, %%mm5             \n\t"\
++        "movq ff_pw_16, %%mm5       \n\t"\
+         "paddw %%mm5, %%mm2         \n\t"\
+         "paddw %%mm5, %%mm4         \n\t"\
+         "paddw %%mm2, %%mm0         \n\t"\
+@@ -1165,17 +1163,15 @@
+         "decl %2                    \n\t"\
+         " jnz 1b                    \n\t"\
+         : "+a"(src), "+c"(dst), "+g"(h)\
+-        : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride), "m"(ff_pw_5), "m"(ff_pw_16)\
+-        : "memory"\
++        : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride)\
+     );\
+ }\
+ \
+ static av_noinline void OPNAME ## h264_qpel8_h_lowpass_l2_ ## MMX(uint8_t *dst, uint8_t *src, uint8_t *src2, int dstStride, int src2Stride){\
+     int h=8;\
+     __asm__ volatile(\
+-        "pxor %%mm7, %%mm7          \n\t"\
+-        "movq %0, %%mm6             \n\t"\
+-        :: "m"(ff_pw_5)\
++        "pxor %mm7, %mm7          \n\t"\
++        "movq ff_pw_5, %mm6        \n\t"\
+     );\
+     do{\
+     __asm__ volatile(\
+@@ -1211,7 +1207,7 @@
+         "punpcklbw %%mm7, %%mm5     \n\t"\
+         "paddw %%mm3, %%mm2         \n\t"\
+         "paddw %%mm5, %%mm4         \n\t"\
+-        "movq %5, %%mm5             \n\t"\
++        "movq ff_pw_16, %%mm5       \n\t"\
+         "paddw %%mm5, %%mm2         \n\t"\
+         "paddw %%mm5, %%mm4         \n\t"\
+         "paddw %%mm2, %%mm0         \n\t"\
+@@ -1226,9 +1222,7 @@
+         "add %4, %1                 \n\t"\
+         "add %3, %2                 \n\t"\
+         : "+a"(src), "+c"(dst), "+d"(src2)\
+-        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride),\
+-          "m"(ff_pw_16)\
+-        : "memory"\
++        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride)\
+     );\
+     }while(--h);\
+ }\
+@@ -1494,8 +1488,8 @@
+     int h=16;\
+     __asm__ volatile(\
+         "pxor %%xmm15, %%xmm15      \n\t"\
+-        "movdqa %6, %%xmm14         \n\t"\
+-        "movdqa %7, %%xmm13         \n\t"\
++        "movdqa ff_pw_5, %%xmm14    \n\t"\
++        "movdqa ff_pw_16, %%xmm13   \n\t"\
+         "1:                         \n\t"\
+         "lddqu    3(%0), %%xmm1     \n\t"\
+         "lddqu   -5(%0), %%xmm7     \n\t"\
+@@ -1549,9 +1543,7 @@
+         "decl %3                    \n\t"\
+         "jg 1b                      \n\t"\
+         : "+a"(src), "+c"(dst), "+d"(src2), "+g"(h)\
+-        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride),\
+-          "m"(ff_pw_5), "m"(ff_pw_16)\
+-        : "memory"\
++        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride)\
+     );\
+ }
+ #else // ARCH_X86_64
+@@ -1571,9 +1563,8 @@
+ static av_noinline void OPNAME ## h264_qpel8_h_lowpass_l2_ ## MMX(uint8_t *dst, uint8_t *src, uint8_t *src2, int dstStride, int src2Stride){\
+     int h=8;\
+     __asm__ volatile(\
+-        "pxor %%xmm7, %%xmm7        \n\t"\
+-        "movdqa %0, %%xmm6          \n\t"\
+-        :: "m"(ff_pw_5)\
++        "pxor %xmm7, %xmm7        \n\t"\
++        "movdqa ff_pw_5, %xmm6     \n\t"\
+     );\
+     do{\
+     __asm__ volatile(\
+@@ -1596,7 +1587,7 @@
+         "psllw   $2,     %%xmm2     \n\t"\
+         "movq    (%2),   %%xmm3     \n\t"\
+         "psubw   %%xmm1, %%xmm2     \n\t"\
+-        "paddw   %5,     %%xmm5     \n\t"\
++        "paddw   ff_pw_16,%%xmm5    \n\t"\
+         "pmullw  %%xmm6, %%xmm2     \n\t"\
+         "paddw   %%xmm5, %%xmm2     \n\t"\
+         "psraw   $5,     %%xmm2     \n\t"\
+@@ -1607,9 +1598,7 @@
+         "add %4, %1                 \n\t"\
+         "add %3, %2                 \n\t"\
+         : "+a"(src), "+c"(dst), "+d"(src2)\
+-        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride),\
+-          "m"(ff_pw_16)\
+-        : "memory"\
++        : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride)\
+     );\
+     }while(--h);\
+ }\
+@@ -1619,7 +1608,7 @@
+     int h=8;\
+     __asm__ volatile(\
+         "pxor %%xmm7, %%xmm7        \n\t"\
+-        "movdqa %5, %%xmm6          \n\t"\
++        "movdqa ff_pw_5, %%xmm6     \n\t"\
+         "1:                         \n\t"\
+         "lddqu   -5(%0), %%xmm1     \n\t"\
+         "movdqa  %%xmm1, %%xmm0     \n\t"\
+@@ -1639,7 +1628,7 @@
+         "paddw   %%xmm4, %%xmm1     \n\t"\
+         "psllw   $2,     %%xmm2     \n\t"\
+         "psubw   %%xmm1, %%xmm2     \n\t"\
+-        "paddw   %6,     %%xmm5     \n\t"\
++        "paddw   ff_pw_16, %%xmm5   \n\t"\
+         "pmullw  %%xmm6, %%xmm2     \n\t"\
+         "paddw   %%xmm5, %%xmm2     \n\t"\
+         "psraw   $5,     %%xmm2     \n\t"\
+@@ -1650,9 +1639,7 @@
+         "decl %2                    \n\t"\
+         " jnz 1b                    \n\t"\
+         : "+a"(src), "+c"(dst), "+g"(h)\
+-        : "D"((x86_reg)srcStride), "S"((x86_reg)dstStride),\
+-          "m"(ff_pw_5), "m"(ff_pw_16)\
+-        : "memory"\
++        : "D"((x86_reg)srcStride), "S"((x86_reg)dstStride)\
+     );\
+ }\
+ static void OPNAME ## h264_qpel16_h_lowpass_ ## MMX(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){\
+--- a/libavcodec/x86/flacdsp_mmx.c
++++ b/libavcodec/x86/flacdsp_mmx.c
+@@ -89,12 +89,12 @@
+                 "movsd    "MANGLE(ff_pd_1)", %%xmm1 \n\t"
+                 "movsd    "MANGLE(ff_pd_1)", %%xmm2 \n\t"
+                 "1:                                 \n\t"
+-                "movapd   (%4,%0), %%xmm3           \n\t"
+-                "movupd -8(%5,%0), %%xmm4           \n\t"
+-                "movapd   (%5,%0), %%xmm5           \n\t"
++                "movapd   (%2,%0), %%xmm3           \n\t"
++                "movupd -8(%3,%0), %%xmm4           \n\t"
++                "movapd   (%3,%0), %%xmm5           \n\t"
+                 "mulpd     %%xmm3, %%xmm4           \n\t"
+                 "mulpd     %%xmm3, %%xmm5           \n\t"
+-                "mulpd -16(%5,%0), %%xmm3           \n\t"
++                "mulpd -16(%3,%0), %%xmm3           \n\t"
+                 "addpd     %%xmm4, %%xmm1           \n\t"
+                 "addpd     %%xmm5, %%xmm0           \n\t"
+                 "addpd     %%xmm3, %%xmm2           \n\t"
+@@ -107,9 +107,9 @@
+                 "addsd     %%xmm4, %%xmm1           \n\t"
+                 "addsd     %%xmm5, %%xmm2           \n\t"
+                 "movsd     %%xmm0, %1               \n\t"
+-                "movsd     %%xmm1, %2               \n\t"
+-                "movsd     %%xmm2, %3               \n\t"
+-                :"+&r"(i), "=m"(autoc[j]), "=m"(autoc[j+1]), "=m"(autoc[j+2])
++                "movsd     %%xmm1, 8%1               \n\t"
++                "movsd     %%xmm2, 16%1               \n\t"
++                :"+&r"(i), "=m"(autoc[j])
+                 :"r"(data1+len), "r"(data1+len-j)
+             );
+         } else {
+@@ -117,10 +117,10 @@
+                 "movsd    "MANGLE(ff_pd_1)", %%xmm0 \n\t"
+                 "movsd    "MANGLE(ff_pd_1)", %%xmm1 \n\t"
+                 "1:                                 \n\t"
+-                "movapd   (%3,%0), %%xmm3           \n\t"
+-                "movupd -8(%4,%0), %%xmm4           \n\t"
++                "movapd   (%2,%0), %%xmm3           \n\t"
++                "movupd -8(%3,%0), %%xmm4           \n\t"
+                 "mulpd     %%xmm3, %%xmm4           \n\t"
+-                "mulpd    (%4,%0), %%xmm3           \n\t"
++                "mulpd    (%3,%0), %%xmm3           \n\t"
+                 "addpd     %%xmm4, %%xmm1           \n\t"
+                 "addpd     %%xmm3, %%xmm0           \n\t"
+                 "add       $16,    %0               \n\t"
+@@ -130,8 +130,8 @@
+                 "addsd     %%xmm3, %%xmm0           \n\t"
+                 "addsd     %%xmm4, %%xmm1           \n\t"
+                 "movsd     %%xmm0, %1               \n\t"
+-                "movsd     %%xmm1, %2               \n\t"
+-                :"+&r"(i), "=m"(autoc[j]), "=m"(autoc[j+1])
++                "movsd     %%xmm1, 8%1               \n\t"
++                :"+&r"(i), "=m"(autoc[j])
+                 :"r"(data1+len), "r"(data1+len-j)
+             );
+         }
diff --git a/debian/patches/fpic-libpostproc-fix.patch b/debian/patches/fpic-libpostproc-fix.patch
new file mode 100644
index 0000000..7fa9d91
--- /dev/null
+++ b/debian/patches/fpic-libpostproc-fix.patch
@@ -0,0 +1,314 @@
+This patch resolves all non-PIC issues from the libpostproc library.
+==========================================================================
+--- a/libpostproc/postprocess_template.c
++++ b/libpostproc/postprocess_template.c
+@@ -369,16 +369,16 @@
+ // FIXME rounding
+     __asm__ volatile(
+         "pxor %%mm7, %%mm7                      \n\t" // 0
+-        "movq "MANGLE(b80)", %%mm6              \n\t" // MIN_SIGNED_BYTE
++        "movq %2, %%mm6                         \n\t" // MIN_SIGNED_BYTE
+         "leal (%0, %1), %%"REG_a"               \n\t"
+         "leal (%%"REG_a", %1, 4), %%"REG_c"     \n\t"
+ //      0       1       2       3       4       5       6       7       8       9
+ //      %0      eax     eax+%1  eax+2%1 %0+4%1  ecx     ecx+%1  ecx+2%1 %0+8%1  ecx+4%1
+-        "movq "MANGLE(pQPb)", %%mm0             \n\t" // QP,..., QP
++        "movq %3, %%mm0                         \n\t" // QP,..., QP
+         "movq %%mm0, %%mm1                      \n\t" // QP,..., QP
+-        "paddusb "MANGLE(b02)", %%mm0           \n\t"
++        "paddusb %4, %%mm0                      \n\t"
+         "psrlw $2, %%mm0                        \n\t"
+-        "pand "MANGLE(b3F)", %%mm0              \n\t" // QP/4,..., QP/4
++        "pand %5, %%mm0                         \n\t" // QP/4,..., QP/4
+         "paddusb %%mm1, %%mm0                   \n\t" // QP*1.25 ...
+         "movq (%0, %1, 4), %%mm2                \n\t" // line 4
+         "movq (%%"REG_c"), %%mm3                \n\t" // line 5
+@@ -407,8 +407,8 @@
+ 
+         "paddb %%mm6, %%mm5                     \n\t"
+         "psrlw $2, %%mm5                        \n\t"
+-        "pand "MANGLE(b3F)", %%mm5              \n\t"
+-        "psubb "MANGLE(b20)", %%mm5             \n\t" // (l5-l4)/8
++        "pand %5, %%mm5                         \n\t"
++        "psubb %6, %%mm5                        \n\t" // (l5-l4)/8
+ 
+         "movq (%%"REG_a", %1, 2), %%mm2         \n\t"
+         "paddb %%mm6, %%mm2                     \n\t" // line 3 + 0x80
+@@ -423,7 +423,8 @@
+         "movq %%mm2, (%%"REG_c", %1)            \n\t"
+ 
+         :
+-        : "r" (src), "r" ((x86_reg)stride)
++        : "r" (src), "r" ((x86_reg)stride), "m"(b80), "m"(pQPb), "m"(b02),
++          "m"(b3f), "m"(b20)
+         : "%"REG_a, "%"REG_c
+     );
+ #else //HAVE_MMX2 || HAVE_AMD3DNOW
+@@ -496,7 +497,7 @@
+         "paddusb %%mm0, %%mm0                   \n\t"
+         "psubusb %%mm0, %%mm4                   \n\t"
+         "pcmpeqb %%mm7, %%mm4                   \n\t" // d <= QP ? -1 : 0
+-        "psubusb "MANGLE(b01)", %%mm3           \n\t"
++        "psubusb %3, %%mm3                      \n\t"
+         "pand %%mm4, %%mm3                      \n\t" // d <= QP ? d : 0
+ 
+         PAVGB(%%mm7, %%mm3)                           // d/2
+@@ -545,7 +546,7 @@
+         "movq %%mm0, (%%"REG_c", %1, 2)         \n\t" // line 7
+ 
+         :
+-        : "r" (src), "r" ((x86_reg)stride), "m" (co->pQPb)
++        : "r" (src), "r" ((x86_reg)stride), "m" (co->pQPb), "m"(b01)
+         : "%"REG_a, "%"REG_c
+     );
+ #else //HAVE_MMX2 || HAVE_AMD3DNOW
+@@ -675,17 +676,17 @@
+ 
+         PMINUB(%%mm2, %%mm1, %%mm4)                   // MIN(|lenergy|,|renergy|)/8
+         "movq %2, %%mm4                         \n\t" // QP //FIXME QP+1 ?
+-        "paddusb "MANGLE(b01)", %%mm4           \n\t"
++        "paddusb %5, %%mm4                      \n\t"
+         "pcmpgtb %%mm3, %%mm4                   \n\t" // |menergy|/8 < QP
+         "psubusb %%mm1, %%mm3                   \n\t" // d=|menergy|/8-MIN(|lenergy|,|renergy|)/8
+         "pand %%mm4, %%mm3                      \n\t"
+ 
+         "movq %%mm3, %%mm1                      \n\t"
+-//        "psubusb "MANGLE(b01)", %%mm3           \n\t"
++//        "psubusb %5, %%mm3                    \n\t"
+         PAVGB(%%mm7, %%mm3)
+         PAVGB(%%mm7, %%mm3)
+         "paddusb %%mm1, %%mm3                   \n\t"
+-//        "paddusb "MANGLE(b01)", %%mm3           \n\t"
++//        "paddusb %5, %%mm3                    \n\t"
+ 
+         "movq (%%"REG_a", %1, 2), %%mm6         \n\t" //l3
+         "movq (%0, %1, 4), %%mm5                \n\t" //l4
+@@ -698,7 +699,7 @@
+         "pand %%mm0, %%mm3                      \n\t"
+         PMINUB(%%mm5, %%mm3, %%mm0)
+ 
+-        "psubusb "MANGLE(b01)", %%mm3           \n\t"
++        "psubusb %5, %%mm3                      \n\t"
+         PAVGB(%%mm7, %%mm3)
+ 
+         "movq (%%"REG_a", %1, 2), %%mm0         \n\t"
+@@ -730,7 +731,7 @@
+         "movq (%%"REG_a", %1), %%mm3            \n\t" // l2
+         "pxor %%mm6, %%mm2                      \n\t" // -l5-1
+         "movq %%mm2, %%mm5                      \n\t" // -l5-1
+-        "movq "MANGLE(b80)", %%mm4              \n\t" // 128
++        "movq %3, %%mm4                         \n\t" // 128
+         "lea (%%"REG_a", %1, 4), %%"REG_c"      \n\t"
+         PAVGB(%%mm3, %%mm2)                           // (l2-l5+256)/2
+         PAVGB(%%mm0, %%mm4)                           // ~(l4-l3)/4 + 128
+@@ -742,7 +743,7 @@
+         "pxor %%mm6, %%mm2                      \n\t" // -l1-1
+         PAVGB(%%mm3, %%mm2)                           // (l2-l1+256)/2
+         PAVGB((%0), %%mm1)                            // (l0-l3+256)/2
+-        "movq "MANGLE(b80)", %%mm3              \n\t" // 128
++        "movq %3, %%mm3                        \n\t" // 128
+         PAVGB(%%mm2, %%mm3)                           // ~(l2-l1)/4 + 128
+         PAVGB(%%mm1, %%mm3)                           // ~(l0-l3)/4 +(l2-l1)/8 + 128
+         PAVGB(%%mm2, %%mm3)                           // ~(l0-l3)/8 +5(l2-l1)/16 + 128
+@@ -752,14 +753,14 @@
+         "movq (%%"REG_c", %1, 2), %%mm1         \n\t" // l7
+         "pxor %%mm6, %%mm1                      \n\t" // -l7-1
+         PAVGB((%0, %1, 4), %%mm1)                     // (l4-l7+256)/2
+-        "movq "MANGLE(b80)", %%mm2              \n\t" // 128
++        "movq %3, %%mm2                        \n\t" // 128
+         PAVGB(%%mm5, %%mm2)                           // ~(l6-l5)/4 + 128
+         PAVGB(%%mm1, %%mm2)                           // ~(l4-l7)/4 +(l6-l5)/8 + 128
+         PAVGB(%%mm5, %%mm2)                           // ~(l4-l7)/8 +5(l6-l5)/16 + 128
+ // mm0=128-q, mm2=renergy/16 + 128, mm3=lenergy/16 + 128, mm4= menergy/16 + 128
+ 
+-        "movq "MANGLE(b00)", %%mm1              \n\t" // 0
+-        "movq "MANGLE(b00)", %%mm5              \n\t" // 0
++        "movq %4, %%mm1                         \n\t" // 0
++        "movq %4, %%mm5                         \n\t" // 0
+         "psubb %%mm2, %%mm1                     \n\t" // 128 - renergy/16
+         "psubb %%mm3, %%mm5                     \n\t" // 128 - lenergy/16
+         PMAXUB(%%mm1, %%mm2)                          // 128 + |renergy/16|
+@@ -768,7 +769,7 @@
+ 
+ // mm0=128-q, mm3=128 + MIN(|lenergy|,|renergy|)/16, mm4= menergy/16 + 128
+ 
+-        "movq "MANGLE(b00)", %%mm7              \n\t" // 0
++        "movq %4, %%mm7                         \n\t" // 0
+         "movq %2, %%mm2                         \n\t" // QP
+         PAVGB(%%mm6, %%mm2)                           // 128 + QP/2
+         "psubb %%mm6, %%mm2                     \n\t"
+@@ -782,13 +783,13 @@
+ // mm0=128-q, mm1= SIGN(menergy), mm2= |menergy|/16 < QP/2, mm4= d/16
+ 
+         "movq %%mm4, %%mm3                      \n\t" // d
+-        "psubusb "MANGLE(b01)", %%mm4           \n\t"
++        "psubusb %5, %%mm4                      \n\t"
+         PAVGB(%%mm7, %%mm4)                           // d/32
+         PAVGB(%%mm7, %%mm4)                           // (d + 32)/64
+         "paddb %%mm3, %%mm4                     \n\t" // 5d/64
+         "pand %%mm2, %%mm4                      \n\t"
+ 
+-        "movq "MANGLE(b80)", %%mm5              \n\t" // 128
++        "movq %3, %%mm5                         \n\t" // 128
+         "psubb %%mm0, %%mm5                     \n\t" // q
+         "paddsb %%mm6, %%mm5                    \n\t" // fix bad rounding
+         "pcmpgtb %%mm5, %%mm7                   \n\t" // SIGN(q)
+@@ -810,7 +811,8 @@
+         "movq %%mm2, (%0, %1, 4)                \n\t"
+ 
+         :
+-        : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb)
++        : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb), "m"(b80),
++          "m"(b00), "m"(b01)
+         : "%"REG_a, "%"REG_c
+     );
+ 
+@@ -1045,10 +1047,10 @@
+         "psubusw %%mm1, %%mm5                   \n\t" // ld
+ 
+ 
+-        "movq "MANGLE(w05)", %%mm2              \n\t" // 5
++        "movq %3, %%mm2                         \n\t" // 5
+         "pmullw %%mm2, %%mm4                    \n\t"
+         "pmullw %%mm2, %%mm5                    \n\t"
+-        "movq "MANGLE(w20)", %%mm2              \n\t" // 32
++        "movq %4, %%mm2                         \n\t" // 32
+         "paddw %%mm2, %%mm4                     \n\t"
+         "paddw %%mm2, %%mm5                     \n\t"
+         "psrlw $6, %%mm4                        \n\t"
+@@ -1098,7 +1100,7 @@
+         "movq %%mm0, (%0, %1)                   \n\t"
+ 
+         : "+r" (src)
+-        : "r" ((x86_reg)stride), "m" (c->pQPb)
++        : "r" ((x86_reg)stride), "m" (c->pQPb), "m"(w05), "m"(w20)
+         : "%"REG_a, "%"REG_c
+     );
+ #else //HAVE_MMX2 || HAVE_AMD3DNOW
+@@ -1237,7 +1239,7 @@
+         "movq %%mm6, %%mm0                      \n\t" // max
+         "psubb %%mm7, %%mm6                     \n\t" // max - min
+         "movd %%mm6, %%ecx                      \n\t"
+-        "cmpb "MANGLE(deringThreshold)", %%cl   \n\t"
++        "cmpb %4, %%cl                          \n\t"
+         " jb 1f                                 \n\t"
+         "lea -24(%%"REG_SP"), %%"REG_c"         \n\t"
+         "and "ALIGN_MASK", %%"REG_c"            \n\t"
+@@ -1264,9 +1266,9 @@
+         "psubusb %%mm7, %%mm0                   \n\t"
+         "psubusb %%mm7, %%mm2                   \n\t"
+         "psubusb %%mm7, %%mm3                   \n\t"
+-        "pcmpeqb "MANGLE(b00)", %%mm0           \n\t" // L10 > a ? 0 : -1
+-        "pcmpeqb "MANGLE(b00)", %%mm2           \n\t" // L20 > a ? 0 : -1
+-        "pcmpeqb "MANGLE(b00)", %%mm3           \n\t" // L00 > a ? 0 : -1
++        "pcmpeqb %5, %%mm0                      \n\t" // L10 > a ? 0 : -1
++        "pcmpeqb %5, %%mm2                      \n\t" // L20 > a ? 0 : -1
++        "pcmpeqb %5, %%mm3                      \n\t" // L00 > a ? 0 : -1
+         "paddb %%mm2, %%mm0                     \n\t"
+         "paddb %%mm3, %%mm0                     \n\t"
+ 
+@@ -1287,9 +1289,9 @@
+         "psubusb %%mm7, %%mm2                   \n\t"
+         "psubusb %%mm7, %%mm4                   \n\t"
+         "psubusb %%mm7, %%mm5                   \n\t"
+-        "pcmpeqb "MANGLE(b00)", %%mm2           \n\t" // L11 > a ? 0 : -1
+-        "pcmpeqb "MANGLE(b00)", %%mm4           \n\t" // L21 > a ? 0 : -1
+-        "pcmpeqb "MANGLE(b00)", %%mm5           \n\t" // L01 > a ? 0 : -1
++        "pcmpeqb %5, %%mm2                      \n\t" // L11 > a ? 0 : -1
++        "pcmpeqb %5, %%mm4                      \n\t" // L21 > a ? 0 : -1
++        "pcmpeqb %5, %%mm5                      \n\t" // L01 > a ? 0 : -1
+         "paddb %%mm4, %%mm2                     \n\t"
+         "paddb %%mm5, %%mm2                     \n\t"
+ // 0, 2, 3, 1
+@@ -1314,7 +1316,7 @@
+         "psubusb " #lx ", " #t1 "               \n\t"\
+         "psubusb " #lx ", " #t0 "               \n\t"\
+         "psubusb " #lx ", " #sx "               \n\t"\
+-        "movq "MANGLE(b00)", " #lx "            \n\t"\
++        "movq %5, " #lx "                       \n\t"\
+         "pcmpeqb " #lx ", " #t1 "               \n\t" /* src[-1] > a ? 0 : -1*/\
+         "pcmpeqb " #lx ", " #t0 "               \n\t" /* src[+1] > a ? 0 : -1*/\
+         "pcmpeqb " #lx ", " #sx "               \n\t" /* src[0]  > a ? 0 : -1*/\
+@@ -1330,8 +1332,8 @@
+         PMINUB(t1, pplx, t0)\
+         "paddb " #sx ", " #ppsx "               \n\t"\
+         "paddb " #psx ", " #ppsx "              \n\t"\
+-        "#paddb "MANGLE(b02)", " #ppsx "        \n\t"\
+-        "pand "MANGLE(b08)", " #ppsx "          \n\t"\
++        "#paddb %6, " #ppsx "                   \n\t"\
++        "pand %7, " #ppsx "                     \n\t"\
+         "pcmpeqb " #lx ", " #ppsx "             \n\t"\
+         "pand " #ppsx ", " #pplx "              \n\t"\
+         "pandn " #dst ", " #ppsx "              \n\t"\
+@@ -1367,7 +1369,8 @@
+ DERING_CORE((%0, %1, 8)    ,(%%REGd, %1, 4),%%mm2,%%mm4,%%mm0,%%mm3,%%mm5,%%mm1,%%mm6,%%mm7)
+ 
+         "1:                        \n\t"
+-        : : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb), "m"(c->pQPb2)
++        : : "r" (src), "r" ((x86_reg)stride), "m" (c->pQPb), "m"(c->pQPb2),
++            "m"(deringThreshold), "m"(b00), "m"(b02), "m"(b08)
+         : "%"REG_a, "%"REG_d, "%"REG_c
+     );
+ #else //HAVE_MMX2 || HAVE_AMD3DNOW
+@@ -2227,7 +2230,7 @@
+ #else //L1_DIFF
+ #if defined (FAST_L2_DIFF)
+         "pcmpeqb %%mm7, %%mm7                   \n\t"
+-        "movq "MANGLE(b80)", %%mm6              \n\t"
++        "movq %4, %%mm6                         \n\t"
+         "pxor %%mm0, %%mm0                      \n\t"
+ #define REAL_L2_DIFF_CORE(a, b)\
+         "movq " #a ", %%mm5                     \n\t"\
+@@ -2476,7 +2479,8 @@
+ 
+         "4:                                     \n\t"
+ 
+-        :: "r" (src), "r" (tempBlurred), "r"((x86_reg)stride), "m" (tempBlurredPast)
++        :: "r" (src), "r" (tempBlurred), "r"((x86_reg)stride),
++           "m" (tempBlurredPast), "m"(b80)
+         : "%"REG_a, "%"REG_d, "%"REG_c, "memory"
+     );
+ #else //HAVE_MMX2 || HAVE_AMD3DNOW
+@@ -2730,8 +2734,8 @@
+             "movq %%mm6, %%mm1                      \n\t"
+             "psllw $2, %%mm0                        \n\t"
+             "psllw $2, %%mm1                        \n\t"
+-            "paddw "MANGLE(w04)", %%mm0             \n\t"
+-            "paddw "MANGLE(w04)", %%mm1             \n\t"
++            "paddw %5, %%mm0                        \n\t"
++            "paddw %5, %%mm1                        \n\t"
+ 
+ #define NEXT\
+             "movq (%0), %%mm2                       \n\t"\
+@@ -2820,7 +2824,7 @@
+             "mov %4, %0                             \n\t" //FIXME
+ 
+             : "+&r"(src)
+-            : "r" ((x86_reg)step), "m" (c->pQPb), "r"(sums), "g"(src)
++            : "r" ((x86_reg)step), "m" (c->pQPb), "r"(sums), "g"(src), "m"(w04)
+         );
+ 
+         src+= step; // src points to begin of the 8x8 Block
+@@ -3037,10 +3041,10 @@
+             "psubusw %%mm1, %%mm5                   \n\t" // ld
+ 
+ 
+-            "movq "MANGLE(w05)", %%mm2              \n\t" // 5
++            "movq %4, %%mm2                         \n\t" // 5
+             "pmullw %%mm2, %%mm4                    \n\t"
+             "pmullw %%mm2, %%mm5                    \n\t"
+-            "movq "MANGLE(w20)", %%mm2              \n\t" // 32
++            "movq %5, %%mm2                         \n\t" // 32
+             "paddw %%mm2, %%mm4                     \n\t"
+             "paddw %%mm2, %%mm5                     \n\t"
+             "psrlw $6, %%mm4                        \n\t"
+@@ -3092,7 +3096,8 @@
+             "movq %%mm0, (%0, %1)                   \n\t"
+ 
+             : "+r" (temp_src)
+-            : "r" ((x86_reg)step), "m" (c->pQPb), "m"(eq_mask)
++            : "r" ((x86_reg)step), "m" (c->pQPb), "m"(eq_mask), "m"(w05),
++              "m"(w20)
+             : "%"REG_a, "%"REG_c
+         );
+     }
diff --git a/debian/patches/fpic-libswscale-fix.patch b/debian/patches/fpic-libswscale-fix.patch
new file mode 100644
index 0000000..1144176
--- /dev/null
+++ b/debian/patches/fpic-libswscale-fix.patch
@@ -0,0 +1,577 @@
+This patch is currently being worked on to resolve all non-PIC issues with
+the libswscale library.
+==========================================================================
+--- a/libswscale/rgb2rgb_template.c
++++ b/libswscale/rgb2rgb_template.c
+@@ -1424,9 +1424,12 @@
+     __asm__ volatile (
+     "test             %%"REG_a", %%"REG_a"          \n\t"
+     "jns                     2f                     \n\t"
+-    "movq     "MANGLE(mask24r)", %%mm5              \n\t"
+-    "movq     "MANGLE(mask24g)", %%mm6              \n\t"
+-    "movq     "MANGLE(mask24b)", %%mm7              \n\t"
++    "movq                    %0, %%mm5              \n\t"
++    "movq                    %1, %%mm6              \n\t"
++    "movq                    %2, %%mm7              \n\t"
++    : : "m"(mask24r), "m"(mask24g), "m"(mask24b)
++    );
++    __asm__ volatile (
+     ASMALIGN(4)
+     "1:                                             \n\t"
+     PREFETCH" 32(%1, %%"REG_a")                     \n\t"
+@@ -2147,8 +2150,8 @@
+         {
+             __asm__ volatile(
+             "mov                        %2, %%"REG_a"   \n\t"
+-            "movq  "MANGLE(ff_bgr2YCoeff)", %%mm6       \n\t"
+-            "movq       "MANGLE(ff_w1111)", %%mm5       \n\t"
++            "movq                       %3, %%mm6       \n\t"
++            "movq                       %4, %%mm5       \n\t"
+             "pxor                    %%mm7, %%mm7       \n\t"
+             "lea (%%"REG_a", %%"REG_a", 2), %%"REG_d"   \n\t"
+             ASMALIGN(4)
+@@ -2206,12 +2209,13 @@
+             "psraw                      $7, %%mm4       \n\t"
+ 
+             "packuswb                %%mm4, %%mm0       \n\t"
+-            "paddusb "MANGLE(ff_bgr2YOffset)", %%mm0    \n\t"
++            "paddusb                    %5, %%mm0       \n\t"
+ 
+             MOVNTQ"                  %%mm0, (%1, %%"REG_a") \n\t"
+             "add                        $8,      %%"REG_a"  \n\t"
+             " js                        1b                  \n\t"
+-            : : "r" (src+width*3), "r" (ydst+width), "g" (-width)
++            : : "r" (src+width*3), "r" (ydst+width), "g" (-width),
++                "m"(ff_bgr2YCoeff), "m"(ff_w1111), "m"(ff_bgr2YOffset)
+             : "%"REG_a, "%"REG_d
+             );
+             ydst += lumStride;
+@@ -2220,8 +2224,8 @@
+         src -= srcStride*2;
+         __asm__ volatile(
+         "mov                        %4, %%"REG_a"   \n\t"
+-        "movq       "MANGLE(ff_w1111)", %%mm5       \n\t"
+-        "movq  "MANGLE(ff_bgr2UCoeff)", %%mm6       \n\t"
++        "movq                       %5, %%mm5       \n\t"
++        "movq                       %6, %%mm6       \n\t"
+         "pxor                    %%mm7, %%mm7       \n\t"
+         "lea (%%"REG_a", %%"REG_a", 2), %%"REG_d"   \n\t"
+         "add                 %%"REG_d", %%"REG_d"   \n\t"
+@@ -2270,8 +2274,8 @@
+         "psrlw                      $2, %%mm0       \n\t"
+         "psrlw                      $2, %%mm2       \n\t"
+ #endif
+-        "movq  "MANGLE(ff_bgr2VCoeff)", %%mm1       \n\t"
+-        "movq  "MANGLE(ff_bgr2VCoeff)", %%mm3       \n\t"
++        "movq                       %7, %%mm1       \n\t"
++        "movq                       %7, %%mm3       \n\t"
+ 
+         "pmaddwd                 %%mm0, %%mm1       \n\t"
+         "pmaddwd                 %%mm2, %%mm3       \n\t"
+@@ -2328,12 +2332,12 @@
+         "paddw                   %%mm1, %%mm5       \n\t"
+         "paddw                   %%mm3, %%mm2       \n\t"
+         "paddw                   %%mm5, %%mm2       \n\t"
+-        "movq       "MANGLE(ff_w1111)", %%mm5       \n\t"
++        "movq                       %5, %%mm5       \n\t"
+         "psrlw                      $2, %%mm4       \n\t"
+         "psrlw                      $2, %%mm2       \n\t"
+ #endif
+-        "movq  "MANGLE(ff_bgr2VCoeff)", %%mm1       \n\t"
+-        "movq  "MANGLE(ff_bgr2VCoeff)", %%mm3       \n\t"
++        "movq                       %7, %%mm1       \n\t"
++        "movq                       %7, %%mm3       \n\t"
+ 
+         "pmaddwd                 %%mm4, %%mm1       \n\t"
+         "pmaddwd                 %%mm2, %%mm3       \n\t"
+@@ -2357,13 +2361,16 @@
+         "punpckldq               %%mm4, %%mm0           \n\t"
+         "punpckhdq               %%mm4, %%mm1           \n\t"
+         "packsswb                %%mm1, %%mm0           \n\t"
+-        "paddb "MANGLE(ff_bgr2UVOffset)", %%mm0         \n\t"
++        "paddb                      %8, %%mm0           \n\t"
+         "movd                    %%mm0, (%2, %%"REG_a") \n\t"
+         "punpckhdq               %%mm0, %%mm0           \n\t"
+         "movd                    %%mm0, (%3, %%"REG_a") \n\t"
+         "add                        $4, %%"REG_a"       \n\t"
+         " js                        1b                  \n\t"
+-        : : "r" (src+chromWidth*6), "r" (src+srcStride+chromWidth*6), "r" (udst+chromWidth), "r" (vdst+chromWidth), "g" (-chromWidth)
++        : : "r" (src+chromWidth*6), "r" (src+srcStride+chromWidth*6),
++            "r" (udst+chromWidth), "r" (vdst+chromWidth), "g" (-chromWidth),
++            "m"(ff_w1111), "m"(ff_bgr2UCoeff), "m"(ff_bgr2VCoeff),
++            "m"(ff_bgr2UVOffset)
+         : "%"REG_a, "%"REG_d
+         );
+ 
+--- a/libswscale/rgb2rgb.c
++++ b/libswscale/rgb2rgb.c
+@@ -123,6 +123,18 @@
+ DECLARE_ASM_CONST(8, uint64_t, red_15mask)   = 0x00007c0000007c00ULL;
+ DECLARE_ASM_CONST(8, uint64_t, green_15mask) = 0x000003e0000003e0ULL;
+ DECLARE_ASM_CONST(8, uint64_t, blue_15mask)  = 0x0000001f0000001fULL;
++
++// Some constants from swscale.c that are used here
++extern const uint64_t __attribute__((visibility("hidden"))) ff_bgr2YCoeff;
++extern const uint64_t __attribute__((visibility("hidden"))) ff_bgr2UCoeff;
++extern const uint64_t __attribute__((visibility("hidden"))) ff_bgr2VCoeff;
++extern const uint64_t __attribute__((visibility("hidden"))) ff_bgr2YOffset;
++extern const uint64_t __attribute__((visibility("hidden"))) ff_bgr2UVOffset;
++extern const uint64_t __attribute__((visibility("hidden"))) ff_w1111;
++extern const uint64_t __attribute__((visibility("hidden"))) ff_M24A;
++extern const uint64_t __attribute__((visibility("hidden"))) ff_M24B;
++extern const uint64_t __attribute__((visibility("hidden"))) ff_M24C;
++
+ #endif /* ARCH_X86 */
+ 
+ #define RGB2YUV_SHIFT 8
+--- a/libswscale/swscale_template.c
++++ b/libswscale/swscale_template.c
+@@ -669,9 +669,9 @@
+ #define WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t)  REAL_WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t)
+ 
+ #define REAL_WRITERGB16(dst, dstw, index) \
+-    "pand "MANGLE(bF8)", %%mm2  \n\t" /* B */\
+-    "pand "MANGLE(bFC)", %%mm4  \n\t" /* G */\
+-    "pand "MANGLE(bF8)", %%mm5  \n\t" /* R */\
++    "pand            %6, %%mm2  \n\t" /* B */\
++    "pand            %7, %%mm4  \n\t" /* G */\
++    "pand            %6, %%mm5  \n\t" /* R */\
+     "psrlq           $3, %%mm2  \n\t"\
+ \
+     "movq         %%mm2, %%mm1  \n\t"\
+@@ -695,11 +695,18 @@
+     "cmp        "#dstw", "#index"   \n\t"\
+     " jb             1b             \n\t"
+ #define WRITERGB16(dst, dstw, index)  REAL_WRITERGB16(dst, dstw, index)
++#define WRITERGB16_END                 \
++    :: "r" (&c->redDither),                   \
++        "m" (dummy), "m" (dummy), "m" (dummy),\
++        "r" (dest), "m" (dstW), "m" (bF8),    \
++        "m" (bFC)                             \
++    : "%"REG_a, "%"REG_d, "%"REG_S            \
++    );
+ 
+ #define REAL_WRITERGB15(dst, dstw, index) \
+-    "pand "MANGLE(bF8)", %%mm2  \n\t" /* B */\
+-    "pand "MANGLE(bF8)", %%mm4  \n\t" /* G */\
+-    "pand "MANGLE(bF8)", %%mm5  \n\t" /* R */\
++    "pand            %6, %%mm2  \n\t" /* B */\
++    "pand            %6, %%mm4  \n\t" /* G */\
++    "pand            %6, %%mm5  \n\t" /* R */\
+     "psrlq           $3, %%mm2  \n\t"\
+     "psrlq           $1, %%mm5  \n\t"\
+ \
+@@ -724,6 +731,12 @@
+     "cmp        "#dstw", "#index"   \n\t"\
+     " jb             1b             \n\t"
+ #define WRITERGB15(dst, dstw, index)  REAL_WRITERGB15(dst, dstw, index)
++#define WRITERGB15_END                 \
++    :: "r" (&c->redDither),                   \
++        "m" (dummy), "m" (dummy), "m" (dummy),\
++        "r" (dest), "m" (dstW), "m" (bF8)     \
++    : "%"REG_a, "%"REG_d, "%"REG_S            \
++    );
+ 
+ #define WRITEBGR24OLD(dst, dstw, index) \
+     /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */\
+@@ -1063,7 +1076,7 @@
+ #endif
+ 
+                 WRITERGB15(%4, %5, %%REGa)
+-                YSCALEYUV2PACKEDX_END
++                WRITERGB15_END
+                 return;
+             case PIX_FMT_RGB565:
+                 YSCALEYUV2PACKEDX_ACCURATE
+@@ -1077,7 +1090,7 @@
+ #endif
+ 
+                 WRITERGB16(%4, %5, %%REGa)
+-                YSCALEYUV2PACKEDX_END
++                WRITERGB16_END
+                 return;
+             case PIX_FMT_YUYV422:
+                 YSCALEYUV2PACKEDX_ACCURATE
+@@ -1127,7 +1140,7 @@
+ #endif
+ 
+                 WRITERGB15(%4, %5, %%REGa)
+-                YSCALEYUV2PACKEDX_END
++                WRITERGB15_END
+                 return;
+             case PIX_FMT_RGB565:
+                 YSCALEYUV2PACKEDX
+@@ -1141,7 +1154,7 @@
+ #endif
+ 
+                 WRITERGB16(%4, %5, %%REGa)
+-                YSCALEYUV2PACKEDX_END
++                WRITERGB16_END
+                 return;
+             case PIX_FMT_YUYV422:
+                 YSCALEYUV2PACKEDX
+@@ -1238,7 +1251,7 @@
+                 "mov "ESP_OFFSET"(%5), %%"REG_b"        \n\t"
+ 
+                 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
+-                "a" (&c->redDither)
++                "a" (&c->redDither), "m" (bF8)
+                 );
+                 return;
+             case PIX_FMT_RGB565:
+@@ -1259,7 +1272,7 @@
+                 "pop %%"REG_BP"                         \n\t"
+                 "mov "ESP_OFFSET"(%5), %%"REG_b"        \n\t"
+                 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
+-                "a" (&c->redDither)
++                "a" (&c->redDither), "m" (bF8), "m" (bFC)
+                 );
+                 return;
+             case PIX_FMT_YUYV422:
+@@ -1354,7 +1367,7 @@
+                 "mov "ESP_OFFSET"(%5), %%"REG_b"        \n\t"
+ 
+                 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
+-                "a" (&c->redDither)
++                "a" (&c->redDither), "m" (bF8)
+                 );
+                 return;
+             case PIX_FMT_RGB565:
+@@ -1376,7 +1389,7 @@
+                 "mov "ESP_OFFSET"(%5), %%"REG_b"        \n\t"
+ 
+                 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
+-                "a" (&c->redDither)
++                "a" (&c->redDither), "m" (bF8), "m" (bFC)
+                 );
+                 return;
+             case PIX_FMT_YUYV422:
+@@ -1447,7 +1460,7 @@
+                 "mov "ESP_OFFSET"(%5), %%"REG_b"        \n\t"
+ 
+                 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
+-                "a" (&c->redDither)
++                "a" (&c->redDither), "m" (bF8)
+                 );
+                 return;
+             case PIX_FMT_RGB565:
+@@ -1469,7 +1482,7 @@
+                 "mov "ESP_OFFSET"(%5), %%"REG_b"        \n\t"
+ 
+                 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
+-                "a" (&c->redDither)
++                "a" (&c->redDither), "m" (bF8), "m" (bFC)
+                 );
+                 return;
+             case PIX_FMT_YUYV422:
+@@ -1504,7 +1517,7 @@
+ {
+ #if HAVE_MMX
+     __asm__ volatile(
+-    "movq "MANGLE(bm01010101)", %%mm2           \n\t"
++    "movq                   %3, %%mm2           \n\t"
+     "mov                    %0, %%"REG_a"       \n\t"
+     "1:                                         \n\t"
+     "movq    (%1, %%"REG_a",2), %%mm0           \n\t"
+@@ -1515,7 +1528,7 @@
+     "movq                %%mm0, (%2, %%"REG_a") \n\t"
+     "add                    $8, %%"REG_a"       \n\t"
+     " js                    1b                  \n\t"
+-    : : "g" (-width), "r" (src+width*2), "r" (dst+width)
++    : : "g" (-width), "r" (src+width*2), "r" (dst+width), "m"(bm01010101)
+     : "%"REG_a
+     );
+ #else
+@@ -1529,7 +1542,7 @@
+ {
+ #if HAVE_MMX
+     __asm__ volatile(
+-    "movq "MANGLE(bm01010101)", %%mm4           \n\t"
++    "movq                   %4, %%mm4           \n\t"
+     "mov                    %0, %%"REG_a"       \n\t"
+     "1:                                         \n\t"
+     "movq    (%1, %%"REG_a",4), %%mm0           \n\t"
+@@ -1546,7 +1559,8 @@
+     "movd                %%mm1, (%2, %%"REG_a") \n\t"
+     "add                    $4, %%"REG_a"       \n\t"
+     " js                    1b                  \n\t"
+-    : : "g" (-width), "r" (src1+width*4), "r" (dstU+width), "r" (dstV+width)
++    : : "g" (-width), "r" (src1+width*4), "r" (dstU+width), "r" (dstV+width),
++        "m"(bm01010101)
+     : "%"REG_a
+     );
+ #else
+@@ -1590,7 +1604,7 @@
+ {
+ #if HAVE_MMX
+     __asm__ volatile(
+-    "movq "MANGLE(bm01010101)", %%mm4           \n\t"
++    "movq                   %4, %%mm4           \n\t"
+     "mov                    %0, %%"REG_a"       \n\t"
+     "1:                                         \n\t"
+     "movq    (%1, %%"REG_a",4), %%mm0           \n\t"
+@@ -1607,7 +1621,8 @@
+     "movd                %%mm1, (%2, %%"REG_a") \n\t"
+     "add                    $4, %%"REG_a"       \n\t"
+     " js                    1b                  \n\t"
+-    : : "g" (-width), "r" (src1+width*4), "r" (dstU+width), "r" (dstV+width)
++    : : "g" (-width), "r" (src1+width*4), "r" (dstU+width), "r" (dstV+width),
++        "m"(bm01010101)
+     : "%"REG_a
+     );
+ #else
+@@ -1688,20 +1703,20 @@
+ 
+     if(srcFormat == PIX_FMT_BGR24){
+         __asm__ volatile(
+-            "movq  "MANGLE(ff_bgr24toY1Coeff)", %%mm5       \n\t"
+-            "movq  "MANGLE(ff_bgr24toY2Coeff)", %%mm6       \n\t"
+-            :
++            "movq  %0, %%mm5       \n\t"
++            "movq  %1, %%mm6       \n\t"
++            : : "m"(ff_bgr24toY1Coeff), "m"(ff_bgr24toY2Coeff)
+         );
+     }else{
+         __asm__ volatile(
+-            "movq  "MANGLE(ff_rgb24toY1Coeff)", %%mm5       \n\t"
+-            "movq  "MANGLE(ff_rgb24toY2Coeff)", %%mm6       \n\t"
+-            :
++            "movq  %0, %%mm5       \n\t"
++            "movq  %1, %%mm6       \n\t"
++            : : "m"(ff_rgb24toY1Coeff), "m"(ff_rgb24toY2Coeff)
+         );
+     }
+ 
+     __asm__ volatile(
+-        "movq  "MANGLE(ff_bgr24toYOffset)", %%mm4   \n\t"
++        "movq                       %3, %%mm4       \n\t"
+         "mov                        %2, %%"REG_a"   \n\t"
+         "pxor                    %%mm7, %%mm7       \n\t"
+         "1:                                         \n\t"
+@@ -1731,7 +1746,7 @@
+         "add                        $4, %%"REG_a"   \n\t"
+         " js                        1b              \n\t"
+     : "+r" (src)
+-    : "r" (dst+width), "g" (-width)
++    : "r" (dst+width), "g" (-width), "m"(ff_bgr24toYOffset)
+     : "%"REG_a
+     );
+ }
+@@ -1771,7 +1786,7 @@
+         "paddd                   %%mm3, %%mm1       \n\t"
+         "paddd                   %%mm5, %%mm4       \n\t"
+ 
+-        "movq "MANGLE(ff_bgr24toUVOffset)", %%mm3       \n\t"
++        "movq                       %4, %%mm3       \n\t"
+         "paddd                   %%mm3, %%mm0       \n\t"
+         "paddd                   %%mm3, %%mm2       \n\t"
+         "paddd                   %%mm3, %%mm1       \n\t"
+@@ -1789,7 +1804,8 @@
+         "add                        $4, %%"REG_a"   \n\t"
+         " js                        1b              \n\t"
+     : "+r" (src)
+-    : "r" (dstU+width), "r" (dstV+width), "g" (-width), "m"(ff_bgr24toUV[srcFormat == PIX_FMT_RGB24][0])
++    : "r" (dstU+width), "r" (dstV+width), "g" (-width),
++      "m"(ff_bgr24toUV[srcFormat == PIX_FMT_RGB24][0]), "m"(ff_bgr24toUVOffset)
+     : "%"REG_a
+     );
+ }
+--- a/libswscale/yuv2rgb_template.c
++++ b/libswscale/yuv2rgb_template.c
+@@ -74,7 +74,7 @@
+ \
+     /* convert the luma part */\
+     "movq %%mm6, %%mm7;" /* Copy 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */\
+-    "pand "MANGLE(mmx_00ffw)", %%mm6;" /* get Y even 00 Y6 00 Y4 00 Y2 00 Y0 */\
++    "pand    %9, %%mm6;" /* get Y even 00 Y6 00 Y4 00 Y2 00 Y0 */\
+ \
+     "psrlw $8, %%mm7;" /* get Y odd 00 Y7 00 Y5 00 Y3 00 Y1 */\
+ \
+@@ -158,21 +158,63 @@
+         PREFETCH" 64(%2) \n\t"                                             \
+         */                                                                 \
+ 
+-#define YUV2RGB_ENDLOOP(depth) \
++#define YUV2RGB16_ENDLOOP(depth) \
+         "add $"AV_STRINGIFY(depth*8)", %1    \n\t" \
+         "add                       $4, %0    \n\t" \
+         " js                       1b        \n\t" \
+ \
+         : "+r" (index), "+r" (image) \
+-        : "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index) \
++        : "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index), \
++          "m"(mmx_redmask), "m"(mmx_grnmask), "m"(dummy), "m"(mmx_00ffw) \
+         ); \
+     } \
+     __asm__ volatile (EMMS); \
+     return srcSliceH; \
+ 
++#define YUV2RGB15_ENDLOOP(depth) \
++        "add $"AV_STRINGIFY(depth*8)", %1    \n\t" \
++        "add                       $4, %0    \n\t" \
++        " js                       1b        \n\t" \
++\
++        : "+r" (index), "+r" (image) \
++        : "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index), \
++          "m"(mmx_redmask), "m"(dummy), "m"(dummy), "m"(mmx_00ffw) \
++        ); \
++    } \
++    __asm__ volatile (EMMS); \
++    return srcSliceH; \
++
++#define YUV2RGB24_ENDLOOP(depth) \
++        "add $"AV_STRINGIFY(depth*8)", %1    \n\t" \
++        "add                       $4, %0    \n\t" \
++        " js                       1b        \n\t" \
++\
++        : "+r" (index), "+r" (image) \
++        : "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index), \
++          "m"(ff_M24A), "m"(ff_M24C), "m"(ff_M24B), "m"(mmx_00ffw) \
++        ); \
++    } \
++    __asm__ volatile (EMMS); \
++    return srcSliceH; \
++
++#define YUV2RGB32_ENDLOOP(depth) \
++        "add $"AV_STRINGIFY(depth*8)", %1    \n\t" \
++        "add                       $4, %0    \n\t" \
++        " js                       1b        \n\t" \
++\
++        : "+r" (index), "+r" (image) \
++        : "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index), \
++          "m"(dummy), "m"(dummy), "m"(dummy), "m"(mmx_00ffw) \
++        ); \
++    } \
++    __asm__ volatile (EMMS); \
++    return srcSliceH; \
++
++
+ static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+                                        int srcSliceH, uint8_t* dst[], int dstStride[]){
+     int y, h_size;
++    long dummy=0;
+ 
+     YUV422_UNSHIFT
+     YUV2RGB_LOOP(2)
+@@ -190,9 +232,9 @@
+         "paddusb "RED_DITHER"(%4), %%mm1;"
+ #endif
+         /* mask unneeded bits off */
+-        "pand "MANGLE(mmx_redmask)", %%mm0;" /* b7b6b5b4 b3_0_0_0 b7b6b5b4 b3_0_0_0 */
+-        "pand "MANGLE(mmx_grnmask)", %%mm2;" /* g7g6g5g4 g3g2_0_0 g7g6g5g4 g3g2_0_0 */
+-        "pand "MANGLE(mmx_redmask)", %%mm1;" /* r7r6r5r4 r3_0_0_0 r7r6r5r4 r3_0_0_0 */
++        "pand    %6, %%mm0;" /* b7b6b5b4 b3_0_0_0 b7b6b5b4 b3_0_0_0 */
++        "pand    %7, %%mm2;" /* g7g6g5g4 g3g2_0_0 g7g6g5g4 g3g2_0_0 */
++        "pand    %6, %%mm1;" /* r7r6r5r4 r3_0_0_0 r7r6r5r4 r3_0_0_0 */
+ 
+         "psrlw   $3, %%mm0;" /* 0_0_0_b7 b6b5b4b3 0_0_0_b7 b6b5b4b3 */
+         "pxor %%mm4, %%mm4;" /* zero mm4 */
+@@ -222,12 +264,13 @@
+ 
+         MOVNTQ "   %%mm5, 8 (%1);" /* store pixel 4-7 */
+ 
+-    YUV2RGB_ENDLOOP(2)
++    YUV2RGB16_ENDLOOP(2)
+ }
+ 
+ static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+                                        int srcSliceH, uint8_t* dst[], int dstStride[]){
+     int y, h_size;
++    long dummy=0;
+ 
+     YUV422_UNSHIFT
+     YUV2RGB_LOOP(2)
+@@ -246,9 +289,9 @@
+ #endif
+ 
+         /* mask unneeded bits off */
+-        "pand "MANGLE(mmx_redmask)", %%mm0;" /* b7b6b5b4 b3_0_0_0 b7b6b5b4 b3_0_0_0 */
+-        "pand "MANGLE(mmx_redmask)", %%mm2;" /* g7g6g5g4 g3_0_0_0 g7g6g5g4 g3_0_0_0 */
+-        "pand "MANGLE(mmx_redmask)", %%mm1;" /* r7r6r5r4 r3_0_0_0 r7r6r5r4 r3_0_0_0 */
++        "pand    %6, %%mm0;" /* b7b6b5b4 b3_0_0_0 b7b6b5b4 b3_0_0_0 */
++        "pand    %6, %%mm2;" /* g7g6g5g4 g3_0_0_0 g7g6g5g4 g3_0_0_0 */
++        "pand    %6, %%mm1;" /* r7r6r5r4 r3_0_0_0 r7r6r5r4 r3_0_0_0 */
+ 
+         "psrlw   $3, %%mm0;" /* 0_0_0_b7 b6b5b4b3 0_0_0_b7 b6b5b4b3 */
+         "psrlw   $1, %%mm1;" /* 0_r7r6r5  r4r3_0_0 0_r7r6r5 r4r3_0_0 */
+@@ -279,12 +322,13 @@
+ 
+         MOVNTQ " %%mm5, 8 (%1);" /* store pixel 4-7 */
+ 
+-    YUV2RGB_ENDLOOP(2)
++    YUV2RGB15_ENDLOOP(2)
+ }
+ 
+ static inline int RENAME(yuv420_rgb24)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+                                        int srcSliceH, uint8_t* dst[], int dstStride[]){
+     int y, h_size;
++    long dummy=0;
+ 
+     YUV422_UNSHIFT
+     YUV2RGB_LOOP(3)
+@@ -293,8 +337,8 @@
+         YUV2RGB
+         /* mm0=B, %%mm2=G, %%mm1=R */
+ #if HAVE_MMX2
+-        "movq "MANGLE(ff_M24A)", %%mm4     \n\t"
+-        "movq "MANGLE(ff_M24C)", %%mm7     \n\t"
++        "movq      %6, %%mm4            \n\t"
++        "movq      %7, %%mm7            \n\t"
+         "pshufw $0x50, %%mm0, %%mm5     \n\t" /* B3 B2 B3 B2  B1 B0 B1 B0 */
+         "pshufw $0x50, %%mm2, %%mm3     \n\t" /* G3 G2 G3 G2  G1 G0 G1 G0 */
+         "pshufw $0x00, %%mm1, %%mm6     \n\t" /* R1 R0 R1 R0  R1 R0 R1 R0 */
+@@ -313,7 +357,7 @@
+         "pshufw $0x55, %%mm2, %%mm3     \n\t" /* G4 G3 G4 G3  G4 G3 G4 G3 */
+         "pshufw $0xA5, %%mm1, %%mm6     \n\t" /* R5 R4 R5 R4  R3 R2 R3 R2 */
+ 
+-        "pand "MANGLE(ff_M24B)", %%mm5     \n\t" /* B5       B4        B3    */
++        "pand             %8, %%mm5     \n\t" /* B5       B4        B3    */
+         "pand          %%mm7, %%mm3     \n\t" /*       G4        G3       */
+         "pand          %%mm4, %%mm6     \n\t" /*    R4        R3       R2 */
+ 
+@@ -328,7 +372,7 @@
+ 
+         "pand          %%mm7, %%mm5     \n\t" /*       B7        B6       */
+         "pand          %%mm4, %%mm3     \n\t" /*    G7        G6       G5 */
+-        "pand "MANGLE(ff_M24B)", %%mm6     \n\t" /* R7       R6        R5    */
++        "pand             %8, %%mm6     \n\t" /* R7       R6        R5    */
+         "movd 4 (%3, %0), %%mm1;" /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */
+ \
+         "por          %%mm5, %%mm3      \n\t"
+@@ -393,7 +437,7 @@
+         "pxor      %%mm4, %%mm4     \n\t"
+ #endif
+ 
+-    YUV2RGB_ENDLOOP(3)
++    YUV2RGB24_ENDLOOP(3)
+ }
+ 
+ #define RGB_PLANAR2PACKED32                                             \
+@@ -440,6 +484,7 @@
+ static inline int RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+                                        int srcSliceH, uint8_t* dst[], int dstStride[]){
+     int y, h_size;
++    long dummy=0;
+ 
+     YUV422_UNSHIFT
+     YUV2RGB_LOOP(4)
+@@ -449,5 +494,5 @@
+         "pcmpeqd   %%mm3, %%mm3;"   /* fill mm3 */
+         RGB_PLANAR2PACKED32
+ 
+-    YUV2RGB_ENDLOOP(4)
++    YUV2RGB32_ENDLOOP(4)
+ }
+--- a/libswscale/yuv2rgb.c
++++ b/libswscale/yuv2rgb.c
+@@ -47,6 +47,10 @@
+ DECLARE_ASM_CONST(8, uint64_t, mmx_redmask) = 0xf8f8f8f8f8f8f8f8ULL;
+ DECLARE_ASM_CONST(8, uint64_t, mmx_grnmask) = 0xfcfcfcfcfcfcfcfcULL;
+ 
++extern const uint64_t __attribute__((visibility("hidden"))) ff_M24A;
++extern const uint64_t __attribute__((visibility("hidden"))) ff_M24B;
++extern const uint64_t __attribute__((visibility("hidden"))) ff_M24C;
++
+ //MMX versions
+ #undef RENAME
+ #undef HAVE_MMX2
diff --git a/debian/patches/series b/debian/patches/series
index c5f660a..afe47da 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,4 @@
 900_doxyfile
-fpic-fix.patch
+# fpic-ftbfs-fix.patch
+# fpic-libpostproc-fix.patch
+# fpic-libswscale-fix.patch
diff --git a/debian/rules b/debian/rules
index 1bb77db..b15e185 100755
--- a/debian/rules
+++ b/debian/rules
@@ -136,12 +136,12 @@ endif
 binary-arch: build install formats.txt
 	dh_testdir
 	dh_testroot
-	install -D -m 0644 debian/libswscale0.override \
-		$(CURDIR)/debian/libswscale0/usr/share/lintian/overrides/libswscale0
+#	install -D -m 0644 debian/libswscale0.override \
+#		$(CURDIR)/debian/libswscale0/usr/share/lintian/overrides/libswscale0
 #	install -D -m 0644 debian/libpostproc51.override \
 #		$(CURDIR)/debian/libpostproc51/usr/share/lintian/overrides/libpostproc51
-	install -D -m 0644 debian/libavcodec52.override \
-		$(CURDIR)/debian/libavcodec52/usr/share/lintian/overrides/libavcodec52
+#	install -D -m 0644 debian/libavcodec52.override \
+#		$(CURDIR)/debian/libavcodec52/usr/share/lintian/overrides/libavcodec52
 	dh_installman -pffmpeg debian/qt-faststart.1
 	dh_installdocs $(extradoc) doc/optimization.txt
 	dh_installdocs -A MAINTAINERS CREDITS doc/TODO

-- 
FFmpeg packaging



More information about the pkg-multimedia-commits mailing list