[gstreamer-plugins-ugly] Add BR:gcc
by Sérgio M. Basto
commit 7a34bdad4ba83f27a1a330424888e59aded68f1d
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Thu Oct 4 21:02:18 2018 +0100
Add BR:gcc
gstreamer-plugins-ugly.spec | 1 +
1 file changed, 1 insertion(+)
---
diff --git a/gstreamer-plugins-ugly.spec b/gstreamer-plugins-ugly.spec
index 39e218a..bab07b6 100644
--- a/gstreamer-plugins-ugly.spec
+++ b/gstreamer-plugins-ugly.spec
@@ -22,6 +22,7 @@ Requires: %{gstreamer} >= %{gst_minver}
BuildRequires: %{gstreamer}-devel >= %{gst_minver}
BuildRequires: %{gstreamer}-plugins-base-devel >= %{gstpb_minver}
+BuildRequires: gcc
BuildRequires: gettext-devel
BuildRequires: gtk-doc
6 years, 1 month
[libquicktime] Mass rebuild for x264 and/or x265
by Sérgio M. Basto
commit 57af332cbd3b25a568e849c73ad530e8d96832bb
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Thu Oct 4 20:33:11 2018 +0100
Mass rebuild for x264 and/or x265
libquicktime.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
---
diff --git a/libquicktime.spec b/libquicktime.spec
index d173ed5..69dd42d 100644
--- a/libquicktime.spec
+++ b/libquicktime.spec
@@ -7,7 +7,7 @@
Summary: Library for reading and writing Quicktime files
Name: libquicktime
Version: 1.2.4
-Release: 31%{?rel_string}%{?dist}
+Release: 32%{?rel_string}%{?dist}
License: LGPLv2+
Group: System Environment/Libraries
URL: http://libquicktime.sourceforge.net/
@@ -130,6 +130,9 @@ find $RPM_BUILD_ROOT%{_libdir} -type f -a -name \*.la -exec rm {} \;
# --------------------------------------------------------------------
%changelog
+* Thu Oct 04 2018 Sérgio Basto <sergio(a)serjux.com> - 1.2.4-32.20180202.98.g859a717
+- Mass rebuild for x264 and/or x265
+
* Thu Jul 26 2018 RPM Fusion Release Engineering <leigh123linux(a)gmail.com> - 1.2.4-31.20180202.98.g859a717
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
6 years, 1 month
[gstreamer1-plugins-bad-freeworld] Mass rebuild for x264 and/or x265
by Sérgio M. Basto
commit 40bc08a63d0104eb758f264e93648d5183335be5
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Thu Oct 4 20:32:48 2018 +0100
Mass rebuild for x264 and/or x265
gstreamer1-plugins-bad-freeworld.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
---
diff --git a/gstreamer1-plugins-bad-freeworld.spec b/gstreamer1-plugins-bad-freeworld.spec
index d0c4352..e2e558b 100644
--- a/gstreamer1-plugins-bad-freeworld.spec
+++ b/gstreamer1-plugins-bad-freeworld.spec
@@ -5,7 +5,7 @@
Summary: GStreamer 1.0 streaming media framework "bad" plug-ins
Name: gstreamer1-plugins-bad-freeworld
Version: 1.14.3
-Release: 1%{?dist}
+Release: 2%{?dist}
License: LGPLv2+
Group: Applications/Multimedia
URL: http://gstreamer.freedesktop.org/
@@ -101,6 +101,9 @@ rm -fv %{buildroot}%{_libdir}/gstreamer-1.0/*.la
%changelog
+* Thu Oct 04 2018 Sérgio Basto <sergio(a)serjux.com> - 1.14.3-2
+- Mass rebuild for x264 and/or x265
+
* Tue Sep 18 2018 Leigh Scott <leigh123linux(a)googlemail.com> - 1.14.3-1
- 1.14.3
6 years, 1 month
[gstreamer-plugins-ugly] Mass rebuild for x264 and/or x265
by Sérgio M. Basto
commit dc5b4e32a56a7ddd5508de20bf507a29a98a20dc
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Thu Oct 4 20:32:16 2018 +0100
Mass rebuild for x264 and/or x265
gstreamer-plugins-ugly.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
---
diff --git a/gstreamer-plugins-ugly.spec b/gstreamer-plugins-ugly.spec
index 4fc3249..39e218a 100644
--- a/gstreamer-plugins-ugly.spec
+++ b/gstreamer-plugins-ugly.spec
@@ -11,7 +11,7 @@
Summary: GStreamer streaming media framework "ugly" plug-ins
Name: gstreamer-plugins-ugly
Version: 0.10.19
-Release: 28%{?dist}
+Release: 29%{?dist}
License: LGPLv2+
Group: Applications/Multimedia
URL: http://gstreamer.freedesktop.org/
@@ -125,6 +125,9 @@ gstreamer-plugins-good because:
%changelog
+* Thu Oct 04 2018 Sérgio Basto <sergio(a)serjux.com> - 0.10.19-29
+- Mass rebuild for x264 and/or x265
+
* Thu Jul 26 2018 RPM Fusion Release Engineering <leigh123linux(a)gmail.com> - 0.10.19-28
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
6 years, 1 month
[gstreamer1-plugins-ugly] Mass rebuild for x264 and/or x265
by Sérgio M. Basto
commit ec237b8cb05b64e0930e5ac1d44953cbaeef11fb
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Thu Oct 4 17:47:08 2018 +0100
Mass rebuild for x264 and/or x265
gstreamer1-plugins-ugly.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
---
diff --git a/gstreamer1-plugins-ugly.spec b/gstreamer1-plugins-ugly.spec
index 84c3733..99b3712 100644
--- a/gstreamer1-plugins-ugly.spec
+++ b/gstreamer1-plugins-ugly.spec
@@ -3,7 +3,7 @@
Summary: GStreamer 1.0 streaming media framework "ugly" plug-ins
Name: gstreamer1-plugins-ugly
Version: 1.14.3
-Release: 1%{?dist}
+Release: 2%{?dist}
License: LGPLv2+
Group: Applications/Multimedia
URL: https://gstreamer.freedesktop.org/
@@ -106,6 +106,9 @@ rm -fv %{buildroot}%{_datadir}/gtk-doc/html/%{src_name}-plugins-1.0/*
%changelog
+* Thu Oct 04 2018 Sérgio Basto <sergio(a)serjux.com> - 1.14.3-2
+- Mass rebuild for x264 and/or x265
+
* Tue Sep 18 2018 Leigh Scott <leigh123linux(a)googlemail.com> - 1.14.3-1
- 1.14.3
6 years, 1 month
[unifi/el7] Update to 5.9.29, see: https://community.ubnt.com/t5/UniFi-Updates-Blog/UniFi-SDN-Controller-5-9-2
by Richard Shaw
commit 81d02087656afb67dba210ad2ef6de6769f2dfd9
Author: Richard Shaw <hobbes1069(a)gmail.com>
Date: Thu Oct 4 14:13:44 2018 -0500
Update to 5.9.29, see:
https://community.ubnt.com/t5/UniFi-Updates-Blog/UniFi-SDN-Controller-5-9...
unifi.spec | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
---
diff --git a/unifi.spec b/unifi.spec
index 0ab9a4a..0100f43 100644
--- a/unifi.spec
+++ b/unifi.spec
@@ -4,7 +4,7 @@
%global __strip /bin/true
Name: unifi
-Version: 5.8.30
+Version: 5.9.29
Release: 1%{?dist}
Summary: Ubiquiti UniFi controller
@@ -290,6 +290,10 @@ fi
%changelog
+* Thu Oct 04 2018 Richard Shaw <hobbes1069(a)gmail.com> - 5.9.29-1
+- Update to 5.9.29, see:
+ https://community.ubnt.com/t5/UniFi-Updates-Blog/UniFi-SDN-Controller-5-9...
+
* Tue Sep 11 2018 Richard Shaw <hobbes1069(a)gmail.com> - 5.8.30-1
- Update to 5.8.30, see:
https://community.ubnt.com/t5/UniFi-Updates-Blog/UniFi-SDN-Controller-5-8...
6 years, 1 month
[ffmpeg] Add upstream commit to fix aom build failure
by Leigh Scott
commit 9a18f49211959bc25304b99bf2d89f0aa22dda2b
Author: leigh123linux <leigh123linux(a)googlemail.com>
Date: Thu Oct 4 18:43:13 2018 +0100
Add upstream commit to fix aom build failure
...aomenc-remove-AVOption-related-to-frame-p.patch | 34 ++++++++++++++++++++++
ffmpeg.spec | 9 +++++-
2 files changed, 42 insertions(+), 1 deletion(-)
---
diff --git a/avcodec-libaomenc-remove-AVOption-related-to-frame-p.patch b/avcodec-libaomenc-remove-AVOption-related-to-frame-p.patch
new file mode 100644
index 0000000..ef74fb6
--- /dev/null
+++ b/avcodec-libaomenc-remove-AVOption-related-to-frame-p.patch
@@ -0,0 +1,34 @@
+From 4894e0f637e4a418d8a9b0455ea165e8ebeca517 Mon Sep 17 00:00:00 2001
+From: James Almer <jamrial(a)gmail.com>
+Date: Wed, 12 Sep 2018 11:44:56 -0300
+Subject: [PATCH] avcodec/libaomenc: remove AVOption related to frame
+ partitions
+
+Support for it was apparently never in the codebase, and the enum
+value was recently removed from the public headers [1]
+
+[1] https://aomedia.googlesource.com/aom/+/df4ffb73140fe31bebdabd17c1a7b53721...
+
+Signed-off-by: James Almer <jamrial(a)gmail.com>
+---
+ libavcodec/libaomenc.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
+index 41b05dc1c0..3e1bbb5afc 100644
+--- a/libavcodec/libaomenc.c
++++ b/libavcodec/libaomenc.c
+@@ -697,10 +697,6 @@ static const AVOption options[] = {
+ "alternate reference frame selection", OFFSET(lag_in_frames), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VE},
+ { "error-resilience", "Error resilience configuration", OFFSET(error_resilient), AV_OPT_TYPE_FLAGS, {.i64 = 0}, INT_MIN, INT_MAX, VE, "er"},
+ { "default", "Improve resiliency against losses of whole frames", 0, AV_OPT_TYPE_CONST, {.i64 = AOM_ERROR_RESILIENT_DEFAULT}, 0, 0, VE, "er"},
+- { "partitions", "The frame partitions are independently decodable "
+- "by the bool decoder, meaning that partitions can be decoded even "
+- "though earlier partitions have been lost. Note that intra predicition"
+- " is still done over the partition boundary.", 0, AV_OPT_TYPE_CONST, {.i64 = AOM_ERROR_RESILIENT_PARTITIONS}, 0, 0, VE, "er"},
+ { "crf", "Select the quality for constant quality mode", offsetof(AOMContext, crf), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 63, VE },
+ { "static-thresh", "A change threshold on blocks below which they will be skipped by the encoder", OFFSET(static_thresh), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE },
+ { "drop-threshold", "Frame drop threshold", offsetof(AOMContext, drop_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, VE },
+--
+2.19.0
+
diff --git a/ffmpeg.spec b/ffmpeg.spec
index 4919f13..c8b222f 100644
--- a/ffmpeg.spec
+++ b/ffmpeg.spec
@@ -74,7 +74,7 @@
Summary: Digital VCR and streaming server
Name: ffmpeg%{?flavor}
Version: 4.0.2
-Release: 7%{?date}%{?date:git}%{?rel}%{?dist}
+Release: 8%{?date}%{?date:git}%{?rel}%{?dist}
License: %{ffmpeg_license}
URL: http://ffmpeg.org/
%if 0%{?date}
@@ -82,6 +82,9 @@ Source0: ffmpeg-%{?branch}%{date}.tar.bz2
%else
Source0: http://ffmpeg.org/releases/ffmpeg-%{version}.tar.xz
%endif
+# Upstream commit to fix aom build issue
+# https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/b69ea742ab23ad74b2ae2...
+Patch0: avcodec-libaomenc-remove-AVOption-related-to-frame-p.patch
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%{?_with_cuda:BuildRequires: cuda-driver-dev-%{_cuda_rpm_version} cuda-misc-headers-%{_cuda_rpm_version} cuda-drivers-devel%{_isa}}
%{?_with_libnpp:BuildRequires: cuda-cudart-dev-%{_cuda_rpm_version} cuda-nvcc-%{_cuda_rpm_version} cuda-misc-headers-%{_cuda_rpm_version} cuda-npp-dev-%{_cuda_rpm_version}}
@@ -300,6 +303,7 @@ echo "git-snapshot-%{?branch}%{date}-RPMFusion" > VERSION
%else
%setup -q -n ffmpeg-%{version}
%endif
+%patch0 -p1 -b .aom_build_fix
# fix -O3 -g in host_cflags
sed -i "s|check_host_cflags -O3|check_host_cflags %{optflags}|" configure
mkdir -p _doc/examples
@@ -409,6 +413,9 @@ install -pm755 tools/qt-faststart %{buildroot}%{_bindir}
%changelog
+* Thu Oct 04 2018 Leigh Scott <leigh123linux(a)googlemail.com> - 4.0.2-8
+- Add upstream commit to fix aom build failure
+
* Thu Oct 04 2018 Sérgio Basto <sergio(a)serjux.com> - 4.0.2-7
- Mass rebuild for x264 and/or x265
6 years, 1 month
[ffmpeg] Mass rebuild for x264 and/or x265
by Sérgio M. Basto
commit f8c9c576916d4e56daffd215e3578971a103676e
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Thu Oct 4 17:46:43 2018 +0100
Mass rebuild for x264 and/or x265
ffmpeg.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
---
diff --git a/ffmpeg.spec b/ffmpeg.spec
index ae3cae5..4919f13 100644
--- a/ffmpeg.spec
+++ b/ffmpeg.spec
@@ -74,7 +74,7 @@
Summary: Digital VCR and streaming server
Name: ffmpeg%{?flavor}
Version: 4.0.2
-Release: 6%{?date}%{?date:git}%{?rel}%{?dist}
+Release: 7%{?date}%{?date:git}%{?rel}%{?dist}
License: %{ffmpeg_license}
URL: http://ffmpeg.org/
%if 0%{?date}
@@ -409,6 +409,9 @@ install -pm755 tools/qt-faststart %{buildroot}%{_bindir}
%changelog
+* Thu Oct 04 2018 Sérgio Basto <sergio(a)serjux.com> - 4.0.2-7
+- Mass rebuild for x264 and/or x265
+
* Fri Sep 14 2018 Leigh Scott <leigh123linux(a)googlemail.com> - 4.0.2-6
- Change BuildRequires: aom-devel to libaom-devel
6 years, 1 month
[avidemux] Mass rebuild for x264 and/or x265
by Sérgio M. Basto
commit 9b53cac19e0c5c65f2d050d795f991a27cdb49f5
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Thu Oct 4 17:46:02 2018 +0100
Mass rebuild for x264 and/or x265
avidemux.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
---
diff --git a/avidemux.spec b/avidemux.spec
index 6a3458b..0d6dc6c 100644
--- a/avidemux.spec
+++ b/avidemux.spec
@@ -5,7 +5,7 @@
Name: avidemux
Version: 2.7.1
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Graphical video editing and transcoding tool
License: GPLv2+
@@ -283,6 +283,9 @@ appstream-util validate-relax --nonet \
%changelog
+* Thu Oct 04 2018 Sérgio Basto <sergio(a)serjux.com> - 2.7.1-5
+- Mass rebuild for x264 and/or x265
+
* Thu Jul 26 2018 RPM Fusion Release Engineering <leigh123linux(a)gmail.com> - 2.7.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
6 years, 1 month
[x265] Update to 2.8
by Sérgio M. Basto
commit cd2972ac285171417ba46e3cff98337fe558e29d
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Thu Oct 4 16:52:22 2018 +0100
Update to 2.8
Add 2 patches to fix builds on non-x86 [1] and arm [2]
[1]
https://bitbucket.org/multicoreware/x265/issues/404/28-fails-to-build-on-...
[2]
https://bitbucket.org/multicoreware/x265/issues/406/arm-assembly-fail-to-...
.gitignore | 1 +
sources | 2 +-
x265-2.8-asm-primitives.patch | 347 +++++++++++++++++++++
x265-4504219210793536d921ee4e0b3058698c630bf4.diff | 19 ++
x265-detect_cpu_armhfp.patch | 2 +-
x265.spec | 14 +-
6 files changed, 380 insertions(+), 5 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 594d208..f3a1c5d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@ x265_1.6.tar.gz
/x265_2.5.tar.gz
/x265_2.6.tar.gz
/x265_2.7.tar.gz
+/x265_2.8.tar.gz
diff --git a/sources b/sources
index 7181119..2c38b2f 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-b0d7d20da2a418fa4f53a559946ea079 x265_2.7.tar.gz
+b68dcd4e8a495e53e53034a11fec5eb9 x265_2.8.tar.gz
diff --git a/x265-2.8-asm-primitives.patch b/x265-2.8-asm-primitives.patch
new file mode 100644
index 0000000..89b42f2
--- /dev/null
+++ b/x265-2.8-asm-primitives.patch
@@ -0,0 +1,347 @@
+--- ./source/common/arm/asm-primitives.cpp.orig 2018-05-21 02:33:10.000000000 -0600
++++ ./source/common/arm/asm-primitives.cpp 2018-05-28 20:38:37.302378303 -0600
+@@ -48,77 +48,77 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.ssim_4x4x2_core = PFX(ssim_4x4x2_core_neon);
+
+ // addAvg
+- p.pu[LUMA_4x4].addAvg = PFX(addAvg_4x4_neon);
+- p.pu[LUMA_4x8].addAvg = PFX(addAvg_4x8_neon);
+- p.pu[LUMA_4x16].addAvg = PFX(addAvg_4x16_neon);
+- p.pu[LUMA_8x4].addAvg = PFX(addAvg_8x4_neon);
+- p.pu[LUMA_8x8].addAvg = PFX(addAvg_8x8_neon);
+- p.pu[LUMA_8x16].addAvg = PFX(addAvg_8x16_neon);
+- p.pu[LUMA_8x32].addAvg = PFX(addAvg_8x32_neon);
+- p.pu[LUMA_12x16].addAvg = PFX(addAvg_12x16_neon);
+- p.pu[LUMA_16x4].addAvg = PFX(addAvg_16x4_neon);
+- p.pu[LUMA_16x8].addAvg = PFX(addAvg_16x8_neon);
+- p.pu[LUMA_16x12].addAvg = PFX(addAvg_16x12_neon);
+- p.pu[LUMA_16x16].addAvg = PFX(addAvg_16x16_neon);
+- p.pu[LUMA_16x32].addAvg = PFX(addAvg_16x32_neon);
+- p.pu[LUMA_16x64].addAvg = PFX(addAvg_16x64_neon);
+- p.pu[LUMA_24x32].addAvg = PFX(addAvg_24x32_neon);
+- p.pu[LUMA_32x8].addAvg = PFX(addAvg_32x8_neon);
+- p.pu[LUMA_32x16].addAvg = PFX(addAvg_32x16_neon);
+- p.pu[LUMA_32x24].addAvg = PFX(addAvg_32x24_neon);
+- p.pu[LUMA_32x32].addAvg = PFX(addAvg_32x32_neon);
+- p.pu[LUMA_32x64].addAvg = PFX(addAvg_32x64_neon);
+- p.pu[LUMA_48x64].addAvg = PFX(addAvg_48x64_neon);
+- p.pu[LUMA_64x16].addAvg = PFX(addAvg_64x16_neon);
+- p.pu[LUMA_64x32].addAvg = PFX(addAvg_64x32_neon);
+- p.pu[LUMA_64x48].addAvg = PFX(addAvg_64x48_neon);
+- p.pu[LUMA_64x64].addAvg = PFX(addAvg_64x64_neon);
++ p.pu[LUMA_4x4].addAvg[ALIGNED] = PFX(addAvg_4x4_neon);
++ p.pu[LUMA_4x8].addAvg[ALIGNED] = PFX(addAvg_4x8_neon);
++ p.pu[LUMA_4x16].addAvg[ALIGNED] = PFX(addAvg_4x16_neon);
++ p.pu[LUMA_8x4].addAvg[ALIGNED] = PFX(addAvg_8x4_neon);
++ p.pu[LUMA_8x8].addAvg[ALIGNED] = PFX(addAvg_8x8_neon);
++ p.pu[LUMA_8x16].addAvg[ALIGNED] = PFX(addAvg_8x16_neon);
++ p.pu[LUMA_8x32].addAvg[ALIGNED] = PFX(addAvg_8x32_neon);
++ p.pu[LUMA_12x16].addAvg[ALIGNED] = PFX(addAvg_12x16_neon);
++ p.pu[LUMA_16x4].addAvg[ALIGNED] = PFX(addAvg_16x4_neon);
++ p.pu[LUMA_16x8].addAvg[ALIGNED] = PFX(addAvg_16x8_neon);
++ p.pu[LUMA_16x12].addAvg[ALIGNED] = PFX(addAvg_16x12_neon);
++ p.pu[LUMA_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);
++ p.pu[LUMA_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);
++ p.pu[LUMA_16x64].addAvg[ALIGNED] = PFX(addAvg_16x64_neon);
++ p.pu[LUMA_24x32].addAvg[ALIGNED] = PFX(addAvg_24x32_neon);
++ p.pu[LUMA_32x8].addAvg[ALIGNED] = PFX(addAvg_32x8_neon);
++ p.pu[LUMA_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);
++ p.pu[LUMA_32x24].addAvg[ALIGNED] = PFX(addAvg_32x24_neon);
++ p.pu[LUMA_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);
++ p.pu[LUMA_32x64].addAvg[ALIGNED] = PFX(addAvg_32x64_neon);
++ p.pu[LUMA_48x64].addAvg[ALIGNED] = PFX(addAvg_48x64_neon);
++ p.pu[LUMA_64x16].addAvg[ALIGNED] = PFX(addAvg_64x16_neon);
++ p.pu[LUMA_64x32].addAvg[ALIGNED] = PFX(addAvg_64x32_neon);
++ p.pu[LUMA_64x48].addAvg[ALIGNED] = PFX(addAvg_64x48_neon);
++ p.pu[LUMA_64x64].addAvg[ALIGNED] = PFX(addAvg_64x64_neon);
+
+ // chroma addAvg
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_4x2].addAvg = PFX(addAvg_4x2_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_4x4].addAvg = PFX(addAvg_4x4_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_4x8].addAvg = PFX(addAvg_4x8_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_4x16].addAvg = PFX(addAvg_4x16_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_6x8].addAvg = PFX(addAvg_6x8_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x2].addAvg = PFX(addAvg_8x2_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x4].addAvg = PFX(addAvg_8x4_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x6].addAvg = PFX(addAvg_8x6_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x8].addAvg = PFX(addAvg_8x8_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x16].addAvg = PFX(addAvg_8x16_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x32].addAvg = PFX(addAvg_8x32_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_12x16].addAvg = PFX(addAvg_12x16_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_16x4].addAvg = PFX(addAvg_16x4_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_16x8].addAvg = PFX(addAvg_16x8_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_16x12].addAvg = PFX(addAvg_16x12_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_16x16].addAvg = PFX(addAvg_16x16_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_16x32].addAvg = PFX(addAvg_16x32_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_24x32].addAvg = PFX(addAvg_24x32_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_32x8].addAvg = PFX(addAvg_32x8_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_32x16].addAvg = PFX(addAvg_32x16_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_32x24].addAvg = PFX(addAvg_32x24_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_32x32].addAvg = PFX(addAvg_32x32_neon);
+-
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_4x8].addAvg = PFX(addAvg_4x8_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_4x16].addAvg = PFX(addAvg_4x16_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_4x32].addAvg = PFX(addAvg_4x32_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_6x16].addAvg = PFX(addAvg_6x16_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x4].addAvg = PFX(addAvg_8x4_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x8].addAvg = PFX(addAvg_8x8_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x12].addAvg = PFX(addAvg_8x12_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x16].addAvg = PFX(addAvg_8x16_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x32].addAvg = PFX(addAvg_8x32_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x64].addAvg = PFX(addAvg_8x64_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_12x32].addAvg = PFX(addAvg_12x32_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_16x8].addAvg = PFX(addAvg_16x8_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_16x16].addAvg = PFX(addAvg_16x16_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_16x24].addAvg = PFX(addAvg_16x24_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_16x32].addAvg = PFX(addAvg_16x32_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_16x64].addAvg = PFX(addAvg_16x64_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_24x64].addAvg = PFX(addAvg_24x64_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_32x16].addAvg = PFX(addAvg_32x16_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_32x32].addAvg = PFX(addAvg_32x32_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_32x48].addAvg = PFX(addAvg_32x48_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_32x64].addAvg = PFX(addAvg_32x64_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_4x2].addAvg[ALIGNED] = PFX(addAvg_4x2_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_4x4].addAvg[ALIGNED] = PFX(addAvg_4x4_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_4x8].addAvg[ALIGNED] = PFX(addAvg_4x8_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_4x16].addAvg[ALIGNED] = PFX(addAvg_4x16_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_6x8].addAvg[ALIGNED] = PFX(addAvg_6x8_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x2].addAvg[ALIGNED] = PFX(addAvg_8x2_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x4].addAvg[ALIGNED] = PFX(addAvg_8x4_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x6].addAvg[ALIGNED] = PFX(addAvg_8x6_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x8].addAvg[ALIGNED] = PFX(addAvg_8x8_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x16].addAvg[ALIGNED] = PFX(addAvg_8x16_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x32].addAvg[ALIGNED] = PFX(addAvg_8x32_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_12x16].addAvg[ALIGNED] = PFX(addAvg_12x16_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_16x4].addAvg[ALIGNED] = PFX(addAvg_16x4_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_16x8].addAvg[ALIGNED] = PFX(addAvg_16x8_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_16x12].addAvg[ALIGNED] = PFX(addAvg_16x12_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_24x32].addAvg[ALIGNED] = PFX(addAvg_24x32_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_32x8].addAvg[ALIGNED] = PFX(addAvg_32x8_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_32x24].addAvg[ALIGNED] = PFX(addAvg_32x24_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);
++
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_4x8].addAvg[ALIGNED] = PFX(addAvg_4x8_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_4x16].addAvg[ALIGNED] = PFX(addAvg_4x16_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_4x32].addAvg[ALIGNED] = PFX(addAvg_4x32_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_6x16].addAvg[ALIGNED] = PFX(addAvg_6x16_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x4].addAvg[ALIGNED] = PFX(addAvg_8x4_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x8].addAvg[ALIGNED] = PFX(addAvg_8x8_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x12].addAvg[ALIGNED] = PFX(addAvg_8x12_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x16].addAvg[ALIGNED] = PFX(addAvg_8x16_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x32].addAvg[ALIGNED] = PFX(addAvg_8x32_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x64].addAvg[ALIGNED] = PFX(addAvg_8x64_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_12x32].addAvg[ALIGNED] = PFX(addAvg_12x32_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_16x8].addAvg[ALIGNED] = PFX(addAvg_16x8_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_16x24].addAvg[ALIGNED] = PFX(addAvg_16x24_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_16x64].addAvg[ALIGNED] = PFX(addAvg_16x64_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_24x64].addAvg[ALIGNED] = PFX(addAvg_24x64_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_32x48].addAvg[ALIGNED] = PFX(addAvg_32x48_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_32x64].addAvg[ALIGNED] = PFX(addAvg_32x64_neon);
+
+ // quant
+ p.quant = PFX(quant_neon);
+@@ -402,7 +402,7 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.scale2D_64to32 = PFX(scale2D_64to32_neon);
+
+ // scale1D_128to64
+- p.scale1D_128to64 = PFX(scale1D_128to64_neon);
++ p.scale1D_128to64[ALIGNED] = PFX(scale1D_128to64_neon);
+
+ // copy_count
+ p.cu[BLOCK_4x4].copy_cnt = PFX(copy_cnt_4_neon);
+@@ -411,37 +411,37 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.cu[BLOCK_32x32].copy_cnt = PFX(copy_cnt_32_neon);
+
+ // filterPixelToShort
+- p.pu[LUMA_4x4].convert_p2s = PFX(filterPixelToShort_4x4_neon);
+- p.pu[LUMA_4x8].convert_p2s = PFX(filterPixelToShort_4x8_neon);
+- p.pu[LUMA_4x16].convert_p2s = PFX(filterPixelToShort_4x16_neon);
+- p.pu[LUMA_8x4].convert_p2s = PFX(filterPixelToShort_8x4_neon);
+- p.pu[LUMA_8x8].convert_p2s = PFX(filterPixelToShort_8x8_neon);
+- p.pu[LUMA_8x16].convert_p2s = PFX(filterPixelToShort_8x16_neon);
+- p.pu[LUMA_8x32].convert_p2s = PFX(filterPixelToShort_8x32_neon);
+- p.pu[LUMA_12x16].convert_p2s = PFX(filterPixelToShort_12x16_neon);
+- p.pu[LUMA_16x4].convert_p2s = PFX(filterPixelToShort_16x4_neon);
+- p.pu[LUMA_16x8].convert_p2s = PFX(filterPixelToShort_16x8_neon);
+- p.pu[LUMA_16x12].convert_p2s = PFX(filterPixelToShort_16x12_neon);
+- p.pu[LUMA_16x16].convert_p2s = PFX(filterPixelToShort_16x16_neon);
+- p.pu[LUMA_16x32].convert_p2s = PFX(filterPixelToShort_16x32_neon);
+- p.pu[LUMA_16x64].convert_p2s = PFX(filterPixelToShort_16x64_neon);
+- p.pu[LUMA_24x32].convert_p2s = PFX(filterPixelToShort_24x32_neon);
+- p.pu[LUMA_32x8].convert_p2s = PFX(filterPixelToShort_32x8_neon);
+- p.pu[LUMA_32x16].convert_p2s = PFX(filterPixelToShort_32x16_neon);
+- p.pu[LUMA_32x24].convert_p2s = PFX(filterPixelToShort_32x24_neon);
+- p.pu[LUMA_32x32].convert_p2s = PFX(filterPixelToShort_32x32_neon);
+- p.pu[LUMA_32x64].convert_p2s = PFX(filterPixelToShort_32x64_neon);
+- p.pu[LUMA_48x64].convert_p2s = PFX(filterPixelToShort_48x64_neon);
+- p.pu[LUMA_64x16].convert_p2s = PFX(filterPixelToShort_64x16_neon);
+- p.pu[LUMA_64x32].convert_p2s = PFX(filterPixelToShort_64x32_neon);
+- p.pu[LUMA_64x48].convert_p2s = PFX(filterPixelToShort_64x48_neon);
+- p.pu[LUMA_64x64].convert_p2s = PFX(filterPixelToShort_64x64_neon);
++ p.pu[LUMA_4x4].convert_p2s[ALIGNED] = PFX(filterPixelToShort_4x4_neon);
++ p.pu[LUMA_4x8].convert_p2s[ALIGNED] = PFX(filterPixelToShort_4x8_neon);
++ p.pu[LUMA_4x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_4x16_neon);
++ p.pu[LUMA_8x4].convert_p2s[ALIGNED] = PFX(filterPixelToShort_8x4_neon);
++ p.pu[LUMA_8x8].convert_p2s[ALIGNED] = PFX(filterPixelToShort_8x8_neon);
++ p.pu[LUMA_8x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_8x16_neon);
++ p.pu[LUMA_8x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_8x32_neon);
++ p.pu[LUMA_12x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_12x16_neon);
++ p.pu[LUMA_16x4].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x4_neon);
++ p.pu[LUMA_16x8].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x8_neon);
++ p.pu[LUMA_16x12].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x12_neon);
++ p.pu[LUMA_16x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x16_neon);
++ p.pu[LUMA_16x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x32_neon);
++ p.pu[LUMA_16x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x64_neon);
++ p.pu[LUMA_24x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_24x32_neon);
++ p.pu[LUMA_32x8].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x8_neon);
++ p.pu[LUMA_32x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x16_neon);
++ p.pu[LUMA_32x24].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x24_neon);
++ p.pu[LUMA_32x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x32_neon);
++ p.pu[LUMA_32x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x64_neon);
++ p.pu[LUMA_48x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_48x64_neon);
++ p.pu[LUMA_64x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x16_neon);
++ p.pu[LUMA_64x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x32_neon);
++ p.pu[LUMA_64x48].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x48_neon);
++ p.pu[LUMA_64x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x64_neon);
+
+ // Block_fill
+- p.cu[BLOCK_4x4].blockfill_s = PFX(blockfill_s_4x4_neon);
+- p.cu[BLOCK_8x8].blockfill_s = PFX(blockfill_s_8x8_neon);
+- p.cu[BLOCK_16x16].blockfill_s = PFX(blockfill_s_16x16_neon);
+- p.cu[BLOCK_32x32].blockfill_s = PFX(blockfill_s_32x32_neon);
++ p.cu[BLOCK_4x4].blockfill_s[ALIGNED] = PFX(blockfill_s_4x4_neon);
++ p.cu[BLOCK_8x8].blockfill_s[ALIGNED] = PFX(blockfill_s_8x8_neon);
++ p.cu[BLOCK_16x16].blockfill_s[ALIGNED] = PFX(blockfill_s_16x16_neon);
++ p.cu[BLOCK_32x32].blockfill_s[ALIGNED] = PFX(blockfill_s_32x32_neon);
+
+ // Blockcopy_ss
+ p.cu[BLOCK_4x4].copy_ss = PFX(blockcopy_ss_4x4_neon);
+@@ -495,21 +495,21 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].copy_sp = PFX(blockcopy_sp_32x64_neon);
+
+ // pixel_add_ps
+- p.cu[BLOCK_4x4].add_ps = PFX(pixel_add_ps_4x4_neon);
+- p.cu[BLOCK_8x8].add_ps = PFX(pixel_add_ps_8x8_neon);
+- p.cu[BLOCK_16x16].add_ps = PFX(pixel_add_ps_16x16_neon);
+- p.cu[BLOCK_32x32].add_ps = PFX(pixel_add_ps_32x32_neon);
+- p.cu[BLOCK_64x64].add_ps = PFX(pixel_add_ps_64x64_neon);
++ p.cu[BLOCK_4x4].add_ps[ALIGNED] = PFX(pixel_add_ps_4x4_neon);
++ p.cu[BLOCK_8x8].add_ps[ALIGNED] = PFX(pixel_add_ps_8x8_neon);
++ p.cu[BLOCK_16x16].add_ps[ALIGNED] = PFX(pixel_add_ps_16x16_neon);
++ p.cu[BLOCK_32x32].add_ps[ALIGNED] = PFX(pixel_add_ps_32x32_neon);
++ p.cu[BLOCK_64x64].add_ps[ALIGNED] = PFX(pixel_add_ps_64x64_neon);
+
+ // chroma add_ps
+- p.chroma[X265_CSP_I420].cu[BLOCK_420_4x4].add_ps = PFX(pixel_add_ps_4x4_neon);
+- p.chroma[X265_CSP_I420].cu[BLOCK_420_8x8].add_ps = PFX(pixel_add_ps_8x8_neon);
+- p.chroma[X265_CSP_I420].cu[BLOCK_420_16x16].add_ps = PFX(pixel_add_ps_16x16_neon);
+- p.chroma[X265_CSP_I420].cu[BLOCK_420_32x32].add_ps = PFX(pixel_add_ps_32x32_neon);
+- p.chroma[X265_CSP_I422].cu[BLOCK_422_4x8].add_ps = PFX(pixel_add_ps_4x8_neon);
+- p.chroma[X265_CSP_I422].cu[BLOCK_422_8x16].add_ps = PFX(pixel_add_ps_8x16_neon);
+- p.chroma[X265_CSP_I422].cu[BLOCK_422_16x32].add_ps = PFX(pixel_add_ps_16x32_neon);
+- p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].add_ps = PFX(pixel_add_ps_32x64_neon);
++ p.chroma[X265_CSP_I420].cu[BLOCK_420_4x4].add_ps[ALIGNED] = PFX(pixel_add_ps_4x4_neon);
++ p.chroma[X265_CSP_I420].cu[BLOCK_420_8x8].add_ps[ALIGNED] = PFX(pixel_add_ps_8x8_neon);
++ p.chroma[X265_CSP_I420].cu[BLOCK_420_16x16].add_ps[ALIGNED] = PFX(pixel_add_ps_16x16_neon);
++ p.chroma[X265_CSP_I420].cu[BLOCK_420_32x32].add_ps[ALIGNED] = PFX(pixel_add_ps_32x32_neon);
++ p.chroma[X265_CSP_I422].cu[BLOCK_422_4x8].add_ps[ALIGNED] = PFX(pixel_add_ps_4x8_neon);
++ p.chroma[X265_CSP_I422].cu[BLOCK_422_8x16].add_ps[ALIGNED] = PFX(pixel_add_ps_8x16_neon);
++ p.chroma[X265_CSP_I422].cu[BLOCK_422_16x32].add_ps[ALIGNED] = PFX(pixel_add_ps_16x32_neon);
++ p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].add_ps[ALIGNED] = PFX(pixel_add_ps_32x64_neon);
+
+ // cpy2Dto1D_shr
+ p.cu[BLOCK_4x4].cpy2Dto1D_shr = PFX(cpy2Dto1D_shr_4x4_neon);
+@@ -518,10 +518,10 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.cu[BLOCK_32x32].cpy2Dto1D_shr = PFX(cpy2Dto1D_shr_32x32_neon);
+
+ // ssd_s
+- p.cu[BLOCK_4x4].ssd_s = PFX(pixel_ssd_s_4x4_neon);
+- p.cu[BLOCK_8x8].ssd_s = PFX(pixel_ssd_s_8x8_neon);
+- p.cu[BLOCK_16x16].ssd_s = PFX(pixel_ssd_s_16x16_neon);
+- p.cu[BLOCK_32x32].ssd_s = PFX(pixel_ssd_s_32x32_neon);
++ p.cu[BLOCK_4x4].ssd_s[ALIGNED] = PFX(pixel_ssd_s_4x4_neon);
++ p.cu[BLOCK_8x8].ssd_s[ALIGNED] = PFX(pixel_ssd_s_8x8_neon);
++ p.cu[BLOCK_16x16].ssd_s[ALIGNED] = PFX(pixel_ssd_s_16x16_neon);
++ p.cu[BLOCK_32x32].ssd_s[ALIGNED] = PFX(pixel_ssd_s_32x32_neon);
+
+ // sse_ss
+ p.cu[BLOCK_4x4].sse_ss = PFX(pixel_sse_ss_4x4_neon);
+@@ -548,10 +548,10 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].sub_ps = PFX(pixel_sub_ps_32x64_neon);
+
+ // calc_Residual
+- p.cu[BLOCK_4x4].calcresidual = PFX(getResidual4_neon);
+- p.cu[BLOCK_8x8].calcresidual = PFX(getResidual8_neon);
+- p.cu[BLOCK_16x16].calcresidual = PFX(getResidual16_neon);
+- p.cu[BLOCK_32x32].calcresidual = PFX(getResidual32_neon);
++ p.cu[BLOCK_4x4].calcresidual[ALIGNED] = PFX(getResidual4_neon);
++ p.cu[BLOCK_8x8].calcresidual[ALIGNED] = PFX(getResidual8_neon);
++ p.cu[BLOCK_16x16].calcresidual[ALIGNED] = PFX(getResidual16_neon);
++ p.cu[BLOCK_32x32].calcresidual[ALIGNED] = PFX(getResidual32_neon);
+
+ // sse_pp
+ p.cu[BLOCK_4x4].sse_pp = PFX(pixel_sse_pp_4x4_neon);
+@@ -722,31 +722,31 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.pu[LUMA_64x64].sad_x4 = PFX(sad_x4_64x64_neon);
+
+ // pixel_avg_pp
+- p.pu[LUMA_4x4].pixelavg_pp = PFX(pixel_avg_pp_4x4_neon);
+- p.pu[LUMA_4x8].pixelavg_pp = PFX(pixel_avg_pp_4x8_neon);
+- p.pu[LUMA_4x16].pixelavg_pp = PFX(pixel_avg_pp_4x16_neon);
+- p.pu[LUMA_8x4].pixelavg_pp = PFX(pixel_avg_pp_8x4_neon);
+- p.pu[LUMA_8x8].pixelavg_pp = PFX(pixel_avg_pp_8x8_neon);
+- p.pu[LUMA_8x16].pixelavg_pp = PFX(pixel_avg_pp_8x16_neon);
+- p.pu[LUMA_8x32].pixelavg_pp = PFX(pixel_avg_pp_8x32_neon);
+- p.pu[LUMA_12x16].pixelavg_pp = PFX(pixel_avg_pp_12x16_neon);
+- p.pu[LUMA_16x4].pixelavg_pp = PFX(pixel_avg_pp_16x4_neon);
+- p.pu[LUMA_16x8].pixelavg_pp = PFX(pixel_avg_pp_16x8_neon);
+- p.pu[LUMA_16x12].pixelavg_pp = PFX(pixel_avg_pp_16x12_neon);
+- p.pu[LUMA_16x16].pixelavg_pp = PFX(pixel_avg_pp_16x16_neon);
+- p.pu[LUMA_16x32].pixelavg_pp = PFX(pixel_avg_pp_16x32_neon);
+- p.pu[LUMA_16x64].pixelavg_pp = PFX(pixel_avg_pp_16x64_neon);
+- p.pu[LUMA_24x32].pixelavg_pp = PFX(pixel_avg_pp_24x32_neon);
+- p.pu[LUMA_32x8].pixelavg_pp = PFX(pixel_avg_pp_32x8_neon);
+- p.pu[LUMA_32x16].pixelavg_pp = PFX(pixel_avg_pp_32x16_neon);
+- p.pu[LUMA_32x24].pixelavg_pp = PFX(pixel_avg_pp_32x24_neon);
+- p.pu[LUMA_32x32].pixelavg_pp = PFX(pixel_avg_pp_32x32_neon);
+- p.pu[LUMA_32x64].pixelavg_pp = PFX(pixel_avg_pp_32x64_neon);
+- p.pu[LUMA_48x64].pixelavg_pp = PFX(pixel_avg_pp_48x64_neon);
+- p.pu[LUMA_64x16].pixelavg_pp = PFX(pixel_avg_pp_64x16_neon);
+- p.pu[LUMA_64x32].pixelavg_pp = PFX(pixel_avg_pp_64x32_neon);
+- p.pu[LUMA_64x48].pixelavg_pp = PFX(pixel_avg_pp_64x48_neon);
+- p.pu[LUMA_64x64].pixelavg_pp = PFX(pixel_avg_pp_64x64_neon);
++ p.pu[LUMA_4x4].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_4x4_neon);
++ p.pu[LUMA_4x8].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_4x8_neon);
++ p.pu[LUMA_4x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_4x16_neon);
++ p.pu[LUMA_8x4].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_8x4_neon);
++ p.pu[LUMA_8x8].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_8x8_neon);
++ p.pu[LUMA_8x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_8x16_neon);
++ p.pu[LUMA_8x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_8x32_neon);
++ p.pu[LUMA_12x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_12x16_neon);
++ p.pu[LUMA_16x4].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x4_neon);
++ p.pu[LUMA_16x8].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x8_neon);
++ p.pu[LUMA_16x12].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x12_neon);
++ p.pu[LUMA_16x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x16_neon);
++ p.pu[LUMA_16x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x32_neon);
++ p.pu[LUMA_16x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x64_neon);
++ p.pu[LUMA_24x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_24x32_neon);
++ p.pu[LUMA_32x8].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x8_neon);
++ p.pu[LUMA_32x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x16_neon);
++ p.pu[LUMA_32x24].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x24_neon);
++ p.pu[LUMA_32x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x32_neon);
++ p.pu[LUMA_32x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x64_neon);
++ p.pu[LUMA_48x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_48x64_neon);
++ p.pu[LUMA_64x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x16_neon);
++ p.pu[LUMA_64x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x32_neon);
++ p.pu[LUMA_64x48].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x48_neon);
++ p.pu[LUMA_64x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x64_neon);
+
+ // planecopy
+ p.planecopy_cp = PFX(pixel_planecopy_cp_neon);
diff --git a/x265-4504219210793536d921ee4e0b3058698c630bf4.diff b/x265-4504219210793536d921ee4e0b3058698c630bf4.diff
new file mode 100644
index 0000000..30fe38e
--- /dev/null
+++ b/x265-4504219210793536d921ee4e0b3058698c630bf4.diff
@@ -0,0 +1,19 @@
+# HG changeset patch
+# User Jayashree <jayashree.c(a)multicorewareinc.com>
+# Date 1527224165 -19800
+# Node ID 4504219210793536d921ee4e0b3058698c630bf4
+# Parent cc2c5e46f3c87d27e3602af30b06ba6a0fbe2704
+Fix build error on on ppc64le
+
+diff --git a/source/common/param.cpp b/source/common/param.cpp
+--- a/source/common/param.cpp
++++ b/source/common/param.cpp
+@@ -633,7 +633,7 @@
+ if (bValueWasNull)
+ p->cpuid = atobool(value);
+ else
+- p->cpuid = parseCpuName(value, bError);
++ p->cpuid = parseCpuName(value, bError, false);
+ #endif
+ }
+ OPT("fps")
diff --git a/x265-detect_cpu_armhfp.patch b/x265-detect_cpu_armhfp.patch
index 3dfc10d..c9a92b8 100644
--- a/x265-detect_cpu_armhfp.patch
+++ b/x265-detect_cpu_armhfp.patch
@@ -50,7 +50,7 @@ diff -up x265_2.2/source/CMakeLists.txt.orig x265_2.2/source/CMakeLists.txt
#include <x86intrin.h>
-#elif ( !defined(__APPLE__) && defined (__GNUC__) && defined(__ARM_NEON__))
-#include <arm_neon.h>
- #elif defined(__GNUC__)
+ #elif defined(__GNUC__) && (!defined(__clang__) || __clang_major__ < 4)
+#if ( !defined(__APPLE__) && defined(__ARM_NEON__))
+#include <arm_neon.h>
+#endif
diff --git a/x265.spec b/x265.spec
index 5cbc16c..be9618a 100644
--- a/x265.spec
+++ b/x265.spec
@@ -1,9 +1,9 @@
-%global _so_version 151
+%global _so_version 160
Summary: H.265/HEVC encoder
Name: x265
-Version: 2.7
-Release: 5%{?dist}
+Version: 2.8
+Release: 1%{?dist}
URL: http://x265.org/
# source/Lib/TLibCommon - BSD
# source/Lib/TLibEncoder - BSD
@@ -18,7 +18,10 @@ Patch1: x265-high-bit-depth-soname.patch
Patch2: x265-detect_cpu_armhfp.patch
Patch3: x265-arm-cflags.patch
Patch4: x265-pkgconfig_path_fix.patch
+Patch5: x265-4504219210793536d921ee4e0b3058698c630bf4.diff
+Patch6: x265-2.8-asm-primitives.patch
+BuildRequires: gcc-c++
BuildRequires: cmake3
BuildRequires: nasm
BuildRequires: ninja-build
@@ -137,6 +140,11 @@ done
%{_libdir}/pkgconfig/x265.pc
%changelog
+* Thu Oct 04 2018 Sérgio Basto <sergio(a)serjux.com> - 2.8-1
+- Update to 2.8 more 2 patches to fix builds on non-x86 and arm
+ https://bitbucket.org/multicoreware/x265/issues/404/28-fails-to-build-on-...
+ https://bitbucket.org/multicoreware/x265/issues/406/arm-assembly-fail-to-...
+
* Sun Aug 19 2018 Leigh Scott <leigh123linux(a)googlemail.com> - 2.7-5
- Rebuilt for Fedora 29 Mass Rebuild binutils issue
6 years, 1 month