--- /dev/null
+--- davs2-1.6/source/common/cpu.cc.orig 2018-11-15 09:15:32.000000000 +0100
++++ davs2-1.6/source/common/cpu.cc 2019-07-28 18:27:20.653314967 +0200
+@@ -166,6 +166,9 @@
+ \r
+ #if !ARCH_X86_64\r
+ /* */\r
++#ifdef __cplusplus\r
++extern "C"\r
++#endif\r
+ int davs2_cpu_cpuid_test(void);\r
+ #endif\r
+ \r
+--- davs2-1.6/source/common/intra.cc.orig 2018-11-15 09:15:32.000000000 +0100
++++ davs2-1.6/source/common/intra.cc 2019-07-28 20:01:18.669437878 +0200
+@@ -2631,7 +2631,7 @@
+ ipred[INTRA_ANG_Y_31] = intra_pred_ang_y_31_c;\r
+ ipred[INTRA_ANG_Y_32] = intra_pred_ang_y_32_c;\r
+ \r
+-#if HAVE_MMX\r
++#if HAVE_MMX && ARCH_X86_64 /* only 64-bit asm for now */\r
+ if (cpuid & DAVS2_CPU_SSE4) {\r
+ #if !HIGH_BIT_DEPTH\r
+ ipred[DC_PRED ] = intra_pred_dc_sse128;\r
+--- davs2-1.6/source/common/sao.cc.orig 2018-11-15 09:15:32.000000000 +0100
++++ davs2-1.6/source/common/sao.cc 2019-07-28 20:26:41.584520873 +0200
+@@ -645,7 +645,7 @@
+ fh->sao_filter_eo[SAO_TYPE_EO_135] = sao_block_eo_135_c;\r
+ \r
+ /* init asm function handles */\r
+-#if HAVE_MMX\r
++#if HAVE_MMX && ARCH_X86_64 /* only 64-bit asm for now */\r
+ if (cpuid & DAVS2_CPU_SSE4) {\r
+ fh->sao_block_bo = SAO_on_block_bo_sse128;\r
+ fh->sao_filter_eo[SAO_TYPE_EO_0] = SAO_on_block_eo_0_sse128;\r
+--- davs2-1.6/source/common/mc.cc.orig 2018-11-15 09:15:32.000000000 +0100
++++ davs2-1.6/source/common/mc.cc 2019-07-28 20:27:48.334159259 +0200
+@@ -673,7 +673,7 @@
+ pf->intpl_chroma_ext[1] = intpl_chroma_block_ext_c;\r
+ \r
+ /* init asm function handles */\r
+-#if HAVE_MMX\r
++#if HAVE_MMX && ARCH_X86_64 /* only 64-bit asm for now */\r
+ if (cpuid & DAVS2_CPU_SSE42) {\r
+ #if HIGH_BIT_DEPTH\r
+ //10bit assemble\r
+--- davs2-1.6/source/common/memory.cc.orig 2019-07-28 20:42:21.959426425 +0200
++++ davs2-1.6/source/common/memory.cc 2019-07-28 20:42:36.049350093 +0200
+@@ -70,6 +70,7 @@
+ // pf->memzero_aligned = davs2_memzero_aligned_sse;\r
+ }\r
+ \r
++#if ARCH_X86_64\r
+ if (cpuid & DAVS2_CPU_SSE2) {\r
+ pf->memzero_aligned = davs2_memzero_aligned_c_sse2;\r
+ // gf_davs2.memcpy_aligned = davs2_memcpy_aligned_c_sse2;\r
+@@ -78,5 +79,6 @@
+ if (cpuid & DAVS2_CPU_AVX2) {\r
+ pf->memzero_aligned = davs2_memzero_aligned_c_avx;\r
+ }\r
++#endif // ARCH_X86_64\r
+ #endif // HAVE_MMX\r
+ }\r
+--- davs2-1.6/source/common/transform.cc.orig 2018-11-15 09:15:32.000000000 +0100
++++ davs2-1.6/source/common/transform.cc 2019-07-28 20:32:37.265927315 +0200
+@@ -957,11 +957,14 @@
+ #if HAVE_MMX\r
+ /* functions defined in file intrinsic_dct.c */\r
+ if (cpuid & DAVS2_CPU_SSE2) {\r
++#if ARCH_X86_64\r
+ fh->inv_transform_4x4_2nd = inv_transform_4x4_2nd_sse128;\r
+ fh->inv_transform_2nd = inv_transform_2nd_sse128;\r
++#endif\r
+ \r
+ for (i = 0; i < DCT_PATTERN_NUM; i++) {\r
+ fh->idct[PART_4x4 ][i] = idct_4x4_sse128;\r
++#if ARCH_X86_64\r
+ fh->idct[PART_8x8 ][i] = idct_8x8_sse128;\r
+ fh->idct[PART_16x16][i] = idct_16x16_sse128;\r
+ fh->idct[PART_32x32][i] = idct_32x32_sse128;\r
+@@ -973,6 +974,7 @@
+ fh->idct[PART_8x32][i] = idct_8x32_sse128;\r
+ fh->idct[PART_16x4][i] = idct_16x4_sse128;\r
+ fh->idct[PART_32x8][i] = idct_32x8_sse128;\r
++#endif\r
+ \r
+ #if !HIGH_BIT_DEPTH\r
+ fh->idct[PART_4x4 ][i] = FPFX(idct_4x4_sse2);\r
+@@ -993,6 +995,7 @@
+ }\r
+ }\r
+ \r
++#if ARCH_X86_64\r
+ /* TODO: ³õʼ»¯·ÇĬÈÏDCTÄ£°å */\r
+ if (cpuid & DAVS2_CPU_SSE2) {\r
+ /* square */\r
+@@ -1020,7 +1023,6 @@
+ fh->idct[PART_64x16][DCT_QUAD] = idct_64x16_quad_sse128;\r
+ }\r
+ \r
+-#if ARCH_X86_64\r
+ if (cpuid & DAVS2_CPU_AVX2) {\r
+ fh->idct[PART_8x8 ][DCT_DEAULT] = idct_8x8_avx2;\r
+ fh->idct[PART_16x16][DCT_DEAULT] = idct_16x16_avx2;\r
+--- davs2-1.6/source/common/alf.cc.orig 2018-11-15 09:15:32.000000000 +0100
++++ davs2-1.6/source/common/alf.cc 2019-07-28 20:40:29.020038270 +0200
+@@ -513,7 +513,7 @@
+ fh->alf_block[1] = alf_filter_block2;\r
+ \r
+ /* init asm function handles */\r
+-#if HAVE_MMX\r
++#if HAVE_MMX && ARCH_X86_64 /* only 64-bit asm for now */\r
+ #if HIGH_BIT_DEPTH\r
+ #else\r
+ if (cpuid & DAVS2_CPU_SSE4) {\r
+--- davs2-1.6/source/common/deblock.cc.orig 2018-11-15 09:15:32.000000000 +0100
++++ davs2-1.6/source/common/deblock.cc 2019-07-28 20:41:35.926342474 +0200
+@@ -561,7 +561,7 @@
+ fh->set_deblock_const = NULL;\r
+ \r
+ /* init asm function handles */\r
+-#if HAVE_MMX\r
++#if HAVE_MMX && ARCH_X86_64 /* only 64-bit asm for now */\r
+ if ((cpuid & DAVS2_CPU_SSE4) && !HDR_CHROMA_DELTA_QP) {\r
+ #if !HIGH_BIT_DEPTH\r
+ fh->deblock_luma [0] = deblock_edge_ver_sse128;\r
--- /dev/null
+From 00ef2c8062a7f7d7265d933676fb5cc60f1ea659 Mon Sep 17 00:00:00 2001\r
+From: Daniel Bermond <danielbermond@yahoo.com>\r
+Date: Tue, 20 Nov 2018 16:54:25 +0000\r
+Subject: [PATCH] Make AVX symbols to be strictly visible (fix build with gcc8)\r
+\r
+_mm256_insertf128_si256 and _mm256_castsi128_si256 are undeclared\r
+in the scope of source/common/vec/intrinsic.h, which seems to be\r
+strictly not permitted by gcc8.\r
+\r
+Fixes #9\r
+---\r
+ source/common/vec/intrinsic_deblock_avx2.cc | 5 ++---\r
+ source/common/vec/intrinsic_idct_avx2.cc | 6 +++---\r
+ source/common/vec/intrinsic_inter_pred.cc | 6 +++---\r
+ source/common/vec/intrinsic_inter_pred_avx2.cc | 7 ++++---\r
+ source/common/vec/intrinsic_intra-pred_avx2.cc | 6 +++---\r
+ source/common/vec/intrinsic_pixel_avx.cc | 6 +++---\r
+ source/common/vec/intrinsic_sao_avx2.cc | 6 +++---\r
+ 7 files changed, 21 insertions(+), 21 deletions(-)\r
+\r
+diff --git a/source/common/vec/intrinsic_deblock_avx2.cc b/source/common/vec/intrinsic_deblock_avx2.cc\r
+index b87e472..ca9534e 100644\r
+--- a/source/common/vec/intrinsic_deblock_avx2.cc\r
++++ b/source/common/vec/intrinsic_deblock_avx2.cc\r
+@@ -30,15 +30,14 @@\r
+ * For more information, contact us at sswang @ pku.edu.cn.\r
+ */\r
+ \r
+-#include "../common.h"\r
+-#include "intrinsic.h"\r
+-\r
+ #include <mmintrin.h>\r
+ #include <emmintrin.h>\r
+ #include <tmmintrin.h>\r
+ #include <smmintrin.h>\r
+ #include <immintrin.h>\r
+ \r
++#include "../common.h"\r
++#include "intrinsic.h"\r
+ \r
+ #if !HIGH_BIT_DEPTH\r
+ __m128i c_0_128;\r
+diff --git a/source/common/vec/intrinsic_idct_avx2.cc b/source/common/vec/intrinsic_idct_avx2.cc\r
+index 0b40fde..ee5384d 100644\r
+--- a/source/common/vec/intrinsic_idct_avx2.cc\r
++++ b/source/common/vec/intrinsic_idct_avx2.cc\r
+@@ -30,15 +30,15 @@\r
+ * For more information, contact us at sswang @ pku.edu.cn.\r
+ */\r
+ \r
+-#include "../common.h"\r
+-#include "intrinsic.h"\r
+-\r
+ #include <mmintrin.h>\r
+ #include <emmintrin.h>\r
+ #include <tmmintrin.h>\r
+ #include <smmintrin.h>\r
+ #include <immintrin.h>\r
+ \r
++#include "../common.h"\r
++#include "intrinsic.h"\r
++\r
+ /* disable warnings */\r
+ #pragma warning(disable:4127) // warning C4127: Ìõ¼þ±í´ïʽÊdz£Á¿\r
+ \r
+diff --git a/source/common/vec/intrinsic_inter_pred.cc b/source/common/vec/intrinsic_inter_pred.cc\r
+index 46c0da8..55ff6a0 100644\r
+--- a/source/common/vec/intrinsic_inter_pred.cc\r
++++ b/source/common/vec/intrinsic_inter_pred.cc\r
+@@ -30,15 +30,15 @@\r
+ * For more information, contact us at sswang @ pku.edu.cn.\r
+ */\r
+ \r
+-#include "../common.h"\r
+-#include "intrinsic.h"\r
+-\r
+ #include <mmintrin.h>\r
+ #include <emmintrin.h>\r
+ #include <tmmintrin.h>\r
+ #include <smmintrin.h>\r
+ #include <immintrin.h>\r
+ \r
++#include "../common.h"\r
++#include "intrinsic.h"\r
++\r
+ #if !HIGH_BIT_DEPTH\r
+ /* ---------------------------------------------------------------------------\r
+ */\r
+diff --git a/source/common/vec/intrinsic_inter_pred_avx2.cc b/source/common/vec/intrinsic_inter_pred_avx2.cc\r
+index 6f35771..05f6957 100644\r
+--- a/source/common/vec/intrinsic_inter_pred_avx2.cc\r
++++ b/source/common/vec/intrinsic_inter_pred_avx2.cc\r
+@@ -30,14 +30,15 @@\r
+ * For more information, contact us at sswang @ pku.edu.cn.\r
+ */\r
+ \r
+-#include "../common.h"\r
+-#include "intrinsic.h"\r
+-\r
+ #include <mmintrin.h>\r
+ #include <emmintrin.h>\r
+ #include <tmmintrin.h>\r
+ #include <smmintrin.h>\r
+ #include <immintrin.h>\r
++\r
++#include "../common.h"\r
++#include "intrinsic.h"\r
++\r
+ #pragma warning(disable:4127) // warning C4127: Ìõ¼þ±í´ïʽÊdz£Á¿\r
+ \r
+ #if !HIGH_BIT_DEPTH\r
+diff --git a/source/common/vec/intrinsic_intra-pred_avx2.cc b/source/common/vec/intrinsic_intra-pred_avx2.cc\r
+index 6440929..1357bdb 100644\r
+--- a/source/common/vec/intrinsic_intra-pred_avx2.cc\r
++++ b/source/common/vec/intrinsic_intra-pred_avx2.cc\r
+@@ -30,15 +30,15 @@\r
+ * For more information, contact us at sswang @ pku.edu.cn.\r
+ */\r
+ \r
+-#include "../common.h"\r
+-#include "intrinsic.h"\r
+-\r
+ #include <mmintrin.h>\r
+ #include <emmintrin.h>\r
+ #include <tmmintrin.h>\r
+ #include <smmintrin.h>\r
+ #include <immintrin.h>\r
+ \r
++#include "../common.h"\r
++#include "intrinsic.h"\r
++\r
+ #if !HIGH_BIT_DEPTH\r
+ \r
+ void intra_pred_ver_avx(pel_t *src, pel_t *dst, int i_dst, int dir_mode, int bsx, int bsy)\r
+diff --git a/source/common/vec/intrinsic_pixel_avx.cc b/source/common/vec/intrinsic_pixel_avx.cc\r
+index 813a36f..fba7e46 100644\r
+--- a/source/common/vec/intrinsic_pixel_avx.cc\r
++++ b/source/common/vec/intrinsic_pixel_avx.cc\r
+@@ -30,15 +30,15 @@\r
+ * For more information, contact us at sswang @ pku.edu.cn.\r
+ */\r
+ \r
+-#include "../common.h"\r
+-#include "intrinsic.h"\r
+-\r
+ #include <mmintrin.h>\r
+ #include <emmintrin.h>\r
+ #include <tmmintrin.h>\r
+ #include <smmintrin.h>\r
+ #include <immintrin.h>\r
+ \r
++#include "../common.h"\r
++#include "intrinsic.h"\r
++\r
+ /* ---------------------------------------------------------------------------\r
+ */\r
+ void *davs2_memzero_aligned_c_avx(void *dst, size_t n)\r
+diff --git a/source/common/vec/intrinsic_sao_avx2.cc b/source/common/vec/intrinsic_sao_avx2.cc\r
+index 11be4d3..bb0c4aa 100644\r
+--- a/source/common/vec/intrinsic_sao_avx2.cc\r
++++ b/source/common/vec/intrinsic_sao_avx2.cc\r
+@@ -30,15 +30,15 @@\r
+ * For more information, contact us at sswang @ pku.edu.cn.\r
+ */\r
+ \r
+-#include "../common.h"\r
+-#include "intrinsic.h"\r
+-\r
+ #include <mmintrin.h>\r
+ #include <emmintrin.h>\r
+ #include <tmmintrin.h>\r
+ #include <smmintrin.h>\r
+ #include <immintrin.h>\r
+ \r
++#include "../common.h"\r
++#include "intrinsic.h"\r
++\r
+ #if !HIGH_BIT_DEPTH\r
+ #ifdef _MSC_VER\r
+ #pragma warning(disable:4244) // TODO: ÐÞÕý±àÒëwarning\r
--- /dev/null
+#
+# Conditional build:
+%bcond_without static_libs # don't build static libraries
+%bcond_without opencl # OpenCL features
+#
+Summary: Open-source decoder of AVS2-P2/IEEE1857.4 video coding standard
+Summary(pl.UTF-8): Dekoder standardu kodowania obrazu AVS2-P2/IEEE1857.4 o otwartych źródłach
+Name: davs2
+Version: 1.6
+Release: 1
+License: GPL v2+
+Group: Libraries
+#Source0Download: https://github.com/pkuvcl/davs2/releases
+Source0: https://github.com/pkuvcl/davs2/archive/%{version}/%{name}-%{version}.tar.gz
+# Source0-md5: c8861c1220c05a172b9ce472cbf929af
+Patch0: %{name}-extern.patch
+Patch1: %{name}-gcc8-fix.patch
+URL: https://github.com/pkuvcl/davs2
+%{?with_opencl:BuildRequires: OpenCL-devel}
+BuildRequires: libstdc++-devel >= 6:4.7
+BuildRequires: pkgconfig
+BuildRequires: rpmbuild(macros) >= 1.674
+BuildRequires: sed >= 4.0
+BuildRequires: yasm >= 1.2.0
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+Open-source decoder of AVS2-P2/IEEE1857.4 video coding standard.
+
+%description -l pl.UTF-8
+Dekoder standardu kodowania obrazu AVS2-P2/IEEE1857.4 o otwartych
+źródłach.
+
+%package devel
+Summary: Header files for davs2 library
+Summary(pl.UTF-8): Pliki nagłówkowe biblioteki davs2
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+Header files for davs2 library.
+
+%description devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki davs2.
+
+%package static
+Summary: Static davs2 library
+Summary(pl.UTF-8): Statyczna biblioteka davs2
+Group: Development/Libraries
+Requires: %{name}-devel = %{version}-%{release}
+
+%description static
+Static davs2 library.
+
+%description static -l pl.UTF-8
+Statyczna biblioteka davs2.
+
+%prep
+%setup -q
+%patch0 -p1
+
+%undos source/common/vec/intrinsic_{deblock_avx2,idct_avx2,inter_pred,inter_pred_avx2,intra-pred_avx2,pixel_avx,sao_avx2}.cc
+%patch1 -p1
+
+%build
+cd build/linux
+# not autoconf configure
+CC="%{__cc}" \
+CXX="%{__cxx}" \
+CFLAGS="%{rpmcflags}" \
+CXXFLAGS="%{rpmcxxflags}" \
+CPPFLAGS="%{rpmcppflags}" \
+LDFLAGS="%{rpmldflags} -Wl,-z,noexecstack" \
+./configure \
+ --prefix=%{_prefix} \
+ --bindir=%{_bindir} \
+ --includedir=%{_includedir} \
+ --libdir=%{_libdir} \
+ %{!?with_opencl:--disable-opencl} \
+ --enable-pic \
+ --enable-shared \
+ %{!?with_static_libs:--disable-static}
+%{__make}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%{__make} -C build/linux install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(644,root,root,755)
+%doc README.md
+%lang(zh) %doc README.zh.md
+%attr(755,root,root) %{_bindir}/davs2
+%attr(755,root,root) %{_libdir}/libdavs2.so.16
+
+%files devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libdavs2.so
+%{_includedir}/davs2.h
+%{_includedir}/davs2_config.h
+%{_pkgconfigdir}/davs2.pc
+
+%if %{with static_libs}
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/libdavs2.a
+%endif