tbb-commits
Threads by month
- ----- 2025 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 1 participants
- 18729 discussions

[tor-browser-build/master] Bug 26773: Add --verbose to the ./mach build flag for firefox for better debugging via log files.
by boklm@torproject.org 12 Jul '18
by boklm@torproject.org 12 Jul '18
12 Jul '18
commit dad9578655af92b3405d4f09891847da4c208f92
Author: Tom Ritter <tom(a)ritter.vg>
Date: Thu Jul 12 13:44:31 2018 -0500
Bug 26773: Add --verbose to the ./mach build flag for firefox for better debugging via log files.
Does not affect the console output, will use more disk space in log files.
---
projects/firefox/build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index 1921f53..da1e71b 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -142,7 +142,7 @@ rm -f configure
rm -f js/src/configure
./mach configure --with-tor-browser-version=[% c("var/torbrowser_version") %] --with-distribution-id=org.torproject --enable-update-channel=[% c("var/torbrowser_update_channel") %] --enable-bundled-fonts
-./mach build
+./mach build --verbose
./mach build stage-package
[% IF c("var/osx") %]
1
0

[tor-browser-build/master] Bug 26773: Add another build error FAQ
by boklm@torproject.org 12 Jul '18
by boklm@torproject.org 12 Jul '18
12 Jul '18
commit 2b2e744357cef8ce1e847bafc1f9a73f4337aed4
Author: Tom Ritter <tom(a)ritter.vg>
Date: Thu Jul 12 13:49:32 2018 -0500
Bug 26773: Add another build error FAQ
---
README.BUILD_ERRORS | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/README.BUILD_ERRORS b/README.BUILD_ERRORS
index 68333d5..03f2450 100644
--- a/README.BUILD_ERRORS
+++ b/README.BUILD_ERRORS
@@ -29,6 +29,20 @@ $ qvm-pref --set [vmname] kernelopts 'nopat vsyscall=emulate'
----
+
+If you have an error like this:
+
+----
+Error: Error starting remote:
+could not synchronise with container process: no subsystem for mount
+----
+
+You may be experiencing a similar but different problem. Anecdotally
+this occured on Ubuntu 18.04 Bionic, kernel 4.15.0-24-generic. You need
+to add systemd.legacy_systemd_cgroup_controller=1 to the kernel
+boot commandline in /etc/default/grub (followed by `sudo update-grub`).
+
+
Error during debootstrap image creation
---------------------------------------
1
0

[tor-browser-build/master] Merge remote-tracking branch 'azadi/bug-26251-rev1'
by boklm@torproject.org 11 Jul '18
by boklm@torproject.org 11 Jul '18
11 Jul '18
commit 82a0bd2d85fe53b61460a3e3b833f10a0bb01519
Merge: 6d63b2e 6d3f0f5
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Wed Jul 11 12:58:51 2018 +0200
Merge remote-tracking branch 'azadi/bug-26251-rev1'
projects/webrtc/build | 10 ++++-----
projects/webrtc/webrtc-mac.patch | 45 ++--------------------------------------
rbm.conf | 2 +-
3 files changed, 8 insertions(+), 49 deletions(-)
1
0

[tor-browser-build/master] Bug 26251: Adapt macOS snowflake compilation to new toolchain
by boklm@torproject.org 11 Jul '18
by boklm@torproject.org 11 Jul '18
11 Jul '18
commit 6d3f0f5dfbec918368f3114ff96fdeb308c9d7a9
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Wed Jun 20 07:32:27 2018 -0400
Bug 26251: Adapt macOS snowflake compilation to new toolchain
This commit adds support for building Snowflake (and its associated
components, webrtc and go-webrtc) with our updated toolchain that uses
clang 3.9.1 and macOS SDK 10.11
For clang, we add the '-Wno-unknown-warning-option' flag; see
https://bugs.llvm.org/show_bug.cgi?id=24979 for more information.
---
projects/webrtc/build | 10 ++++-----
projects/webrtc/webrtc-mac.patch | 45 ++--------------------------------------
rbm.conf | 2 +-
3 files changed, 8 insertions(+), 49 deletions(-)
diff --git a/projects/webrtc/build b/projects/webrtc/build
index 43b8261..32a66b7 100644
--- a/projects/webrtc/build
+++ b/projects/webrtc/build
@@ -13,8 +13,8 @@ mkdir -p /var/tmp/dist
[% END -%]
[% IF c("var/osx") -%]
# src/build/toolchain/mac/filter_libtool.py wants libtool to be called exactly "libtool".
- ln -sf x86_64-apple-darwin10-libtool $cctoolsdir/libtool
- export AR=x86_64-apple-darwin10-ar
+ ln -sf x86_64-apple-darwin11-libtool $cctoolsdir/libtool
+ export AR=x86_64-apple-darwin11-ar
# Certain cross-compiling flags are set in webrtc-mac.patch because the build
# system doesn't honor CFLAGS etc. environment variables.
[% ELSE -%]
@@ -63,14 +63,14 @@ cd $builddir
# needs to be kept in sync with the SDK version.
cat <<EOF > build/mac/find_sdk.py
print("$sysrootdir")
-print("10.7")
+print("10.11")
EOF
cat <<EOF > build/config/mac/sdk_info.py
print("machine_os_build=\"10.7\"")
-print("sdk_build=\"10.7\"")
+print("sdk_build=\"10.11\"")
print("sdk_path=\"$sysrootdir\"")
print("sdk_platform_path=\"$sysrootdir\"")
-print("sdk_version=\"10.7\"")
+print("sdk_version=\"10.11\"")
print("xcode_build=\"7.3\"")
print("xcode_version=\"0730\"")
EOF
diff --git a/projects/webrtc/webrtc-mac.patch b/projects/webrtc/webrtc-mac.patch
index 5c9cedd..6b888bb 100644
--- a/projects/webrtc/webrtc-mac.patch
+++ b/projects/webrtc/webrtc-mac.patch
@@ -60,8 +60,8 @@ index 84180e6a..2054b46f 100644
sysroot,
"-mmacosx-version-min=$mac_deployment_target",
+ "-target",
-+ "x86_64-apple-darwin10",
-+ "-mlinker-version=136",
++ "x86_64-apple-darwin11",
++ "-Wno-unknown-warning-option",
+ "-B",
+ "/var/tmp/dist/macosx-toolchain/cctools/bin",
]
@@ -136,47 +136,6 @@ index 0928fa13..898edc1a 100644
--
2.11.0
-From d9577991412310d3313d9dcd86453ce24f845c2e Mon Sep 17 00:00:00 2001
-From: David Fifield <david(a)bamsoftware.com>
-Date: Mon, 26 Jun 2017 11:37:34 -0700
-Subject: [PATCH 4/8] Hack workaround to disable dispatch_queue_get_label.
-
-dispatch_queue_get_label and DISPATCH_CURRENT_QUEUE_LABEL require SDK
-10.9+. I don't know if removing this code even makes sense, but it at
-least won't crash immediately because of a null pointer.
-
-https://developer.apple.com/documentation/dispatch/dispatch_current_queue_label
-https://developer.apple.com/library/content/releasenotes/General/APIDiffsMacOSX10_9/General.html
-
-FAILED: obj/webrtc/base/rtc_task_queue/sequenced_task_checker_impl.o ../../../../clang/bin/clang++ -MMD -MF obj/webrtc/base/rtc_task_queue/sequenced_task_checker_impl.o.d -DV8_DEPRECATION_WARNINGS -DNO_TCMALLOC -DUSE_EXTERNAL_POPUP_MENU=1 -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DENABLE_MEDIA_ROUTER=1 -DFIELDTRIAL_TESTING_ENABLED -DCR_XCODE_VERSION=0730 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORE=0 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DEXPAT_RELATIVE_PATH -DHAVE_SCTP -DWEBRTC_POSIX -DWEBRTC_MAC -I../.. -Igen -fno-strict-aliasing -fstack-protector -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -arch x86_64 -Wall -Wpartial-availability -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-unused-parameter -O2 -gdwarf-2 -isysroot /home/debian/build/MacOSX10.7.sdk -mmacosx-version-min=10.9 -targ
et x86_64-apple-darwin10 -mlinker-version=136 -B /home/debian/build/cctools/bin -fvisibility=hidden -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wno-strict-overflow -fvisibility-inlines-hidden -std=c++11 -stdlib=libc++ -Wno-narrowing -fno-rtti -fno-exceptions -Wnon-virtual-dtor -Woverloaded-virtual -c ../../webrtc/base/sequenced_task_checker_impl.cc -o obj/webrtc/base/rtc_task_queue/sequenced_task_checker_impl.o
-warning: unknown warning option '-Wno-maybe-uninitialized'; did you mean '-Wno-uninitialized'? [-Wunknown-warning-option]
-../../webrtc/base/sequenced_task_checker_impl.cc:34:46: error: use of undeclared identifier 'DISPATCH_CURRENT_QUEUE_LABEL'
- current_queue = dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL);
- ^
----
- webrtc/base/sequenced_task_checker_impl.cc | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/webrtc/base/sequenced_task_checker_impl.cc b/webrtc/base/sequenced_task_checker_impl.cc
-index f03e0b679..352b2162d 100644
---- a/webrtc/base/sequenced_task_checker_impl.cc
-+++ b/webrtc/base/sequenced_task_checker_impl.cc
-@@ -30,8 +30,9 @@ bool SequencedTaskCheckerImpl::CalledSequentially() const {
- #if defined(WEBRTC_MAC)
- // If we're not running on a TaskQueue, use the system dispatch queue
- // label as an identifier.
-- if (current_queue == nullptr)
-- current_queue = dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL);
-+ // Disable this because dispatch_queue_get_label requires SDK 10.9+.
-+ // if (current_queue == nullptr)
-+ // current_queue = dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL);
- #endif
- CritScope scoped_lock(&lock_);
- if (!attached_) { // true if previously detached.
---
-2.11.0
-
-
From 62a6fa6376194ce673c220eef19fefeebe58fee1 Mon Sep 17 00:00:00 2001
From: David Fifield <david(a)bamsoftware.com>
Date: Mon, 26 Jun 2017 11:41:16 -0700
diff --git a/rbm.conf b/rbm.conf
index de5102d..bea9d3e 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -245,7 +245,7 @@ targets:
LDFLAGS: "-Wl,-syslibroot,$sysrootdir -Wl,-dead_strip -Wl,-pie"
locale_ja: ja-JP-mac
# We only build snowflake for linux on the alpha and nightly channels for now.
- snowflake: 0 #'[% c("var/alpha") || c("var/nightly") %]'
+ snowflake: '[% c("var/alpha") || c("var/nightly") %]'
deps:
- build-essential
- python
1
0
commit 6d63b2ee1e3bfd0479ddc9abef9ae94eb097a668
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jul 6 12:37:02 2018 +0000
Fold in stable changelog
---
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 516e81f..b8d30f1 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -86,6 +86,23 @@ Tor Browser 8.0a9 -- June 27 2018
* Bug 25540: Stop building and distributing sandboxed tor browser
* Bug 25481: Rust support for tor-browser and tor
+Tor Browser 7.5.6 -- June 26 2018
+ * All platforms
+ * Update Firefox to 52.9.0esr
+ * Update Tor to 0.3.3.7
+ * Update Tor Launcher to 0.2.14.5
+ * Bug 20890: Increase control port connection timeout
+ * Update HTTPS Everywhere to 2018.6.21
+ * Bug 26451: Prevent HTTPS Everywhere from freezing the browser
+ * Update NoScript to 5.1.8.6
+ * Bug 21537: Mark .onion cookies as secure
+ * Bug 25938: Backport fix for cross-origin header leak (bug 1334776)
+ * Bug 25721: Backport patches from Mozilla's bug 1448771
+ * Bug 25147+25458: Sanitize HTML fragments for chrome documents
+ * Bug 26221: Backport fix for leak in SHA256 in nsHttpConnectionInfo.cpp
+ * Windows
+ * Bug 26424: Disable UNC paths to prevent possible proxy bypasses
+
Tor Browser 8.0a8 -- June 10 2018
* All platforms
* Update Firefox to 52.8.1esr
1
0

[tor-browser/tor-browser-60.1.0esr-8.0-1] Bug 859782 - Firefox cannot start without /proc (chroot). r=sfink, evilpie, jld
by gk@torproject.org 04 Jul '18
by gk@torproject.org 04 Jul '18
04 Jul '18
commit dbca4ee64600d9ab17e7c9abdc7dac76562def01
Author: Richard Pospesel <richard(a)torproject.org>
Date: Tue Jun 19 08:00:58 2018 -0600
Bug 859782 - Firefox cannot start without /proc (chroot). r=sfink,evilpie,jld
Firefox uses the current stack frame address and the stack size
as a sort of heuristic for various things in the javascript
engine. The js::GetNativeStackBaseImpl() function is used to
get the base stack address (ie the address from which the stack
grows, so this can be either the first or last memory address of
the stack memory space depending on the CPU architecture).
On Linux, this function is implemented using the pthreads APIs.
For non-main threads, the queried thread info is stored in
memory. The main thread does not have this information on hand,
so it gets the stack memory range via the /proc/self/maps file
( see glibc's pthread_get_attr_np.c ).
Fortunately (per discussions with the firefox devs in #jsapi)
the base address only needs to be approximation. In reality,
environment variables, args, and other things are stored in space
between the end/beginning of the mapped stack memory and the 'top'
of the stack space used by stack frames.
We can get the top of this usable stack from __libc_stack_end,
which is a void* set by glibc during program initialization.
Non-main threads still get their stack-base through the usual
pthreads APIs.
This fixes bug 20283 on our side.
---
js/src/util/NativeStack.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 60 insertions(+), 4 deletions(-)
diff --git a/js/src/util/NativeStack.cpp b/js/src/util/NativeStack.cpp
index 2507374a36da..300b5259b5e5 100644
--- a/js/src/util/NativeStack.cpp
+++ b/js/src/util/NativeStack.cpp
@@ -13,10 +13,24 @@
# if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
# include <pthread_np.h>
# endif
+# if defined(SOLARIS) || defined(AIX)
+# include <ucontext.h>
+# endif
# if defined(ANDROID) && !defined(__aarch64__)
# include <sys/types.h>
# include <unistd.h>
# endif
+# if defined(XP_LINUX) && !defined(ANDROID) && defined(__GLIBC__)
+# include <dlfcn.h>
+# include <sys/syscall.h>
+# include <sys/types.h>
+# include <unistd.h>
+static pid_t
+gettid()
+{
+ return syscall(__NR_gettid);
+}
+# endif
#else
# error "Unsupported platform"
#endif
@@ -34,8 +48,6 @@ js::GetNativeStackBaseImpl()
#elif defined(SOLARIS)
-#include <ucontext.h>
-
JS_STATIC_ASSERT(JS_STACK_GROWTH_DIRECTION < 0);
void*
@@ -48,8 +60,6 @@ js::GetNativeStackBaseImpl()
#elif defined(AIX)
-#include <ucontext.h>
-
JS_STATIC_ASSERT(JS_STACK_GROWTH_DIRECTION < 0);
void*
@@ -61,6 +71,52 @@ js::GetNativeStackBaseImpl()
context.uc_stack.ss_size;
}
+#elif defined(XP_LINUX) && !defined(ANDROID) && defined(__GLIBC__)
+void*
+js::GetNativeStackBaseImpl()
+{
+
+ // On the main thread, get stack base from glibc's __libc_stack_end rather than pthread APIs
+ // to avoid filesystem calls /proc/self/maps. Non-main threads spawned with pthreads can read
+ // this information directly from their pthread struct, but the main thread must go parse
+ // /proc/self/maps to figure the mapped stack address space ranges. We want to avoid reading
+ // from /proc/ so that firefox can run in sandboxed environments where /proc may not be mounted
+ if (gettid() == getpid()) {
+ void** pLibcStackEnd = (void**)dlsym(RTLD_DEFAULT, "__libc_stack_end");
+
+ // If __libc_stack_end is not found, architecture specific frame pointer hopping will need
+ // to be implemented.
+ MOZ_RELEASE_ASSERT(pLibcStackEnd, "__libc_stack_end unavailable, unable to setup stack range for JS");
+ void* stackBase = *pLibcStackEnd;
+ MOZ_RELEASE_ASSERT(stackBase, "invalid stack base, unable to setup stack range for JS");
+
+ // We don't need to fix stackBase, as it already roughly points to beginning of the stack
+ return stackBase;
+ }
+
+ // Non-main threads have the required info stored in memory, so no filesystem calls are made.
+ pthread_t thread = pthread_self();
+ pthread_attr_t sattr;
+ pthread_attr_init(&sattr);
+ pthread_getattr_np(thread, &sattr);
+
+ // stackBase will be the *lowest* address on all architectures.
+ void* stackBase = nullptr;
+ size_t stackSize = 0;
+ int rc = pthread_attr_getstack(&sattr, &stackBase, &stackSize);
+ if (rc) {
+ MOZ_CRASH("call to pthread_attr_getstack failed, unable to setup stack range for JS");
+ }
+ MOZ_RELEASE_ASSERT(stackBase, "invalid stack base, unable to setup stack range for JS");
+ pthread_attr_destroy(&sattr);
+
+# if JS_STACK_GROWTH_DIRECTION > 0
+ return stackBase;
+# else
+ return static_cast<char*>(stackBase) + stackSize;
+# endif
+}
+
#else /* XP_UNIX */
void*
1
0

[tor-browser/tor-browser-60.1.0esr-8.0-1] Revert "Bug 20283: Tor Browser should run without a `/proc` filesystem."
by gk@torproject.org 04 Jul '18
by gk@torproject.org 04 Jul '18
04 Jul '18
commit 2edb3478a22331e0fc882e25874b9403ee2575ee
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Jul 4 16:51:23 2018 +0000
Revert "Bug 20283: Tor Browser should run without a `/proc` filesystem."
This reverts commit 5bd6e492edc3fc4df748d1228360c80fee38e276.
---
js/src/util/NativeStack.cpp | 60 +++------------------------------------------
1 file changed, 4 insertions(+), 56 deletions(-)
diff --git a/js/src/util/NativeStack.cpp b/js/src/util/NativeStack.cpp
index a695cb3bcd6c..2507374a36da 100644
--- a/js/src/util/NativeStack.cpp
+++ b/js/src/util/NativeStack.cpp
@@ -13,24 +13,10 @@
# if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
# include <pthread_np.h>
# endif
-# if defined(SOLARIS) || defined(AIX)
-# include <ucontext.h>
-# endif
# if defined(ANDROID) && !defined(__aarch64__)
# include <sys/types.h>
# include <unistd.h>
# endif
-# if defined(XP_LINUX) && !defined(ANDROID) && defined(__GLIBC__)
-# include <dlfcn.h>
-# include <sys/syscall.h>
-# include <sys/types.h>
-# include <unistd.h>
-static pid_t
-gettid()
-{
- return syscall(__NR_gettid);
-}
-# endif
#else
# error "Unsupported platform"
#endif
@@ -48,6 +34,8 @@ js::GetNativeStackBaseImpl()
#elif defined(SOLARIS)
+#include <ucontext.h>
+
JS_STATIC_ASSERT(JS_STACK_GROWTH_DIRECTION < 0);
void*
@@ -60,6 +48,8 @@ js::GetNativeStackBaseImpl()
#elif defined(AIX)
+#include <ucontext.h>
+
JS_STATIC_ASSERT(JS_STACK_GROWTH_DIRECTION < 0);
void*
@@ -71,48 +61,6 @@ js::GetNativeStackBaseImpl()
context.uc_stack.ss_size;
}
-#elif defined(XP_LINUX) && !defined(ANDROID) && defined(__GLIBC__)
-void*
-js::GetNativeStackBaseImpl()
-{
- // On the main thread, get stack base from glibc's __libc_stack_end rather than pthread APIs
- // to avoid filesystem calls /proc/self/maps. Non-main threads spawned with pthreads can read
- // this information directly from their pthread struct, but the main thread must go parse
- // /proc/self/maps to figure the mapped stack address space ranges. We want to avoid reading
- // from /proc/ so that firefox can run in sandboxed environments where /proc may not be mounted
- if (gettid() == getpid()) {
- void** pLibcStackEnd = (void**)dlsym(RTLD_DEFAULT, "__libc_stack_end");
- // If __libc_stack_end is not found, architecture specific frame pointer hopping will need
- // to be implemented.
- MOZ_RELEASE_ASSERT(pLibcStackEnd, "__libc_stack_end unavailable, unable to setup stack range for JS");
- void* stackBase = *pLibcStackEnd;
- MOZ_RELEASE_ASSERT(stackBase, "invalid stack base, unable to setup stack range for JS");
- // We don't need to fix stackBase, as it already roughly points to beginning of the stack
- return stackBase;
- } else {
- // Non-main threads have the required info stored in memory, so no filesystem calls are made.
- pthread_t thread = pthread_self();
- pthread_attr_t sattr;
- pthread_attr_init(&sattr);
- pthread_getattr_np(thread, &sattr);
- // stackBase will be the *lowest* address on all architectures.
- void* stackBase = nullptr;
- size_t stackSize = 0;
- int rc = pthread_attr_getstack(&sattr, &stackBase, &stackSize);
- if (rc) {
- MOZ_CRASH("call to pthread_attr_getstack failed, unable to setup stack range for JS");
- }
- MOZ_RELEASE_ASSERT(stackBase, "invalid stack base, unable to setup stack range for JS");
- pthread_attr_destroy(&sattr);
-
-# if JS_STACK_GROWTH_DIRECTION > 0
- return stackBase;
-# else
- return static_cast<char*>(stackBase) + stackSize;
-# endif
- }
-}
-
#else /* XP_UNIX */
void*
1
0

[fpcentral/master] Bug 26623: recognize esr60 versions of Tor Browser
by gk@torproject.org 04 Jul '18
by gk@torproject.org 04 Jul '18
04 Jul '18
commit a88dbe42b1478ba4a2142c3c8ae08d80511a7f73
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Tue Jul 3 19:44:23 2018 +0200
Bug 26623: recognize esr60 versions of Tor Browser
---
fingerprint/acceptable/torbrowser80.json | 64 ++++++++++++++++++++++++++++++++
fingerprint/tags/browser.py | 9 ++++-
2 files changed, 72 insertions(+), 1 deletion(-)
diff --git a/fingerprint/acceptable/torbrowser80.json b/fingerprint/acceptable/torbrowser80.json
new file mode 100644
index 0000000..4c6522e
--- /dev/null
+++ b/fingerprint/acceptable/torbrowser80.json
@@ -0,0 +1,64 @@
+{
+ "mainTag": "Tor Browser 8.0",
+ "math": {
+ "asinh(1)": 0.8813735870195429,
+ "acosh(1e300)": "Infinity",
+ "atanh(05)": 0.5493061443340548,
+ "expm1(1)": 1.7182818284590455,
+ "cbrt(100)": 4.641588833612778,
+ "log1p(10)": 2.3978952727983707,
+ "sinh(1)": 1.1752011936438016,
+ "cosh(10)": 11013.232920103324,
+ "tanh(1)": 0.7615941559557649
+ },
+ "plugins": "",
+ "dnt": "NC",
+ "buildID": "20100101",
+ "screen": {
+ "width": [1000,800,600,400,200],
+ "height": [1000,900,800,700,600,500,400,300,200],
+ "depth": 24,
+ "availTop": 0,
+ "availLeft": 0,
+ "availHeight": [1000,900,800,700,600,500,400,300,200],
+ "availWidth": [1000,800,600,400,200],
+ "left": 0,
+ "top": 0
+ },
+ "storage": {
+ "local": "yes",
+ "session": "yes"
+ },
+ "timezone": 0,
+ "cookies": "yes",
+ "platform": "Win32",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Accept-Language": "en-US,en;q=0.5",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
+ "Content-Type": "",
+ "Content-Length": "",
+ "audio": {
+ "nt_vc_output": {
+ "ac-sampleRate": 0,
+ "ac-state": 0,
+ "ac-maxChannelCount": 0,
+ "ac-numberOfInputs": 0,
+ "ac-numberOfOutputs": 0,
+ "ac-channelCount": 0,
+ "ac-channelCountMode": 0,
+ "ac-channelInterpretation": 0,
+ "an-fftSize": 0,
+ "an-frequencyBinCount": 0,
+ "an-minDecibels": 0,
+ "an-maxDecibels": 0,
+ "an-smoothingTimeConstant": 0,
+ "an-numberOfInputs": 0,
+ "an-numberOfOutputs": 0,
+ "an-channelCount": 0,
+ "an-channelCountMode": 0,
+ "an-channelInterpretation": 0
+ },
+ "pxi_output": 0,
+ "pxi_full_buffer_hash": "158e8189a3551fe4f2e564ac377b0f1e588a1ab3"
+ }
+}
diff --git a/fingerprint/tags/browser.py b/fingerprint/tags/browser.py
index 405b8c8..daae5c1 100644
--- a/fingerprint/tags/browser.py
+++ b/fingerprint/tags/browser.py
@@ -5,6 +5,7 @@ tor4 = "Tor 4.X"
tor5 = "Tor 5.X"
tor6 = "Tor 6.X"
torbrowser70 = "Tor Browser 7.0"
+torbrowser80 = "Tor Browser 8.0"
chrome = "Chrome"
firefox = "Firefox" #NB: A Tor browser cannot have the Firefox tag
edge = "Edge"
@@ -20,7 +21,13 @@ class Browser(Tag):
def checkTags(self, fp):
ua = fp["User-Agent"]
#We check first for UA from Tor browsers
- if ua == "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0":
+ if ua == "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0":
+ return [torbrowser80]
+ elif ua == "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Firefox/60.0":
+ return [torbrowser80]
+ elif ua == "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0":
+ return [torbrowser80]
+ elif ua == "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0":
return [torbrowser70]
elif ua == "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0":
return [tor6]
1
0

[tor-browser-build/master] Bug 26039: FIXUP <profiledir>/preferences/extension-overrides.js will not be loaded in ESR 60
by gk@torproject.org 29 Jun '18
by gk@torproject.org 29 Jun '18
29 Jun '18
commit 8cfb90c7f21a220378adaaa8f5f54ce0e9cccb39
Author: Richard Pospesel <richard(a)torproject.org>
Date: Tue Jun 26 11:06:57 2018 -0700
Bug 26039: FIXUP <profiledir>/preferences/extension-overrides.js will not be loaded in ESR 60
Fixup for 26039. WebExtension extensions can't read/write prefs, so the
base contents of extension-overrides.js are completely unnecessary. The
WebExtension versions of noscript and httpseverywhere seem to be nearly
complete re-writes (noscript in particular is much simpler) so our
custom options appear to be no longer required (though a complete audit
of noscript should probably be done just to be sure we don't need to fix
any bad behaviour).
The updated build script for tor-browser now dumps all of the
build-determined prefs (pluggable transport strings, localization
options) into a generated-prefs.js file created at build time, which is
then appended to 000-tor-browser.js as before.
The pdfjs option is no longer needed since the disableRange option seems
to break pdfjs altogether in latest ESR60. Also, setting the user pref
in 000-tor-browser.js does not work since pdfjs overwrites it with its
own value (any future patch setting pdfjs options needs to modify the
default values table)
---
.../Bundle-Data/PTConfigs/extension-overrides.js | 63 ----------------------
projects/tor-browser/build | 16 +++---
2 files changed, 9 insertions(+), 70 deletions(-)
diff --git a/projects/tor-browser/Bundle-Data/PTConfigs/extension-overrides.js b/projects/tor-browser/Bundle-Data/PTConfigs/extension-overrides.js
deleted file mode 100644
index c81a7bf..0000000
--- a/projects/tor-browser/Bundle-Data/PTConfigs/extension-overrides.js
+++ /dev/null
@@ -1,63 +0,0 @@
-# Overrides for Extension Preferences
-# Tor Browser Bundle
-# Do not edit this file.
-
-# HTTPS Everywhere Preferences:
-pref("extensions.https_everywhere._observatory.popup_shown", true);
-pref("extensions.https_everywhere.toolbar_hint_shown", true);
-
-# NoScript Preferences:
-pref("capability.policy.maonoscript.javascript.enabled", "allAccess");
-pref("capability.policy.maonoscript.sites", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
-pref("noscript.default", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
-pref("noscript.mandatory", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
-pref("noscript.ABE.enabled", false);
-pref("noscript.ABE.notify", false);
-pref("noscript.ABE.wanIpAsLocal", false);
-pref("noscript.confirmUnblock", false);
-pref("noscript.contentBlocker", true);
-pref("noscript.firstRunRedirection", false);
-pref("noscript.global", true);
-pref("noscript.gtemp", "");
-pref("noscript.opacizeObject", 3);
-pref("noscript.forbidWebGL", true);
-pref("noscript.forbidFonts", false);
-pref("noscript.options.tabSelectedIndexes", "5,0,0");
-pref("noscript.policynames", "");
-pref("noscript.secureCookies", true);
-pref("noscript.showAllowPage", false);
-pref("noscript.showBaseDomain", false);
-pref("noscript.showDistrust", false);
-pref("noscript.showRecentlyBlocked", false);
-pref("noscript.showTemp", false);
-pref("noscript.showTempToPerm", false);
-pref("noscript.showUntrusted", false);
-pref("noscript.STS.enabled", false);
-pref("noscript.subscription.lastCheck", -142148139);
-pref("noscript.temp", "");
-pref("noscript.untrusted", "");
-pref("noscript.forbidMedia", false);
-pref("noscript.allowWhitelistUpdates", false);
-pref("noscript.fixLinks", false);
-// Now handled by plugins.click_to_play
-pref("noscript.forbidFlash", false);
-pref("noscript.forbidSilverlight", false);
-pref("noscript.forbidJava", false);
-pref("noscript.forbidPlugins", false);
-// Usability tweaks
-pref("noscript.showPermanent", false);
-pref("noscript.showTempAllowPage", true);
-pref("noscript.showRevokeTemp", true);
-pref("noscript.notify", false);
-pref("noscript.autoReload", true);
-pref("noscript.autoReload.allTabs", false);
-pref("noscript.cascadePermissions", true);
-pref("noscript.restrictSubdocScripting", true);
-pref("noscript.showVolatilePrivatePermissionsToggle", false);
-pref("noscript.volatilePrivatePermissions", true);
-pref("noscript.clearClick", 0);
-
-# PDF.js
-// needs to be a user_pref because pdf.js blows away non-user prefs with its own
-// defaults each time
-user_pref("pdfjs.disableRange", true);
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 50fdc30..5456ad1 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -12,7 +12,9 @@ mkdir -p $OUTDIR
# directory named tor-browser (instead of tor-browser_en-US). Therefore we
# stage everything under tor-browser-stage to avoid a conflict.
TB_STAGE_DIR=$distdir/tor-browser-stage
-EXTOVERRIDESPATH=$rootdir/Bundle-Data/PTConfigs/extension-overrides.js
+GENERATEDPREFSPATH=$rootdir/Bundle-Data/PTConfigs/generated-prefs.js
+# Create initially empty prefs file where we can dump our conditionally included/genetered prefs
+touch "$GENERATEDPREFSPATH"
[% IF c("var/osx") %]
TBDIR="$TB_STAGE_DIR/Tor Browser.app"
@@ -113,9 +115,9 @@ cat Bundle-Data/PTConfigs/[% bundledata_osname %]/torrc-defaults-appendix >> "$T
[% IF c("var/linux") -%]
[% IF ! c("var/snowflake") %]
grep -v 'default_bridge\.snowflake' Bundle-Data/PTConfigs/bridge_prefs.js \
- >> "$EXTOVERRIDESPATH"
+ >> "$GENERATEDPREFSPATH"
[% ELSE %]
- cat Bundle-Data/PTConfigs/bridge_prefs.js >> "$EXTOVERRIDESPATH"
+ cat Bundle-Data/PTConfigs/bridge_prefs.js >> "$GENERATEDPREFSPATH"
[% END %]
[% END -%]
[% IF c("var/windows") -%]
@@ -123,13 +125,13 @@ cat Bundle-Data/PTConfigs/[% bundledata_osname %]/torrc-defaults-appendix >> "$T
# We don't have fte available on Windows x86_64 yet
grep -v 'default_bridge\.snowflake' Bundle-Data/PTConfigs/bridge_prefs.js \
[% IF c("var/windows-x86_64") %]| grep -v 'default_bridge\.fte' [% END %] \
- >> "$EXTOVERRIDESPATH"
+ >> "$GENERATEDPREFSPATH"
[% END -%]
[% IF c("var/osx") -%]
# FTE is temporarily removed due to bug 18495.
grep -Ev 'default_bridge\.fte' Bundle-Data/PTConfigs/bridge_prefs.js \
[% IF ! c("var/snowflake") %]| grep -v 'default_bridge\.snowflake' [% END %] \
- >> "$EXTOVERRIDESPATH"
+ >> "$GENERATEDPREFSPATH"
[% END -%]
cat Bundle-Data/PTConfigs/meek-http-helper-user.js >> "$TBDIR/$MEEKPROFILEPATH/user.js"
@@ -143,7 +145,7 @@ cat Bundle-Data/PTConfigs/meek-http-helper-user.js >> "$TBDIR/$MEEKPROFILEPATH/u
[% END %]
[% IF ! c("var/multi_lingual") %]
- echo 'pref("extensions.torlauncher.prompt_for_locale", false);' >> "$EXTOVERRIDESPATH"
+ echo 'pref("extensions.torlauncher.prompt_for_locale", false);' >> "$GENERATEDPREFSPATH"
[% END %]
[% IF c("var/linux") %]
@@ -171,7 +173,7 @@ mv chrome/en-US/locale/browser/searchplugins $rootdir
rm -rf chrome/en-US
unzip omni.ja defaults/preferences/000-tor-browser.js || [ $? -lt 3 ]
# Append our built extension-overrides.js to 000-tor-browser.js
-cat "$EXTOVERRIDESPATH" >> defaults/preferences/000-tor-browser.js
+cat "$GENERATEDPREFSPATH" >> defaults/preferences/000-tor-browser.js
cp defaults/preferences/000-tor-browser.js $rootdir
[% IF c("var/osx") %]
# Embed our default bookmarks within the en-US locale.
1
0

[tor-browser-build/master] Merge remote-tracking branch 'boklm/bug_26450'
by gk@torproject.org 29 Jun '18
by gk@torproject.org 29 Jun '18
29 Jun '18
commit 71207ea2468a8535e73dc8e8aa09aecfedbbed34
Merge: 660007a 88ff600
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 29 11:33:04 2018 +0000
Merge remote-tracking branch 'boklm/bug_26450'
projects/tor-browser/config | 1 +
1 file changed, 1 insertion(+)
1
0

[tor-browser-build/master] Bug 26450: disable dependency on firefox-langpacks in testbuild
by gk@torproject.org 29 Jun '18
by gk@torproject.org 29 Jun '18
29 Jun '18
commit 88ff6003f2d8b45aca111e2f7cfcce3837fe5414
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri Jun 22 00:09:30 2018 +0200
Bug 26450: disable dependency on firefox-langpacks in testbuild
When the list of locales is empty (testbuild), we don't need the
firefox-langpacks.
---
projects/tor-browser/config | 1 +
1 file changed, 1 insertion(+)
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index 820755c..13c550d 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -47,6 +47,7 @@ input_files:
name: tor
- project: firefox-langpacks
name: firefox-langpacks
+ enable: '[% c("var/locales").size %]'
- project: tor-launcher
name: tor-launcher
- project: torbutton
1
0

[tor-browser-build/master] Merge remote-tracking branch 'boklm/bug_26410'
by gk@torproject.org 29 Jun '18
by gk@torproject.org 29 Jun '18
29 Jun '18
commit 660007aa541e3c8cc4fda2776e8a277fdbc74915
Merge: c2f11e3 2846221
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 29 11:29:06 2018 +0000
Merge remote-tracking branch 'boklm/bug_26410'
Makefile | 6 +++---
projects/tor-browser/build | 8 +++++---
2 files changed, 8 insertions(+), 6 deletions(-)
1
0

[tor-browser-build/master] Bug 26410: Stop using old MAR format in the next esr60-based alpha
by gk@torproject.org 29 Jun '18
by gk@torproject.org 29 Jun '18
29 Jun '18
commit 2846221abfaeb05837e7d4a2056741df555dbd5e
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Thu Jun 28 14:29:24 2018 +0200
Bug 26410: Stop using old MAR format in the next esr60-based alpha
However we keep setting MAR_OLD_FORMAT=1 on the stable release for now.
---
Makefile | 6 +++---
projects/tor-browser/build | 8 +++++---
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/Makefile b/Makefile
index 3b5c2d9..b667960 100644
--- a/Makefile
+++ b/Makefile
@@ -119,7 +119,7 @@ incrementals-release: submodule-update
incrementals-alpha: submodule-update
$(rbm) build release --step update_responses_config --target alpha --target create_unsigned_incrementals
tools/update-responses/download_missing_versions alpha
- MAR_OLD_FORMAT=1 tools/update-responses/gen_incrementals alpha
+ tools/update-responses/gen_incrementals alpha
$(rbm) build release --step hash_incrementals --target alpha
update_responses-release: submodule-update
@@ -138,9 +138,9 @@ dmg2mar-release: submodule-update
dmg2mar-alpha: submodule-update
$(rbm) build release --step update_responses_config --target alpha --target signed
- MAR_OLD_FORMAT=1 $(rbm) build release --step dmg2mar --target alpha --target signed
+ $(rbm) build release --step dmg2mar --target alpha --target signed
tools/update-responses/download_missing_versions alpha
- CHECK_CODESIGNATURE_EXISTS=1 MAR_SKIP_EXISTING=1 MAR_OLD_FORMAT=1 tools/update-responses/gen_incrementals alpha
+ CHECK_CODESIGNATURE_EXISTS=1 MAR_SKIP_EXISTING=1 tools/update-responses/gen_incrementals alpha
submodule-update:
git submodule update --init
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 0c3e583..50fdc30 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -264,9 +264,11 @@ popd
cd $distdir
[% IF c("var/build_mar") -%]
- # Let's use the bzip2 format for now so that users can update to the first
- # esr60-based Tor Browser.
- export MAR_OLD_FORMAT=1
+ [% IF c("var/release") -%]
+ # Let's use the bzip2 format for now so that users can update to the first
+ # esr60-based Tor Browser.
+ export MAR_OLD_FORMAT=1
+ [% END -%]
# Create full MAR file and compressed package.
MAR_FILE=tor-browser-[% c("var/mar_osname") %]-[% c("var/torbrowser_version") %]_${PKG_LOCALE}.mar
MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE "$TBDIR"
1
0

[tor-browser-build/master] Fix HTTPS Everywhere version in the changelog
by boklm@torproject.org 29 Jun '18
by boklm@torproject.org 29 Jun '18
29 Jun '18
commit c2f11e3720f2a5429f4cd32af73b94d655002712
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri Jun 29 12:32:39 2018 +0200
Fix HTTPS Everywhere version in the changelog
Reported in a comment on the blog:
https://blog.torproject.org/comment/275985#comment-275985
---
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 5f52bbe..516e81f 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -20,7 +20,7 @@ Tor Browser 8.0a9 -- June 27 2018
* Bug 20890: Increase control port connection timeout
* Bug 20628: Add more locales to Tor Browser
* Translations update
- * Update HTTPS Everywhere to 2018.6.13
+ * Update HTTPS Everywhere to 2018.6.21
* Update NoScript to 10.1.8.2
* Bug 25543: Rebase Tor Browser patches for ESR60
* Bug 23247: Show security state of .onions
1
0

[torbutton/master] Bug 26500: Reposition circuit display relay icon for RTL locales
by gk@torproject.org 27 Jun '18
by gk@torproject.org 27 Jun '18
27 Jun '18
commit b61ed65010816c8ceb4361dbd02a278347dca91b
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Mon Jun 25 11:37:47 2018 -0700
Bug 26500: Reposition circuit display relay icon for RTL locales
It seems -moz-locale-dir(rtl) works in XUL; dir(rtl) does not.
---
src/chrome/skin/tor-circuit-display.css | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/chrome/skin/tor-circuit-display.css b/src/chrome/skin/tor-circuit-display.css
index c9e682a..ed17f91 100644
--- a/src/chrome/skin/tor-circuit-display.css
+++ b/src/chrome/skin/tor-circuit-display.css
@@ -21,7 +21,7 @@ and lines drawn between them to represent Tor network inter-relay connections.
width: 100%;
}
-#circuit-display-content:dir(rtl) {
+#circuit-display-content:-moz-locale-dir(rtl) {
background-position: calc(100% - 1em) 1em;
}
1
0

[tor-browser-build/master] Add newline at the end of projects/release/update_responses_config.yml
by boklm@torproject.org 27 Jun '18
by boklm@torproject.org 27 Jun '18
27 Jun '18
commit 7a338d60a3106b70d411a6ebd1095bf3bc6862f4
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Wed Jun 27 22:11:42 2018 +0200
Add newline at the end of projects/release/update_responses_config.yml
---
projects/release/update_responses_config.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/release/update_responses_config.yml b/projects/release/update_responses_config.yml
index 0c49fe1..92c2203 100644
--- a/projects/release/update_responses_config.yml
+++ b/projects/release/update_responses_config.yml
@@ -46,4 +46,4 @@ versions:
win32:
minSupportedOSVersion: 6.1
win64:
- minSupportedOSVersion: 6.1
\ No newline at end of file
+ minSupportedOSVersion: 6.1
1
0

[tor-browser-build/master] Bug 26319: Don't package up the whole Tor Browser in the `mach package` step
by gk@torproject.org 27 Jun '18
by gk@torproject.org 27 Jun '18
27 Jun '18
commit 8d1c4c396034b2ab0b7c55982e1900236f5031a6
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Fri Jun 22 15:51:51 2018 -0400
Bug 26319: Don't package up the whole Tor Browser in the `mach package` step
This commit sets `mach build stage-package` instead of `mach package` in
the Firefox build; this helps us to use the useful properties of `mach
package` but avoids creating the final DMG or EXE during the Firefox
build which we don't want as we do that later when building Tor Browser.
We no longer need to patch `installer.py` (bug 26205) but we still need
the patch for the uninstaller otherwise the Firefox build fails trying
to find the required NSIS files.
The no-dmg.patch for macOS is also not required and is removed (bug 24632).
---
projects/firefox/build | 6 +-----
projects/firefox/config | 2 --
projects/firefox/no-dmg.patch | 29 --------------------------
projects/firefox/nsis-uninstall.patch | 39 +++++------------------------------
4 files changed, 6 insertions(+), 70 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index e6fa41c..1921f53 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -138,16 +138,12 @@ fi
patch -p1 < $rootdir/1467041.patch
[% END -%]
-[% IF c("var/osx") %]
- patch -p1 < $rootdir/no-dmg.patch
-[% END -%]
-
rm -f configure
rm -f js/src/configure
./mach configure --with-tor-browser-version=[% c("var/torbrowser_version") %] --with-distribution-id=org.torproject --enable-update-channel=[% c("var/torbrowser_update_channel") %] --enable-bundled-fonts
./mach build
-./mach package
+./mach build stage-package
[% IF c("var/osx") %]
cp -a obj-macos/dist/firefox/* $distdir
diff --git a/projects/firefox/config b/projects/firefox/config
index 303ca0d..3284ed4 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -93,8 +93,6 @@ input_files:
enable: '[% c("var/selfrando") %]'
- filename: fix-info-plist.py
enable: '[% c("var/osx") %]'
- - filename: no-dmg.patch
- enable: '[% c("var/osx") %]'
- URL: https://people.torproject.org/~gk/mirrors/sources/msvcr100.dll
sha256sum: 8793353461826fbd48f25ea8b835be204b758ce7510db2af631b28850355bd18
enable: '[% c("var/windows-i686") %]'
diff --git a/projects/firefox/no-dmg.patch b/projects/firefox/no-dmg.patch
deleted file mode 100644
index 1e722af..0000000
--- a/projects/firefox/no-dmg.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 7204fc9191a55dbbd3b94ee2d64ece8d9910cf23 Mon Sep 17 00:00:00 2001
-From: Georg Koppen <gk(a)torproject.org>
-Date: Thu, 31 May 2018 19:15:18 +0000
-Subject: [PATCH] Don't create a .dmg yet
-
-
-diff --git a/toolkit/mozapps/installer/upload-files.mk b/toolkit/mozapps/installer/upload-files.mk
-index 8ace9703a160..82df89d1f431 100644
---- a/toolkit/mozapps/installer/upload-files.mk
-+++ b/toolkit/mozapps/installer/upload-files.mk
-@@ -216,14 +216,7 @@ ifeq ($(MOZ_PKG_FORMAT),DMG)
-
- _ABS_MOZSRCDIR = $(shell cd $(MOZILLA_DIR) && pwd)
- PKG_DMG_SOURCE = $(MOZ_PKG_DIR)
-- INNER_MAKE_PACKAGE = \
-- $(call py_action,make_dmg, \
-- $(if $(MOZ_PKG_MAC_DSSTORE),--dsstore '$(MOZ_PKG_MAC_DSSTORE)') \
-- $(if $(MOZ_PKG_MAC_BACKGROUND),--background '$(MOZ_PKG_MAC_BACKGROUND)') \
-- $(if $(MOZ_PKG_MAC_ICON),--icon '$(MOZ_PKG_MAC_ICON)') \
-- --volume-name '$(MOZ_APP_DISPLAYNAME)' \
-- '$(PKG_DMG_SOURCE)' '$(PACKAGE)' \
-- )
-+ INNER_MAKE_PACKAGE = true
- INNER_UNMAKE_PACKAGE = \
- $(call py_action,unpack_dmg, \
- $(if $(MOZ_PKG_MAC_DSSTORE),--dsstore '$(MOZ_PKG_MAC_DSSTORE)') \
---
-2.17.0
-
diff --git a/projects/firefox/nsis-uninstall.patch b/projects/firefox/nsis-uninstall.patch
index 765ef67..60e4e3d 100644
--- a/projects/firefox/nsis-uninstall.patch
+++ b/projects/firefox/nsis-uninstall.patch
@@ -1,14 +1,13 @@
-From 4ef264b601ac92a0b385c40bd011ef94618a176a Mon Sep 17 00:00:00 2001
+From e338a77c64c0afb72e857c7daa63346d35ad3891 Mon Sep 17 00:00:00 2001
From: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Tue, 12 Jun 2018 21:58:24 -0400
Subject: [PATCH 1/1] Bug 26205: Don't build the uninstaller for Windows during
Firefox compilation
---
- browser/Makefile.in | 4 ----
- browser/installer/Makefile.in | 4 ----
- .../mozbuild/mozbuild/repackaging/installer.py | 17 +----------------
- 3 files changed, 1 insertion(+), 24 deletions(-)
+ browser/Makefile.in | 4 ----
+ browser/installer/Makefile.in | 4 ----
+ 2 files changed, 8 deletions(-)
diff --git a/browser/Makefile.in b/browser/Makefile.in
index 2eb9e708f68e..0c9442183942 100644
@@ -40,34 +39,6 @@ index 1bf11252ee06..dee6d5434106 100644
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
MOZ_PKG_MAC_DSSTORE=$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/dsstore
MOZ_PKG_MAC_BACKGROUND=$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/background.png
-diff --git a/python/mozbuild/mozbuild/repackaging/installer.py b/python/mozbuild/mozbuild/repackaging/installer.py
-index 9b49eb555153..1e6f6e73c3d8 100644
---- a/python/mozbuild/mozbuild/repackaging/installer.py
-+++ b/python/mozbuild/mozbuild/repackaging/installer.py
-@@ -27,22 +27,7 @@ def repackage_installer(topsrcdir, tag, setupexe, package, output, package_name,
- tmpdir = tempfile.mkdtemp()
- old_cwd = os.getcwd()
- try:
-- if package:
-- z = zipfile.ZipFile(package)
-- z.extractall(tmpdir)
-- z.close()
--
-- # Copy setup.exe into the root of the install dir, alongside the
-- # package.
-- shutil.copyfile(setupexe, mozpath.join(tmpdir, mozpath.basename(setupexe)))
--
-- # archive_exe requires us to be in the directory where the package is
-- # unpacked (the tmpdir)
-- os.chdir(tmpdir)
--
-- sfx_package = mozpath.join(topsrcdir, sfx_stub)
--
-- archive_exe(package_name, tag, sfx_package, output)
-+ pass
-
- finally:
- os.chdir(old_cwd)
--
-2.17.1
+2.18.0.rc2
1
0

[tor-browser-build/master] Bug 26515: Update Tor Browser blog post URLs
by gk@torproject.org 27 Jun '18
by gk@torproject.org 27 Jun '18
27 Jun '18
commit 7bace2c620e8ba1f31bcf70deee366c383401022
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Wed Jun 27 09:47:03 2018 +0200
Bug 26515: Update Tor Browser blog post URLs
---
projects/release/update_responses_config.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/release/update_responses_config.yml b/projects/release/update_responses_config.yml
index 9f33424..0c49fe1 100644
--- a/projects/release/update_responses_config.yml
+++ b/projects/release/update_responses_config.yml
@@ -29,7 +29,7 @@ versions:
releases_dir: [% path(c('output_dir')) %]/unsigned
[% END -%]
platformVersion: [% pc('firefox', 'var/firefox_platform_version') %]
- detailsURL: https://blog.torproject.org/tor-browser-[% c("var/torbrowser_version") FILTER remove('\.') %]-released
+ detailsURL: https://blog.torproject.org/new-release-tor-browser-[% c("var/torbrowser_version") FILTER remove('\.') %]
incremental_from:
[% FOREACH v IN c("var/torbrowser_incremental_from") -%]
- [% v %]
1
0

[tor-browser-build/master] Bug 26355: Make sure only Windows users on Windows7+ are trying to use Tor Browser based on ESR60 (tor-browser-build)
by boklm@torproject.org 27 Jun '18
by boklm@torproject.org 27 Jun '18
27 Jun '18
commit 2b04f4ee916a43a70c436a52c83205eda5f38648
Author: Richard Pospesel <richard(a)torproject.org>
Date: Thu Jun 21 17:12:13 2018 -0700
Bug 26355: Make sure only Windows users on Windows7+ are trying to use Tor Browser based on ESR60 (tor-browser-build)
Edited the update_responses generation script to require version
6.1 of Windows (Windows 7) to get updates
---
projects/release/update_responses_config.yml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/projects/release/update_responses_config.yml b/projects/release/update_responses_config.yml
index 6861124..9f33424 100644
--- a/projects/release/update_responses_config.yml
+++ b/projects/release/update_responses_config.yml
@@ -43,3 +43,7 @@ versions:
minSupportedOSVersion: 13.0.0
osx64:
minSupportedOSVersion: 13.0.0
+ win32:
+ minSupportedOSVersion: 6.1
+ win64:
+ minSupportedOSVersion: 6.1
\ No newline at end of file
1
0

[tor-browser-build/master] Bug 26489: fix .app directory name in tools/dmg2mar
by gk@torproject.org 26 Jun '18
by gk@torproject.org 26 Jun '18
26 Jun '18
commit 1633185de3336351f47cb66b99903ef70b04d6ff
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Jun 25 14:41:39 2018 +0200
Bug 26489: fix .app directory name in tools/dmg2mar
Add the whitespace in "Tor Browser.app".
---
tools/dmg2mar | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/tools/dmg2mar b/tools/dmg2mar
index 51d6acb..9b98956 100755
--- a/tools/dmg2mar
+++ b/tools/dmg2mar
@@ -36,9 +36,10 @@ use Parallel::ForkManager;
use Cwd;
# If the application is not TorBrowser (for instance, TorMessenger)
-# set the application name in the TOR_APPNAME_BUNDLE_OSX and in
-# the TOR_APPNAME_MARFILE environment variables
-my $appname = $ENV{TOR_APPNAME_BUNDLE_OSX} // 'TorBrowser';
+# set the application name in the TOR_APPNAME_BUNDLE_OSX,
+# TOR_APPNAME_DMGFILE and TOR_APPNAME_MARFILE environment variables
+my $appname = $ENV{TOR_APPNAME_BUNDLE_OSX} // 'Tor Browser';
+my $appname_dmg = $ENV{TOR_APPNAME_DMGFILE} // 'TorBrowser';
my $appname_mar = $ENV{TOR_APPNAME_MARFILE} // 'tor-browser';
sub exit_error {
@@ -95,7 +96,7 @@ sub get_dmg_files_from_sha256sums {
foreach my $line (read_file('sha256sums-unsigned-build.txt')) {
my (undef, $filename) = split ' ', $line;
chomp $filename;
- next unless $filename =~ m/^$appname-(.+)-osx64_(.+)\.dmg$/;
+ next unless $filename =~ m/^$appname_dmg-(.+)-osx64_(.+)\.dmg$/;
push @files, { filename => $filename, version => $1, lang => $2 };
}
return @files;
1
0

[tor-browser-build/master] Merge remote-tracking branch 'boklm/bug_26489'
by gk@torproject.org 26 Jun '18
by gk@torproject.org 26 Jun '18
26 Jun '18
commit 5d5401f7a0831702d913d5e469f70954c5796edb
Merge: ce2f13c 1633185
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Jun 26 19:30:03 2018 +0000
Merge remote-tracking branch 'boklm/bug_26489'
tools/dmg2mar | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
1
0

[tor-browser-build/master] Bug 26496: Set MAR_OLD_FORMAT=1 in dmg2mar
by boklm@torproject.org 25 Jun '18
by boklm@torproject.org 25 Jun '18
25 Jun '18
commit ce2f13cfa3a98c01e0f1417c5f9017fbda3d148a
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Jun 25 17:56:31 2018 +0200
Bug 26496: Set MAR_OLD_FORMAT=1 in dmg2mar
---
Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 80e9983..3b5c2d9 100644
--- a/Makefile
+++ b/Makefile
@@ -132,13 +132,13 @@ update_responses-alpha: submodule-update
dmg2mar-release: submodule-update
$(rbm) build release --step update_responses_config --target release --target signed
- $(rbm) build release --step dmg2mar --target release --target signed
+ MAR_OLD_FORMAT=1 $(rbm) build release --step dmg2mar --target release --target signed
tools/update-responses/download_missing_versions release
CHECK_CODESIGNATURE_EXISTS=1 MAR_SKIP_EXISTING=1 MAR_OLD_FORMAT=1 tools/update-responses/gen_incrementals release
dmg2mar-alpha: submodule-update
$(rbm) build release --step update_responses_config --target alpha --target signed
- $(rbm) build release --step dmg2mar --target alpha --target signed
+ MAR_OLD_FORMAT=1 $(rbm) build release --step dmg2mar --target alpha --target signed
tools/update-responses/download_missing_versions alpha
CHECK_CODESIGNATURE_EXISTS=1 MAR_SKIP_EXISTING=1 MAR_OLD_FORMAT=1 tools/update-responses/gen_incrementals alpha
1
0
commit e8c4d33d024cf1f3a3b0f560541f5424e563ca69
Author: Georg Koppen <gk(a)torproject.org>
Date: Sun Jun 24 21:18:26 2018 +0000
Prepare build3
We pick up fix for Windows bustage and a macOS reproducibility issue.
Moreover an update Torbutton version with a new icon gets included, too.
---
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 5 ++++-
projects/torbutton/config | 2 +-
rbm.conf | 2 +-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 1ceda50..5f52bbe 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -4,8 +4,9 @@ Tor Browser 8.0a9 -- June 27 2018
* Update Tor to 0.3.4.2-alpha
* Update Libevent to 2.1.8
* Update Binutils to 2.26.1
- * Update Torbutton to 2.0
+ * Update Torbutton to 2.0.1
* Bug 26100: Adapt Torbutton to Firefox 60 ESR
+ * Bug 26430: New Torbutton icon
* Bug 24309: Move circuit display to the identity popup
* Bug 26128: Adapt security slider to the WebExtensions version of NoScript
* Bug 23247: Show security state of .onions
@@ -70,6 +71,7 @@ Tor Browser 8.0a9 -- June 27 2018
* Bug 23561: Fix nsis builds for Windows 64
* Bug 23231: Remove our STL Wrappers workaround for Windows 64bit
* Bug 26370: Don't copy msvcr100.dll and libssp-0.dll twice
+ * Bug 26476: Work around Tor Browser crashes due to fix for bug 1467041
* Bug 18287: Use SHA-2 signature for Tor Browser setup executables
* OS X
* Bug 24632: Update macOS toolchain for ESR 60
@@ -78,6 +80,7 @@ Tor Browser 8.0a9 -- June 27 2018
* Bug 26003: Clean up our mozconfig-osx-x86_64 file
* Bug 26195: Use new cctools in our macosx-toolchain project
* Bug 25975: Get a rust cross-compiler for macOS
+ * Bug 26475: Disable Stylo to make macOS build reproducible
* Linux
* Bug 26073: Patch tor-browser-build for transition to ESR 60
* Bug 25540: Stop building and distributing sandboxed tor browser
diff --git a/projects/torbutton/config b/projects/torbutton/config
index 0791953..ba53944 100644
--- a/projects/torbutton/config
+++ b/projects/torbutton/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 2.0
+version: 2.0.1
git_url: https://git.torproject.org/torbutton.git
git_hash: '[% c("version") %]'
gpg_keyring: torbutton.gpg
diff --git a/rbm.conf b/rbm.conf
index 67ac46d..31aae9e 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -16,7 +16,7 @@ buildconf:
var:
torbrowser_version: '8.0a9'
- torbrowser_build: 'build2'
+ torbrowser_build: 'build3'
torbrowser_incremental_from:
- 8.0a8
project_name: tor-browser
1
0

[tor-browser-build/master] Bug 26476: Work around Windows Tor Browser bustage
by gk@torproject.org 24 Jun '18
by gk@torproject.org 24 Jun '18
24 Jun '18
commit 43cefe3afeb58e7416f7b1e508c8a251b12efb72
Author: Georg Koppen <gk(a)torproject.org>
Date: Sun Jun 24 19:42:50 2018 +0000
Bug 26476: Work around Windows Tor Browser bustage
---
projects/firefox/1464084.patch | 73 ++++++++++++++++++++++++++++++++++++++++++
projects/firefox/1467041.patch | 23 +++++++++++++
projects/firefox/build | 2 ++
projects/firefox/config | 4 +++
4 files changed, 102 insertions(+)
diff --git a/projects/firefox/1464084.patch b/projects/firefox/1464084.patch
new file mode 100644
index 0000000..524cb7f
--- /dev/null
+++ b/projects/firefox/1464084.patch
@@ -0,0 +1,73 @@
+From 1a1cc016c8f6ff83ea057ee6fe6838b89c382210 Mon Sep 17 00:00:00 2001
+From: Georg Koppen <gk(a)torproject.org>
+Date: Sun, 24 Jun 2018 19:36:35 +0000
+Subject: [PATCH 1/2] Revert "Bug 1464084 - Don't export
+ std::thread::_M_start_thread symbols with --enable-stdcxx-compat. r=froydnj,
+ a=RyanVM"
+
+This reverts commit 655e5f1d95e0d5ecd037f36dbe533372130e5621.
+
+diff --git a/build/unix/stdc++compat/hide_std.ld b/build/unix/stdc++compat/hide_std.ld
+deleted file mode 100644
+index 4b3400b0f327..000000000000
+--- a/build/unix/stdc++compat/hide_std.ld
++++ /dev/null
+@@ -1,5 +0,0 @@
+-hidden {
+- local:
+- # std::thread::_M_start_thread(...)
+- _ZNSt6thread15_M_start_thread*;
+-};
+diff --git a/build/unix/stdc++compat/moz.build b/build/unix/stdc++compat/moz.build
+index 4444d0c4f297..20517a1caef5 100644
+--- a/build/unix/stdc++compat/moz.build
++++ b/build/unix/stdc++compat/moz.build
+@@ -23,5 +23,3 @@ COMPILE_FLAGS['CLANG_PLUGIN'] = []
+
+ DEFINES['MOZ_LIBSTDCXX_VERSION'] = CONFIG['MOZ_LIBSTDCXX_TARGET_VERSION']
+ HOST_DEFINES['MOZ_LIBSTDCXX_VERSION'] = CONFIG['MOZ_LIBSTDCXX_HOST_VERSION']
+-
+-OS_LIBS += ['-Wl,--version-script,%s/hide_std.ld' % SRCDIR]
+diff --git a/python/mozbuild/mozbuild/action/generate_symbols_file.py b/python/mozbuild/mozbuild/action/generate_symbols_file.py
+index bf1ae917a2d0..f118060f47cf 100644
+--- a/python/mozbuild/mozbuild/action/generate_symbols_file.py
++++ b/python/mozbuild/mozbuild/action/generate_symbols_file.py
+@@ -42,8 +42,6 @@ def generate_symbols_file(output, *args):
+
+ symbols = [s.strip() for s in pp.out.getvalue().splitlines() if s.strip()]
+
+- libname, ext = os.path.splitext(os.path.basename(output.name))
+-
+ if buildconfig.substs['OS_TARGET'] == 'WINNT':
+ # A def file is generated for MSVC link.exe that looks like the
+ # following:
+@@ -68,13 +66,14 @@ def generate_symbols_file(output, *args):
+ # those platforms, and to DATA on Windows, so that the "DATA" part
+ # is, in fact, part of the symbol name as far as the symbols variable
+ # is concerned.
++ libname, ext = os.path.splitext(os.path.basename(output.name))
+ assert ext == '.def'
+ output.write('LIBRARY %s\nEXPORTS\n %s\n'
+ % (libname, '\n '.join(symbols)))
+ elif buildconfig.substs['GCC_USE_GNU_LD']:
+ # A linker version script is generated for GNU LD that looks like the
+ # following:
+- # liblibrary.so {
++ # {
+ # global:
+ # symbol1;
+ # symbol2;
+@@ -82,8 +81,8 @@ def generate_symbols_file(output, *args):
+ # local:
+ # *;
+ # };
+- output.write('%s {\nglobal:\n %s;\nlocal:\n *;\n};'
+- % (libname, ';\n '.join(symbols)))
++ output.write('{\nglobal:\n %s;\nlocal:\n *;\n};'
++ % ';\n '.join(symbols))
+ elif buildconfig.substs['OS_TARGET'] == 'Darwin':
+ # A list of symbols is generated for Apple ld that simply lists all
+ # symbols, with an underscore prefix.
+--
+2.17.1
+
diff --git a/projects/firefox/1467041.patch b/projects/firefox/1467041.patch
new file mode 100644
index 0000000..a31e2e0
--- /dev/null
+++ b/projects/firefox/1467041.patch
@@ -0,0 +1,23 @@
+From 8d940fed5975400910c29037a6c575260d3caa22 Mon Sep 17 00:00:00 2001
+From: Georg Koppen <gk(a)torproject.org>
+Date: Sun, 24 Jun 2018 19:37:55 +0000
+Subject: [PATCH 2/2] Revert "Bug 1467041 - Default to --enable-release when
+ milestone is beta/release. r=froydnj, a=RyanVM"
+
+This reverts commit b1f09cd8f4a1abf13f85a2353ac1b9711200b0e5.
+
+diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure
+index 67007c8dcf7c..a1e443019748 100755
+--- a/build/moz.configure/toolchain.configure
++++ b/build/moz.configure/toolchain.configure
+@@ -1387,7 +1387,6 @@ imply_option('--enable-release', mozilla_official)
+ imply_option('--enable-release', depends_if('MOZ_AUTOMATION')(lambda x: True))
+
+ js_option('--enable-release',
+- default=milestone.is_release_or_beta,
+ help='Build with more conservative, release engineering-oriented '
+ 'options. This may slow down builds.')
+
+--
+2.17.1
+
diff --git a/projects/firefox/build b/projects/firefox/build
index f023c6d..e6fa41c 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -134,6 +134,8 @@ fi
[% IF c("var/windows") %]
patch -p1 < $rootdir/nsis-uninstall.patch
+ patch -p1 < $rootdir/1464084.patch
+ patch -p1 < $rootdir/1467041.patch
[% END -%]
[% IF c("var/osx") %]
diff --git a/projects/firefox/config b/projects/firefox/config
index 51dc04a..303ca0d 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -106,6 +106,10 @@ input_files:
enable: '[% c("var/windows") %]'
- filename: nsis-uninstall.patch
enable: '[% c("var/windows") %]'
+ - filename: 1464084.patch
+ enable: '[% c("var/windows") %]'
+ - filename: 1467041.patch
+ enable: '[% c("var/windows") %]'
- project: rust
name: rust
- project: llvm
1
0
commit 8aebbf6d39ce38785f1aac8e8c4ec6cfe31b3309
Author: Georg Koppen <gk(a)torproject.org>
Date: Sun Jun 24 20:34:17 2018 +0000
Release preparations for 2.0.1
Version bump and CHANGELOG update
---
src/CHANGELOG | 3 ++-
src/install.rdf | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/CHANGELOG b/src/CHANGELOG
index b5fdb75..f1cd4cd 100644
--- a/src/CHANGELOG
+++ b/src/CHANGELOG
@@ -1,5 +1,6 @@
-2.0
+2.0.1
* Bug 26100: Adapt Torbutton to Firefox 60 ESR
+ * Bug 26430: New Torbutton icon
* Bug 24309: Move circuit display to the identity popup
* Bug 26128: Adapt security slider to the WebExtensions version of NoScript
* Bug 23247: Show security state of .onions
diff --git a/src/install.rdf b/src/install.rdf
index d4de4ba..233fe1f 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -6,7 +6,7 @@
<em:name>Torbutton</em:name>
<em:creator>Mike Perry</em:creator>
<em:id>torbutton(a)torproject.org</em:id>
- <em:version>2.0</em:version>
+ <em:version>2.0.1</em:version>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html.en</em:homepageURL>
<em:optionsURL>chrome://torbutton/content/preferences.xul</em:optionsURL>
1
0
commit 32e63d587ac4de0f47ef13db8625a474d0492d34
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Fri Jun 22 09:31:09 2018 -0700
Bug 26430 - New torbutton icons
Icon design by Antonela Debiasi.
Switching our torbutton icons to SVG allows us get high
quality for any size, including retina screens.
Also, SVGs should scale to the correct image size, which
means I think #8941 can be closed.
In any case, the "iconsize" attribute has been dropped by Mozilla;
see https://bugzilla.mozilla.org/show_bug.cgi?id=1430128
Blinking of update warning is implemented with a CSS animation.
---
src/chrome/skin/tor-16.png | Bin 711 -> 0 bytes
src/chrome/skin/tor-24.png | Bin 1433 -> 0 bytes
src/chrome/skin/tor-disabled-16.png | Bin 5536 -> 0 bytes
src/chrome/skin/tor-disabled-24.png | Bin 5990 -> 0 bytes
src/chrome/skin/tor-enabled-16.png | Bin 915 -> 0 bytes
src/chrome/skin/tor-enabled-24.png | Bin 1588 -> 0 bytes
src/chrome/skin/tor-update-16.gif | Bin 1304 -> 0 bytes
src/chrome/skin/tor-update-24.gif | Bin 1732 -> 0 bytes
src/chrome/skin/torbutton-update-needed.svg | 11 +++++
src/chrome/skin/torbutton.css | 69 ++++++++--------------------
src/chrome/skin/torbutton.svg | 9 ++++
11 files changed, 40 insertions(+), 49 deletions(-)
diff --git a/src/chrome/skin/tor-16.png b/src/chrome/skin/tor-16.png
deleted file mode 100644
index b85043f..0000000
Binary files a/src/chrome/skin/tor-16.png and /dev/null differ
diff --git a/src/chrome/skin/tor-24.png b/src/chrome/skin/tor-24.png
deleted file mode 100644
index a498806..0000000
Binary files a/src/chrome/skin/tor-24.png and /dev/null differ
diff --git a/src/chrome/skin/tor-disabled-16.png b/src/chrome/skin/tor-disabled-16.png
deleted file mode 100644
index f749377..0000000
Binary files a/src/chrome/skin/tor-disabled-16.png and /dev/null differ
diff --git a/src/chrome/skin/tor-disabled-24.png b/src/chrome/skin/tor-disabled-24.png
deleted file mode 100644
index c083748..0000000
Binary files a/src/chrome/skin/tor-disabled-24.png and /dev/null differ
diff --git a/src/chrome/skin/tor-enabled-16.png b/src/chrome/skin/tor-enabled-16.png
deleted file mode 100644
index d48a8b0..0000000
Binary files a/src/chrome/skin/tor-enabled-16.png and /dev/null differ
diff --git a/src/chrome/skin/tor-enabled-24.png b/src/chrome/skin/tor-enabled-24.png
deleted file mode 100644
index c8b932f..0000000
Binary files a/src/chrome/skin/tor-enabled-24.png and /dev/null differ
diff --git a/src/chrome/skin/tor-update-16.gif b/src/chrome/skin/tor-update-16.gif
deleted file mode 100644
index d006458..0000000
Binary files a/src/chrome/skin/tor-update-16.gif and /dev/null differ
diff --git a/src/chrome/skin/tor-update-24.gif b/src/chrome/skin/tor-update-24.gif
deleted file mode 100644
index 72591a8..0000000
Binary files a/src/chrome/skin/tor-update-24.gif and /dev/null differ
diff --git a/src/chrome/skin/torbutton-update-needed.svg b/src/chrome/skin/torbutton-update-needed.svg
new file mode 100644
index 0000000..73f819e
--- /dev/null
+++ b/src/chrome/skin/torbutton-update-needed.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g id="Icon---Tor---Update" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="Tor-Button-Icon" transform="translate(2.000000, 1.000000)" fill="#0C0C0D">
+ <path d="M8.27206791,6.27905236 C7.88283063,6.53485117 6.37928571,7.48491742 6.38222311,7.48303971 C5.92467564,7.77552366 5.55774616,8.01739321 5.22956304,8.24495813 C4.62774003,8.66226724 4.1902024,9.01032507 3.90524298,9.30237927 C2.34845165,10.8521114 1.86583368,12.1863028 2.03292037,14.2840468 C2.17744778,16.6290092 3.98280543,18.7226974 6.62789966,19.5725823 C7.66430091,19.8978216 8.64783036,20 10.3045058,20 C12.4566798,20 14.4305353,19.426444 15.7257727,18.390024 C17.1602235,17.2499732 18,15.5258216 18,13.7581121 C18,11.9676824 17.2065463,10.2463814 15.7919239,9.00433992 C15.0624549,8.37501782 14.1112169,7.77509114 12.728283,7.03810567 C11.4758566,6.39901667 10.3718516,5.26209475 9.95586156,3.83344263 C9.74417905,4.87665258 9.16812751,5.7299448 8.27206791,6.27905236 Z M17.1048177,7.49557522 C18.9563878,9.1179941 20,11.3893805 20,13.7581121 C20,16.1268437 18.889058,18.4306785 16.9701581,19.9557522 C15.1859178,21.3834808 12.6947145,22 10.3045058,22 C8.8232498,22 7.47
665339,21.9351032 6.02906225,21.480826 C2.69623613,20.4100295 0.238697687,17.6843658 0.0367082257,14.4070796 C-0.165281236,11.8761062 0.440687149,9.92920354 2.49424667,7.88495575 C3.53785889,6.81415929 5.69241315,5.58112094 7.1736692,4.60766962 C7.91429722,4.15339233 8.68859016,2.79056047 7.20733411,0.227138643 L7.5103183,0 L11.9204215,1.75221239 C11.3144532,3.63421829 13.0650285,4.96460177 13.637332,5.25663717 C14.9165986,5.9380531 16.1285353,6.6519174 17.1048177,7.49557522 Z" id="Border" fill-rule="nonzero"></path>
+ <path d="M10,5.80000019 C10.3632315,6.90320629 11.2333653,7.78038283 12.2159038,8.28105702 C13.3397544,8.87914153 14.1127842,9.36599897 14.7055922,9.87671162 C15.8551945,10.8846633 16.5,12.2815477 16.5,13.7345319 C16.5,15.1690781 15.81755,16.5682758 14.6518339,17.4934592 C13.5992506,18.3345433 11.9951837,18.8000002 10.2462051,18.8000002 C10.1620472,18.8000002 10.0800269,18.7996762 10,18.7990042 L10,5.80000019 Z" id="Half-Content"></path>
+ </g>
+ <polygon id="Triangle" fill="#0C0C0D" points="7 11 13 23 1 23"></polygon>
+ <path d="M13.6929417,21.0118641 C14.0028183,21.6319873 13.9694684,22.3683526 13.6048048,22.957926 C13.2401412,23.5474994 12.5961777,23.9061872 11.9029417,23.9058641 L1.99794165,23.9058641 C1.30603325,23.9051512 0.663641796,23.5468644 0.299459428,22.9585541 C-0.0647229393,22.3702439 -0.0989581202,21.6354894 0.208941651,21.0158641 L5.16194165,11.1058641 C5.50066779,10.428136 6.19328022,10 6.95094165,10 C7.70860308,10 8.40121551,10.428136 8.73994165,11.1058641 L13.6929417,21.0118641 Z M5.95094165,13.9058641 L5.95094165,17.9058641 C5.95094165,18.4581489 6.3986569,18.9058641 6.95094165,18.9058641 C7.5032264,18.9058641 7.95094165,18.4581489 7.95094165,17.9058641 L7.95094165,13.9058641 C7.95094165,13.3535794 7.5032264,12.9058641 6.95094165,12.9058641 C6.3986569,12.9058641 5.95094165,13.3535794 5.95094165,13.9058641 Z M6.95094165,22.1558641 C7.64129759,22.1558641 8.20094165,21.59622 8.20094165,20.9058641 C8.20094165,20.2155082 7.64129759,19.6558641 6.95094165,19.6558641 C6.26058571,
19.6558641 5.70094165,20.2155082 5.70094165,20.9058641 C5.70094165,21.59622 6.26058571,22.1558641 6.95094165,22.1558641 Z" id="Shape" fill="#FFE900" fill-rule="nonzero"></path>
+ </g>
+</svg>
diff --git a/src/chrome/skin/torbutton.css b/src/chrome/skin/torbutton.css
index 5bdcaa6..14166b7 100644
--- a/src/chrome/skin/torbutton.css
+++ b/src/chrome/skin/torbutton.css
@@ -1,73 +1,44 @@
+@keyframes blink-update {
+ 0% {
+ list-style-image: url("chrome://torbutton/skin/torbutton-update-needed.svg");
+ }
+ 100% {
+ list-style-image: url("chrome://torbutton/skin/torbutton.svg");
+ }
+}
+
#torbutton-button {
- list-style-image: url("chrome://torbutton/skin/tor-24.png");
+ list-style-image: url("chrome://torbutton/skin/torbutton.svg");
}
#torbutton-button[tbstatus="on"] {
- list-style-image: url("chrome://torbutton/skin/tor-enabled-24.png");
+ opacity: 1.0;
}
#torbutton-button[tbstatus="off"] {
- list-style-image: url("chrome://torbutton/skin/tor-disabled-24.png");
+ opacity: 0.4;
}
#torbutton-button[tbUpdateNeeded="true"] {
- list-style-image: url("chrome://torbutton/skin/tor-update-24.gif");
-}
-toolbar[iconsize="small"] #torbutton-button {
- list-style-image: url("chrome://torbutton/skin/tor-16.png");
-}
-/* Although the tor-enabled-16.png, tor-disabled-16.png and tor-update-16.gif
-indicate that they are 16x16 icons, they have 18x18 pixels in fact. This
-leads to resizing the content window's height on start-up on Windows at
-least. To guarantee a content window with a multiple of 200x100 we
-therefore use only a x16 part of each icon while trying to minimize bad UI
-effects until #8941 gets fixed.*/
-toolbar[iconsize="small"] #torbutton-button[tbstatus="on"] {
- list-style-image: url("chrome://torbutton/skin/tor-enabled-16.png");
- -moz-image-region: rect(1px, 17px, 17px, 1px);
-}
-toolbar[iconsize="small"] #torbutton-button[tbstatus="off"] {
- list-style-image: url("chrome://torbutton/skin/tor-disabled-16.png");
- -moz-image-region: rect(0px, 18px, 16px, 0px);
-}
-toolbar[iconsize="small"] #torbutton-button[tbUpdateNeeded="true"] {
- list-style-image: url("chrome://torbutton/skin/tor-update-16.gif");
- -moz-image-region: rect(1px, 17px, 17px, 1px);
+ opacity: 1.0;
+ animation: blink-update normal 1s infinite ease-in-out;
}
#torbutton-button-tb {
- list-style-image: url("chrome://torbutton/skin/tor-24.png");
+ list-style-image: url("chrome://torbutton/skin/torbutton.svg");
}
#torbutton-button-tb[tbstatus="on"] {
- list-style-image: url("chrome://torbutton/skin/tor-enabled-24.png");
+ opacity: 1.0;
}
#torbutton-button-tb[tbstatus="off"] {
- list-style-image: url("chrome://torbutton/skin/tor-disabled-24.png");
-}
-toolbar[iconsize="small"] #torbutton-button-tb {
- list-style-image: url("chrome://torbutton/skin/tor-16.png");
-}
-toolbar[iconsize="small"] #torbutton-button-tb[tbstatus="on"] {
- list-style-image: url("chrome://torbutton/skin/tor-enabled-16.png");
-}
-toolbar[iconsize="small"] #torbutton-button-tb[tbstatus="off"] {
- list-style-image: url("chrome://torbutton/skin/tor-disabled-16.png");
+ opacity: 0.4;
}
#torbutton-button-tb-msg {
- list-style-image: url("chrome://torbutton/skin/tor-24.png");
+ list-style-image: url("chrome://torbutton/skin/torbutton.svg");
}
#torbutton-button-tb-msg[tbstatus="on"] {
- list-style-image: url("chrome://torbutton/skin/tor-enabled-24.png");
+ opacity: 1.0;
}
#torbutton-button-tb-msg[tbstatus="off"] {
- list-style-image: url("chrome://torbutton/skin/tor-disabled-24.png");
-}
-toolbar[iconsize="small"] #torbutton-button-tb-msg {
- list-style-image: url("chrome://torbutton/skin/tor-16.png");
-}
-toolbar[iconsize="small"] #torbutton-button-tb-msg[tbstatus="on"] {
- list-style-image: url("chrome://torbutton/skin/tor-enabled-16.png");
-}
-toolbar[iconsize="small"] #torbutton-button-tb-msg[tbstatus="off"] {
- list-style-image: url("chrome://torbutton/skin/tor-disabled-16.png");
+ opacity: 0.4;
}
#torbutton-checkForUpdate[tbUpdateNeeded] {
diff --git a/src/chrome/skin/torbutton.svg b/src/chrome/skin/torbutton.svg
new file mode 100644
index 0000000..518e981
--- /dev/null
+++ b/src/chrome/skin/torbutton.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g id="Icon---Tor-" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="Tor-Button-Icon" transform="translate(2.000000, 1.000000)" fill="#0C0C0D">
+ <path d="M8.27206791,6.27905236 C7.88283063,6.53485117 6.37928571,7.48491742 6.38222311,7.48303971 C5.92467564,7.77552366 5.55774616,8.01739321 5.22956304,8.24495813 C4.62774003,8.66226724 4.1902024,9.01032507 3.90524298,9.30237927 C2.34845165,10.8521114 1.86583368,12.1863028 2.03292037,14.2840468 C2.17744778,16.6290092 3.98280543,18.7226974 6.62789966,19.5725823 C7.66430091,19.8978216 8.64783036,20 10.3045058,20 C12.4566798,20 14.4305353,19.426444 15.7257727,18.390024 C17.1602235,17.2499732 18,15.5258216 18,13.7581121 C18,11.9676824 17.2065463,10.2463814 15.7919239,9.00433992 C15.0624549,8.37501782 14.1112169,7.77509114 12.728283,7.03810567 C11.4758566,6.39901667 10.3718516,5.26209475 9.95586156,3.83344263 C9.74417905,4.87665258 9.16812751,5.7299448 8.27206791,6.27905236 Z M17.1048177,7.49557522 C18.9563878,9.1179941 20,11.3893805 20,13.7581121 C20,16.1268437 18.889058,18.4306785 16.9701581,19.9557522 C15.1859178,21.3834808 12.6947145,22 10.3045058,22 C8.8232498,22 7.47
665339,21.9351032 6.02906225,21.480826 C2.69623613,20.4100295 0.238697687,17.6843658 0.0367082257,14.4070796 C-0.165281236,11.8761062 0.440687149,9.92920354 2.49424667,7.88495575 C3.53785889,6.81415929 5.69241315,5.58112094 7.1736692,4.60766962 C7.91429722,4.15339233 8.68859016,2.79056047 7.20733411,0.227138643 L7.5103183,0 L11.9204215,1.75221239 C11.3144532,3.63421829 13.0650285,4.96460177 13.637332,5.25663717 C14.9165986,5.9380531 16.1285353,6.6519174 17.1048177,7.49557522 Z" id="Border" fill-rule="nonzero"></path>
+ <path d="M10,5.80000019 C10.3632315,6.90320629 11.2333653,7.78038283 12.2159038,8.28105702 C13.3397544,8.87914153 14.1127842,9.36599897 14.7055922,9.87671162 C15.8551945,10.8846633 16.5,12.2815477 16.5,13.7345319 C16.5,15.1690781 15.81755,16.5682758 14.6518339,17.4934592 C13.5992506,18.3345433 11.9951837,18.8000002 10.2462051,18.8000002 C10.1620472,18.8000002 10.0800269,18.7996762 10,18.7990042 L10,5.80000019 Z" id="Half-Content"></path>
+ </g>
+ </g>
+</svg>
1
0

[tor-browser-build/master] Bug 26475: Make macOS bundles based on ESR60 reproducible
by gk@torproject.org 24 Jun '18
by gk@torproject.org 24 Jun '18
24 Jun '18
commit d9db6035a3e0f0423accb7d6c3b9a2680577436f
Author: Georg Koppen <gk(a)torproject.org>
Date: Sun Jun 24 11:26:00 2018 +0000
Bug 26475: Make macOS bundles based on ESR60 reproducible
We know that Stylo is causing reproducibility issues on macOS, disable
it for now.
---
projects/firefox/mozconfig-osx-x86_64 | 3 +++
1 file changed, 3 insertions(+)
diff --git a/projects/firefox/mozconfig-osx-x86_64 b/projects/firefox/mozconfig-osx-x86_64
index 1e30084..7ff17e1 100644
--- a/projects/firefox/mozconfig-osx-x86_64
+++ b/projects/firefox/mozconfig-osx-x86_64
@@ -48,6 +48,9 @@ ac_add_options --disable-crashreporter
ac_add_options --disable-maintenance-service
ac_add_options --disable-webrtc
ac_add_options --disable-tests
+# We need to disable for Stylo right now, as we have reproducibility issues on
+# macOS with it enabled, see: #26475.
+ac_add_options --disable-stylo
# Let's make sure no preference is enabling either Adobe's or Google's CDM.
ac_add_options --disable-eme
# ac_add_options --disable-ctypes
1
0
commit a95236c79eeb8c05d681633249dfcd0e131e97ac
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Jun 23 11:24:01 2018 +0000
Pick up new tor-browser tag
Picking up build2 and updating the Changelog
---
projects/firefox/config | 2 +-
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 13 ++++++++++---
rbm.conf | 2 +-
3 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/projects/firefox/config b/projects/firefox/config
index 350b4fd..51dc04a 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
filename: 'firefox-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
-git_hash: 'tor-browser-[% c("var/firefox_version") %]-[% c("var/torbrowser_branch") %]-1-build1'
+git_hash: 'tor-browser-[% c("var/firefox_version") %]-[% c("var/torbrowser_branch") %]-1-build2'
tag_gpg_id: 1
git_url: https://git.torproject.org/tor-browser.git
gpg_keyring: torbutton.gpg
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 7a536da..1ceda50 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -12,9 +12,9 @@ Tor Browser 8.0a9 -- June 27 2018
* Bug 26129: Show our about:tor page on startup
* Bug 26235: Hide new unusable items from help menu
* Bug 26058: Remove workaround for hiding 'sign in to sync' button
- * Bug 20628: Add locales bn-BD, da, he, sv, zh-TW
+ * Bug 20628: Add locales da, he, sv, and zh-TW
* Translations update
- * Update Tor Launcher to 0.2.16
+ * Update Tor Launcher to 0.2.16.1
* Bug 25750: Update Tor Launcher to make it compatible with Firefox 60 ESR
* Bug 20890: Increase control port connection timeout
* Bug 20628: Add more locales to Tor Browser
@@ -24,13 +24,14 @@ Tor Browser 8.0a9 -- June 27 2018
* Bug 25543: Rebase Tor Browser patches for ESR60
* Bug 23247: Show security state of .onions
* Bug 26039: Load our preferences that modify extensions
+ * Bug 17965: Isolate HPKP and HSTS to URL bar domain
* Bug 26365: Add potential AltSvc support
* Bug 26045: Add new MAR signing keys
* Bug 22564: Hide Firefox Sync
* Bug 25090: Disable updater telemetry
* Bug 26127: Make sure Torbutton and Tor Launcher are not treated as legacy extensions
* Bug 26073: Migrate general.useragent.locale to intl.locale.requested
- * Bug 20628: Make Tor Browser available in bn-BD, da, he, sv-SE, and zh-TW
+ * Bug 20628: Make Tor Browser available in da, he, sv-SE, and zh-TW
* Bug 12927: Include Hebrew translation into Tor Browser
* Bug 21245: Add danish (da) translation
* Windows
@@ -40,10 +41,16 @@ Tor Browser 8.0a9 -- June 27 2018
* Bug 26304: Update zlib to version 1.2.11
* OS X
* Bug 24052: Backport fix for bug 1412081 for better file:// handling
+ * Bug 24136: After loading file:// URLs clicking on links is broken on OS X
+ * Bug 24243: Tor Browser only renders HTML for local pages via file://
+ * Bug 24263: Tor Browser does not run extension scripts if loaded via about:debugging
* Bug 24632: Disable snowflake for now until its build is fixed
* Bug 26438: Remove broken seatbelt profiles
* Linux
* Bug 24052: Backport fix for bug 1412081 for better file:// handling
+ * Bug 24136: After loading file:// URLs clicking on links is broken on Linux
+ * Bug 24243: Tor Browser only renders HTML for local pages via file://
+ * Bug 24263: Tor Browser does not run extension scripts if loaded via about:debugging
* Bug 26153: Update selfrando to be compatible with Firefox 60 ESR
* Bug 22242: Remove RUNPATH in Linux binaries embedded by selfrando
* Bug 26354: Set SSE2 support as minimal requirement for Tor Browser 8
diff --git a/rbm.conf b/rbm.conf
index d15415e..67ac46d 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -16,7 +16,7 @@ buildconf:
var:
torbrowser_version: '8.0a9'
- torbrowser_build: 'build1'
+ torbrowser_build: 'build2'
torbrowser_incremental_from:
- 8.0a8
project_name: tor-browser
1
0

[tor-browser-build/master] fixup! Bug 26039: <profiledir>/preferences/extension-overrides.js will not be loaded in ESR 60
by gk@torproject.org 23 Jun '18
by gk@torproject.org 23 Jun '18
23 Jun '18
commit c21b1a526ac1e199990496c234532ed309b6209e
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Jun 23 10:46:30 2018 +0000
fixup! Bug 26039: <profiledir>/preferences/extension-overrides.js will not be loaded in ESR 60
There is no `extension-overrides.js` in a profile direcory anymore.
---
projects/tor-browser/build | 2 --
1 file changed, 2 deletions(-)
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 4068eae..0c3e583 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -90,8 +90,6 @@ tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -xf [% c('input_files
mkdir -p $SKELETON_TMP_RESOURCES/browser
echo "[XRE]" > $SKELETON_TMP_RESOURCES/browser/override.ini
echo "EnableProfileMigrator=0" >> $SKELETON_TMP_RESOURCES/browser/override.ini
- mkdir -p $SKELETON_TMP_RESOURCES/distribution/preferences
- cp -p Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js $SKELETON_TMP_RESOURCES/distribution/preferences
mkdir -p $SKELETON_TMP_RESOURCES/TorBrowser/Tor
cp -p Bundle-Data/mac/TorBrowser/Data/Tor/torrc-defaults $SKELETON_TMP_RESOURCES/TorBrowser/Tor/
# Place a copy of the bookmarks.html file at the top. It will be moved into
1
0

[tor-browser-build/master] Bug 26186: Replace usage of `intl.locale.matchOS` in tor-browser's build script
by gk@torproject.org 23 Jun '18
by gk@torproject.org 23 Jun '18
23 Jun '18
commit 6da864eb71aa8271b7699023eba373a43a0eeccd
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Fri Jun 22 11:11:09 2018 -0400
Bug 26186: Replace usage of `intl.locale.matchOS` in tor-browser's build script
`intl.locale.matchOS` has been deprecated and the new preference is
`intl.locale.requested`, which is set by commit 473342eefe. See bug
26073 for more information.
---
projects/tor-browser/build | 1 -
1 file changed, 1 deletion(-)
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index f3ed949..cca23c0 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -146,7 +146,6 @@ cat Bundle-Data/PTConfigs/meek-http-helper-user.js >> "$TBDIR/$MEEKPROFILEPATH/u
[% IF ! c("var/multi_lingual") %]
echo 'pref("extensions.torlauncher.prompt_for_locale", false);' >> "$EXTOVERRIDESPATH"
- echo 'pref("intl.locale.matchOS", false);' >> "$EXTOVERRIDESPATH"
[% END %]
[% IF c("var/linux") %]
1
0

[tor-browser-build/master] Merge remote-tracking branch 'sukhe/bug-26186'
by gk@torproject.org 23 Jun '18
by gk@torproject.org 23 Jun '18
23 Jun '18
commit 552dcb823fa523449d4aa5022e1cf70fe785b8e0
Merge: bff4fd1 6da864e
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Jun 23 10:07:15 2018 +0000
Merge remote-tracking branch 'sukhe/bug-26186'
projects/tor-browser/build | 1 -
1 file changed, 1 deletion(-)
1
0

[tor-browser-build/master] bn-BD locale is currently broken in Tor Browser
by gk@torproject.org 23 Jun '18
by gk@torproject.org 23 Jun '18
23 Jun '18
commit bff4fd1fe7a4e1f105973e9af217b8fefc3db392
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Jun 23 10:01:15 2018 +0000
bn-BD locale is currently broken in Tor Browser
---
projects/tor-launcher/config | 2 +-
rbm.conf | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/projects/tor-launcher/config b/projects/tor-launcher/config
index c42e18c..013b897 100644
--- a/projects/tor-launcher/config
+++ b/projects/tor-launcher/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 0.2.16
+version: 0.2.16.1
git_url: https://git.torproject.org/tor-launcher.git
git_hash: '[% c("version") %]'
gpg_keyring: torbutton.gpg
diff --git a/rbm.conf b/rbm.conf
index ae8dc96..d15415e 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -52,7 +52,6 @@ var:
locale_ja: ja
locales:
- ar
- - bn-BD
- da
- de
- es-ES
1
0

[tor-browser/tor-browser-60.1.0esr-8.0-1] fixup! TB4: Tor Browser's Firefox preference overrides.
by gk@torproject.org 23 Jun '18
by gk@torproject.org 23 Jun '18
23 Jun '18
commit a0efd2fcd6e945919b46c9204846b14cdcc188bb
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Jun 23 09:45:36 2018 +0000
fixup! TB4: Tor Browser's Firefox preference overrides.
We modify the language packs to add our own search engines etc. and
therefore breaks Mozilla's signature, see: 26465. Thus, we need to
disable the signing requirement for language packs right now.
---
browser/app/profile/000-tor-browser.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index dd494b80ebe0..c3d83adf7d43 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -351,6 +351,9 @@ pref("security.family_safety.mode", 0);
// Enforce SHA1 deprecation, see: bug 18042.
pref("security.pki.sha1_enforcement_level", 2);
+// Disable the language pack signing check for now, see: bug 26465
+pref("extensions.langpacks.signatures.required", false);
+
// Avoid report TLS errors to Mozilla. We might want to repurpose this feature
// one day to help detecting bad relays (which is bug 19119). For now we just
// hide the checkbox, see bug 22072.
1
0

23 Jun '18
commit 78001e61af52485ecfa20e6fe6a34f705ee3d91c
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Jun 23 08:53:30 2018 +0000
Version bump and translation update
---
src/chrome/locale/pt/network-settings.dtd | 6 +++---
src/chrome/locale/pt/torlauncher.properties | 28 ++++++++++++++--------------
src/install.rdf | 2 +-
3 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/src/chrome/locale/pt/network-settings.dtd b/src/chrome/locale/pt/network-settings.dtd
index b0b6e52..e528c95 100644
--- a/src/chrome/locale/pt/network-settings.dtd
+++ b/src/chrome/locale/pt/network-settings.dtd
@@ -52,11 +52,11 @@
<!ENTITY torsettings.copyLog "Copiar o Registo do Tor para a Área de Transferência">
<!ENTITY torsettings.proxyHelpTitle "Ajuda de Proxy">
-<!ENTITY torsettings.proxyHelp1 "A local proxy is needed when connecting through a company, school, or university network. If you are not sure how to answer this question, look at the Internet settings in another browser or check your system's network settings to see whether a proxy is needed.">
+<!ENTITY torsettings.proxyHelp1 "é necessário um proxy local quando ligar através de uma rede de empresa, escolar ou universitária. Se não tiver a certeza de como responder a esta questão, verifique as definições da Internet em outro navegador ou verifique as definições de rede do seu sistema para ver se é necessário um proxy.">
<!ENTITY torsettings.bridgeHelpTitle "Ajuda da Retransmissão de Ponte">
-<!ENTITY torsettings.bridgeHelp1 "Bridges are unlisted relays that make it more difficult to block connections to the Tor Network.  Each type of bridge uses a different method to avoid censorship.  The obfs ones make your traffic look like random noise, and the meek ones make your traffic look like it's connecting to that service instead of Tor.">
-<!ENTITY torsettings.bridgeHelp2 "Because of how certain countries try to block Tor, certain bridges work in certain countries but not others.  If you are unsure about which bridges work in your country, visit torproject.org/about/contact.html#support">
+<!ENTITY torsettings.bridgeHelp1 "As pontes são retransmissões não listadas que dificultam o bloqueio de ligações à Rede Tor. Cada tipo de ponte utiliza um método diferente para evitar a censura. Os "obfs" fazem com que o seu tráfego pareça um ruído aleatório, e os pacíficos fazem com que o seu tráfego pareça que está a ligar-se ao serviço, em vez ao Tor.">
+<!ENTITY torsettings.bridgeHelp2 "Por causa de como certos países tentam bloquear o Tor, certas pontes funcionam em certos países, mas não em outros. Se não tiver a certeza sobre quais as pontes que funcionam no seu país, visite torproject.org/about/contact.htmupport">
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Por favor, aguarde, enquanto nós estabelecemos uma ligação à rede Tor.  Isto pode demorar alguns minutos.">
diff --git a/src/chrome/locale/pt/torlauncher.properties b/src/chrome/locale/pt/torlauncher.properties
index d90dca4..dd89633 100644
--- a/src/chrome/locale/pt/torlauncher.properties
+++ b/src/chrome/locale/pt/torlauncher.properties
@@ -4,7 +4,7 @@
torlauncher.error_title=Tor Launcher
torlauncher.tor_exited_during_startup=O Tor fechou-se durante o arranque. Isto pode ter acontecido devido a erro no seu ficheiro torrc, um erro no Tor ou outro programa no seu sistema, ou falha de hardware. Até que corrija o problema em causa reinicie o Tor, o Tor Browser não irá iniciar.
-torlauncher.tor_exited=O Tor encerrou inesperadamente. Isto pode ter acontecido devido a erro dentro do Tor, outro programa no seu sistema ou falha de hardware. Até que reinicie o Tor, o Tor Browser não irá poder aceder a quaisquer sítios da Web. Se o problema persistir, por favor, envie uma cópia do Registo de Eventos do seu Tor para a equipa de suporte.
+torlauncher.tor_exited=O Tor fechou.se inesperadamente. Isto pode ter acontecido devido a erro dentro do Tor, outro programa no seu sistema ou falha de hardware. Até que reinicie o Tor, o Tor Browser não irá poder aceder a quaisquer sítios da Web. Se o problema persistir, por favor, envie uma cópia do Registo de Eventos do seu Tor para a equipa de suporte.
torlauncher.tor_exited2=Ao reiniciar o Tor não irá fechar os separadores do seu navegador.
torlauncher.tor_controlconn_failed=Não foi possível ligar à porta de controlo do Tor.
torlauncher.tor_failed_to_start=O Tor não foi iniciado.
@@ -15,7 +15,7 @@ torlauncher.tor_bootstrap_failed_details=%1$S falhou (%2$S).
torlauncher.unable_to_start_tor=Não é possível iniciar o Tor.\n\n %S
torlauncher.tor_missing=O executável do Tor está em falta.
torlauncher.torrc_missing=O ficheiro torc está em falta e não foi possível criá-lo.
-torlauncher.datadir_missing=A diretoria de dados Tor não existe e não foi possível criá-la.
+torlauncher.datadir_missing=A diretoria de dados do Tor não existe e não foi possível criá-la.
torlauncher.password_hash_missing=Não foi possível obter a palavra-passe "hashed".
torlauncher.failed_to_get_settings=Não é possível obter as configurações do Tor\n\n %S
@@ -26,20 +26,20 @@ torlauncher.error_proxy_addr_missing=Deve especificar ambos, um endereço de IP
torlauncher.error_proxy_type_missing=Deve selecionar o tipo de proxy.
torlauncher.error_bridges_missing=Deve especificar uma ou mais pontes.
torlauncher.error_default_bridges_type_missing=Deve selecionar o tipo de transporte para as pontes fornecidas
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
+torlauncher.error_bridgedb_bridges_missing=Por favor, solicite uma ponte.
torlauncher.error_bridge_bad_default_type=Não estão disponíveis as pontes fornecidas que têm o tipo de transporte %S. Por favor, ajuste as suas configurações.
torlauncher.bridge_suffix.meek-amazon=(funciona na China)
torlauncher.bridge_suffix.meek-azure=(funciona na China)
-torlauncher.request_a_bridge=Request a Bridge…
-torlauncher.request_a_new_bridge=Request a New Bridge…
-torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
+torlauncher.request_a_bridge=Solicite uma Ponte...
+torlauncher.request_a_new_bridge=Solicite uma Nova Ponte...
+torlauncher.contacting_bridgedb=A contactar BridgeDB. Por favor, aguarde.
+torlauncher.captcha_prompt=Resolva o CAPTCHA para solicitar uma ponte.
+torlauncher.bad_captcha_solution=A solução não está correta. Por favor, tente novamente.
+torlauncher.unable_to_get_bridge=Não é possível obter uma ponte de BridgeDB.\n\n%S
+torlauncher.no_meek=Este navegador não está configurado para "meek", que é necessário para obter as pontes.
+torlauncher.no_bridges_available=De momento, não estão disponíveis pontes. Desculpe.
torlauncher.connect=Ligar
torlauncher.restart_tor=Reiniciar o Tor
@@ -73,6 +73,6 @@ torlauncher.bootstrapWarning.noroute=sem rota para o hospedeiro
torlauncher.bootstrapWarning.ioerror=Erro de leitura/gravação
torlauncher.bootstrapWarning.pt_missing=transporte de ligação em falta
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
+torlauncher.nsresult.NS_ERROR_NET_RESET=A ligação para o servidor foi perdida.
+torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Não foi possível ligar ao servidor.
+torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Não foi possível ligar ao proxy.
diff --git a/src/install.rdf b/src/install.rdf
index 011ab5b..5a31473 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -7,7 +7,7 @@
<em:creator>The Tor Project, Inc.</em:creator>
<em:contributor>Pearl Crescent, LLC</em:contributor>
<em:id>tor-launcher(a)torproject.org</em:id>
- <em:version>0.2.16</em:version>
+ <em:version>0.2.16.1</em:version>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html</em:homepageURL>
<em:updateURL>data:text/plain,</em:updateURL>
1
0

[tor-launcher/master] Bug 26466: Remove sv-SE from tracking for releases
by gk@torproject.org 23 Jun '18
by gk@torproject.org 23 Jun '18
23 Jun '18
commit 300d8921fe752e3168e7071bf2506762e96f10d7
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Jun 23 08:44:33 2018 +0000
Bug 26466: Remove sv-SE from tracking for releases
sv-SE is essentially not used for Swedish translations. We should fall
back to sv.
---
src/chrome/locale/sv-SE/network-settings.dtd | 55 --------------------------
src/chrome/locale/sv-SE/torlauncher.properties | 31 ---------------
2 files changed, 86 deletions(-)
diff --git a/src/chrome/locale/sv-SE/network-settings.dtd b/src/chrome/locale/sv-SE/network-settings.dtd
deleted file mode 100644
index 6ce1473..0000000
--- a/src/chrome/locale/sv-SE/network-settings.dtd
+++ /dev/null
@@ -1,55 +0,0 @@
-<!ENTITY torsettings.dialog.title "">
-
-<!-- For "first run" wizard: -->
-
-<!ENTITY torsettings.prompt "">
-
-<!ENTITY torSettings.yes "">
-<!ENTITY torSettings.no "">
-
-<!ENTITY torSettings.firstQuestion "">
-<!ENTITY torSettings.configurePrompt1 "">
-<!ENTITY torSettings.configurePrompt2 "">
-<!ENTITY torSettings.configure "">
-<!ENTITY torSettings.connectPrompt1 "">
-<!ENTITY torSettings.connectPrompt2 "">
-<!ENTITY torSettings.connect "">
-
-<!ENTITY torSettings.proxyQuestion "">
-<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "">
-<!ENTITY torSettings.enterProxy "">
-<!ENTITY torSettings.firewallQuestion "">
-<!ENTITY torSettings.firewallHelp "">
-<!ENTITY torSettings.enterFirewall "">
-<!ENTITY torSettings.bridgeQuestion "">
-
-<!-- Other: -->
-
-<!ENTITY torsettings.startingTor "">
-<!ENTITY torsettings.restart "">
-
-<!ENTITY torsettings.optional "">
-
-<!ENTITY torsettings.useProxy.checkbox "">
-<!ENTITY torsettings.useProxy.type "">
-<!ENTITY torsettings.useProxy.address "">
-<!ENTITY torsettings.useProxy.address.placeholder "">
-<!ENTITY torsettings.useProxy.port "">
-<!ENTITY torsettings.useProxy.username "">
-<!ENTITY torsettings.useProxy.password "">
-<!ENTITY torsettings.useProxy.type.socks4 "">
-<!ENTITY torsettings.useProxy.type.socks5 "">
-<!ENTITY torsettings.useProxy.type.http "">
-<!ENTITY torsettings.firewall.checkbox "">
-<!ENTITY torsettings.firewall.allowedPorts "">
-<!ENTITY torsettings.useBridges.checkbox "">
-<!ENTITY torsettings.useBridges.label "">
-<!ENTITY torsettings.useBridges.placeholder "">
-
-<!ENTITY torsettings.copyLog "">
-<!ENTITY torsettings.bridgeHelpTitle "">
-<!ENTITY torsettings.bridgeHelp1 "">
-<!ENTITY torsettings.bridgeHelp2 "">
-<!ENTITY torsettings.bridgeHelp3 "">
-<!ENTITY torsettings.bridgeHelp4 "">
diff --git a/src/chrome/locale/sv-SE/torlauncher.properties b/src/chrome/locale/sv-SE/torlauncher.properties
deleted file mode 100644
index fcd4d83..0000000
--- a/src/chrome/locale/sv-SE/torlauncher.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-### Copyright (c) 2013, The Tor Project, Inc.
-### See LICENSE for licensing information.
-
-# torlauncher.error_title=Tor Launcher
-
-# torlauncher.tor_exited=Tor unexpectedly exited.
-# torlauncher.please_restart_app=Please restart this application.
-# torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-# torlauncher.tor_failed_to_start=Tor failed to start.
-# torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.\n\n%S
-
-# torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-# torlauncher.tor_missing=The Tor executable is missing.
-# torlauncher.torrc_missing=The torrc file is missing.
-# torlauncher.datadir_missing=The Tor data directory does not exist.
-# torlauncher.password_hash_missing=Failed to get hashed password.
-
-# torlauncher.failed_to_get_settings=Unable to retrieve Tor settings.\n\n%S
-# torlauncher.failed_to_save_settings=Unable to save Tor settings.\n\n%S
-# torlauncher.ensure_tor_is_running=Please ensure that Tor is running.
-
-# torlauncher.error_proxy_addr_missing=You must specify both an IP address or hostname and a port number to configure Tor to use a proxy to access the Internet.
-# torlauncher.error_proxy_type_missing=You must select the proxy type.
-# torlauncher.error_bridges_missing=You must specify one or more bridges.
-
-# torlauncher.connect=Connect
-# torlauncher.quit=Quit
-# torlauncher.quit_win=Exit
-# torlauncher.done=Done
-
-# torlauncher.forAssistance=For assistance, contact %S
1
0

[tor-browser-build/master] Merge remote-tracking branch 'boklm/bug_26461'
by gk@torproject.org 23 Jun '18
by gk@torproject.org 23 Jun '18
23 Jun '18
commit fd92d4d0b055f14763d925305e93f78fa4b3146d
Merge: 7dc74d1 45f1b0a
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Jun 23 06:43:43 2018 +0000
Merge remote-tracking branch 'boklm/bug_26461'
tools/update-responses/update_responses | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
1
0

[tor-browser-build/master] Bug 26461: fix error when {alpha, release}/signed doesn't exist
by gk@torproject.org 23 Jun '18
by gk@torproject.org 23 Jun '18
23 Jun '18
commit 45f1b0a0c0e6e4ebe5dc330b2c1ac052838b060f
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri Jun 22 17:34:23 2018 +0200
Bug 26461: fix error when {alpha,release}/signed doesn't exist
Use make_path instead of mkdir to create all needed parent directories.
---
tools/update-responses/update_responses | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index 77b9c96..3295808 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -6,6 +6,7 @@ use English;
use FindBin;
use YAML qw(LoadFile);
use File::Slurp;
+use File::Path qw(make_path);
use Digest::SHA qw(sha256_hex);
use XML::Writer;
use Cwd;
@@ -547,7 +548,7 @@ sub download_version {
"$tmpdir/sha256sums-signed-build.txt")) {
exit_error "Error checking gpg signature for version $version";
}
- mkdir $destdir;
+ make_path $destdir;
move "$tmpdir/sha256sums-signed-build.txt.asc", "$destdir/sha256sums-signed-build.txt.asc";
move "$tmpdir/sha256sums-signed-build.txt", "$destdir/sha256sums-signed-build.txt";
my %sums = map { chomp; reverse split ' ', $_ }
1
0

[tor-browser-build/maint-7.5] Bug 26461: fix error when {alpha, release}/signed doesn't exist
by gk@torproject.org 23 Jun '18
by gk@torproject.org 23 Jun '18
23 Jun '18
commit b4ceb77a9a481f3770129959e899f5866f049c7a
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri Jun 22 17:34:23 2018 +0200
Bug 26461: fix error when {alpha,release}/signed doesn't exist
Use make_path instead of mkdir to create all needed parent directories.
---
tools/update-responses/update_responses | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index 1df35b3..f776521 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -6,6 +6,7 @@ use English;
use FindBin;
use YAML qw(LoadFile);
use File::Slurp;
+use File::Path qw(make_path);
use Digest::SHA qw(sha256_hex);
use XML::Writer;
use Cwd;
@@ -546,7 +547,7 @@ sub download_version {
"$tmpdir/sha256sums-signed-build.txt")) {
exit_error "Error checking gpg signature for version $version";
}
- mkdir $destdir;
+ make_path $destdir;
move "$tmpdir/sha256sums-signed-build.txt.asc", "$destdir/sha256sums-signed-build.txt.asc";
move "$tmpdir/sha256sums-signed-build.txt", "$destdir/sha256sums-signed-build.txt";
my %sums = map { chomp; reverse split ' ', $_ }
1
0

[tor-browser-build/master] Bug 26462: Unbreak Firefox 60 ESR 32bit Linux compilation
by gk@torproject.org 23 Jun '18
by gk@torproject.org 23 Jun '18
23 Jun '18
commit 7dc74d1652c560e193d1a4c3331efcfb08ee67b0
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 22 21:16:14 2018 +0000
Bug 26462: Unbreak Firefox 60 ESR 32bit Linux compilation
For some reason the switch from 60.0.1esr to 60.1.0esr is causing
to break our builds because the 32bit linker is not capable of linking
gkrust nor libxul due to address space limitations anymore.
We keep the configuration for 32bit Linux bundles as we shipped them in
our nightly builds over the past couple of weeks but are avoiding
building browser debug information for now.
---
projects/firefox/build | 4 ++--
projects/firefox/mozconfig-linux-i686 | 3 +--
projects/tor-browser/build | 4 +++-
3 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index 9f849b0..f023c6d 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -202,7 +202,7 @@ cp -p obj-*/dist/host/bin/mbsdiff $MARTOOLS/
cd $distdir
-[% IF c("var/linux") %]
+[% IF c("var/linux-x86_64") %]
# Strip and generate debuginfo for the firefox binary that we keep, all *.so
# files, the plugin-container, and the updater (see ticket #10126)
for LIB in Browser/*.so Browser/firefox Browser/plugin-container Browser/updater
@@ -244,7 +244,7 @@ END;
tar_args => '-czf ' _ dest_dir _ '/' _ c('filename') _ '/tor-browser.tar.gz',
}) %]
-[% IF c("var/linux") %]
+[% IF c("var/linux-x86_64") %]
[% c('tar', {
tar_src => [ 'Debug' ],
tar_args => '-cJf ' _ dest_dir _ '/' _ c('filename') _ '/tor-browser-debug.tar.xz',
diff --git a/projects/firefox/mozconfig-linux-i686 b/projects/firefox/mozconfig-linux-i686
index b677df3..ec0adb9 100755
--- a/projects/firefox/mozconfig-linux-i686
+++ b/projects/firefox/mozconfig-linux-i686
@@ -24,10 +24,9 @@ ac_add_options --enable-tor-browser-update
ac_add_options --enable-signmar
ac_add_options --enable-verify-mar
-ac_add_options --disable-strip
-ac_add_options --disable-install-strip
ac_add_options --disable-tests
ac_add_options --disable-debug
+ac_add_options --disable-debug-symbols
ac_add_options --disable-maintenance-service
ac_add_options --disable-crashreporter
ac_add_options --disable-webrtc
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index f3ed949..4c06412 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -300,8 +300,10 @@ cd $distdir
rm -rf $distdir/${PKG_DIR}
cp $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip "$OUTDIR"/
-[% IF c("var/linux") -%]
+[% IF c("var/linux-x86_64") -%]
cp $rootdir/[% c('input_files_by_name/firefox') %]/tor-browser-debug.tar.xz "$OUTDIR"/tor-browser-[% c("var/mar_osname") %]-debug.tar.xz
+[% END -%]
+[% IF c("var/linux") -%]
cp $rootdir/[% c('input_files_by_name/tor') %]/tor-debug.tar.xz "$OUTDIR"/tor-[% c("var/mar_osname") %]-debug.tar.xz
[% END -%]
1
0

22 Jun '18
commit 0709bf672473a4440a3d0a09d6f30ebd03433d28
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 22 09:17:21 2018 +0000
Release preparations for 8.0a9
Changelog update and versions bump
---
projects/firefox-langpacks/config | 2 +-
projects/firefox/config | 2 +-
projects/https-everywhere/config | 2 +-
.../tor-browser/Bundle-Data/Docs/ChangeLog.txt | 78 ++++++++++++++++++++++
projects/tor-browser/config | 4 +-
projects/tor-launcher/config | 2 +-
projects/tor/config | 2 +-
projects/torbutton/config | 2 +-
rbm.conf | 4 +-
9 files changed, 88 insertions(+), 10 deletions(-)
diff --git a/projects/firefox-langpacks/config b/projects/firefox-langpacks/config
index 4e42939..04cd7dd 100644
--- a/projects/firefox-langpacks/config
+++ b/projects/firefox-langpacks/config
@@ -4,7 +4,7 @@ filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/buil
var:
ff_version: '[% pc("firefox", "var/firefox_version") %]'
- ff_build: build1
+ ff_build: build2
ff_arch: linux-i686
input_filename: 'dl-langpack-[% c("var/ff_arch") %]-[% c("version") %]'
diff --git a/projects/firefox/config b/projects/firefox/config
index c2cbebd..350b4fd 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -7,7 +7,7 @@ git_url: https://git.torproject.org/tor-browser.git
gpg_keyring: torbutton.gpg
var:
- firefox_platform_version: 60.0.1
+ firefox_platform_version: 60.1.0
firefox_version: '[% c("var/firefox_platform_version") %]esr'
torbrowser_branch: 8.0
torbrowser_update_channel: alpha
diff --git a/projects/https-everywhere/config b/projects/https-everywhere/config
index cfa0a78..739347b 100644
--- a/projects/https-everywhere/config
+++ b/projects/https-everywhere/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 2018.4.11
+version: 2018.6.21
git_url: https://git.torproject.org/https-everywhere.git
git_hash: '[% c("version") %]'
git_submodule: 1
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 4438a9d..7a536da 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,81 @@
+Tor Browser 8.0a9 -- June 27 2018
+ * All platforms
+ * Update Firefox to 60.1.0esr
+ * Update Tor to 0.3.4.2-alpha
+ * Update Libevent to 2.1.8
+ * Update Binutils to 2.26.1
+ * Update Torbutton to 2.0
+ * Bug 26100: Adapt Torbutton to Firefox 60 ESR
+ * Bug 24309: Move circuit display to the identity popup
+ * Bug 26128: Adapt security slider to the WebExtensions version of NoScript
+ * Bug 23247: Show security state of .onions
+ * Bug 26129: Show our about:tor page on startup
+ * Bug 26235: Hide new unusable items from help menu
+ * Bug 26058: Remove workaround for hiding 'sign in to sync' button
+ * Bug 20628: Add locales bn-BD, da, he, sv, zh-TW
+ * Translations update
+ * Update Tor Launcher to 0.2.16
+ * Bug 25750: Update Tor Launcher to make it compatible with Firefox 60 ESR
+ * Bug 20890: Increase control port connection timeout
+ * Bug 20628: Add more locales to Tor Browser
+ * Translations update
+ * Update HTTPS Everywhere to 2018.6.13
+ * Update NoScript to 10.1.8.2
+ * Bug 25543: Rebase Tor Browser patches for ESR60
+ * Bug 23247: Show security state of .onions
+ * Bug 26039: Load our preferences that modify extensions
+ * Bug 26365: Add potential AltSvc support
+ * Bug 26045: Add new MAR signing keys
+ * Bug 22564: Hide Firefox Sync
+ * Bug 25090: Disable updater telemetry
+ * Bug 26127: Make sure Torbutton and Tor Launcher are not treated as legacy extensions
+ * Bug 26073: Migrate general.useragent.locale to intl.locale.requested
+ * Bug 20628: Make Tor Browser available in bn-BD, da, he, sv-SE, and zh-TW
+ * Bug 12927: Include Hebrew translation into Tor Browser
+ * Bug 21245: Add danish (da) translation
+ * Windows
+ * Bug 26239+24197: Enable content sandboxing for 64bit Windows builds
+ * Bug 22581: Fix shutdown crash
+ * Bug 26424: Disable UNC paths to prevent possible proxy bypasses
+ * Bug 26304: Update zlib to version 1.2.11
+ * OS X
+ * Bug 24052: Backport fix for bug 1412081 for better file:// handling
+ * Bug 24632: Disable snowflake for now until its build is fixed
+ * Bug 26438: Remove broken seatbelt profiles
+ * Linux
+ * Bug 24052: Backport fix for bug 1412081 for better file:// handling
+ * Bug 26153: Update selfrando to be compatible with Firefox 60 ESR
+ * Bug 22242: Remove RUNPATH in Linux binaries embedded by selfrando
+ * Bug 26354: Set SSE2 support as minimal requirement for Tor Browser 8
+ * Build System
+ * All
+ * Bug 26362: Use old MAR format for first ESR60-based alpha
+ * Clean up
+ * Windows
+ * Bug 26203: Adapt tor-browser-build/tor-browser for Windows
+ * Bug 26204: Bundle d3dcompiler_47.dll for Tor Browser 8
+ * Bug 26205: Don't build the uninstaller for Windows during Firefox compilation
+ * Bug 26206: Ship pthread related dll where needed
+ * Bug 26396: Build libwinpthread reproducible
+ * Bug 25837: Integrate fxc2 into our build setup for Windows builds
+ * Bug 25894: Get a rust cross-compiler for Windows
+ * Bug 25554: Bump mingw-w64 version for ESR 60
+ * Bug 23561: Fix nsis builds for Windows 64
+ * Bug 23231: Remove our STL Wrappers workaround for Windows 64bit
+ * Bug 26370: Don't copy msvcr100.dll and libssp-0.dll twice
+ * Bug 18287: Use SHA-2 signature for Tor Browser setup executables
+ * OS X
+ * Bug 24632: Update macOS toolchain for ESR 60
+ * Bug 9711: Build our own cctools for macOS cross-compilation
+ * Bug 25548: Update macOS SDK for Tor Browser builds to 10.11
+ * Bug 26003: Clean up our mozconfig-osx-x86_64 file
+ * Bug 26195: Use new cctools in our macosx-toolchain project
+ * Bug 25975: Get a rust cross-compiler for macOS
+ * Linux
+ * Bug 26073: Patch tor-browser-build for transition to ESR 60
+ * Bug 25540: Stop building and distributing sandboxed tor browser
+ * Bug 25481: Rust support for tor-browser and tor
+
Tor Browser 8.0a8 -- June 10 2018
* All platforms
* Update Firefox to 52.8.1esr
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index 820755c..4ad855a 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -66,9 +66,9 @@ input_files:
name: snowflake
enable: '[% c("var/snowflake") %]'
- filename: Bundle-Data
- - URL: https://addons.cdn.mozilla.net/user-media/addons/722/noscript_security_suit…
+ - URL: https://addons.cdn.mozilla.net/user-media/addons/722/noscript_security_suit…
name: noscript
- sha256sum: 63a8a6a582af6e28084fae3bc72ebc5c5c2437467f8d445c8ea69d1061a3f7b2
+ sha256sum: d41f5d36337569d1a1633303d7d07505ab905efba0644e73edccf43edc0d39e0
- filename: 'RelativeLink/start-tor-browser.desktop'
enable: '[% c("var/linux") %]'
- filename: 'RelativeLink/execdesktop'
diff --git a/projects/tor-launcher/config b/projects/tor-launcher/config
index fe21a49..c42e18c 100644
--- a/projects/tor-launcher/config
+++ b/projects/tor-launcher/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 0.2.15.2
+version: 0.2.16
git_url: https://git.torproject.org/tor-launcher.git
git_hash: '[% c("version") %]'
gpg_keyring: torbutton.gpg
diff --git a/projects/tor/config b/projects/tor/config
index 6219ea6..c873db2 100644
--- a/projects/tor/config
+++ b/projects/tor/config
@@ -1,6 +1,6 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
-version: 0.3.3.5-rc
+version: 0.3.4.2-alpha
git_hash: 'tor-[% c("version") %]'
git_url: https://git.torproject.org/tor.git
git_submodule: 1
diff --git a/projects/torbutton/config b/projects/torbutton/config
index f153cf6..0791953 100644
--- a/projects/torbutton/config
+++ b/projects/torbutton/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 1.9.9.1
+version: 2.0
git_url: https://git.torproject.org/torbutton.git
git_hash: '[% c("version") %]'
gpg_keyring: torbutton.gpg
diff --git a/rbm.conf b/rbm.conf
index f283b19..ae8dc96 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -15,10 +15,10 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '8.0a7'
+ torbrowser_version: '8.0a9'
torbrowser_build: 'build1'
torbrowser_incremental_from:
- - 8.0a6
+ - 8.0a8
project_name: tor-browser
multi_lingual: 0
build_mar: 1
1
0
commit b006b92169ffa5cb97a6afe81be93fd9ec050d28
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 22 08:10:54 2018 +0000
minVersion is 60 now
---
src/install.rdf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/install.rdf b/src/install.rdf
index 919c744..d4de4ba 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -17,7 +17,7 @@
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>52.0</em:minVersion>
+ <em:minVersion>60.0</em:minVersion>
<em:maxVersion>10000.0</em:maxVersion>
</Description>
</em:targetApplication>
1
0
commit 3fa7fd3f438805171deb146aab8b417611445147
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 22 08:09:03 2018 +0000
Release preparations for 2.0
CHANGELOG update and version bump
---
src/CHANGELOG | 11 +++++++++++
src/install.rdf | 2 +-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/CHANGELOG b/src/CHANGELOG
index 0ea09ce..b5fdb75 100644
--- a/src/CHANGELOG
+++ b/src/CHANGELOG
@@ -1,3 +1,14 @@
+2.0
+ * Bug 26100: Adapt Torbutton to Firefox 60 ESR
+ * Bug 24309: Move circuit display to the identity popup
+ * Bug 26128: Adapt security slider to the WebExtensions version of NoScript
+ * Bug 23247: Show security state of .onions
+ * Bug 26129: Show our about:tor page on startup
+ * Bug 26235: Hide new unusable items from help menu
+ * Bug 26058: Remove workaround for hiding 'sign in to sync' button
+ * Bug 20628: Add locales bn-BD, da, he, sv, zh-TW
+ * Translations update
+
1.9.9.1
* Bug 25126: Make about:tor layout responsive
* Translations update
diff --git a/src/install.rdf b/src/install.rdf
index 98db46a..919c744 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -6,7 +6,7 @@
<em:name>Torbutton</em:name>
<em:creator>Mike Perry</em:creator>
<em:id>torbutton(a)torproject.org</em:id>
- <em:version>1.9.9.1</em:version>
+ <em:version>2.0</em:version>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html.en</em:homepageURL>
<em:optionsURL>chrome://torbutton/content/preferences.xul</em:optionsURL>
1
0
commit 1d9b9b9660b34450f68c807e340c6963e1410fb3
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 22 06:11:14 2018 +0000
Translations update
---
src/chrome/locale/ar/torbutton.properties | 4 ++
src/chrome/locale/bn-BD/aboutDialog.dtd | 19 +++++++
src/chrome/locale/bn-BD/aboutTBUpdate.dtd | 6 +++
src/chrome/locale/bn-BD/aboutTor.dtd | 45 +++++++++++++++++
src/chrome/locale/bn-BD/aboutTor.properties | 20 ++++++++
src/chrome/locale/bn-BD/brand.dtd | 15 ++++++
src/chrome/locale/bn-BD/brand.properties | 16 ++++++
src/chrome/locale/bn-BD/torbutton.dtd | 51 +++++++++++++++++++
src/chrome/locale/bn-BD/torbutton.properties | 58 +++++++++++++++++++++
src/chrome/locale/da/torbutton.properties | 4 ++
src/chrome/locale/de/torbutton.properties | 4 ++
src/chrome/locale/es/torbutton.properties | 4 ++
src/chrome/locale/eu/torbutton.dtd | 22 ++++----
src/chrome/locale/eu/torbutton.properties | 6 ++-
src/chrome/locale/fa/torbutton.properties | 4 ++
src/chrome/locale/fr/torbutton.properties | 4 ++
src/chrome/locale/he/aboutDialog.dtd | 19 +++++++
src/chrome/locale/he/aboutTBUpdate.dtd | 6 +++
src/chrome/locale/he/aboutTor.dtd | 60 +++++++++++-----------
src/chrome/locale/he/aboutTor.properties | 19 ++++---
src/chrome/locale/he/brand.dtd | 15 ++++--
src/chrome/locale/he/brand.properties | 17 ++++---
src/chrome/locale/he/torbutton.dtd | 57 +++++++++++++++------
src/chrome/locale/he/torbutton.properties | 75 ++++++++++++++++++++--------
src/chrome/locale/it/torbutton.properties | 4 ++
src/chrome/locale/ja/torbutton.properties | 4 ++
src/chrome/locale/ko/torbutton.properties | 4 ++
src/chrome/locale/nl/torbutton.properties | 4 ++
src/chrome/locale/pl/torbutton.properties | 4 ++
src/chrome/locale/pt-BR/torbutton.dtd | 4 +-
src/chrome/locale/pt-BR/torbutton.properties | 4 ++
src/chrome/locale/ru/aboutTor.properties | 2 +-
src/chrome/locale/ru/torbutton.dtd | 2 +-
src/chrome/locale/ru/torbutton.properties | 4 ++
src/chrome/locale/sv/torbutton.dtd | 4 +-
src/chrome/locale/sv/torbutton.properties | 8 ++-
src/chrome/locale/tr/aboutTor.dtd | 2 +-
src/chrome/locale/tr/torbutton.dtd | 4 +-
src/chrome/locale/tr/torbutton.properties | 16 +++---
src/chrome/locale/vi/torbutton.properties | 4 ++
src/chrome/locale/zh-CN/torbutton.dtd | 2 +-
src/chrome/locale/zh-CN/torbutton.properties | 8 ++-
src/chrome/locale/zh-TW/aboutDialog.dtd | 19 +++++++
src/chrome/locale/zh-TW/aboutTBUpdate.dtd | 6 +++
src/chrome/locale/zh-TW/aboutTor.dtd | 60 +++++++++++-----------
src/chrome/locale/zh-TW/aboutTor.properties | 19 ++++---
src/chrome/locale/zh-TW/brand.dtd | 15 ++++--
src/chrome/locale/zh-TW/brand.properties | 17 ++++---
src/chrome/locale/zh-TW/torbutton.dtd | 67 ++++++++++++++++++-------
src/chrome/locale/zh-TW/torbutton.properties | 73 +++++++++++++++++++--------
50 files changed, 702 insertions(+), 208 deletions(-)
diff --git a/src/chrome/locale/ar/torbutton.properties b/src/chrome/locale/ar/torbutton.properties
index afa0b93..815004f 100644
--- a/src/chrome/locale/ar/torbutton.properties
+++ b/src/chrome/locale/ar/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=ÙØ§ ÙÙ
ÙÙ٠ت؎غÙÙ %S Ù
Ù ÙØžØ§Ù
Ù
ÙÙØ§Øª خاص Øš
profileReadOnlyMac=ÙØ§ ÙÙ
ÙÙ٠ت؎غÙÙ %S Ù
Ù ÙØžØ§Ù
Ù
ÙÙØ§Øª خاص ؚاÙÙØ±Ø§Ø¡Ø© ÙÙØ·. ÙØ±Ø¬Ù ÙØ³Ø® %S Ø¥ÙÙ Ø³Ø·Ø Ø§ÙÙ
ÙØªØš Ø£Ù Ù
Ø¬ÙØ¯ Ø§ÙØªØ·ØšÙÙØ§Øª ÙØšÙ Ù
ØØ§ÙÙØ© استخداÙ
Ù.
profileAccessDenied=ÙØ§ ÙÙ
تÙÙ %S Ø§ÙØµÙاØÙات اÙÙ
Ø·ÙÙØšØ© ÙÙ
Ù٠إعداداتÙ. ÙØ±Ø¬Ù ضؚط ØµÙØ§ØÙات ÙØžØ§Ù
اÙÙ
ÙÙØ§Øª Ø«Ù
إعادة اÙÙ
ØØ§ÙÙØ©.
profileMigrationFailed=ÙØŽÙ ÙÙÙ Ù
Ù٠إعدادات %S اÙÙ
ÙØ¬Ùد Ø¥ÙÙ Ø§ÙØ¥ØµØ¯Ø§Ø±Ø© Ø§ÙØ¬Ø¯Ùدة.\nØ³ÙØ³ØªØ®Ø¯Ù
Ù
Ù٠إعدادات Ø¬Ø¯ÙØ¯.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/bn-BD/aboutDialog.dtd b/src/chrome/locale/bn-BD/aboutDialog.dtd
new file mode 100644
index 0000000..9af6013
--- /dev/null
+++ b/src/chrome/locale/bn-BD/aboutDialog.dtd
@@ -0,0 +1,19 @@
+<!ENTITY project.start "&brandShortName; àŠŠà§àŠ¬àŠŸàŠ°àŠŸ àŠ€à§àŠ°àŠ¿ àŠàŠ°àŠŸ àŠ¹àŠ¯àŠŒà§àŠà§">
+<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
+<!ENTITY project.tpoLink "&vendorShortName;">
+<!ENTITY project.end "àŠàŠàŠàŠ¿ àŠ
àŠ²àŠŸàŠàŠàŠšàŠ àŠªà§àŠ°àŠ€àŠ¿àŠ·à§àŠàŠŸàŠš àŠàŠªàŠšàŠŸàŠ° àŠà§àŠªàŠšà§àŠ¯àŠŒàŠ€àŠŸ àŠàŠ¬àŠ àŠ
àŠšàŠ²àŠŸàŠàŠš àŠžà§àŠ¬àŠŸàŠ§à§àŠšàŠ€àŠŸ àŠ°àŠà§àŠ·àŠŸ àŠàŠ°àŠŸàŠ° àŠàŠšà§àН àŠàŠŸàŠ àŠàаà§à¥€">
+
+<!ENTITY help.start "àŠžàŠŸàŠ¹àŠŸàŠ¯à§àН àŠàŠ°àŠ€à§ àŠàŠŸàŠ?">
+<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
+<!ENTITY help.donateLink "àŠ¡àŠšà§àŠ àŠàаà§àŠš">
+<!ENTITY help.or "àŠàŠ¥àŠ¬àŠŸ">
+<!-- LOCALIZATION NOTE (help.getInvolvedLink): This is a link title that links to https://www.torproject.org/getinvolved/volunteer.html.en -->
+<!ENTITY help.getInvolvedLink "àŠàŠ¡àŠŒàŠ¿àŠ€">
+<!ENTITY help.end "!">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/docs/trademark-faq.html.en -->
+<!ENTITY bottomLinks.questions "àŠªà§àŠ°àŠ¶à§àŠš?">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
+<!ENTITY bottomLinks.grow "àŠàа àŠšà§àŠàŠàŠ¯àŠŒàŠŸàŠ°à§àŠ àŠ¬à§àŠŠà§àŠ§àŠ¿àŠ€à§ àŠžàŠŸàŠ¹àŠŸàŠ¯à§àН àŠàаà§àŠš!">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
+<!ENTITY bottomLinks.license "àŠ²àŠŸàŠàŠžà§àŠšà§àŠžàŠ¿àŠ àŠ€àŠ¥à§àН">
+<!ENTITY tor.TrademarkStatement "'àŠàа' àŠàŠ¬àŠ 'àŠàŠ¯àŠŒàŠŸàŠšàŠ¿àŠ¯àŠŒàŠŸàŠš àŠ²à§àŠà§' àŠàа àŠªà§àаàŠà§àŠà§àŠ, àŠàŠšàŠà¥€ àŠàа àŠšàŠ¿àŠ¬àŠšà§àŠ§àŠ¿àŠ€ àŠà§àаà§àŠ¡àŠ®àŠŸàŠ°à§àŠ">
diff --git a/src/chrome/locale/bn-BD/aboutTBUpdate.dtd b/src/chrome/locale/bn-BD/aboutTBUpdate.dtd
new file mode 100644
index 0000000..90abe5d
--- /dev/null
+++ b/src/chrome/locale/bn-BD/aboutTBUpdate.dtd
@@ -0,0 +1,6 @@
+<!ENTITY aboutTBUpdate.title "àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠàŠªàŠ¡à§àŠ">
+<!ENTITY aboutTBUpdate.updated "àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠàŠªàŠ¡à§àŠ àŠàŠ°àŠŸ àŠ¹àŠ¯àŠŒà§àŠà§à¥€">
+<!ENTITY aboutTBUpdate.linkPrefix "àŠàŠ àŠ°àŠ¿àŠ²àŠ¿àŠ àŠžàŠ®à§àŠªàŠ°à§àŠà§ àŠžàŠ¬àŠà§àŠ¯àŠŒà§ àŠàŠª àŠà§ àŠ¡à§àŠ àŠ€àŠ¥à§àН àŠàŠšà§àН,">
+<!ENTITY aboutTBUpdate.linkLabel "àŠàŠ®àŠŸàŠŠà§àа àŠàŠ¯àŠŒà§àŠ¬àŠžàŠŸàŠàŠ àŠŠà§àŠà§àŠš">
+<!ENTITY aboutTBUpdate.linkSuffix ".">
+<!ENTITY aboutTBUpdate.changeLogHeading "àŠªàŠ°àŠ¿àŠ¬àŠ°à§àŠ€àŠ£à§àа:">
diff --git a/src/chrome/locale/bn-BD/aboutTor.dtd b/src/chrome/locale/bn-BD/aboutTor.dtd
new file mode 100644
index 0000000..f9226bf
--- /dev/null
+++ b/src/chrome/locale/bn-BD/aboutTor.dtd
@@ -0,0 +1,45 @@
+<!--
+ - Copyright (c) 2015, The Tor Project, Inc.
+ - See LICENSE for licensing information.
+ - vim: set sw=2 sts=2 ts=8 et syntax=xml:
+ -->
+
+<!ENTITY aboutTor.title "Tor àŠžàŠ®à§àŠªàŠ°à§àŠà§">
+
+<!ENTITY aboutTor.outOfDateTorOn.label "àŠžàŠ€àŠ°à§àŠàŠ€àŠŸ: àŠàŠ àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°àŠàŠ¿ àŠªà§àŠ°àŠŸàŠšà§à¥€">
+<!ENTITY aboutTor.outOfDateTorOff.label "àŠàŠàŠŸàŠ¡àŠŒàŠŸàŠ, àŠàŠ àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°àŠàŠ¿àŠ àŠªà§àŠ°àŠŸàŠšà§à¥€">
+<!ENTITY aboutTor.outOfDate2.label "Onion àŠàа àŠàŠªàŠ° àŠà§àŠ²àŠ¿àŠ àŠàаà§àŠš àŠàŠ¬àŠ àŠ€àŠŸàŠ°àŠªàŠ° àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠàŠªàŠ¡à§àŠ àŠàŠšà§àН àŠà§àŠ àŠšàŠ¿àŠ°à§àŠ¬àŠŸàŠàŠš àŠàаà§àŠšà¥€">
+
+<!ENTITY aboutTor.check.label "àŠàа àŠšà§àŠàŠàŠ¯àŠŒàŠŸàŠ°à§àŠ àŠžà§àŠàŠ¿àŠàŠž àŠà§àŠžà§àŠÂ àŠàаà§àŠš">
+
+<!ENTITY aboutTor.success.label "àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°à§ àŠžà§àŠ¬àŠŸàŠàŠ€àŠ®">
+<!ENTITY aboutTor.success2.label "àŠàа àŠšà§àŠàŠàŠ¯àŠŒàŠŸàŠ°à§àŠà§ àŠžàŠàНà§àŠà§àŠ€">
+<!ENTITY aboutTor.success3.label "àŠàŠªàŠšàŠ¿ àŠàŠàŠš àŠšàŠ¿àŠ°àŠŸàŠªàŠŠà§ àŠàŠšà§àŠàŠŸàŠ°àŠšà§àŠ àŠ¬à§àŠ°àŠŸàŠàŠ àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°àŠ¬à§àŠšà¥€">
+<!ENTITY aboutTor.failure.label "àŠàŠ¿àŠà§ àŠà§àв àŠ¹àŠ¯àŠŒà§àŠà§!">
+<!ENTITY aboutTor.failure2.label "àŠàа àŠàŠ àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°à§ àŠàŠŸàŠ àŠàаàŠà§ àŠšàŠŸ">
+
+<!ENTITY aboutTor.search.label "àŠà§àŠà§àŠš">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
+
+<!ENTITY aboutTor.torInfo1.label "àŠ
àŠ€àŠ¿àŠ°àŠ¿àŠà§àŠ€ àŠ€àŠ¥à§àН:">
+<!ENTITY aboutTor.torInfo2.label "àŠŠà§àж àŠàŠ¬àŠ IP àŠ àŠ¿àŠàŠŸàŠšàŠŸ:">
+<!ENTITY aboutTor.torInfo3.label "àŠªà§àŠ°àŠžà§àŠ¥àŠŸàŠš àŠšà§àŠ¡:">
+<!ENTITY aboutTor.torInfo4.label "àŠàŠ àŠžàŠŸàŠ°à§àŠàŠŸàŠ° àŠŠàŠ°à§àŠ¶àŠ àŠžàŠ®à§àŠªàŠ°à§àŠà§ àŠà§àŠšàŠ àŠ€àŠ¥à§àН àŠ²àŠ àŠàŠ°à§ àŠšàŠŸà¥€">
+<!ENTITY aboutTor.whatnextQuestion.label "àŠàŠ°àŠªàŠ° àŠà§?">
+<!ENTITY aboutTor.whatnextAnswer.label "Tor àŠàŠªàŠšàŠ¿ àŠžàŠ®àŠžà§àŠ€ àŠ¬à§àŠšàŠŸàŠ®à§ àŠ¬à§àŠ°àŠŸàŠàŠ àŠàŠ°àŠ€à§ àŠ¹àŠ¬à§ àŠšàŠŸ! àŠàŠªàŠšàŠŸàŠ° àŠªàŠ°àŠ¿àŠàŠ¯àŠŒ àŠšàŠ¿àŠ°àŠŸàŠªàŠŠ àŠ¥àŠŸàŠà§ àŠ€àŠŸ àŠšàŠ¿àŠ¶à§àŠàŠ¿àŠ€ àŠàŠ°àŠ€à§ àŠàŠªàŠšàŠŸàŠà§ àŠàŠªàŠšàŠŸàŠ° àŠ¬à§àŠ°àŠŸàŠàŠàŠ¿àŠ àŠ
àŠà§àŠ¯àŠŸàŠžàŠà§àŠ²àŠ¿àŠ° àŠàŠ¿àŠà§ àŠªàŠ°àŠ¿àŠ¬àŠ°à§àŠ€àŠš àŠàŠ°àŠ€à§ àŠ¹àŠ¬à§à¥€">
+<!ENTITY aboutTor.whatnext.label "àŠšàŠ¿àŠ°àŠŸàŠªàŠŠà§ àŠ¥àŠŸàŠàŠŸàŠ° àŠ¥àŠŸàŠàŠŸàŠ° àŠàŠ¿àŠªàŠž »">
+<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
+<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
+<!ENTITY aboutTor.torbrowser_user_manual.label "àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠàŠàŠàŠŸàŠ° àŠ®à§àŠ¯àŠŸàŠšà§àŠ¯àŠŒàŠŸàŠ²">
+<!ENTITY aboutTor.helpInfo1.label "àŠ€à§àŠ®àŠ¿ àŠžàŠŸàŠ¹àŠŸàŠ¯à§àН àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°!">
+<!ENTITY aboutTor.helpInfo2.label "àŠàа àŠšà§àŠàŠàŠ¯àŠŒàŠŸàŠ°à§àŠ àŠŠà§àаà§àŠ€ àŠàŠ¬àŠ àŠ¶àŠà§àŠ€àŠ¿àŠ¶àŠŸàŠ²à§ àŠàŠ°àŠ€à§ àŠàŠªàŠšàŠ¿ àŠ
àŠšà§àŠ àŠàŠªàŠŸàŠ¯àŠŒ àŠàŠà§:">
+<!ENTITY aboutTor.helpInfo3.label "àŠàŠàŠàŠ¿ àŠàŠ°à§ àŠ°àŠ¿àŠ²à§ àŠšàŠŸàŠ¡ àŠàŠŸàŠ²àŠŸàŠš »">
+<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
+<!ENTITY aboutTor.helpInfo4.label "àŠàŠªàŠšàŠŸàŠ° àŠªàŠ°àŠ¿àŠ·à§àŠ¬àŠŸàŠà§àŠ²àŠ¿ àŠžà§àЬà§àŠà§àŠàŠŸàŠžà§àŠ¬àŠ Â»">
+<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
+<!ENTITY aboutTor.helpInfo5.label "àŠŠàŠŸàŠš àŠàаà§àŠš »">
+<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
+
+<!ENTITY aboutTor.footer.label "àŠàа àŠªà§àаàŠàвà§àŠªàŠàŠ¿ àŠ®àŠŸàŠ°à§àŠàŠ¿àŠš àŠ¯à§àŠà§àŠ€àŠ°àŠŸàŠ·à§àŠà§àаà§àа 501 (àŠžàŠ¿) (3) àŠ
-àŠ²àŠŸàŠàŠàŠšàŠ àŠàЬà§àŠ·àŠ£àŠŸ, àŠàŠšà§àŠšàŠ¯àŠŒàŠš àŠàŠ¬àŠ àŠ
àŠšàŠ²àŠŸàŠàŠš àŠà§àŠªàŠšà§àŠ¯àŠŒàŠ€àŠŸ àŠàŠ¬àŠ àŠà§àŠªàŠšà§àŠ¯àŠŒàŠ€àŠŸàŠ° àŠ¶àŠ¿àŠà§àŠ·àŠŸà¥€">
+<!ENTITY aboutTor.learnMore.label "Tor àŠªà§àаàŠàвà§àŠª àŠžàŠ®à§àŠªàŠ°à§àŠà§ àŠàŠ°àŠ àŠàŠŸàŠšà§àŠš »">
+<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html.en">
diff --git a/src/chrome/locale/bn-BD/aboutTor.properties b/src/chrome/locale/bn-BD/aboutTor.properties
new file mode 100644
index 0000000..210ce23
--- /dev/null
+++ b/src/chrome/locale/bn-BD/aboutTor.properties
@@ -0,0 +1,20 @@
+# Copyright (c) 2014, The Tor Project, Inc.
+# See LICENSE for licensing information.
+# vim: set sw=2 sts=2 ts=8 et:
+
+aboutTor.searchDDG.privacy=<a href="%1$S"> DuckDuckGo àŠŠàŠ¿àŠ¯àŠŒà§ àŠšàŠ¿àŠ°àŠŸàŠªàŠŠà§ àŠ
àŠšà§àŠžàŠšà§àŠ§àŠŸàŠš àŠàаà§àŠš <a href="%2$S">
+# The following string is a link which replaces %1$S above.
+aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
+# The following string is a link which replaces %2$S above.
+aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=àŠàŠàŠšàŠ¿ àŠŠàŠŸàŠš àŠàаà§!
+
+aboutTor.donationBanner.slogan=àŠàа: àŠ¡àŠ¿àŠàŠ¿àŠàŠŸàŠ² àŠªà§àŠ°àŠ€àŠ¿àŠ°à§àЧ àŠà§àŠ·àŠ®àŠ€àŠŸ
+aboutTor.donationBanner.mozilla=àŠàŠ àŠŠàŠ¿àŠš àŠàŠ¬àŠ àŠ®àŠàŠ¿àŠ²àŠŸ àŠàŠªàŠšàŠŸàŠ° àŠàŠªàŠ¹àŠŸàŠ°à§àа àŠžàŠŸàŠ¥à§ àŠ®à§àвà§!
+
+aboutTor.donationBanner.tagline1=2006 àŠžàŠŸàŠ² àŠ¥à§àŠà§ àŠžàŠŸàŠàŠ¬àŠŸàŠŠàŠ¿àŠàŠŠà§àа àŠ°àŠà§àŠ·àŠŸ, àŠ¹à§àŠàŠžàŠ² àŠ¬à§àвà§àŠ¯àŠŒàŠŸàŠ°à§àŠž àŠàŠ¬àŠ àŠ
à§àŠ¯àŠŸàŠà§àŠàŠ¿àŠàŠ¿àŠžà§àŠàŠ°àŠŸ
+aboutTor.donationBanner.tagline2=àŠšà§àŠàŠàŠ¯àŠŒàŠŸàŠ°à§àŠàŠ¿àŠ àŠžà§àŠ¬àŠŸàŠ§à§àŠšàŠ€àŠŸ àŠ¬àŠ¿àŠ¶à§àŠ¬àŠ¬à§àŠ¯àŠŸàŠªà§
+aboutTor.donationBanner.tagline3=àŠ«à§àŠ°àŠ¿àŠ¡àŠ® àŠ
àŠšàŠ²àŠŸàŠàŠš
+aboutTor.donationBanner.tagline4=àŠ¬àŠ¿àŠ¶à§àŠ¬àŠ¬à§àŠ¯àŠŸàŠªà§ àŠ¬àŠ¿àŠšàŠŸàŠ®à§àвà§àŠ¯à§ àŠ
àŠàŠ¿àŠ¬àŠŸàŠŠàŠš àŠàŠ€à§àŠžàŠŸàŠ¹àŠŠàŠŸàŠš
+aboutTor.donationBanner.tagline5=àŠªà§àŠ°àŠ€àŠ¿ àŠŠàŠ¿àŠš àŠ²àŠà§àŠ· àŠ²àŠà§àŠ· àŠà§àŠªàŠšà§àŠ¯àŠŒàŠ€àŠŸ àŠ°àŠà§àŠ·àŠŸ àŠàаà§àŠš
diff --git a/src/chrome/locale/bn-BD/brand.dtd b/src/chrome/locale/bn-BD/brand.dtd
new file mode 100644
index 0000000..626b71c
--- /dev/null
+++ b/src/chrome/locale/bn-BD/brand.dtd
@@ -0,0 +1,15 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY brandShorterName "àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°">
+<!ENTITY brandShortName "àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°">
+<!ENTITY brandFullName "àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°">
+<!ENTITY vendorShortName "àŠàа àŠªà§àаàŠàвà§àŠª">
+<!ENTITY trademarkInfo.part1 "àŠ«àŠŸàŠ¯àŠŒàŠŸàŠ°àŠ«àŠà§àŠž àŠàŠ¬àŠ àŠ«àŠŸàŠ¯àŠŒàŠŸàŠ°àŠ«àŠà§àŠž àŠ²à§àŠà§ àŠ®à§àŠàŠ¿àŠ²àŠŸ àŠ«àŠŸàŠàŠšà§àŠ¡à§àŠ¶àŠšà§àа àŠà§àаà§àŠ¡àŠ®àŠŸàŠ°à§àŠà¥€">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "àŠàŠšàŠžà§àŠàв àŠàŠ°àŠŸ àŠžàŠ¿àŠžà§àŠà§àŠ® àŠªà§àŠ²àŠŸàŠàŠàŠšàŠà§àŠ²àŠ¿ àŠ²à§àŠ¡ àŠàŠ°àŠ€à§ àŠà§àŠ²àŠ¿àŠ àŠàаà§àŠš">
+<!ENTITY plugins.installed.enable "àŠªà§àŠ²àŠŸàŠàŠàŠš àŠžàŠà§àŠ·àŠ® àŠàаà§àŠš">
+<!ENTITY plugins.installed.disable "àŠªà§àŠ²àŠŸàŠàŠàŠš àŠ¬àŠšà§àЧ àŠàаà§àŠš">
+<!ENTITY plugins.installed.disable.tip "àŠžàŠ¿àŠžà§àŠà§àŠ® àŠªà§àŠ²àŠŸàŠàŠàŠš àŠ²à§àŠ¡àŠ¿àŠ àŠªà§àŠ°àŠ€àŠ¿àŠ°à§àЧ àŠàŠ°àŠ€à§ àŠà§àŠ²àŠ¿àŠ àŠàаà§àŠš">
diff --git a/src/chrome/locale/bn-BD/brand.properties b/src/chrome/locale/bn-BD/brand.properties
new file mode 100644
index 0000000..436b7c8
--- /dev/null
+++ b/src/chrome/locale/bn-BD/brand.properties
@@ -0,0 +1,16 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+brandShorterName=àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°
+brandShortName=àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°
+brandFullName=àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°
+vendorShortName=àŠàа àŠªà§àаàŠàвà§àŠª
+
+homePageSingleStartMain=àŠ«àŠŸàŠ¯àŠŒàŠŸàŠ°àŠ«àŠà§àŠž àŠžà§àŠàŠŸàŠ°à§àŠ, àŠ¬àŠ¿àŠ²à§àŠ-àŠàŠš àŠ
àŠšà§àŠžàŠšà§àŠ§àŠŸàŠš àŠžàŠ¹ àŠàŠàŠàŠ¿ àŠŠà§àаà§àŠ€ àŠ¹à§àŠ® àŠªà§àŠ
+homePageImport=%S àŠ¥à§àŠà§ àŠàŠªàŠšàŠŸàŠ° àŠ¹à§àŠ® àŠªà§àŠ·à§àŠ àŠŸ àŠàŠ®àŠŠàŠŸàŠšàŠ¿ àŠàаà§àŠš
+
+homePageMigrationPageTitle=àŠ¹à§àŠ® àŠªà§àŠ·à§àŠ àŠŸ àŠšàŠ¿àŠ°à§àŠ¬àŠŸàŠàŠš
+homePageMigrationDescription=àŠàŠªàŠšàŠ¿ àŠ¯à§ àŠ¹à§àŠ® àŠªà§àŠàŠàŠ¿ àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠàŠ°àŠ€à§ àŠàŠŸàŠš àŠ€àŠŸ àŠšàŠ¿àŠ°à§àŠ¬àŠŸàŠàŠš àŠàаà§àŠš:
+
+syncBrandShortName=àŠžà§àŠžàŠàŠàŠ€
diff --git a/src/chrome/locale/bn-BD/torbutton.dtd b/src/chrome/locale/bn-BD/torbutton.dtd
new file mode 100644
index 0000000..98b928c
--- /dev/null
+++ b/src/chrome/locale/bn-BD/torbutton.dtd
@@ -0,0 +1,51 @@
+<!ENTITY torbutton.context_menu.new_identity "àŠšàŠ€à§àŠš àŠªàŠ°àŠ¿àŠàŠ¯àŠŒ">
+<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "àŠàŠ àŠžàŠŸàŠàŠà§àа àŠàŠšà§àН àŠšàŠ€à§àŠš àŠàа àŠžàŠŸàŠ°à§àŠàŠ¿àŠ">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "àŠšàŠ¿àŠ°àŠŸàŠªàŠ€à§àŠ€àŠŸ àŠ¬àŠ¿àŠšà§àŠ¯àŠŸàŠžâŠ">
+<!ENTITY torbutton.context_menu.preferences.key "S">
+<!ENTITY torbutton.context_menu.networksettings "àŠàа àŠšà§àŠàŠàŠ¯àŠŒàŠŸàŠ°à§àŠ àŠžà§àŠàŠ¿àŠàŠž ...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
+<!ENTITY torbutton.context_menu.downloadUpdate "àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠàŠªàŠ¡à§àŠà§àа àŠàŠšà§àН àŠà§àŠ àŠàаà§àŠš ...">
+<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
+<!ENTITY torbutton.context_menu.cookieProtections "àŠà§àŠàŠ¿ àŠªà§àаà§àŠà§àŠàŠ¶àŠš ...">
+<!ENTITY torbutton.context_menu.cookieProtections.key "C">
+<!ENTITY torbutton.button.tooltip "Torbutton àŠàŠ°àŠ®à§àŠ àŠàŠ°àŠŸàŠ° àŠàŠšà§àН àŠà§àŠ²àŠ¿àŠ àŠàаà§àŠš">
+<!ENTITY torbutton.prefs.security_settings "àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠšàŠ¿àŠ°àŠŸàŠªàŠ€à§àŠ€àŠŸ àŠžà§àŠàŠ¿àŠàŠž">
+<!ENTITY torbutton.prefs.restore_defaults "àŠªà§àаà§àŠ¬àŠšàŠ¿àŠ°à§àŠ§àŠŸàŠ°àŠš àŠªà§àŠšàŠ°à§àŠ§àŠŸàŠ°">
+<!ENTITY torbutton.prefs.custom_warning "àŠàŠªàŠšàŠŸàŠ° àŠàŠŸàŠžà§àŠàŠ® àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°à§àа àŠªàŠàŠšà§àŠŠàŠà§àŠ²àŠ¿àŠ° àŠàŠŸàŠ°àŠ£à§ àŠ
àŠžà§àŠ¬àŠŸàŠàŠŸàŠ¬àŠ¿àŠ àŠšàŠ¿àŠ°àŠŸàŠªàŠ€à§àŠ€àŠŸ àŠžà§àŠàŠ¿àŠàŠž àŠŠà§àŠàŠŸ àŠŠàŠ¿àŠ¯àŠŒà§àŠà§ àŠšàŠ¿àŠ°àŠŸàŠªàŠ€à§àŠ€àŠŸ àŠàŠ¬àŠ àŠà§àŠªàŠšà§àŠ¯àŠŒàŠ€àŠŸàŠ° àŠàŠŸàŠ°àŠ£à§, àŠàŠ®àŠ°àŠŸ àŠàŠªàŠšàŠŸàŠà§ àŠ¡àŠ¿àŠ«àŠ²à§àŠ àŠšàŠ¿àŠ°àŠŸàŠªàŠ€à§àŠ€àŠŸ àŠžà§àŠ€àŠ°àŠà§àŠ²àŠ¿àŠ° àŠàŠàŠàŠ¿ àŠàŠ¯àŠŒàŠš àŠàŠ°àŠŸàŠ° àŠžà§àŠªàŠŸàŠ°àŠ¿àŠ¶ àŠàŠ°àŠ¿à¥€">
+<!ENTITY torbutton.cookiedialog.title "àŠà§àŠàŠ¿ àŠªà§àаà§àŠà§àŠàŠ¶àŠšàŠà§àŠ²àŠ¿ àŠªàŠ°àŠ¿àŠàŠŸàŠ²àŠšàŠŸ àŠàаà§àŠš">
+<!ENTITY torbutton.cookiedialog.lockCol "àŠ°àŠà§àŠ·àŠ¿àŠ€">
+<!ENTITY torbutton.cookiedialog.domainCol "àŠšàŠ¿àŠ®àŠšà§àŠ€à§àŠ°àŠ£àŠàаà§àŠ€àŠŸ">
+<!ENTITY torbutton.cookiedialog.nameCol "Name">
+<!ENTITY torbutton.cookiedialog.pathCol "Path">
+<!ENTITY torbutton.cookiedialog.protectCookie "àŠà§àŠàŠ¿ àŠ°àŠà§àŠ·àŠŸ àŠàаà§àŠš">
+<!ENTITY torbutton.cookiedialog.removeCookie "àŠà§àŠàŠ¿ àŠžàŠ°àŠŸàŠš">
+<!ENTITY torbutton.cookiedialog.unprotectCookie "àŠ
àŠ°àŠà§àŠ·àŠ¿àŠ€ àŠà§àŠàŠ¿">
+<!ENTITY torbutton.cookiedialog.removeAllBut "àŠžàŠ®àŠžà§àŠ€ àŠàŠ¿àŠšà§àŠ€à§ àŠžà§àаàŠà§àŠ·àŠ¿àŠ€ àŠžàŠ°àŠŸàŠš">
+<!ENTITY torbutton.cookiedialog.saveAllCookies "àŠšàŠ€à§àŠš àŠà§àŠàŠ¿ àŠžàŠàаàŠà§àŠ·àŠ£ àŠàаà§àŠš">
+<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "àŠšàŠ€à§àŠš àŠà§àŠàŠ¿ àŠ°àŠà§àŠ·àŠŸ àŠàŠ°àŠ¬à§àŠš àŠšàŠŸ">
+<!ENTITY torbutton.prefs.restrict_thirdparty "àŠ€à§àŠ€à§àŠ¯àŠŒ àŠªàŠà§àŠ·à§àа àŠà§àŠàŠ¿àŠ àŠàŠ¬àŠ àŠ
àŠšà§àŠ¯àŠŸàŠšà§àН àŠà§àаà§àŠ¯àŠŸàŠàŠ¿àŠ àŠ¡à§àŠàŠŸ àŠšàŠ¿àŠ¯àŠŒàŠšà§àŠ€à§àŠ°àŠ£ àŠàаà§àŠš">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "àŠàŠªàŠšàŠ¿ àŠ¬à§àŠ°àŠŸàŠàŠ àŠàŠ°à§ àŠ¬à§àŠ°àŠŸàŠàŠ àŠ¹àŠ¿àŠžàŠŸàŠ¬à§ àŠ¬àŠ¿àŠàŠ¿àŠšà§àŠš àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠ¬à§àŠ¶àŠ¿àŠ·à§àŠà§àНàŠà§àŠ²àŠ¿ àŠ
àŠªàŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠàŠ°àŠŸ àŠ¥à§àŠà§ àŠ¬àŠ¿àŠ°àŠ€ àŠ¥àŠŸàŠàŠŸàŠ° àŠàŠšà§àН àŠàŠ àŠ¬àŠà§àŠžàŠàŠ¿ àŠà§àŠ àŠàаà§àŠšà¥€ àŠªàŠ°àŠ¿àŠ¬àŠ°à§àŠ€àŠ¿àŠ€ àŠ¬à§àŠ¶àŠ¿àŠ·à§àŠà§àНàŠà§àŠ²àŠ¿àŠ° àŠ®àŠ§à§àŠ¯à§ àŠ°àŠ¯àŠŒà§àŠà§ àŠ¬à§àŠ²àŠ¬ àŠàŠàŠàаàŠàв, àŠ¬à§àŠ°àŠ¡àŠàŠŸàŠžà§àŠ àŠà§àŠ¯àŠŸàŠšà§àв, àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠà§àŠ¯àŠŸàŠ¶, àŠà§àŠàŠ¿àŠ, àŠ«à§àŠ¯àŠŸàŠàŠ¿àŠàŠš, àŠàŠàŠàŠàŠ¿àŠàŠ¿àŠªàŠ¿ àŠ
àŠ¹àŠ¿àŠàŠ¥ àŠ¹à§àŠ¡àŠŸàŠ°, àŠ²àŠ¿àŠàŠ àŠªà§àŠ°àŠ¿àŠàŠšà§àŠàŠž, àŠžà§àŠ¥àŠŸàŠšà§àŠ¯àŠŒ àŠžà§àŠà§àаà§àŠ, àŠ®àŠ¿àŠ¡àŠ¿àŠ¯àŠŒàŠŸàŠžà§àаà§àŠž àŠàŠàŠàаàŠàв, àŠàŠžàŠ¿àŠàŠžàŠªàŠ¿ àŠ
àŠšà§àаà§àЧ, àŠ¶à§àŠ¯àŠŒàŠŸàŠ° àŠàŠ¯àŠŒàŠŸàŠ°à§àŠàŠŸàŠ°à§àŠž, àŠàŠ¬àŠ àŠàŠ¿àŠàвàŠàŠž àŠžà§àŠ¶àŠš àŠàŠ¿àŠà
Š¿àŠà¥€">
+<!ENTITY torbutton.prefs.resist_fingerprinting "àŠ
àŠšà§àŠ¯àŠŸàŠšà§àН àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ°àŠàŠŸàŠ°à§àŠŠà§àа àŠ¥à§àŠà§ àŠàŠªàŠšàŠ¿ àŠªàŠŸàŠ°à§àŠ¥àŠà§àН àŠ¬àŠ¿àŠ¬àŠ°àŠ£ àŠªàŠ°àŠ¿àŠ¬àŠ°à§àŠ€àŠš àŠàаà§àŠš">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "àŠàŠªàŠšàŠŸàŠ° àŠàŠ®à§àŠªàŠ¿àŠàŠàŠŸàŠ°à§àа àŠªàŠŸàŠ°àŠ«àŠ°àŠ®à§àŠ¯àŠŸàŠšà§àŠž, àŠà§àЬà§àаà§àŠ¡ àŠ²à§àŠàŠàŠ, àŠ²à§àŠà§àв, àŠàŠšàŠžà§àŠàв àŠàŠ°àŠŸ àŠªà§àŠ²àŠŸàŠàŠàŠšàŠà§àŠ²àŠ¿àŠ° àŠ
àŠ¬àŠžà§àŠ¥àŠŸàŠš, àŠàŠšàŠžà§àŠàв àŠàŠ°àŠŸ àŠªà§àŠ²àŠŸàŠàŠàŠšàŠà§àŠ²àŠ¿àŠ° àŠ€àŠŸàŠ²àŠ¿àŠàŠŸ, àŠàŠªàŠšàŠŸàŠ° àŠšà§àŠàŠàŠ¯àŠŒàŠŸàŠ°à§àŠ àŠžà§àŠ¥àŠ¿àŠ€àŠ¿, àŠžà§àŠà§àаà§àŠš àŠ
àŠàŠ¿àŠàŠ®àŠš, àŠžà§àŠà§àŠ°àŠ¿àŠšà§àа àŠàŠàŠŸàŠ°, àŠžàŠŸàŠàŠ-àŠàа àŠžàŠŸàŠ¥à§ àŠàŠªàŠšàŠŸàŠ° àŠàŠ®à§àŠªàŠ¿àŠàŠàŠŸàŠ°à§àа àŠàŠ®àŠš àŠàŠ¿àŠà§ àŠàŠ¿àŠšàŠ¿àŠž àŠ²à§àŠàŠ¿àŠ¯àŠŒà§ àŠ°àŠŸàŠàŠ€à§ àŠàŠ àŠ¬àŠà§àŠžàŠàŠ¿ àŠà§àŠ àŠàаà§àŠš àŠ¯àŠŸ àŠžàŠŸàŠàŠàŠàŠ¿ àŠàŠªàŠšàŠŸàŠ° àŠàŠŸàŠà§ àŠ
àŠšàŠšà§àН àŠ¹àŠ€à§ àŠªàŠŸàŠ°à§à¥€ àŠšàŠ¿àŠ°à§àŠŠàŠ¿àŠ·à§àŠ àŠà§àŠ® àŠžà§àŠ€àŠ°, àŠžàŠ®àŠ°à§àŠ¥àŠ¿àŠ€ àŠ«àŠŸàŠàвà§àа àŠ§àŠ°àŠš, àŠžàŠ¿àŠžà§àŠà§àŠ® àŠ°àŠ àŠàŠ¬àŠ WebGL àŠà§àŠ·àŠ®àŠ€à
ŠŸàŠà§àŠ²àŠ¿à¥€">
+<!ENTITY torbutton.prefs.sec_caption "àŠšàŠ¿àŠ°àŠŸàŠªàŠ€à§àŠ€àŠŸàŠ° àŠ®àŠŸàŠ€à§àŠ°àŠŸ">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "àŠžàŠ¿àŠàŠ¿àŠàŠ°àŠ¿àŠàŠ¿ àŠžà§àŠ²àŠŸàŠàŠ¡àŠŸàŠ° àŠàŠªàŠšàŠŸàŠà§ àŠšàŠ¿àŠ°à§àŠŠàŠ¿àŠ·à§àŠ àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°à§àа àŠ¬à§àŠ¶àŠ¿àŠ·à§àŠà§àНàŠà§àŠ²àŠ¿ àŠ
àŠà§àŠ·àŠ® àŠàŠ°àŠ€à§ àŠŠà§àŠ¯àŠŒ àŠ¯àŠŸ àŠàŠªàŠšàŠŸàŠ° àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°àŠà§ àŠ¹à§àŠ¯àŠŸàŠàŠ¿àŠàŠ¯àŠŒà§àа àŠªà§àаàŠà§àŠ·à§àŠàŠŸàŠà§àŠ²àŠ¿àŠà§ àŠàŠ°àŠ àŠŠà§àаà§àŠ¬àŠ² àŠàŠ°à§ àŠ€à§àŠ²àŠ€à§ àŠªàŠŸàŠ°à§à¥€">
+<!ENTITY torbutton.prefs.sec_standard_label "àŠ®àŠŸàŠš">
+<!ENTITY torbutton.prefs.sec_standard_description "àŠžàŠ®àŠžà§àŠ€ àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠàŠ¬àŠ àŠàŠ¯àŠŒà§àŠ¬àŠžàŠŸàŠàŠ àŠ¬à§àŠ¶àŠ¿àŠ·à§àŠà§àН àŠžàŠà§àŠ·àŠ® àŠàŠ°àŠŸ àŠ¹àŠ¯àŠŒà¥€">
+<!ENTITY torbutton.prefs.sec_safer_label "àŠšàŠ¿àŠ°àŠŸàŠªàŠŠ">
+<!ENTITY torbutton.prefs.sec_safer_description "àŠàŠ¯àŠŒà§àŠ¬àŠžàŠŸàŠàŠà§àа àŠ¬à§àŠ¶àŠ¿àŠ·à§àŠà§àНàŠà§àŠ²àŠ¿ àŠªà§àŠ°àŠŸàŠ¯àŠŒàŠ àŠ¬àŠ¿àŠªàŠà§àŠàŠšàŠ àŠàаà§, àŠ¯àŠŸ àŠàŠ¿àŠà§ àŠžàŠŸàŠàŠàŠà§àŠ²àŠ¿ àŠàŠŸàŠ°à§àНàŠàŠŸàŠ°àŠ¿àŠ€àŠŸ àŠ¹àŠŸàŠ°àŠŸàŠ€à§ àŠ¬àŠŸàŠ§àŠŸ àŠŠà§àŠ¯àŠŒà¥€">
+<!ENTITY torbutton.prefs.sec_safer_list_label "àŠšàŠ¿àŠ°àŠŸàŠªàŠŠ àŠžà§àŠàŠ¿àŠàŠžà§:">
+<!ENTITY torbutton.prefs.sec_safest_label "àŠšàŠ¿àŠ°àŠŸàŠªàŠŠ">
+<!ENTITY torbutton.prefs.sec_safest_description "àŠ¶à§àЧà§àŠ®àŠŸàŠ€à§àа àŠžà§àŠ¥àŠŸàŠ¯àŠŒà§ àŠžàŠŸàŠàŠ àŠàŠ¬àŠ àŠ®à§àŠ²àŠ¿àŠ àŠªàŠ°àŠ¿àŠ·à§àŠ¬àŠŸàŠà§àŠ²àŠ¿àŠ° àŠàŠšà§àН àŠªà§àŠ°àŠ¯àŠŒà§àŠàŠšà§àŠ¯àŠŒ àŠàŠ¯àŠŒà§àŠ¬àŠžàŠŸàŠàŠ àŠ¬à§àŠ¶àŠ¿àŠ·à§àŠà§àНàŠà§àŠ²àŠ¿ àŠ®àŠà§àŠà§àŠ°àŠ¿ àŠŠà§àŠ¯àŠŒ àŠàŠ àŠªàŠ°àŠ¿àŠ¬àŠ°à§àŠ€àŠšàŠà§àŠ²àŠ¿ àŠàŠ®à§àŠ, àŠ®àŠ¿àŠ¡àŠ¿àŠ¯àŠŒàŠŸ àŠàŠ¬àŠ àŠžà§àŠà§àŠ°àŠ¿àŠªà§àŠàŠà§àŠ²àŠ¿ àŠªà§àаàŠàŠŸàŠ¬àŠ¿àŠ€ àŠàаà§à¥€">
+<!ENTITY torbutton.prefs.sec_safest_list_label "àŠšàŠ¿àŠ°àŠŸàŠªàŠŠ àŠžà§àŠàŠ¿àŠ àŠ:">
+<!ENTITY torbutton.prefs.sec_learn_more_label "àŠàŠ°àŠ àŠàŠŸàŠšà§àŠš">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "Non-HTTPS àŠžàŠŸàŠàŠàŠà§àŠ²àŠ¿àŠ€à§ àŠàŠŸàŠàŠŸàŠžà§àŠà§àŠ°àŠ¿àŠªà§àŠ àŠ
àŠà§àŠ·àŠ® àŠàŠ°àŠŸ àŠàŠà§à¥€">
+<!ENTITY torbutton.prefs.sec_js_disabled "àŠàŠŸàŠàŠŸàŠžà§àŠà§àŠ°àŠ¿àŠªà§àŠ àŠžàŠ¬ àŠžàŠŸàŠàŠà§ àŠ¡àŠ¿àŠ«àŠ²à§àŠ àŠŠà§àŠ¬àŠŸàŠ°àŠŸ àŠšàŠ¿àŠ·à§àŠà§àŠ°àŠ¿àŠ¯àŠŒ àŠàŠ°àŠŸ àŠ¹àŠ¯àŠŒà¥€">
+<!ENTITY torbutton.prefs.sec_limit_typography "àŠàŠ¿àŠà§ àŠ«àŠšà§àŠ àŠàŠ¬àŠ àŠàŠ£àŠ¿àŠ€ àŠàŠ¿àŠ¹à§àŠš àŠ
àŠà§àŠ·àŠ® àŠàŠà§à¥€">
+<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "àŠàŠ¿àŠà§ àŠ«àŠšà§àŠ, àŠàŠàŠàŠš, àŠàŠ£àŠ¿àŠ€ àŠªà§àŠ°àŠ€à§àŠ àŠàŠ¬àŠ àŠàŠ¬àŠ¿ àŠ
àŠà§àŠ·àŠ® àŠ°àŠ¯àŠŒà§àŠà§à¥€">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "àŠ
àŠ¡àŠ¿àŠ àŠàŠ¬àŠ àŠàŠ¿àŠ¡àŠ¿àŠ (HTML5 àŠ®àŠ¿àŠ¡àŠ¿àŠ¯àŠŒàŠŸ) àŠà§àŠ²àŠ¿àŠ-àŠà§-àŠà§àŠ²àŠŸà¥€">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/bn-BD/torbutton.properties b/src/chrome/locale/bn-BD/torbutton.properties
new file mode 100644
index 0000000..377fd91
--- /dev/null
+++ b/src/chrome/locale/bn-BD/torbutton.properties
@@ -0,0 +1,58 @@
+torbutton.circuit_display.internet = àŠàŠšà§àŠàŠŸàŠ°àŠšà§àŠà§àа
+torbutton.circuit_display.ip_unknown = àŠàŠàŠªàŠ¿ àŠ
àŠàŠŸàŠšàŠŸ
+torbutton.circuit_display.onion_site = àŠ
àŠšàŠ¿àŠàŠš àŠžàŠŸàŠàŠ
+torbutton.circuit_display.this_browser = àŠàŠ àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°
+torbutton.circuit_display.relay = Relay
+torbutton.circuit_display.tor_bridge = àŠ¬à§àŠ°àŠ¿àŠ
+torbutton.circuit_display.unknown_country = àŠ
àŠàŠŸàŠšàŠŸ àŠŠà§àж
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = àŠàŠ°àŠ àŠàŠŸàŠšà§àŠš
+torbutton.content_sizer.margin_tooltip = àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠàŠªàŠšàŠŸàŠ° àŠàŠàŠšà§àŠ¡à§ àŠªà§àŠ°àŠžà§àŠ¥ àŠàŠ¬àŠ àŠàŠà§àŠàŠ€àŠŸ àŠšàŠ¿àŠà§àŠàŠ€ àŠàŠ°àŠ€à§ àŠàŠ àŠ®àŠŸàŠ°à§àŠàŠ¿àŠš àŠ¯à§àŠ àŠàаà§, àŠàŠ¬àŠ àŠàŠàŠàŠŸàŠ¬à§ àŠ®àŠŸàŠšà§àŠ· àŠàŠªàŠšàŠŸàŠà§ àŠ
àŠšàŠ²àŠŸàŠàŠš àŠà§àаà§àŠ¯àŠŸàŠ àŠàŠ°àŠŸàŠ° àŠà§àŠ·àŠ®àŠ€àŠŸ àŠ¹à§àŠ°àŠŸàŠž àŠàаà§à¥€
+torbutton.panel.tooltip.disabled = àŠàа àŠžàŠà§àŠ°àŠ¿àŠ¯àŠŒ àŠàŠ°àŠ€à§ àŠà§àŠ²àŠ¿àŠ àŠàаà§àŠš
+torbutton.panel.tooltip.enabled = àŠàа àŠ
àŠà§àŠ·àŠ® àŠàŠ°àŠ€à§ àŠà§àŠ²àŠ¿àŠ àŠàаà§àŠš
+torbutton.panel.label.disabled = àŠàа àŠ
àŠà§àŠ·àŠ®
+torbutton.panel.label.enabled = àŠàаà§àŠ àŠžàŠà§àŠ°àŠ¿àŠ¯àŠŒ
+extensions.torbutton(a)torproject.org.description = Torbutton àŠàа àŠžà§àŠàŠ¿àŠàŠž àŠàŠšàŠ«àŠ¿àŠàŠŸàŠ° àŠàŠ°àŠŸàŠ° àŠàŠšà§àН àŠàŠàŠàŠ¿ àŠ¬à§àŠ€àŠŸàŠ® àŠžàŠ°àŠ¬àŠ°àŠŸàŠ¹ àŠàŠ°à§ àŠàŠ¬àŠ àŠ¬à§àНàŠà§àŠ€àŠ¿àŠàŠ€ àŠ¬à§àŠ°àŠŸàŠàŠàŠ¿àŠ àŠ¡à§àŠàŠŸ àŠŠà§àаà§àŠ€ àŠàŠ¬àŠ àŠžàŠ¹àŠà§ àŠªàŠ°àŠ¿àŠ·à§àŠàŠŸàŠ° àŠàаà§à¥€
+torbutton.popup.external.title = àŠàŠàŠàŠ¿ àŠ¬àŠŸàŠ¹à§àŠ¯àŠ¿àŠ àŠ«àŠŸàŠàв àŠàŠŸàŠàŠª àŠ¡àŠŸàŠàŠšàŠ²à§àŠ¡ àŠàŠ°àŠ¬à§àŠš?
+torbutton.popup.external.app = àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠàŠ àŠ«àŠŸàŠàвàŠàŠ¿ àŠªà§àŠ°àŠŠàŠ°à§àŠ¶àŠš àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°à§ àŠšàŠŸà¥€ àŠàŠªàŠšàŠ¿ àŠàŠàŠ¿ àŠ
àŠšà§àН àŠ
à§àŠ¯àŠŸàŠªà§àŠ²àŠ¿àŠà§àŠ¶àŠš àŠŠàŠ¿àŠ¯àŠŒà§ àŠà§àŠ²àŠ€à§ àŠ¹àŠ¬à§à¥€\n
+torbutton.popup.external.note = àŠàŠ¿àŠà§ àŠ§àŠ°àŠ£à§àа àŠ«àŠŸàŠàвàŠà§àŠ²àŠ¿ àŠàа àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠšàŠŸ àŠàаà§àŠ àŠàŠšà§àŠàŠŸàŠ°àŠšà§àŠà§ àŠžàŠàНà§àŠ àŠžà§àŠ¥àŠŸàŠªàŠš àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°à§à¥€\n
+torbutton.popup.external.suggest = àŠšàŠ¿àŠ°àŠŸàŠªàŠŠ àŠ¹àŠàŠ¯àŠŒàŠŸàŠ° àŠàŠšà§àН, àŠ
àŠ«àŠ²àŠŸàŠàŠšà§ àŠ¥àŠŸàŠàŠŸ àŠ
àŠ¬àŠžà§àŠ¥àŠŸàŠ¯àŠŒ àŠàŠªàŠšàŠŸàŠà§ àŠ¶à§àЧà§àŠ®àŠŸàŠ€à§àа àŠ¡àŠŸàŠàŠšàŠ²à§àŠ¡ àŠ¹àŠàŠ¯àŠŒàŠŸ àŠ«àŠŸàŠàвàŠà§àŠ²àŠ¿ àŠà§àŠ²àŠ€à§ àŠ¹àŠ¬à§, àŠ
àŠ¥àŠ¬àŠŸ àŠàŠ°à§ àŠ²àŠŸàŠàŠ àŠžàŠ¿àŠ¡àŠ¿ àŠ¯à§àŠ®àŠš àŠàŠŸàŠàŠ¯àŠŒàŠŸàŠ°àŠà§àŠ²àŠ¿ àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠàŠ°àŠŸ àŠàŠàŠ¿àŠ€à¥€\n
+torbutton.popup.launch = àŠ¡àŠŸàŠàŠšàŠ²à§àŠ¡ àŠ«àŠŸàŠàв
+torbutton.popup.cancel = àŠ¬àŠŸàŠ€àŠ¿àŠ²
+torbutton.popup.dontask = àŠžà§àŠ¬àŠ¯àŠŒàŠàŠà§àŠ°àŠ¿àŠ¯àŠŒàŠàŠŸàŠ¬à§ àŠàŠàŠš àŠ¥à§àŠà§ àŠ«àŠŸàŠàвàŠà§àŠ²àŠ¿ àŠ¡àŠŸàŠàŠšàŠ²à§àŠ¡ àŠàаà§àŠš
+torbutton.popup.prompted_language = àŠàŠªàŠšàŠ¿ àŠàŠ°àŠ àŠà§àŠªàŠšà§àŠ¯àŠŒàŠ€àŠŸ àŠŠàŠ¿àŠ€à§, Torbutton àŠàŠ¯àŠŒà§àЬ àŠªà§àŠà§àа àŠàŠàаà§àŠàŠ¿ àŠàŠŸàŠ·àŠŸ àŠžàŠàŠžà§àŠàŠ°àŠ£ àŠ
àŠšà§àаà§àЧ àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°à§àŠšà¥€ àŠàŠàŠ¿ àŠàŠªàŠšàŠŸàŠ° àŠªàŠ°àŠ¿àŠ¬àŠ°à§àŠ€à§ àŠàŠàаà§àŠàŠ¿ àŠàŠŸàŠ·àŠŸàŠ¯àŠŒ àŠªà§àŠ°àŠŠàŠ°à§àŠ¶àŠš àŠàŠ°àŠŸàŠ° àŠàŠšà§àН àŠàŠªàŠšàŠŸàŠ° àŠžà§àŠ¥àŠŸàŠšà§àŠ¯àŠŒ àŠàŠŸàŠ·àŠŸàŠ€à§ àŠªàŠ¡àŠŒàŠ€à§ àŠªàŠàŠšà§àŠŠ àŠàŠ°à§ àŠàŠ®àŠš àŠàŠ¯àŠŒà§àЬ àŠªà§àŠ·à§àŠ àŠŸàŠà§àŠ²àŠ¿àŠ° àŠàŠŸàŠ°àŠ£ àŠ¹àŠ€à§ àŠªàŠŸàŠ°à§à¥€\n\nàŠàŠªàŠšàŠ¿ àŠàŠŸàŠ² àŠà§àŠªàŠšà§àŠ¯àŠŒàŠ€àŠŸ àŠàŠšà§àН àŠàŠàаà§àŠàŠ¿ àŠàŠŸàŠ·àŠŸ àŠàŠ¯àŠŒà§àЬ àŠªà§àŠ àŠ
àŠšà§àаà§àЧ àŠàŠ°àŠ€à§ àŠàŠŸàŠš?
+torbutton.popup.no_newnym = Torbutton àŠšàŠ¿àŠ°àŠŸàŠªàŠŠà§ àŠàŠªàŠšàŠŸàŠà§ àŠàŠàŠàŠ¿ àŠšàŠ€à§àŠš àŠªàŠ°àŠ¿àŠàŠ¯àŠŒ àŠŠàŠ¿àŠ€à§ àŠªàŠŸàŠ°à§ àŠšàŠŸà¥€ àŠàŠàŠ¿ àŠàа àŠàŠšà§àŠà§àаà§àв àŠªà§àаà§àŠ àŠ
à§àŠ¯àŠŸàŠà§àŠžà§àŠž àŠšà§àŠà¥€\n\nàŠàŠªàŠšàŠ¿ àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠ¬àŠŸàŠšà§àŠ¡àŠ² àŠàŠ²àŠ®àŠŸàŠš?
+torbutton.title.prompt_torbrowser = àŠà§àаà§àŠ€à§àŠ¬àŠªà§àаà§àŠ£ Torbutton àŠ€àŠ¥à§àН
+torbutton.popup.prompt_torbrowser = Torbutton àŠàŠàŠš àŠàŠ¿àŠšà§àŠšàŠàŠŸàŠ¬à§ àŠàŠŸàŠ àŠàаà§: àŠàŠªàŠšàŠ¿ àŠàŠàŠ¿ àŠàа àŠ¬àŠšà§àЧ àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°àŠ¬à§àŠš àŠšàŠŸà¥€\n\nàŠàŠ®àŠ°àŠŸ àŠàŠ àŠªàŠ°àŠ¿àŠ¬àŠ°à§àŠ€àŠšàŠàŠ¿ àŠ€à§àŠ°àŠ¿ àŠàаà§àŠàŠ¿ àŠàŠŸàŠ°àŠ£ àŠàŠàŠ¿ àŠàŠàŠàŠ¿ àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°à§àа Torbutton àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠàŠ°àŠŸ àŠšàŠ¿àŠ°àŠŸàŠªàŠŠ àŠšàŠ¯àŠŒ àŠ¯àŠŸ àŠ
-àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠ¿àŠàŠ¯àŠŒà§àа àŠàŠšà§àŠ¯àŠ àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠàŠ°àŠŸ àŠ¹àŠ¯àŠŒà¥€ àŠžà§àŠàŠŸàŠšà§ àŠ
àŠšà§àŠ àŠ¬àŠŸàŠ àŠàŠ¿àŠ² àŠ¯à§ àŠàŠ®àŠ°àŠŸ àŠ
àŠšà§àН àŠà§àŠš àŠàŠªàŠŸàŠ¯àŠŒ àŠ àŠ¿àŠ àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°à§ àŠšàŠŸà¥€\n\nàŠàŠªàŠšàŠ¿ àŠ¯àŠŠàŠ¿ àŠžàŠŸàŠ§àŠŸàŠ°àŠ£àŠ€ àŠ«àŠŸàŠ¯àŠŒàŠŸàŠ°àŠ«àŠà§àŠž àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠàŠ°à§ àŠ°àŠŸàŠàŠ€à§ àŠàŠŸàŠš, àŠ€àŠŸàŠ¹àŠ²à§ àŠàŠªàŠšàŠŸàŠà§ Torbutton àŠàŠšàŠàŠšàŠžà§àŠàв àŠàŠ°àŠ€à§ àŠ¹àŠ¬à§ àŠàŠ¬àŠ àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠ¬à§àŠ¯àŠŸàŠ£à§àŠ¡àŠ² àŠ¡àŠŸàŠàŠšàŠ²
à§àŠ¡ àŠàŠ°àŠ€à§ àŠ¹àŠ¬à§à¥€ àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°à§àа àŠà§àŠªàŠšà§àŠ¯àŠŒàŠ€àŠŸ àŠ¬à§àŠ¶àŠ¿àŠ·à§àŠà§àН àŠžàŠŸàŠ§àŠŸàŠ°àŠ£ àŠ«àŠŸàŠ¯àŠŒàŠŸàŠ°àŠ«àŠà§àŠžà§àа àŠà§àŠ¯àŠŒà§àŠ àŠàŠà§àŠàŠ€àŠ°, àŠàŠ®àŠšàŠàŠ¿ àŠ«àŠŸàŠ¯àŠŒàŠŸàŠ°àŠ«àŠà§àŠžà§àа àŠàаà§àЬà§àŠàŠšà§àа àŠžàŠŸàŠ¥à§ àŠ¬à§àŠ¯àŠ¬àŠ¹à§àŠ€ àŠ¹àŠ¯àŠŒà¥€\n\nTorbutton àŠà§ àŠ®à§àŠà§ àŠ«à§àŠ²àŠŸàŠ° àŠàŠšà§àН Tools-> Addons-> àŠàŠà§àŠžàŠà§àŠšàŠ¶àŠšàŠà§àŠ²àŠ¿àŠ€à§ àŠ¯àŠŸàŠš àŠàŠ¬àŠ àŠ€àŠŸàŠ°àŠªàŠ° àŠàŠ°àŠ¬à§àŠ€àŠšà§àа àŠªàŠŸàŠ¶à§ àŠžàŠ°àŠŸàŠš àŠ¬à§àŠ€àŠŸàŠ®à§ àŠà§àŠ²àŠ¿àŠ àŠàаà§àŠšà¥€
+torbutton.popup.short_torbrowser = àŠà§àаà§àŠ€à§àŠ¬àŠªà§àаà§àŠ£ Torbutton àŠ€àŠ¥à§àН!\n\nTorbutton àŠàŠàŠš àŠžàŠ¬àŠžàŠ®àŠ¯àŠŒ àŠžàŠà§àŠ·àŠ® àŠàŠ°àŠŸ àŠ¹àŠ¯àŠŒà¥€\n\nàŠàŠ°àŠ àŠ€àŠ¥à§àН àŠàŠšà§àН Torbutton àŠà§àŠ²àŠ¿àŠ àŠàаà§àŠšà¥€
+
+torbutton.popup.confirm_plugins = àŠªà§àŠ²àŠŸàŠàŠàŠš àŠ¯à§àŠ®àŠš àŠ«à§àвà§àŠ¯àŠŸàŠ¶ àŠàŠªàŠšàŠŸàŠ° àŠà§àŠªàŠšà§àŠ¯àŠŒàŠ€àŠŸ àŠàŠ¬àŠ àŠà§àŠªàŠšà§àŠ¯àŠŒàŠ€àŠŸ àŠà§àŠ·àŠ€àŠ¿ àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°à§à¥€\n\nàŠ€àŠŸàŠ°àŠŸ àŠàŠªàŠšàŠŸàŠ° àŠ¬àŠ°à§àŠ€àŠ®àŠŸàŠš àŠ
àŠ¬àŠžà§àŠ¥àŠŸàŠš àŠàŠ¬àŠ àŠàŠàŠªàŠ¿ àŠ àŠ¿àŠàŠŸàŠšàŠŸ àŠªà§àаàŠàŠŸàŠ¶ àŠàŠ°àŠ€à§ àŠàа àŠªàŠŸàŠž àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°à§à¥€\n\nàŠàŠªàŠšàŠ¿ àŠàŠ¿ àŠªà§àŠ²àŠŸàŠàŠàŠšàŠà§àŠ²àŠ¿ àŠžàŠà§àŠ·àŠ® àŠàŠ°àŠ€à§ àŠàŠŸàŠš?\n
+torbutton.popup.never_ask_again = àŠàŠ®àŠŸàŠà§ àŠàŠ¬àŠŸàŠ° àŠàŠ¿àŠà§àŠàŠŸàŠžàŠŸ àŠàŠ°àŠ¬à§àŠš àŠšàŠŸ
+torbutton.popup.confirm_newnym = àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠžàŠ®àŠžà§àŠ€ àŠàŠàŠšà§àŠ¡à§ àŠàŠ¬àŠ àŠà§àŠ¯àŠŸàŠ¬ àŠ¬àŠšà§àЧ àŠàŠ°àŠ¬à§ àŠžàŠ®àŠžà§àŠ€ àŠàŠ¯àŠŒà§àŠ¬àŠžàŠŸàŠàŠ àŠžà§àŠ¶àŠš àŠ¹àŠŸàŠ°àŠ¿àŠ¯àŠŒà§ àŠ¯àŠŸàŠ¬à§à¥€\n\nàŠàŠªàŠšàŠŸàŠ° àŠªàŠ°àŠ¿àŠàŠ¯àŠŒ àŠ°àŠ¿àŠžà§àŠ àŠàŠ°àŠ€à§ àŠàŠŸàŠ°à§àŠ àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠªà§àŠšàŠ°àŠŸàŠ¯àŠŒ àŠàŠŸàŠ²à§ àŠàаà§àŠš?\n\n
+
+torbutton.slider_notification = àŠžàŠ¬à§àŠ onion àŠ®à§àŠšà§àŠ€à§ àŠàŠàŠš àŠàŠàŠàŠ¿ àŠšàŠ¿àŠ°àŠŸàŠªàŠ€à§àŠ€àŠŸ àŠžà§àŠ²àŠŸàŠàŠ¡àŠŸàŠ° àŠ°àŠ¯àŠŒà§àŠà§ àŠ¯àŠŸ àŠàŠªàŠšàŠŸàŠà§ àŠàŠªàŠšàŠŸàŠ° àŠšàŠ¿àŠ°àŠŸàŠªàŠ€à§àŠ€àŠŸ àŠžà§àŠ€àŠ°àŠà§ àŠžàŠŸàŠ®àŠà§àŠàŠžà§àН àŠàŠ°àŠ€à§ àŠŠà§àŠ¯àŠŒà¥€ àŠàŠàŠŸ àŠà§àŠ àŠàаà§àŠš!
+torbutton.slider_notification_button = àŠšàŠ¿àŠ°àŠŸàŠªàŠ€à§àŠ€àŠŸ àŠžà§àŠàŠ¿àŠàŠž àŠà§àвà§àŠš
+
+torbutton.maximize_warning = Maximising àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠàŠ¯àŠŒà§àŠ¬àŠžàŠŸàŠàŠàŠà§àŠ²àŠ¿ àŠàŠªàŠšàŠŸàŠ° àŠ®àŠšàŠ¿àŠàа àŠàŠàŠŸàŠ° àŠšàŠ¿àŠ°à§àŠ§àŠŸàŠ°àŠ£ àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°à§, àŠ¯àŠŸ àŠàŠªàŠšàŠŸàŠà§ àŠà§àаà§àŠ¯àŠŸàŠ àŠàŠ°àŠ€à§ àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠàŠ°àŠŸ àŠ¯à§àŠ€à§ àŠªàŠŸàŠ°à§à¥€ àŠàŠ®àŠ°àŠŸ àŠžà§àŠªàŠŸàŠ°àŠ¿àŠ¶ àŠàŠ°àŠ¿ àŠ¯à§ àŠàŠªàŠšàŠ¿ àŠ€àŠŸàŠŠà§àа àŠ®à§àв àŠ¡àŠ¿àŠ«àŠ²à§àŠ àŠàŠàŠŸàŠ°à§ àŠàа àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠàŠàŠšà§àŠ¡à§ àŠà§àŠ¡àŠŒà§ àŠ¯àŠŸàŠšà¥€
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=àŠàŠ àŠàŠ¯àŠŒà§àŠ¬àŠžàŠŸàŠàŠàŠàŠ¿ (%S) HTML5 àŠà§àŠ¯àŠŸàŠšàŠàŠŸàŠž àŠàŠ®à§àŠ àŠ¡à§àŠàŠŸ àŠàŠà§àŠžàŠà§àаà§àŠ¯àŠŸàŠà§àŠ àŠàŠ°àŠŸàŠ° àŠà§àŠ·à§àŠàŠŸ àŠàаà§àŠà§, àŠ¯àŠŸ àŠàŠªàŠšàŠŸàŠ° àŠàŠ®à§àŠªàŠ¿àŠàŠàŠŸàŠ°àŠà§ àŠžà§àŠ¬àŠ€àŠšà§àŠ€à§àаàŠàŠŸàŠ¬à§ àŠžàŠšàŠŸàŠà§àŠ€ àŠàŠ°àŠ€à§ àŠ¬à§àŠ¯àŠ¬àŠ¹à§àŠ€ àŠ¹àŠ€à§ àŠªàŠŸàŠ°à§à¥€\n\nàŠàŠàŠàŠàŠ¿àŠàŠ®àŠàв àŠà§àŠ¯àŠŸàŠšàŠàŠŸàŠž àŠàŠ®à§àŠ àŠ¡àŠŸàŠàŠŸàŠàŠ¿ àŠ¬à§àа àŠàŠ°àŠ€à§ àŠàŠ àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ°àŠàŠ¿ àŠàŠ¿ àŠ¬à§àŠ°àŠŸàŠàŠàŠŸàŠ° àŠ
àŠšà§àŠ®àŠ€àŠ¿ àŠŠà§àЬà§?
+canvas.notNow=àŠàŠàŠš àŠšàŠŸ
+canvas.notNowAccessKey=N
+canvas.allow=àŠàŠ¬àŠ¿àŠ·à§àŠ¯àŠ€à§ àŠ
àŠšà§àŠ®àŠ€àŠ¿ àŠŠàŠ¿àŠš
+canvas.allowAccessKey=A
+canvas.never=àŠàŠ àŠžàŠŸàŠàŠà§àа àŠàŠšà§àН àŠàŠàŠšàŠ àŠšàŠŸ(àŠªà§àŠ°àŠžà§àŠ€àŠŸàŠ¬àŠ¿àŠ€)
+canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S àŠªà§àаà§àŠ«àŠŸàŠàв àŠžàŠ®àŠžà§àŠ¯àŠŸ
+profileReadOnly=àŠàŠªàŠšàŠ¿ àŠ¶à§àЧà§àŠ®àŠŸàŠ€à§àа àŠªàŠ àŠšàŠ¯à§àŠà§àН àŠ«àŠŸàŠàв àŠžàŠ¿àŠžà§àŠà§àŠ® àŠ¥à§àŠà§ %S àŠàŠŸàŠ²àŠšàŠŸ àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°àŠ¬à§àŠš àŠšàŠŸà¥€ àŠàŠàŠ¿ àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠàŠ°àŠŸàŠ° àŠà§àŠ·à§àŠàŠŸ àŠàŠ°àŠŸàŠ° àŠàŠà§ %S àŠàŠªàŠ¿ àŠ
àŠšà§àН àŠ
àŠ¬àŠžà§àŠ¥àŠŸàŠš àŠ¥à§àŠà§ àŠàŠªàŠ¿ àŠàаà§àŠšà¥€
+profileReadOnlyMac=àŠàŠªàŠšàŠ¿ àŠ¶à§àЧà§àŠ®àŠŸàŠ€à§àа àŠªàŠ àŠšàŠ¯à§àŠà§àН àŠ«àŠŸàŠàв àŠžàŠ¿àŠžà§àŠà§àŠ® àŠ¥à§àŠà§ %S àŠàŠŸàŠ²àŠšàŠŸ àŠàŠ°àŠ€à§ àŠªàŠŸàŠ°àŠ¬à§àŠš àŠšàŠŸà¥€ àŠàŠàŠ¿ àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠàŠ°àŠŸàŠ° àŠà§àŠ·à§àŠàŠŸ àŠàŠ°àŠŸàŠ° àŠàŠà§ àŠàŠªàŠšàŠŸàŠ° àŠ¡à§àŠžà§àŠàŠàŠª àŠ¬àŠŸ àŠ
à§àŠ¯àŠŸàŠªà§àŠ²àŠ¿àŠà§àŠ¶àŠš àŠ«à§àвà§àŠ¡àŠŸàŠ°à§ %S àŠàŠªàŠ¿ àŠàаà§àŠšà¥€
+profileAccessDenied=%S àŠªà§àаà§àŠ«àŠŸàŠàвàŠàŠ¿ àŠ
à§àŠ¯àŠŸàŠà§àŠžà§àŠž àŠàŠ°àŠŸàŠ° àŠ
àŠšà§àŠ®àŠ€àŠ¿ àŠšà§àŠ àŠŠàŠ¯àŠŒàŠŸ àŠàŠ°à§ àŠàŠªàŠšàŠŸàŠ° àŠ«àŠŸàŠàв àŠžàŠ¿àŠžà§àŠà§àŠ®à§àа àŠ
àŠšà§àŠ®àŠ€àŠ¿àŠà§àŠ²àŠ¿ àŠžàŠŸàŠ®àŠà§àŠàŠžà§àН àŠàаà§àŠš àŠàŠ¬àŠ àŠàŠ¬àŠŸàŠ° àŠà§àŠ·à§àŠàŠŸ àŠàаà§àŠšà¥€
+profileMigrationFailed=àŠàŠªàŠšàŠŸàŠ° àŠ¬àŠ¿àŠŠà§àŠ¯àŠ®àŠŸàŠš %S àŠªà§àаà§àŠ«àŠŸàŠàŠ²à§ àŠžà§àŠ¥àŠŸàŠšàŠŸàŠšà§àŠ€àŠ° àŠ¬à§àŠ¯àŠ°à§àŠ¥ àŠ¹àŠ¯àŠŒà§àŠà§à¥€\nàŠšàŠ€à§àŠš àŠžà§àŠàŠ¿àŠàŠž àŠ¬à§àŠ¯àŠ¬àŠ¹àŠŸàŠ° àŠàŠ°àŠŸ àŠ¹àŠ¬à§à¥€
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/da/torbutton.properties b/src/chrome/locale/da/torbutton.properties
index d3be2cc..12b7980 100644
--- a/src/chrome/locale/da/torbutton.properties
+++ b/src/chrome/locale/da/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=Du kan ikke kÞre %S fra et skrivebeskyttet filsystem. Kopiér v
profileReadOnlyMac=Du kan ikke kÞre %S fra et skrivebeskyttet filsystem. Kopiér venligst %S til skrivebordet eller en programmappe fÞr du prÞver at bruge det.
profileAccessDenied= %S har ikke rettigheder til at bruge profilen. Skift venligst rettigheder og prÞv igen.
profileMigrationFailed=OverfÞrsel af din eksisterende %S profil fejlede.\nNye indstillinger vil blive brugt.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/de/torbutton.properties b/src/chrome/locale/de/torbutton.properties
index e3c33c7..6564c22 100644
--- a/src/chrome/locale/de/torbutton.properties
+++ b/src/chrome/locale/de/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=Es ist nicht möglich %S auf einem nur lesbaren Dateisystem zu s
profileReadOnlyMac=Es ist nicht möglich %S auf einem nur lesbaren Dateisystem zu starten. Bitte %S auf Ihren Schreibtisch oder den Anwendungsordner kopieren, bevor Sie es benutzen.
profileAccessDenied=%S hat keine Berechtigung um dieses Profil abzurufen. Bitte die Berechtigungen Ihres Dateisystems einstellen und es noch einmal probieren.
profileMigrationFailed=Ãbernahme des bestehenden %S Profils ist fehlgeschlagen.\nEs werden neue Einstellungen verwendet.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/es/torbutton.properties b/src/chrome/locale/es/torbutton.properties
index 5463ea1..3afb1be 100644
--- a/src/chrome/locale/es/torbutton.properties
+++ b/src/chrome/locale/es/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=No puede ejecutar %S desde un sistema de ficheros de solo-lectur
profileReadOnlyMac=No puede ejecutar %S desde un sistema de ficheros de solo-lectura. Copie %S a su escritorio o la carpeta de aplicaciones antes de intentar usarlo.
profileAccessDenied=%S no tiene permiso para acceder al perfil. Ajuste los permisos de su sistema de ficheros e inténtelo de nuevo.
profileMigrationFailed=Ha ocurrido un error en la migración de tu perfil %S. \nSe usarán los nuevos ajustes.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Conexión encriptada (Servicio Onion, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Conexión encpritada (Servicio Onion)
diff --git a/src/chrome/locale/eu/torbutton.dtd b/src/chrome/locale/eu/torbutton.dtd
index fc95c71..f1b9409 100644
--- a/src/chrome/locale/eu/torbutton.dtd
+++ b/src/chrome/locale/eu/torbutton.dtd
@@ -2,7 +2,7 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "Tor zirkuitu berria gune honetarako">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
-<!ENTITY torbutton.context_menu.preferences "Security SettingsâŠ">
+<!ENTITY torbutton.context_menu.preferences "Segurtasun Ezarpenak...">
<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Tor Sarearen Ezarpenak...">
<!ENTITY torbutton.context_menu.networksettings.key "N">
@@ -11,7 +11,7 @@
<!ENTITY torbutton.context_menu.cookieProtections "Cookie babesak...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Sakatu Torbutton abiarazteko">
-<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.security_settings "Tor Nagibatzailearen Segurtasun Ezarpenak">
<!ENTITY torbutton.prefs.restore_defaults "Lehenetsiak berrezarri">
<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "Cookie Babesak kudeatu">
@@ -33,19 +33,19 @@
<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Keep this box checked to hide things from websites that could be unique about you, including your computer performance, keyboard layout, locale, the location of installed plugins, the list of installed plugins, your network status, screen orientation, screen size, site-specific zoom levels, supported file types, system colors, and WebGL capabilities.">
<!ENTITY torbutton.prefs.sec_caption "Segurtasun maila">
<!ENTITY torbutton.prefs.sec_caption_tooltip "The Security Slider lets you disable certain browser features that may make your browser more vulnerable to hacking attempts.">
-<!ENTITY torbutton.prefs.sec_standard_label "Standard">
-<!ENTITY torbutton.prefs.sec_standard_description "All Tor Browser and website features are enabled.">
-<!ENTITY torbutton.prefs.sec_safer_label "Safer">
+<!ENTITY torbutton.prefs.sec_standard_label "Estandarra">
+<!ENTITY torbutton.prefs.sec_standard_description "Tor Nabigatzailearen eta web-orriaren ezaugarri guztiak gaituta daude.">
+<!ENTITY torbutton.prefs.sec_safer_label "Seguruagoa">
<!ENTITY torbutton.prefs.sec_safer_description "Disables website features that are often dangerous, causing some sites to lose functionality.">
-<!ENTITY torbutton.prefs.sec_safer_list_label "At the safer setting:">
-<!ENTITY torbutton.prefs.sec_safest_label "Safest">
+<!ENTITY torbutton.prefs.sec_safer_list_label "Ezarpenik seguruenean: ">
+<!ENTITY torbutton.prefs.sec_safest_label "Seguruena">
<!ENTITY torbutton.prefs.sec_safest_description "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.">
<!ENTITY torbutton.prefs.sec_safest_list_label "At the safest setting:">
-<!ENTITY torbutton.prefs.sec_learn_more_label "Learn more">
-<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "JavaScript is disabled on non-HTTPS sites.">
+<!ENTITY torbutton.prefs.sec_learn_more_label "Gehiago jakin">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "JavaScript ezgaituta dago HTTPS ez diren web-orrietan.">
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
-<!ENTITY torbutton.circuit_display.title "Tor Circuit">
-<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
+<!ENTITY torbutton.circuit_display.title "Tor Zirkuitoa">
+<!ENTITY torbutton.circuit_display.new_circuit "Zirkuito berria Gune honetarako">
diff --git a/src/chrome/locale/eu/torbutton.properties b/src/chrome/locale/eu/torbutton.properties
index e77d04a..5362d07 100644
--- a/src/chrome/locale/eu/torbutton.properties
+++ b/src/chrome/locale/eu/torbutton.properties
@@ -7,7 +7,7 @@ torbutton.circuit_display.tor_bridge = Zubia
torbutton.circuit_display.unknown_country = Herrialde ezezaguna
torbutton.circuit_display.guard = Guard
torbutton.circuit_display.guard_note = Your [Guard] node may not change.
-torbutton.circuit_display.learn_more = Learn more
+torbutton.circuit_display.learn_more = Gehiago jakin
torbutton.content_sizer.margin_tooltip = Tor nabigatzaileak marjin hau gehitzen du zure lehioaren zabalera eta altuera ez hain bereizgarria egiteko, horrela norbaitek zure jarraipena egiteko gaitasuna murriztuz.
torbutton.panel.tooltip.disabled = Sakatu Tor gaitzeko
torbutton.panel.tooltip.enabled = Sakatu Tor ezgaitzeko
@@ -52,3 +52,7 @@ profileReadOnly=Ezin duzu %S exekutatu irakurtzeko soilik den fitxategi sistema
profileReadOnlyMac=Ezin duzu %S exekutatu irakurtzeko soilik den fitxategi sistema batetik. Mesedez kopiatu %S zure mahaigain edo aplikazioen karpetara erabiltzen saiatu baino lehenago.
profileAccessDenied=%S ez du profilera sartzeko baimenik. Mesedez egokitu itzazu zure fitxategi sistemaren baimenak eta berriz saiatu.
profileMigrationFailed=Zure %S profilaren migrazioak huts egin du.\nEzarpen berriak erabiliko dira.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/fa/torbutton.properties b/src/chrome/locale/fa/torbutton.properties
index 7b282da..1ce4082 100644
--- a/src/chrome/locale/fa/torbutton.properties
+++ b/src/chrome/locale/fa/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=ØŽÙ
ا ÙÙ
Û ØªÙØ§ÙÛØ¯ اجرا %S از ÛÚ© ÙØ§ÛÙ Ø³ÛØ³
profileReadOnlyMac=ØŽÙ
ا ÙÙ
Û ØªÙØ§ÙÛØ¯ اجرا %S از ÛÚ© ÙØ§ÛÙ Ø³ÛØ³ØªÙ
ÙÙØ· Ø®ÙØ§ÙدÙÛ. ÙØ·Ùا Ú©ÙŸÛ Ú©ÙÛØ¯ %S ؚ٠دسکتاٟ Ø®ÙØ¯ØªØ§Ù ÛØ§ ÙŸÙØŽÙ ØšØ±ÙØ§Ù
Ù ÙØšÙ از ØªÙØ§ØŽ ØšØ±Ø§Û Ø§Ø³ØªÙØ§Ø¯Ù از Ø¢Ù.
profileAccessDenied=Ùª S Ø§Ø¬Ø§Ø²Ù Ø¯Ø³ØªØ±Ø³Û ØšÙ Ù
؎خصات ÙØ¯Ø§Ø±Ø¯. ÙØ·Ùا Ù
Ø¬ÙØ²ÙØ§Û Ø³ÛØ³ØªÙ
ÙØ§ÛÙ Ø®ÙØ¯ را ØªÙØžÛÙ
Ù Ø¯ÙØšØ§Ø±Ù Ø³Ø¹Û Ú©ÙÛØ¯.
profileMigrationFailed=Ù
ÙØ§Ø¬Ø±Øª ÙØ§Ù
ÙÙ٠از ٟرÙÙØ§ÛÙ %S.\nØªÙØžÛÙ
ات Ø¬Ø¯ÛØ¯ Ø§Ø³ØªÙØ§Ø¯Ù Ø®ÙØ§Ùد ؎د.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/fr/torbutton.properties b/src/chrome/locale/fr/torbutton.properties
index 5b7b344..00dd0ac 100644
--- a/src/chrome/locale/fr/torbutton.properties
+++ b/src/chrome/locale/fr/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=Vous ne pouvez pas exécuter %S à partir dâun systÚme de fic
profileReadOnlyMac=Vous ne pouvez pas exécuter %S à partir dâun systÚme de fichiers en lecture seul. Veuillez copier %S vers votre dossier Bureau ou Applications avant dâessayer de lâutiliser.
profileAccessDenied=%S nâa pas le droit dâaccéder au profil. Veuillez ajuster les droits de votre systÚme de fichiers et ressayer.
profileMigrationFailed=La migration de votre profil existant %S a échoué.\nDe nouveaux paramÚtres vont être utilisés.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=La connexion est chiffrée (service oignon, %1$S, clés %2$S bits, %3$S)
+pageInfo_OnionEncryption=La connexion est chiffrée (service oignon)
diff --git a/src/chrome/locale/he/aboutDialog.dtd b/src/chrome/locale/he/aboutDialog.dtd
new file mode 100644
index 0000000..ce1bcba
--- /dev/null
+++ b/src/chrome/locale/he/aboutDialog.dtd
@@ -0,0 +1,19 @@
+<!ENTITY project.start "&brandShortName; ×€××ª× ×¢"×">
+<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
+<!ENTITY project.tpoLink "×-&vendorShortName;">
+<!ENTITY project.end ", ×ך××× ××× ×××× ×ת ך××× ××€××¢× ×××× ×¢× ×€×š××××ª× ×××ך××ª× ×ךשת.">
+
+<!ENTITY help.start "ך××Š× ××¢××ך?">
+<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
+<!ENTITY help.donateLink "תך××">
+<!ENTITY help.or "××">
+<!-- LOCALIZATION NOTE (help.getInvolvedLink): This is a link title that links to https://www.torproject.org/getinvolved/volunteer.html.en -->
+<!ENTITY help.getInvolvedLink "×××× ××¢×ך×!">
+<!ENTITY help.end "!">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/docs/trademark-faq.html.en -->
+<!ENTITY bottomLinks.questions "ש×××ת?">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
+<!ENTITY bottomLinks.grow "×¢××ך ×ךשת Tor ×××××!">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
+<!ENTITY bottomLinks.license "××××¢ ך×ש××">
+<!ENTITY tor.TrademarkStatement "'Tor' ×-'ס×××× ××׊×' ×× ×¡××× ×× ×ס×ך××× ×š×©×××× ×©× Tor Project, Inc.">
diff --git a/src/chrome/locale/he/aboutTBUpdate.dtd b/src/chrome/locale/he/aboutTBUpdate.dtd
new file mode 100644
index 0000000..2f93038
--- /dev/null
+++ b/src/chrome/locale/he/aboutTBUpdate.dtd
@@ -0,0 +1,6 @@
+<!ENTITY aboutTBUpdate.title "×¢×××× ×× ×××€××€× Tor">
+<!ENTITY aboutTBUpdate.updated "××€××€× Tor ×¢××××.">
+<!ENTITY aboutTBUpdate.linkPrefix "×××××¢ ×××¢×××× ×ª ×××תך ×¢× ××š×¡× ××,">
+<!ENTITY aboutTBUpdate.linkLabel "×קך ××תך ש×× ×">
+<!ENTITY aboutTBUpdate.linkSuffix ".">
+<!ENTITY aboutTBUpdate.changeLogHeading "×××× ×©×× ××××:">
diff --git a/src/chrome/locale/he/aboutTor.dtd b/src/chrome/locale/he/aboutTor.dtd
index 9f14022..819cc8e 100644
--- a/src/chrome/locale/he/aboutTor.dtd
+++ b/src/chrome/locale/he/aboutTor.dtd
@@ -1,47 +1,45 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
-<!ENTITY aboutTor.title "About Tor">
+<!ENTITY aboutTor.title "××××ת Tor">
-<!ENTITY aboutTor.outOfDateTorOn.label "HOWEVER, this browser is out of date.">
-<!ENTITY aboutTor.outOfDateTorOff.label "ALSO, this browser is out of date.">
-<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Download Tor Browser Bundle Update.">
+<!ENTITY aboutTor.outOfDateTorOn.label "×××ך×: ××€××€× ×× ××× × ××¢××××.">
+<!ENTITY aboutTor.outOfDateTorOff.label "××× ××, ××€××€× ×× ××× × ××¢××××.">
+<!ENTITY aboutTor.outOfDate2.label "×××¥ ×¢× ×××Š× ××× ××ך ×××××§ ××ך ×¢×××× ×××€××€× Tor">
-<!ENTITY aboutTor.check.label "Test Tor Network Settings">
+<!ENTITY aboutTor.check.label "××× ×××ך×ת ךשת Tor">
-<!ENTITY aboutTor.success.label "Congratulations!">
-<!ENTITY aboutTor.success2.label "This browser is configured to use Tor.">
-<!ENTITY aboutTor.success3.label "You are now free to browse the Internet anonymously.">
-<!ENTITY aboutTor.failure.label "Something Went Wrong!">
-<!ENTITY aboutTor.failure2.label "Tor is not working in this browser.">
-<!ENTITY aboutTor.failure3prefix.label "For assistance, please contact ">
-<!ENTITY aboutTor.failure3Link "help(a)rt.torproject.org">
-<!ENTITY aboutTor.failure3suffix.label ".">
+<!ENTITY aboutTor.success.label "×ך×× ××× ×× ××€××€× Tor">
+<!ENTITY aboutTor.success2.label "××××ך ×× ×š×©×ª Tor.">
+<!ENTITY aboutTor.success3.label "××ª× ×¢×ש×× ×××€×©× ××××ש ×××× ××š× × ××××€× ××××× ×.">
+<!ENTITY aboutTor.failure.label "×ש×× ×שת×ש!">
+<!ENTITY aboutTor.failure2.label "Tor ××× × ×¢××× ×××€××€× ××.">
-<!ENTITY aboutTor.search.label "Search">
-<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/do/search">
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.search.label "×׀ש">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
-<!ENTITY aboutTor.torInfo1.label "Additional Info:">
-<!ENTITY aboutTor.torInfo2.label "Country & IP Address:">
-<!ENTITY aboutTor.torInfo3.label "Exit Node:">
-<!ENTITY aboutTor.torInfo4.label "This server does not log any information about visitors.">
-<!ENTITY aboutTor.whatnextQuestion.label "What Next?">
-<!ENTITY aboutTor.whatnextAnswer.label "Tor is NOT all you need to browse anonymously! You may need to change some of your browsing habits to ensure your identity stays safe.">
-<!ENTITY aboutTor.whatnext.label "Tips On Staying Anonymous »">
+<!ENTITY aboutTor.torInfo1.label "××××¢ × ×סף:">
+<!ENTITY aboutTor.torInfo2.label "×××× × ××ת××ת IP:">
+<!ENTITY aboutTor.torInfo3.label "׊××ת ×׊×××:">
+<!ENTITY aboutTor.torInfo4.label "שךת ×× ××× × ×š××©× ××××× ××××¢ ××ש×× ××××ת ××קך××.">
+<!ENTITY aboutTor.whatnextQuestion.label "×× ××××?">
+<!ENTITY aboutTor.whatnextAnswer.label "Tor ××× × ×× ×× ×©×ª×××§×§ ×× ×¢× ×× ×ª ××××ש ××××€× ×× ×× ×××! ××ת×× ×©×ª×Š××š× ××©× ×ת ×××§ ××ך××× ×××××©× ×©×× ××× ×××××× ×©××××ª× ×ª×××תך ×××××.">
+<!ENTITY aboutTor.whatnext.label "×××€×× ×ש×××š× ×¢× ×× ×× ××××ת ×ךשת »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
-<!ENTITY aboutTor.helpInfo1.label "You Can Help!">
-<!ENTITY aboutTor.helpInfo2.label "There are many ways you can help make the Tor Network faster and stronger:">
-<!ENTITY aboutTor.helpInfo3.label "Run a Tor Relay Node »">
+<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
+<!ENTITY aboutTor.torbrowser_user_manual.label "××ך×× ×שת×ש ×©× ××€××€× Tor">
+<!ENTITY aboutTor.helpInfo1.label "××ª× ×××× ××¢××ך!">
+<!ENTITY aboutTor.helpInfo2.label "××©× × ×ך××× ×š××ת ××× ××ª× ×××× ×עש×ת ×ת ךשת Tor ××××š× ××תך ××××§× ××תך:">
+<!ENTITY aboutTor.helpInfo3.label "×××§×× ××××€×¢×× ×ע׊×× ×©×š×ª Tor">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
-<!ENTITY aboutTor.helpInfo4.label "Volunteer Your Services »">
+<!ENTITY aboutTor.helpInfo4.label "× ×× ×ת ש×ך×ת×× Â»">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.helpInfo5.label "Make a Donation »">
+<!ENTITY aboutTor.helpInfo5.label "תך×× Â»">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
-<!ENTITY aboutTor.footer.label "The Tor Project is a US 501(c)(3) non-profit dedicated to the research, development, and education of online anonymity and privacy.">
-<!ENTITY aboutTor.learnMore.label "Learn more about The Tor Project »">
+<!ENTITY aboutTor.footer.label "×××× Tor ××× ×ך××× US 501(c)(3) ××× ××ך×ת ך××× ××××§×ש ×××קך, ×€×ת×× ×××× ×× ×©× ××××× ××ת ××§××× ×ª ×׀ך×××ת.">
+<!ENTITY aboutTor.learnMore.label "××× ×¢×× ××××ת ×××× Tor »">
<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html.en">
diff --git a/src/chrome/locale/he/aboutTor.properties b/src/chrome/locale/he/aboutTor.properties
index 02088f0..0999a78 100644
--- a/src/chrome/locale/he/aboutTor.properties
+++ b/src/chrome/locale/he/aboutTor.properties
@@ -2,14 +2,19 @@
# See LICENSE for licensing information.
# vim: set sw=2 sts=2 ts=8 et:
-aboutTor.searchSP.privacy=Search <a href="%1$S">securely</a> with <a href="%2$S">Startpage</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchSP.privacy.link=https://startpage.com/eng/protect-privacy.html
-# The following string is a link which replaces %2$S above.
-aboutTor.searchSP.search.link=https://startpage.com/
-
-aboutTor.searchDDG.privacy=Search <a href="%1$S">securely</a> with <a href="%2$S">DuckDuckGo</a>.
+aboutTor.searchDDG.privacy=×׀ש <a href="%1$S">×××××</a> ×¢× <a href="%2$S">DuckDuckGo</a>.
# The following string is a link which replaces %1$S above.
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=תך×× ×עת!
+
+aboutTor.donationBanner.slogan=Tor: ×× ××¢×× ××ª× ×××ת ×××××××ת
+aboutTor.donationBanner.mozilla=×ª× ×××× ×-Mozilla תש××× ×ת ××ª× ×ª×!
+
+aboutTor.donationBanner.tagline1=××× ×× ×¢× ×¢×ת×× ×××, ×××©×€× ×©××ת×ת ××€×¢××× ×× ××× 2006
+aboutTor.donationBanner.tagline2=×ךשת×× ××××€× ×¢×××× ××ך×ת
+aboutTor.donationBanner.tagline3=××ך×ת ××§××× ×ª
+aboutTor.donationBanner.tagline4=×××€××× ××××€× ×¢×××× ×××¢× ××׀ש×ת
+aboutTor.donationBanner.tagline5=××× ×× ×¢× ×׀ך×××ת ×©× ×××××× ×× ×× ×××
diff --git a/src/chrome/locale/he/brand.dtd b/src/chrome/locale/he/brand.dtd
index 59f665e..e58bb4d 100644
--- a/src/chrome/locale/he/brand.dtd
+++ b/src/chrome/locale/he/brand.dtd
@@ -2,7 +2,14 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY brandShortName "Tor Browser">
-<!ENTITY brandFullName "Tor Browser">
-<!ENTITY vendorShortName "Tor Project">
-<!ENTITY trademarkInfo.part1 "Firefox and the Firefox logos are trademarks of the Mozilla Foundation.">
+<!ENTITY brandShorterName "××€××€× Tor">
+<!ENTITY brandShortName "××€××€× Tor">
+<!ENTITY brandFullName "××€××€× Tor">
+<!ENTITY vendorShortName "×××× Tor">
+<!ENTITY trademarkInfo.part1 "Firefox ×ס×××××× ××× × ×¡××× ×× ×ס×ך××× ×š×©×××× ×××¢××ת ×§×š× Mozilla.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "×××¥ ×××¢×× ×ª ת××¡×€× ×עך×ת ×××ª×§× ××">
+<!ENTITY plugins.installed.enable "×׀שך ×תקע××">
+<!ENTITY plugins.installed.disable "×ש×ת ×תקע××">
+<!ENTITY plugins.installed.disable.tip "×××¥ ××× ××× ××¢ ××¢×× ×ª ××ª×§×¢× ×עך×ת">
diff --git a/src/chrome/locale/he/brand.properties b/src/chrome/locale/he/brand.properties
index f63def3..baf4637 100644
--- a/src/chrome/locale/he/brand.properties
+++ b/src/chrome/locale/he/brand.properties
@@ -2,14 +2,15 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-brandShortName=Tor Browser
-brandFullName=Tor Browser
-vendorShortName=Tor Project
+brandShorterName=××€××€× Tor
+brandShortName=××€××€× Tor
+brandFullName=××€××€× Tor
+vendorShortName=×××× Tor
-homePageSingleStartMain=Firefox Start, a fast home page with built-in search
-homePageImport=Import your home page from %S
+homePageSingleStartMain=Firefox Start, ××£ ××ת ×××ך ×¢× ×××€×ש ×××× ×
+homePageImport=×××× ×ת ××£ ×××ת ש×× ×-%S
-homePageMigrationPageTitle=Home Page Selection
-homePageMigrationDescription=Please select the home page you wish to use:
+homePageMigrationPageTitle=×××ךת ××£ ××ת
+homePageMigrationDescription=×× × ××ך ×ת ××£ ×××ת ש×ך׊×× × ××שת×ש ××:
-syncBrandShortName=Sync
+syncBrandShortName=×¡× ×ך×
diff --git a/src/chrome/locale/he/torbutton.dtd b/src/chrome/locale/he/torbutton.dtd
index 4b1edc4..5035258 100644
--- a/src/chrome/locale/he/torbutton.dtd
+++ b/src/chrome/locale/he/torbutton.dtd
@@ -1,22 +1,51 @@
<!ENTITY torbutton.context_menu.new_identity "×××ת ××ש×">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.networksettings "Open Network SettingsâŠ">
-<!ENTITY torbutton.context_menu.downloadUpdate "Download Tor Browser Bundle Update...">
+<!ENTITY torbutton.context_menu.new_circuit "× ×ª×× Tor ××ש ××תך ××">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "×××ך×ת ×××××...">
+<!ENTITY torbutton.context_menu.preferences.key "S">
+<!ENTITY torbutton.context_menu.networksettings "×××ך×ת ךשת Tor...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
+<!ENTITY torbutton.context_menu.downloadUpdate "××××§ ××ך ×¢×××× ×××€××€× Tor...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "××× ×ת ×§××§××">
+<!ENTITY torbutton.context_menu.cookieProtections "××× ×ª ×¢××××ת...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "×××¥ ×××× ××ת×× ×ת Torbutton">
-<!ENTITY torbutton.prefs.restore_defaults "×××š× ××ך×ךת ××××">
-<!ENTITY torbutton.cookiedialog.title "× ×× ××× ×ת ×§××§××">
+<!ENTITY torbutton.prefs.security_settings "×××ך×ת ××××× ×©× ××€××€× Tor">
+<!ENTITY torbutton.prefs.restore_defaults "ש××ך ×ך×ך×ת ××××">
+<!ENTITY torbutton.prefs.custom_warning "××¢××€×ת ×××€××€× ×××ת×××ת ש×× × ××¢× ××××ך×ת ××××× ×××ª× ×©×ךת××ת. ×××¢×× ××××× ×׀ך×××ת, ×× × ××××׊×× ×× ××××ך ×××ת ×ך××ת ×××××× ×©× ×ך×ךת ×××××.">
+<!ENTITY torbutton.cookiedialog.title "× ×× ××× ×ת ×¢××××ת">
<!ENTITY torbutton.cookiedialog.lockCol "××××">
<!ENTITY torbutton.cookiedialog.domainCol "××ך×">
<!ENTITY torbutton.cookiedialog.nameCol "ש×">
-<!ENTITY torbutton.cookiedialog.pathCol "××¢×ך">
-<!ENTITY torbutton.cookiedialog.protectCookie "××× ×¢× ××§××§×">
-<!ENTITY torbutton.cookiedialog.removeCookie "×××§ ×ת ××§××§×">
-<!ENTITY torbutton.cookiedialog.unprotectCookie "×× ×ª×× ×¢× ××§××§×">
-<!ENTITY torbutton.cookiedialog.removeAllBut "×××§ ×ת ×× ××§××§×× ××× ×××× ××">
-<!ENTITY torbutton.cookiedialog.saveAllCookies "××× ×¢× ×§××§×× ××ש××">
-<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "×× ×ª×× ×¢× ×§××§×× ××ש××">
-<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
-<!ENTITY torbutton.prefs.resist_fingerprinting "Change details that distinguish you from other Tor Browser users">
+<!ENTITY torbutton.cookiedialog.pathCol "× ×ª××">
+<!ENTITY torbutton.cookiedialog.protectCookie "××× ×¢× ×¢×××××">
+<!ENTITY torbutton.cookiedialog.removeCookie "×סך ×¢×××××">
+<!ENTITY torbutton.cookiedialog.unprotectCookie "××× ××× × ×¢× ×¢×××××">
+<!ENTITY torbutton.cookiedialog.removeAllBut "×סך ××× ×××× ×××× ××">
+<!ENTITY torbutton.cookiedialog.saveAllCookies "××× ×¢× ×¢××××ת ××ש×ת">
+<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "×× ×ª×× ×¢× ×¢××××ת ××ש×ת">
+<!ENTITY torbutton.prefs.restrict_thirdparty "×××× ×¢××××ת ××Š× ×©×××©× ×× ×ª×× × ××¢×§× ××ך××">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "×ש×ך ת××× ×× ×ס××× ×ª ××× ××× ××¢ ×ת××× ×ת ××€××€× ×ס××××ת ××××ת ×× ×׊××ת ××× ××תך ×××ª× ××¢××× ×××ש ×ךשת. ת××× ×ת ש××©×ª× × ×××××ת ×ת×××ת ××ש, עך××Š× ×©×××ך, ××××× ×××€××€×, ×¢××××ת, ׊××××ת ×××¢××€××, ××תך×ת ××××ת HTTP, ×§×× ××××ך×× ×©× ×§×ש×ך××, ××ס×× ××§×××, ×ת×××ת ××ס×× ××××, ×קש×ת OCSP, ×¢××××× ×ש×ת׀×× ××ך××ס×× ×©× ×©×× TLS.">
+<!ENTITY torbutton.prefs.resist_fingerprinting "×©× × ×€×š××× ×××××××× ××× × ×××× ×תך ×שת××©× ××€××€× Tor">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "×ש×ך ת××× ×× ×ס××× ×ª ××× ××סת×ך ××ך×× ××תך×× ×©×××××× ××××ת ××××××× ×××××, ×××× ××׊××¢× ××××©× ×©××, ××¢×š× ××§××ת, ××××ך, ×××§×× ××תקע×× ×××ª×§× ××, ךש××ת ××תקע×× ××××ª×§× ××, ×××Š× ×ךשת ש××, ××××× ×ת ×ס×, ×××× ×ס×, ך×ת ת׊××× ××× ×תך, ס××× ×§×××¥ × ×ª××××, ׊××¢× ×עך×ת ××××××ת WebGL.">
+<!ENTITY torbutton.prefs.sec_caption "ך×ת ×××××">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "××××× ×××××× × ××ª× ×× ××ש××ת ת××× ×ת ××€××€× ×ס××××ת ×שך ×¢××××ת ×עש×ת ×ת ×××€××€× ×©×× ××תך ×€×××¢ ×× ×¡××× ×ת ×€×׊××.">
+<!ENTITY torbutton.prefs.sec_standard_label "×ª×§× ×">
+<!ENTITY torbutton.prefs.sec_standard_description "×× ××××€××× ×× ×©× ××€××€× Tor ××××€××× × ×תך×× ××ש×ת××.">
+<!ENTITY torbutton.prefs.sec_safer_label "×××× ××תך">
+<!ENTITY torbutton.prefs.sec_safer_description "×ש××ת ×××€××× × ×תך ש×ס××× ×× ××¢×ת×× ×§×š×××ת, ×× ×©×××š× ××ס׀ך ×תך×× ×××× ×ª×€×§××××ת.">
+<!ENTITY torbutton.prefs.sec_safer_list_label "×××××š× ×××××× ××תך:">
+<!ENTITY torbutton.prefs.sec_safest_label "××× ××××">
+<!ENTITY torbutton.prefs.sec_safest_description "×ת×ך ךק ××××€××× × ×תך ××ך×ש×× ×¢××ך ×תך×× × ××××× ×ש×ך×ת×× ×ס×××××. ש×× ×××× ××× ×ש׀××¢×× ×¢× ×ª××× ×ת, ×××× ×תסך××××.">
+<!ENTITY torbutton.prefs.sec_safest_list_label "×××××š× ×××××× ×××תך:">
+<!ENTITY torbutton.prefs.sec_learn_more_label "××× ×¢××">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "JavaScript ××ש×ת ××× ××תך×× ×©××× × HTTPS.">
+<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript ××ש×ת ××ך×ךת ×××× ××× ××תך××.">
+<!ENTITY torbutton.prefs.sec_limit_typography "×ס׀ך ×××€× ×× ×ס×××× ×ת××××× ××ש×ת××.">
+<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "×ס׀ך ×××€× ××, ׊××××ת, ס×××× ×ת××××× ×ת××× ×ת ××ש×ת××.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "ש××¢ ×××××× (×××ת HTML5) ×× ×××¥-×××-×× ××.">
+<!ENTITY torbutton.circuit_display.title "××¢×× Tor">
+<!ENTITY torbutton.circuit_display.new_circuit "××¢×× ××ש ×¢××ך ×תך ××">
diff --git a/src/chrome/locale/he/torbutton.properties b/src/chrome/locale/he/torbutton.properties
index e4074c3..c153c61 100644
--- a/src/chrome/locale/he/torbutton.properties
+++ b/src/chrome/locale/he/torbutton.properties
@@ -1,27 +1,58 @@
-torbutton.panel.tooltip.disabled = ×××¥ ×××€×¢×ת Tor
-torbutton.panel.tooltip.enabled = ×××¥ ×××××× Tor
-torbutton.panel.label.disabled = Tor ×××××
-torbutton.panel.label.enabled = Tor ×€××¢×
-extensions.torbutton(a)torproject.org.description = Torbutton provides a button to configure Tor settings and quickly and easily clear private browsing data.
-torbutton.popup.external.title = ×××¢×× ×ª××× ××׊×× ×?
-torbutton.popup.external.app = ת××× × ××׊×× ×ת × ×××Š× ××× ×××€× ×:\n
-torbutton.popup.external.note = \n\nש×× ××: ת××× ×ת ××׊×× ××ת ××× × ×××××ת ×עש×××ת ××€×××¢ ×׀ך×××ת ש××!\n
-torbutton.popup.external.suggest = \n×× ×§×××¥ ×× ××× × ××××, ×¢××× ×ש××ך ×××ª× ×׊׀××× ×ש××× × ××××ך ×××× ××š× × ×× ××××× × ×××ך×××××ת,\n×× ×שק×× ××שת×ש ×׀ך××§×¡× ×©×§××£ ×××× LiveCD ×× torsocks.\n
-torbutton.popup.launch = ××€×¢× ×ª××× ×
-torbutton.popup.cancel = ×××××
-torbutton.popup.dontask = ת××× ××€×¢× ×ת ×ת××× × ××¢×ª× ×××××
-torbutton.popup.prompted_language = ×¢× ×× ×ª ××××ת ×׀ך×××ת ××××ךת, Torbutton ×××× ××קש ×ת ×××š×¡× ××× ×××ת ×©× ××ª×š× ××× ××š× ×. ×× ×¢×©×× ××ך×× ××× ×©×תך×× ××××× ××ª× ×š××× ××׊×× ××× ×××ת.\n\n××× ×ך׊×× × ××קש ×׊׀×ת ××תך×× ××× ×××ת ×׊××š× ×€×š×××ת ××××ךת?
-torbutton.popup.no_newnym = Torbutton ××× × ×ס××× ×ס׀ק ×× ×××ת ×××©× ×××××××. ××× ×××©× ×× Tor Control Port.\n\n××× ××ª× ××€×¢×× ×ת
-torbutton.title.prompt_torbrowser = ××××¢ Torbutton ×ש××
-torbutton.popup.prompt_torbrowser = Torbutton ×¢×ש×× ×¢××× ××ךת: ××-×׀שך ××××ת ×××ª× ××תך. עש×× × ×ת ×ש×× ×× ××× ×× ×× ×× ×××× ××שת×ש ×-Torbutton ×××€××€× ×©×ת×ש×× ×× ×× ×š×§ ×-Tor. ××× ××תך ×××× ××××× ×©×× ××××× × ××ª×§× ×ש×× ××š× ××ךת. ×× ×ך׊×× ×× ×××ש×× ×ש×××ש ך××× ××€××ך׀×קס, ×¢×××× ××ס×ך ×ת Torbutton ××××ך×× ×ת Tor Browser Bundle. ×××€××× × ×׀ך×××ת ×©× Tor Browser ××¢×××× ××××€××× × ×׀ך×××ת ×ך××××× ×©× ×€××ך׀×קס, ××€××× ×× ×€××ך׀×קס ×ש×××ש ××× ×¢× Torbutton. ××סךת Torbutton, ××©× ×××××âת×ס׀×תâ×ך×××ת ××× ×××Š× ×¢× ×׀ת×ך ×××¡×š× ××× ×-Torbutton.
-torbutton.popup.short_torbrowser = ××××¢ ×ש×× ×¢× Torbutton!\nTorbutton ×¢×ש×× ×€××¢× ×ª×××.\n×××Š× ×¢× ×-Torbutton ×××××¢ × ×סף.
+torbutton.circuit_display.internet = ××× ××š× ×
+torbutton.circuit_display.ip_unknown = IP ×××ª× ××××¢
+torbutton.circuit_display.onion_site = ×תך ×׊×
+torbutton.circuit_display.this_browser = ××€××€× ××
+torbutton.circuit_display.relay = ××סך
+torbutton.circuit_display.tor_bridge = ×שך
+torbutton.circuit_display.unknown_country = ×××× × ×× ××××¢×
+torbutton.circuit_display.guard = ××ש×ך
+torbutton.circuit_display.guard_note = ׊××ת [×××ש×ך] ש×× ×¢×©×× ×× ×××©×ª× ×ת.
+torbutton.circuit_display.learn_more = ××× ×¢××
+torbutton.content_sizer.margin_tooltip = ××€××€× Tor ××ס××£ ש×× ×× ××× ×××€×× ×ת ××××× ××ך××× ×©× ×××× × ×××××××× ×€××ת, ×××× ×××€××ת ×ת ×××××ת ×©× ×× ×©×× ××¢×§×× ××ך×× ××××€× ××§×××.
+torbutton.panel.tooltip.disabled = ×××¥ ××× ××׀שך ×ת Tor
+torbutton.panel.tooltip.enabled = ×××¥ ××× ××ש××ת ×ת Tor
+torbutton.panel.label.disabled = Tor ××ש×ת
+torbutton.panel.label.enabled = Tor ×××׀שך
+extensions.torbutton(a)torproject.org.description = Torbutton ×ס׀ק ×׀ת×ך ××× ×××××ך ×ת ×××ך×ת Tor ×××× ×× ×§×ת ××××ך×ת ×××§××ת × ×ª×× × ××××©× ×€×š××××.
+torbutton.popup.external.title = ×××ך×× ×¡×× ××׊×× × ×©× ×§×××¥?
+torbutton.popup.external.app = ××€××€× Tor ××× × ×××× ××׊×× ×§×××¥ ××. ת׊××š× ×׀ת×× ×××ª× ×××׊ע×ת ××ש×× ××ך.\n\n
+torbutton.popup.external.note = ס×××× ×ס××××× ×©× ×§×׊×× ×¢××××× ××ך×× ×××ש×××× ××ת××ך ×× ×××× ××š× × ××× ×©×××ש ×-Tor.\n
+torbutton.popup.external.suggest = ××תך ××××××, ×¢××× ×׀ת×× ×§×׊×× ×©××ך×× ×š×§ ×ש×××××ך ×× ×תק, ×× ××שת×ש ×תק××××ך ×× ×©× Tor ××× Tails. \n
+torbutton.popup.launch = ×××š× ×§×××¥
+torbutton.popup.cancel = ×××
+torbutton.popup.dontask = ×××š× ×§×׊×× ××××€× ××××××× ××¢×ª× ×××××
+torbutton.popup.prompted_language = ××× ×תת ×× ××תך ׀ך×××ת, Torbutton ×××× ××קש ×ת ×××š×¡× ××× ×××ת ×©× ××ª×š× ××× ××š× ×. ×× ×¢×©×× ××ך×× ××תך×× ×©××ª× ××¢×××£ ×קך×× ×ש׀ת ××× ×©×× ××××ת ××׊××× ××× ×××ת ×××§××.\n\n××× ×ך׊×× × ××קש ×תך×× ××©×€× ××× ×××ת ×¢××ך ׀ך×××ת ×××× ××תך?
+torbutton.popup.no_newnym = Torbutton ××× × ×××× ×תת ×× ××××× ×××ת ××ש×. ××× ×× ×××©× ×× ×€×ª×ת ×××§×š× ×©× Tor.\n\n××× ××ª× ×ך××¥ ×ת ××××ת ××€××€× Tor?
+torbutton.title.prompt_torbrowser = ××××¢ ×ש×× ×©× Torbutton
+torbutton.popup.prompt_torbrowser = Torbutton ×¢××× ×××× ××ךת: ××× × ×××× ××××ת ×××ª× ××תך.\n\nעש×× × ×©×× ×× ×× ×× ××× ×× ×××× ××שת×ש ×-Torbutton ×××€××€× ×× ××Š× ×ש×××ש ×× ×¢××ך ××××©× ×©××× × Tor. ××× ××תך ××× ×ª×§××× ×©×× ××××× × ××ª×§× ××× ××š× ××ךת.\n\n×× ×ך׊×× × ×××ש×× ××שת×ש ×-Firefox ×ך×××, ×¢××× ××ס×ך ×ת Torbutton ××××ך×× ×ת ××××ת ××€××€× Tor. ×××€××× × ×׀ך×××ת ×©× ××€××€× Tor ×× × ×¢××× ××תך ××שך ××× ×©× Firefox ך×××, ××€××× ××שך Firefox × ××Š× ×ש×××ש ×¢× Torbutton.\n\n××× ××ס×ך ×ת Torbutton, ×× ×× ××××->ת×ס׀×ת->×ך×××ת ××× ×××¥ ×¢× ××׀ת×ך ×סך ××× Torbutton.
+torbutton.popup.short_torbrowser = ××××¢ ×ש×× ×¢× Torbutton!\nTorbutton ת××× ×××׀שך ×¢×ש××.\n×××¥ ×¢× ×-Torbutton ××¢×× ××××¢.
-torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy and anonymity.\n\nThey can also bypass Tor to reveal your current location and IP address.\n\nAre you sure you want to enable plugins?\n\n
-torbutton.popup.never_ask_again = Never ask me again
+torbutton.popup.confirm_plugins = ×תקע×× ×××× Flash ×××××× ××€×××¢ ×׀ך××××ª× ××××××× ××ת×.\n\n×× ×××××× ×× ××¢×§××£ ×ת Tor ××× ××ש××£ ×ת ×××§××× ×× ×××× ××ת ×ת××ת ×-IP ש××.\n\n××× ××ª× ×××× ×©×ך׊×× × ××׀שך ×תקע××?\n\n
+torbutton.popup.never_ask_again = ××£ ×€×¢× ×× ×ª×©×× ×××ª× ×©××
+torbutton.popup.confirm_newnym = ××€××€× Tor ×ס××ך ×ת ×× ××××× ×ת ×××ש×× ××ת. ×× ×©××× ××תך×× ×××××. \n\n×××€×¢×× ×××ש ×ת ××€××€× Tor ×¢×ש×× ××× ××׀ס ×ת ×××ת×?\n\n
+
+torbutton.slider_notification = ×ת׀ך×× ×©× ×××Š× ××ך××§ ×ש ×עת ××××× ××××× ×××׀שך ×× ××ת××× ×ת ך×ת ×××××× ×©××. × ×¡× ××ת×!
+torbutton.slider_notification_button = ×€×ª× ×××ך×ת ×××××
+
+torbutton.maximize_warning = ××€×¢×ת ××¡× ××× ×××€××€× Tor ×¢×××× ××ת×ך ××תך×× ××§×××¢ ×ת ×××× ××Š× ×©××, ×× ×©×¢××× ×ש×ש ××תך ××ת×. ×× × ××××׊×× ×©×ª×ת×ך ×ת ×××× ×ת ××€××€× Tor ××××× ×ך×ךת ××××× ×××§××š× ×©×××.
# Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
-canvas.allow=×׀שך ×עת××
+canvas.siteprompt=×תך ×× (%S) × ××¡× ××××¥ × ×ª×× × ×ª××× ×ת ×§× ×ס HTML5, ×שך עש×××× ×ש×ש ××× ××××ת ××××€× ×××××× ×ת ××ש××.\n\n××× ×¢× ××€××€× Tor ××ת×ך ××××¥ × ×ª×× × ×ª××× ×ת ×§× ×ס HTML5?
+canvas.notNow=×× ×¢×ש××
+canvas.notNowAccessKey=N
+canvas.allow=×תך ×עת××
canvas.allowAccessKey=A
-canvas.never=××¢××× ×× ×¢××ך ×תך ××
+canvas.never=××£ ×€×¢× ×¢××ך ×תך ×× (×××××¥)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=××¢×ת ׀ך××€×× %S
+profileReadOnly=××× × ×××× ××ך××¥ ×ת %S ××עך×ת ×§×׊×× ×קך××× ××××. ×× × ×עתק ×ת %S ××××§×× ××ך ××€× × × ×ס××× ××שת×ש ××.
+profileReadOnlyMac=××× × ×××× ××ך××¥ ×ת %S ××עך×ת ×§×׊×× ×קך××× ××××. ×× × ×עתק ×ת %S ×ש×××× ××¢×××× ×× ×ת××§××ת ×××ש×××× ×©×× ××€× × × ×ס××× ××שת×ש ××.
+profileAccessDenied=×-%S ××× ×ךש×× ××× ××שת ×× ×׀ך××€××. ×× × ×ת×× ×ת ×ךש××ת ×עך×ת ××§×׊×× ×©×× ×× ×¡× ×©××.
+profileMigrationFailed=××××× ×©× ×׀ך××€×× ××§××× ×©×× %S × ×ש×.\n×××ך×ת ××ש×ת ×××× ×ש×××ש.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=××××ך ×××Š×€× (ש×ך×ת ×׊×, %1$S, ×׀ת××ת %2$S ס××××ת, %3$S)
+pageInfo_OnionEncryption=××××ך ×××Š×€× (ש×ך×ת ×׊×)
diff --git a/src/chrome/locale/it/torbutton.properties b/src/chrome/locale/it/torbutton.properties
index 37034ed..aa1279b 100644
--- a/src/chrome/locale/it/torbutton.properties
+++ b/src/chrome/locale/it/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=Non puoi avviare %S da un file system di sola lettura. Per favor
profileReadOnlyMac=Non puoi avviare %S da un file system di sola lettura. Per favore copia %S sulla tua scrivania o nella cartella Applicazioni prima di usarlo.
profileAccessDenied=%S non ha i permessi per accedere al profilo. Per favore, modifica i permessi del tuo file system e riprova.
profileMigrationFailed=Migrazione del tuo profilo %S esistente fallita.\nVerranno usate nuove impostazioni.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connessione cifrata (Servizio onion, %1$S, chiavi %2$S bit, %3$S)
+pageInfo_OnionEncryption=Connessione cifrata (Servizio onion)
diff --git a/src/chrome/locale/ja/torbutton.properties b/src/chrome/locale/ja/torbutton.properties
index dec68bf..29e1556 100644
--- a/src/chrome/locale/ja/torbutton.properties
+++ b/src/chrome/locale/ja/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=èªã¿èŸŒã¿å°çšã®ãã¡ã€ã«ã·ã¹ãã ã§ã¯ %S ãå®è¡
profileReadOnlyMac=èªã¿èŸŒã¿å°çšã®ãã¡ã€ã«ã·ã¹ãã ã§ã¯ %S ãå®è¡ã§ããŸããã %S ããã¹ã¯ããããã¢ããªã±ãŒã·ã§ã³ãã©ã«ããŒã«ç§»åããŠããããäžåºŠå®è¡ããŠãã ããã
profileAccessDenied=%S ã¯ãããã¡ã€ã«ã«ã¢ã¯ã»ã¹ããæš©éããããŸãããæš©éãèšå®ããŠããããäžåºŠè©ŠããŠã¿ãŠãã ããã
profileMigrationFailed=ååšããŠãããããã¡ã€ã« %S ãžã®ãã€ã°ã¬ãŒã·ã§ã³ã«å€±æããŸããã\næ°ããèšå®ãé©çšãããŸãã
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/ko/torbutton.properties b/src/chrome/locale/ko/torbutton.properties
index 7ec0238..846b6c4 100644
--- a/src/chrome/locale/ko/torbutton.properties
+++ b/src/chrome/locale/ko/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=%S ìì ìœêž°ì ì© íìŒìì€í
ìŒë¡ ì€ííì€ ì
profileReadOnlyMac=ìœêž° ì ì© íìŒ ìì€í
ììë %S륌 ì€íí ì ììµëë€. %S륌 ì¬ì©íêž° ì ì %S륌 ë°í í멎ìŽë ìì© íë¡ê·žëš íŽëë¡ ë³µì¬íììì€.
profileAccessDenied=%Sì íë¡í ì¡ìžì€ ê¶íìŽ ììµëë€. íìŒ ìì€í
ê¶íì ì¡°ì íê³ ë€ì ìëíììì€.
profileMigrationFailed=Ʞ졎 %S íë¡íì ìŽì íì§ ëª»íìµëë€. ìë¡ìŽ ì€ì ìŽ ì¬ì©ë©ëë€.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/nl/torbutton.properties b/src/chrome/locale/nl/torbutton.properties
index ccdac33..d190cee 100644
--- a/src/chrome/locale/nl/torbutton.properties
+++ b/src/chrome/locale/nl/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=Je kan %S niet draaien vanaf een alleen-lezen bestands-systeem K
profileReadOnlyMac=Je kan %S niet draaien vanaf een alleen lezen bestands-systeem. Kopieer %S naar je Bureaublad of de Applicatie map voordat je het opnieuw probeert.
profileAccessDenied=%S heeft niet de juiste permissies om toegang te krijgen tot het profiel. Pas de bestands-systeem permissies aan en probeer het opnieuw.
profileMigrationFailed=Migreren van uw bestaande %S profiel is mislukt.\nNieuwe instellingen zijn nu van toepassing.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/pl/torbutton.properties b/src/chrome/locale/pl/torbutton.properties
index aea4730..a790414 100644
--- a/src/chrome/locale/pl/torbutton.properties
+++ b/src/chrome/locale/pl/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=Nie moÅŒesz uruchomiÄ %S z systemu plików tylko do odczytu. Pr
profileReadOnlyMac=Nie moÅŒesz uruchomiÄ %S w systemie plików tylko do odczytu. Prosimy o skopiowanie %S na pulpit, lub do folderu aplikacji przed ponownÄ
próbÄ
uruchomienia.
profileAccessDenied=%S nie posiada uprawnieÅ, aby zobaczyÄ ten profil. Prosimy zmieniÄ uprawnienia systemu plików i spróbowaÄ ponownie.
profileMigrationFailed=Migracja Twojego isniejÄ
cego profilu %S nie powiodÅa siÄ.\nNowe ustawienia zostanÄ
uÅŒyte.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/pt-BR/torbutton.dtd b/src/chrome/locale/pt-BR/torbutton.dtd
index 64e87c2..415f151 100644
--- a/src/chrome/locale/pt-BR/torbutton.dtd
+++ b/src/chrome/locale/pt-BR/torbutton.dtd
@@ -47,5 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Algumas fontes e sÃmbolos matemáticos estão desativados.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Algumas fontes, Ãcones, sÃmbolos matemáticas e imagens estão desativadas.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Clicar para tocar ou ver áudio ou vÃdeo (mÃdia HTML5).">
-<!ENTITY torbutton.circuit_display.title "Tor Circuit">
-<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
+<!ENTITY torbutton.circuit_display.title "Circuito Tor">
+<!ENTITY torbutton.circuit_display.new_circuit "Novo circuito para este site">
diff --git a/src/chrome/locale/pt-BR/torbutton.properties b/src/chrome/locale/pt-BR/torbutton.properties
index df5f7fe..0a8453c 100644
--- a/src/chrome/locale/pt-BR/torbutton.properties
+++ b/src/chrome/locale/pt-BR/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=Não é possÃvel executar %S a partir de um sistema de arquivo
profileReadOnlyMac=Não é possÃvel executar %S a partir de um sistema de arquivo "somente-leitura". Por favor, copie %S no seu Desktop ou em uma pasta de Aplicações antes de tentar utilizá-lo.\n
profileAccessDenied=%S não possui permissão para acessar o perfil. Por favor, ajuste as suas permissões de arquivo de sistema e tente novamente.
profileMigrationFailed=Migração de seu perfil %S existente falhou.\nNovas configurações serão utilizadas.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/ru/aboutTor.properties b/src/chrome/locale/ru/aboutTor.properties
index d9ea5d4..4339b07 100644
--- a/src/chrome/locale/ru/aboutTor.properties
+++ b/src/chrome/locale/ru/aboutTor.properties
@@ -14,7 +14,7 @@ aboutTor.donationBanner.slogan=Tor: ÑÑÐžÐ»ÐžÐ²Ð°Ñ ÑОÑÑПвПе ÑПпÑП
aboutTor.donationBanner.mozilla=ÐПжеÑÑвÑйÑе ÑÐµÐ³ÐŸÐŽÐœÑ Ðž Mozilla ÑÐŽÐ²ÐŸÐžÑ ÐÐ°Ñ Ð²Ð·ÐœÐŸÑ.
aboutTor.donationBanner.tagline1=ÐаÑОÑа жÑÑМалОÑÑПв, ОМÑПÑЌаÑПÑПв О акÑОвОÑÑПв Ñ 2006 гПЎа
-aboutTor.donationBanner.tagline2=СвПбПЎа ÑеÑО вП вÑÑÐŒ ЌОÑе
+aboutTor.donationBanner.tagline2=СвПбПЎа ÑеÑО вП вÑеЌ ЌОÑе
aboutTor.donationBanner.tagline3=СвПбПЎа в ÑеÑО
aboutTor.donationBanner.tagline4=СПЎейÑÑвОе ÑазвОÑÐžÑ Ð±ÐµÐ·Ð³ÑаМОÑМПгП ÑаЌПвÑÑÐ°Ð¶ÐµÐœÐžÑ Ð²ÐŸ ÐÑеЌОÑМПй СеÑО.
aboutTor.donationBanner.tagline5=ÐаÑОÑÐ°Ñ ÐПМÑОЎеМÑОалÑМПÑÑÑ ÐŒÐžÐ»Ð»ÐžÐŸÐœÐŸÐ² кажЎÑй ЎеМÑ
diff --git a/src/chrome/locale/ru/torbutton.dtd b/src/chrome/locale/ru/torbutton.dtd
index 7ca05b7..cae369e 100644
--- a/src/chrome/locale/ru/torbutton.dtd
+++ b/src/chrome/locale/ru/torbutton.dtd
@@ -42,7 +42,7 @@
<!ENTITY torbutton.prefs.sec_safest_description "РазÑеÑÐµÐœÑ ÑПлÑкП ÑÑМкÑОО веб-ÑайÑПв, ÑÑебÑÑÑОеÑÑ ÐŽÐ»Ñ ÑÑаÑОÑеÑкОÑ
ÑайÑПв О ПÑМПвМÑÑ
ÑеÑвОÑПв. ÐÑО ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑ Ð²Ð»ÐžÑÑÑ ÐœÐ° ОзПбÑажеМОÑ, ЌеЎОа О ÑкÑОпÑÑ.">
<!ENTITY torbutton.prefs.sec_safest_list_label "ÐÑО ÑаЌÑÑ
безПпаÑМÑÑ
МаÑÑÑПйкаÑ
:">
<!ENTITY torbutton.prefs.sec_learn_more_label "ÐПЎÑПбМее">
-<!ENTITY torbutton.prefs.sec_js_on_https_sites_only " JavaScript ПÑклÑÑÑМ Ма вÑеÑ
Ме HTTPS ÑайÑаÑ
. ">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only " JavaScript ПÑклÑÑеМ Ма вÑеÑ
Ме HTTPS ÑайÑаÑ
. ">
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript ПÑклÑÑеМ пП ÑЌПлÑÐ°ÐœÐžÑ ÐœÐ° вÑеÑ
ÑайÑаÑ
.">
<!ENTITY torbutton.prefs.sec_limit_typography "ÐекПÑПÑÑе ÑÑОÑÑÑ Ðž ЌаÑеЌаÑОÑеÑкОе ÑÐžÐŒÐ²ÐŸÐ»Ñ ÐŸÑклÑÑеМÑ.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "ÐекПÑПÑÑе ÑÑОÑÑÑ, зМаÑкО, ЌаÑеЌаÑОÑеÑкОе ÑÐžÐŒÐ²ÐŸÐ»Ñ Ðž ОзПбÑÐ°Ð¶ÐµÐœÐžÑ ÐŸÑклÑÑеМÑ.">
diff --git a/src/chrome/locale/ru/torbutton.properties b/src/chrome/locale/ru/torbutton.properties
index 2194c84..d3ccbd8 100644
--- a/src/chrome/locale/ru/torbutton.properties
+++ b/src/chrome/locale/ru/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=ÐевПзЌПжМП запÑÑÑОÑÑ %S Оз пПЎ ÑОÑÑ
profileReadOnlyMac=ÐевПзЌПжМП запÑÑÑОÑÑ %S Оз ÑайлПвПй ÑОÑÑеЌÑ, ЎПÑÑÑпМПй ÑПлÑкП ÐŽÐ»Ñ ÑÑеМОÑ. ÐПжалÑйÑÑа, ÑкПпОÑÑйÑе %S Ма ÑабПÑОй ÑÑПл ОлО в Ð¿Ð°Ð¿ÐºÑ "ÐÑОлПжеМОÑ" пеÑеЎ ОÑпПлÑзПваМОеЌ.
profileAccessDenied=У %S ÐœÐµÑ ÑазÑеÑÐµÐœÐžÑ ÐœÐ° ЎПÑÑÑп к пÑПÑОлÑ. ÐПжалÑйÑÑа, ОзЌеМОÑе пÑава ЎПÑÑÑпа О пПпÑПбÑйÑе ÑМПва.
profileMigrationFailed=ÐеÑеЌеÑеМОе ваÑегП ÑÑÑеÑÑвÑÑÑегП %S пÑПÑÐžÐ»Ñ ÐœÐµ ÑЎалПÑÑ.\nÐÑÐŽÑÑ ÐžÑпПлÑзПваÑÑÑÑ ÐœÐŸÐ²Ñе МаÑÑÑПйкО.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/sv/torbutton.dtd b/src/chrome/locale/sv/torbutton.dtd
index e61d393..4bbc35a 100644
--- a/src/chrome/locale/sv/torbutton.dtd
+++ b/src/chrome/locale/sv/torbutton.dtd
@@ -47,5 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Vissa typsnitt och matte symboler Àr inaktiverade.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Vissa typsnitt, ikoner, matte symboler och bilder Àr inaktiverade.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Ljud och video (HTML5-media) Àr klicka-för-att-spel.">
-<!ENTITY torbutton.circuit_display.title "Tor Circuit">
-<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
+<!ENTITY torbutton.circuit_display.title "Tor-krets">
+<!ENTITY torbutton.circuit_display.new_circuit "Ny krets för denna webbplats">
diff --git a/src/chrome/locale/sv/torbutton.properties b/src/chrome/locale/sv/torbutton.properties
index c78ff5c..554ffc7 100644
--- a/src/chrome/locale/sv/torbutton.properties
+++ b/src/chrome/locale/sv/torbutton.properties
@@ -5,8 +5,8 @@ torbutton.circuit_display.this_browser = Denna webblÀsare
torbutton.circuit_display.relay = Router
torbutton.circuit_display.tor_bridge = Brygga
torbutton.circuit_display.unknown_country = OkÀnt land
-torbutton.circuit_display.guard = Guard
-torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.guard = Vakt
+torbutton.circuit_display.guard_note = Din [Guard] nod kanske inte Àndras.
torbutton.circuit_display.learn_more = LÀs mer
torbutton.content_sizer.margin_tooltip = Tor Browser lÀgger till denna marginal för att göra bredden och höjden på ditt fönster mindre tydlig. DÀrmed minskas möjligheten att spåra dig.
torbutton.panel.tooltip.disabled = Klicka för att aktivera Tor
@@ -52,3 +52,7 @@ profileReadOnly=Du kan inte köra %S från ett read-only filsystem. Kopiera för
profileReadOnlyMac=Du kan inte köra %S från ett read-only filsystem. Kopiera först %S till Skrivbordet eller Applications-mapp innan anvÀndning.
profileAccessDenied=%S har inte rÀttighet att anvÀnda profilen. VÀnligen Àndra dina rÀttigheter i filsystemet och försök igen!
profileMigrationFailed=Migrering av din befintliga %S profil misslyckades.\nNya instÀllningar kommer att anvÀndas.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/tr/aboutTor.dtd b/src/chrome/locale/tr/aboutTor.dtd
index 9dd32fb..9ebd845 100644
--- a/src/chrome/locale/tr/aboutTor.dtd
+++ b/src/chrome/locale/tr/aboutTor.dtd
@@ -12,7 +12,7 @@
<!ENTITY aboutTor.check.label "Tor AÄ Ayarlarını Sınayın">
-<!ENTITY aboutTor.success.label "Tor Browser'a HoÅ Geldiniz">
+<!ENTITY aboutTor.success.label "Tor Browser Uygulamasına HoŠGeldiniz">
<!ENTITY aboutTor.success2.label "Tor aÄına baÄlanıldı.">
<!ENTITY aboutTor.success3.label "Artık İnternet'te özgÃŒrce ve anonim olarak dolaÅabilirsiniz.">
<!ENTITY aboutTor.failure.label "Bir Åeyler Ters Gitti!">
diff --git a/src/chrome/locale/tr/torbutton.dtd b/src/chrome/locale/tr/torbutton.dtd
index be0a563..ab78131 100644
--- a/src/chrome/locale/tr/torbutton.dtd
+++ b/src/chrome/locale/tr/torbutton.dtd
@@ -47,5 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Bazı yazı tÃŒrleri ve matematik simgeleri devre dıÅı bırakılır.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Bazı yazı tÃŒrleri, simgeler, matematik simgeleri ve görseller devre dıÅı bırakılır.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Ses ve görÃŒntÃŒler (HTML5 ortamı) tıklayarak çalıÅtırılabilir.">
-<!ENTITY torbutton.circuit_display.title "Tor Circuit">
-<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
+<!ENTITY torbutton.circuit_display.title "Tor Devresi">
+<!ENTITY torbutton.circuit_display.new_circuit "Bu Sitenin Devresini Yenile">
diff --git a/src/chrome/locale/tr/torbutton.properties b/src/chrome/locale/tr/torbutton.properties
index 7b4b681..3554ebb 100644
--- a/src/chrome/locale/tr/torbutton.properties
+++ b/src/chrome/locale/tr/torbutton.properties
@@ -2,11 +2,11 @@ torbutton.circuit_display.internet = İnternet
torbutton.circuit_display.ip_unknown = Bilinmeyen IP
torbutton.circuit_display.onion_site = SoÄan sitesi
torbutton.circuit_display.this_browser = Bu tarayıcı
-torbutton.circuit_display.relay = Anahtarlama
+torbutton.circuit_display.relay = Aktarıcı
torbutton.circuit_display.tor_bridge = KöprÌ
torbutton.circuit_display.unknown_country = Bilinmeyen Ãlke
-torbutton.circuit_display.guard = Guard
-torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.guard = Koruma
+torbutton.circuit_display.guard_note = [Guard] dÃŒÄÃŒmÃŒnÃŒz deÄiÅtirilemez.
torbutton.circuit_display.learn_more = Ayrıntılı bilgi
torbutton.content_sizer.margin_tooltip = Tor Browser pencerenizin geniÅlik ve yÃŒksekliÄini daha az ayırt edilebilir duruma getirmek için kenar boÅlukları ekleyerek kiÅilerin sizi çevrim içi olarak izleme yeteneÄini azaltır.
torbutton.panel.tooltip.disabled = Tor yazılımını etkinleÅtirmek için tıklayın
@@ -22,9 +22,9 @@ torbutton.popup.launch = Dosyayı indir
torbutton.popup.cancel = İptal\n
torbutton.popup.dontask = Bundan sonra dosyalar otomatik indirilsin
torbutton.popup.prompted_language = Daha fazla gizlilik icin, Torbutton sayfaların İngilizce sÌrÌmlerini göstermeyi isteyebilir. Bu özellik, web sayfalarının ana diliniz yerine İngilizce görÌntÌlenmesine neden olabilir.\n\nDaha iyi gizlilik için web sayfalarının İngilizce sÌrÌmlerinin görÌntÌlenmesini ister misiniz?
-torbutton.popup.no_newnym = Torbutton size yeni bir gÃŒvenli kimlik saÄlayamadı. Tor Denetim Kapısına giriÅ yapılamıyor.\n\nTor Browser Bundle yazılımını çalıÅtırdıÄınıza emin olun.
+torbutton.popup.no_newnym = Torbutton size yeni bir gÃŒvenli kimlik saÄlayamadı. Tor Denetim Kapısına giriÅ yapılamıyor.\n\nTor Browser Bundle uygulamasını çalıÅtırdıÄınızdan emin olun.
torbutton.title.prompt_torbrowser = Ãnemli Torbutton Bilgisi
-torbutton.popup.prompt_torbrowser = Torbutton Åimdi farklı çalıÅıyor: artık kapatamıyorsunuz.\n\nBu deÄiÅikliÄi yapmamızın nedeni Tor-DıÅı kullanılan bir tarayıcıda Torbutton kullanmanın gÃŒvenli olmaması. BaÅka tÃŒrlÃŒ çözemeyeceÄimiz birçok hata vardı.\n\nFirefox tarayıcısını normal olarak kullanmak istiyorsanız, Torbutton yazılımını kaldırıp Tor Browser Bundle paketini indirebilirsiniz. Tor Browser gizlilik özellikleri normal Firefox tarayıcısına, hatta Torbutton ile kullanan Firefox ikilisine göre çok daha ÃŒstÃŒndÃŒr.\n\nTorbutton yazılımını kaldırmak için, Araçlar->Eklentiler->Uzantılar bölÃŒmÃŒne gidin ve Torbutton yazılımının yanındaki Kaldır dÃŒÄmesine tıklayın.
+torbutton.popup.prompt_torbrowser = Torbutton Åimdi farklı çalıÅıyor: artık kapatamıyorsunuz.\n\nBu deÄiÅikliÄi yapmamızın nedeni Tor dıÅında kullanılan baÅka bir tarayıcıda Torbutton kullanmanın gÃŒvenli olmaması. BaÅka tÃŒrlÃŒ çözemeyeceÄimiz birçok sorun vardı.\n\nFirefox tarayıcısını normal olarak kullanmak istiyorsanız, Torbutton yazılımını kaldırıp Tor Browser Bundle paketini indirebilirsiniz. Tor Browser gizlilik özellikleri normal Firefox tarayıcısına, hatta Torbutton ile kullanan Firefox ikilisine göre çok daha ÃŒstÃŒndÃŒr.\n\nTorbutton yazılımını kaldırmak için, Araçlar->Eklentiler->Uzantılar bölÃŒmÃŒne gidin ve Torbutton yazılımının yanındaki Kaldır dÃŒÄmesine tıklayın.
torbutton.popup.short_torbrowser = Ãnemli Torbutton Bilgisi!\n\nTorbutton artık kapatılamayacak Åekilde etkinleÅtirildi.\n\nAyrıntılı bilgi almak için Torbutton ÃŒzerine tıklayın.
torbutton.popup.confirm_plugins = Flash gibi eklentiler gizliliÄinizi ve anonim kimliÄinizi zedeleyebilir.\n\nBu eklentiler Tor yazılımını atlatarak geçerli konum ve IP adresinizi ortaya çıkarabilir.\n\nBu eklentileri etkinleÅtirmek istediÄinize emin misiniz?\n
@@ -37,7 +37,7 @@ torbutton.slider_notification_button = GÌvenlik ayarlarını aç
torbutton.maximize_warning = Tor Browser görÃŒntÃŒsÃŒnÃŒn tÃŒm ekranı kaplaması, ekran boyutunuzun web siteleri tarafından öÄrenilmesini ve bu bilginin sizi izlemek için kullanılmasını saÄlayabilir. Tor Browser pencerelerini özgÃŒn varsayılan boyutlarında bırakmanız önerilir.
# Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=Bu web sitesi (%S) bilgisayarınızı benzersiz olarak tanımlayabilmek için kullanılabilen HTML5 tuvalindeki görsel verisine eriÅmeye çalıÅtı.\n\nTor Browser bu web sitesine HTML5 tuval, görsel verisini göndersin mi?
+canvas.siteprompt=Bu web sitesi (%S) bilgisayarınızı benzersiz olarak tanımlayabilmek için kullanılabilen HTML5 tuvalindeki görsel verilerine eriÅmeye çalıÅtı.\n\nTor Browser bu web sitesine HTML5 tuval, görsel verisini göndersin mi?
canvas.notNow=Åimdi DeÄil
canvas.notNowAccessKey=N
canvas.allow=İleride izin verilsin
@@ -52,3 +52,7 @@ profileReadOnly=%S salt okunur bir dosya sisteminden çalıÅtırılamaz. LÃŒtfe
profileReadOnlyMac=%S salt okunur bir dosya sisteminden çalıÅtırılamaz. LÃŒtfen kullanmadan önce %S yazılımını MasaÃŒstÃŒ veya Uygulamalar klasörÃŒne kopyalayın.
profileAccessDenied=%S, profilinize eriÅemiyor. LÃŒtfen dosya sistemi izinlerini ayarlayarak yeniden deneyin.
profileMigrationFailed=Mevcut %S profilinizin taÅınma iÅlemi baÅarısız oldu.\nYeni ayarlar kullanılacak.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=BaÄlantı Åifreli (Onion Hizmeti, %1$S, %2$S bit anahtarlar, %3$S)
+pageInfo_OnionEncryption=BaÄlantı Åifreli (Onion Hizmeti)
diff --git a/src/chrome/locale/vi/torbutton.properties b/src/chrome/locale/vi/torbutton.properties
index b7b8a51..aa10e5f 100644
--- a/src/chrome/locale/vi/torbutton.properties
+++ b/src/chrome/locale/vi/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=Bạn khÃŽng thá» chạy %S từ má»t táºp tin há» thá»ng c
profileReadOnlyMac=Bạn khÃŽng thá» chạy %S từ má»t táºp tin há» thá»ng chá» cho Äá»c. Vui lòng chép %S tá»i Desktop hoặc ứng dụng thư mục trưá»c khi cá» gắng sá» dụng nó.
profileAccessDenied=%S khÃŽng ÄÆ°á»£c phép truy cáºp cấu hình. Vui lòng Äiá»u chá»nh sá»± cho phép cá»§a táºp tin há» thá»ng và thá» lại.
profileMigrationFailed=Viá»c di chuyá»n há» sÆ¡ %S hiá»n tại cá»§a bạn Äã thất bại.\nNhững cà i Äặt má»i sẜ ÄÆ°á»£c sá» dụng.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
diff --git a/src/chrome/locale/zh-CN/torbutton.dtd b/src/chrome/locale/zh-CN/torbutton.dtd
index d8ecba2..aa7f861 100644
--- a/src/chrome/locale/zh-CN/torbutton.dtd
+++ b/src/chrome/locale/zh-CN/torbutton.dtd
@@ -47,5 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "äžäºåäœäžæ°åŠç¬Šå·è¢«çŠçšã">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "äžäºåäœïŒåŸæ ïŒæ°åŠç¬Šå·äžåŸç被çŠçšã">
<!ENTITY torbutton.prefs.sec_click_to_play_media "ç¹å»ææŸé³é¢æè§é¢ïŒHTML5 åªäœïŒã">
-<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.title "toréŸè·¯">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/zh-CN/torbutton.properties b/src/chrome/locale/zh-CN/torbutton.properties
index b00744b..dac704c 100644
--- a/src/chrome/locale/zh-CN/torbutton.properties
+++ b/src/chrome/locale/zh-CN/torbutton.properties
@@ -5,8 +5,8 @@ torbutton.circuit_display.this_browser = æ¬æµè§åš
torbutton.circuit_display.relay = äžç»§
torbutton.circuit_display.tor_bridge = çœæ¡¥
torbutton.circuit_display.unknown_country = æªç¥åœå®¶
-torbutton.circuit_display.guard = Guard
-torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.guard = äžèœ¬
+torbutton.circuit_display.guard_note = æšçäžèœ¬èç¹äŒŒä¹å¹¶æªæ¹å
torbutton.circuit_display.learn_more = 诊ç»äºè§£
torbutton.content_sizer.margin_tooltip = Tor æµè§åšæ·»å äºäžäºèŸ¹æ¡ïŒä»¥éäœçªå£å€§å°çç¬ç¹æ§ïŒä»€åšçº¿è·èžªçæ§ååŸæŽå å°éŸã
torbutton.panel.tooltip.disabled = ç¹å»å¯çš Tor
@@ -52,3 +52,7 @@ profileReadOnly=æšäžèœåšäžäžªåªè¯»æä»¶ç³»ç»äžè¿è¡ %Sã请åšå°è¯
profileReadOnlyMac=æšäžèœåšäžäžªåªè¯»æä»¶ç³»ç»äžè¿è¡ %Sã请åšå°è¯äœ¿çšå®åå€å¶ %S å°æšçæ¡é¢æè
åºçšçšåºæä»¶å€¹ã
profileAccessDenied=%S 没ææé访é®é
眮æä»¶ãè¯·è°æŽæšçæä»¶ç³»ç»æéç¶åéè¯ã
profileMigrationFailed=蜬移æšå·²æçé
眮æä»¶ %S 倱莥ã\næ°è®Ÿçœ®å°è¢«äœ¿çšã
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=è¿æ¥å·²ç»è¢«å å¯ïŒæŽè±æå¡ïŒ %1$S, %2$S å¯é¥, %3$SïŒ
+pageInfo_OnionEncryption=è¿æ¥å·²ç»è¢«å å¯ïŒæŽè±æå¡ïŒ
diff --git a/src/chrome/locale/zh-TW/aboutDialog.dtd b/src/chrome/locale/zh-TW/aboutDialog.dtd
new file mode 100644
index 0000000..049a8d6
--- /dev/null
+++ b/src/chrome/locale/zh-TW/aboutDialog.dtd
@@ -0,0 +1,19 @@
+<!ENTITY project.start "&brandShortName; éçŒè
">
+<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
+<!ENTITY project.tpoLink "the &vendorShortName;">
+<!ENTITY project.end "äžåæè¡äœ çé±ç§èèªç±çéçå©äºæ¥ã">
+
+<!ENTITY help.start "æ³èŠè²¢ç»äžå·±ä¹ååïŒ">
+<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
+<!ENTITY help.donateLink "æå©">
+<!ENTITY help.or "æ">
+<!-- LOCALIZATION NOTE (help.getInvolvedLink): This is a link title that links to https://www.torproject.org/getinvolved/volunteer.html.en -->
+<!ENTITY help.getInvolvedLink "å å
¥åé">
+<!ENTITY help.end "ïŒ">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/docs/trademark-faq.html.en -->
+<!ENTITY bottomLinks.questions "æä»éºŒåé¡ïŒ">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
+<!ENTITY bottomLinks.grow "幫婿Žè¥è·¯ç±ç¶²è·¯æé·è壯ïŒ">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
+<!ENTITY bottomLinks.license "ææ¬è³èš">
+<!ENTITY tor.TrademarkStatement "ãTorãåãOnion Logoãçæ¯ Tor Project, Inc çèš»ååæšã">
diff --git a/src/chrome/locale/zh-TW/aboutTBUpdate.dtd b/src/chrome/locale/zh-TW/aboutTBUpdate.dtd
new file mode 100644
index 0000000..10b1788
--- /dev/null
+++ b/src/chrome/locale/zh-TW/aboutTBUpdate.dtd
@@ -0,0 +1,6 @@
+<!ENTITY aboutTBUpdate.title "æŽè¥è·¯ç±çèŠœåšæŽæ°">
+<!ENTITY aboutTBUpdate.updated "æŽè¥è·¯ç±ç芜åšå·²ç¶æŽæ°å®æ">
+<!ENTITY aboutTBUpdate.linkPrefix "æ¬æ¬¡éåºæŽæ°çææ°è³èš">
+<!ENTITY aboutTBUpdate.linkLabel "å蚪æåçç¶²ç«">
+<!ENTITY aboutTBUpdate.linkSuffix "ã">
+<!ENTITY aboutTBUpdate.changeLogHeading "è®æŽæ·å²çŽéïŒ">
diff --git a/src/chrome/locale/zh-TW/aboutTor.dtd b/src/chrome/locale/zh-TW/aboutTor.dtd
index 9f14022..7c5d11c 100644
--- a/src/chrome/locale/zh-TW/aboutTor.dtd
+++ b/src/chrome/locale/zh-TW/aboutTor.dtd
@@ -1,47 +1,45 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
-<!ENTITY aboutTor.title "About Tor">
+<!ENTITY aboutTor.title "éæŒæŽè¥è·¯ç±">
-<!ENTITY aboutTor.outOfDateTorOn.label "HOWEVER, this browser is out of date.">
-<!ENTITY aboutTor.outOfDateTorOff.label "ALSO, this browser is out of date.">
-<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Download Tor Browser Bundle Update.">
+<!ENTITY aboutTor.outOfDateTorOn.label "èŠåïŒæ€ç芜åšççæ¬å·²ç¶éæã">
+<!ENTITY aboutTor.outOfDateTorOff.label "䞊äžïŒæ€ç芜åšå·²éæã">
+<!ENTITY aboutTor.outOfDate2.label "黿æŽè¥æéç¶åŸéžææª¢æ¥æŽè¥è·¯ç±çèŠœåšæŽæ°">
-<!ENTITY aboutTor.check.label "Test Tor Network Settings">
+<!ENTITY aboutTor.check.label "枬詊æŽè¥è·¯ç±ç¶²è·¯èšå®">
-<!ENTITY aboutTor.success.label "Congratulations!">
-<!ENTITY aboutTor.success2.label "This browser is configured to use Tor.">
-<!ENTITY aboutTor.success3.label "You are now free to browse the Internet anonymously.">
-<!ENTITY aboutTor.failure.label "Something Went Wrong!">
-<!ENTITY aboutTor.failure2.label "Tor is not working in this browser.">
-<!ENTITY aboutTor.failure3prefix.label "For assistance, please contact ">
-<!ENTITY aboutTor.failure3Link "help(a)rt.torproject.org">
-<!ENTITY aboutTor.failure3suffix.label ".">
+<!ENTITY aboutTor.success.label "æ¡è¿äœ¿çšæŽè¥è·¯ç±ç芜åš">
+<!ENTITY aboutTor.success2.label "å·²ç¶é£æ¥äžæŽè¥è·¯ç±ç¶²è·¯">
+<!ENTITY aboutTor.success3.label "æšçŸåšå¯ä»¥èªç±èªåšå°ä»¥å¿åçæ
ç芜網é網路ã">
+<!ENTITY aboutTor.failure.label "çŒçé¯èª€ïŒ">
+<!ENTITY aboutTor.failure2.label "æŽè¥è·¯ç±ç¡æ³åšæ€ç芜åšäžéäœã">
-<!ENTITY aboutTor.search.label "Search">
-<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/do/search">
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.search.label "æå°">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
-<!ENTITY aboutTor.torInfo1.label "Additional Info:">
-<!ENTITY aboutTor.torInfo2.label "Country & IP Address:">
-<!ENTITY aboutTor.torInfo3.label "Exit Node:">
-<!ENTITY aboutTor.torInfo4.label "This server does not log any information about visitors.">
-<!ENTITY aboutTor.whatnextQuestion.label "What Next?">
-<!ENTITY aboutTor.whatnextAnswer.label "Tor is NOT all you need to browse anonymously! You may need to change some of your browsing habits to ensure your identity stays safe.">
-<!ENTITY aboutTor.whatnext.label "Tips On Staying Anonymous »">
+<!ENTITY aboutTor.torInfo1.label "å
¶ä»è³èšïŒ">
+<!ENTITY aboutTor.torInfo2.label "åå®¶å IP äœåïŒ">
+<!ENTITY aboutTor.torInfo3.label "åºå£ç¯é»ïŒ">
+<!ENTITY aboutTor.torInfo4.label "æ€äŒºæåšäžæèšéä»»äœæé蚪客çè³èšã">
+<!ENTITY aboutTor.whatnextQuestion.label "äžäžæ¥ïŒ">
+<!ENTITY aboutTor.whatnextAnswer.label "æŽè¥è·¯ç±äžæ¯ç¢ºä¿æšå¯ä»¥å¿åç芜çè¬éäž¹ïŒæšä»éèŠæ¹è®äžäºå人çäžç¶²çèŠœç¿æ
£ïŒä»¥ç¢ºä¿æšå人身仜çå®å
šã">
+<!ENTITY aboutTor.whatnext.label "ä¿æå¿åçç§è𣠻">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
-<!ENTITY aboutTor.helpInfo1.label "You Can Help!">
-<!ENTITY aboutTor.helpInfo2.label "There are many ways you can help make the Tor Network faster and stronger:">
-<!ENTITY aboutTor.helpInfo3.label "Run a Tor Relay Node »">
+<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
+<!ENTITY aboutTor.torbrowser_user_manual.label "æŽè¥è·¯ç±ç芜åšä¹äœ¿çšè
æå">
+<!ENTITY aboutTor.helpInfo1.label "æšå¯ä»¥å¹«å¿ïŒ">
+<!ENTITY aboutTor.helpInfo2.label "æšå¯ä»¥ééåŸå€æ¹æ³å¹«å©è®æŽè¥è·¯ç±ç¶²è·¯æŽå¿«éäžæŽåŒ·å€§ïŒ">
+<!ENTITY aboutTor.helpInfo3.label "æ¶èšçéäžåæŽè¥è·¯ç±çäžç¹Œç¯é» »">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
-<!ENTITY aboutTor.helpInfo4.label "Volunteer Your Services »">
+<!ENTITY aboutTor.helpInfo4.label "è²¢ç»æšçæå »">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.helpInfo5.label "Make a Donation »">
+<!ENTITY aboutTor.helpInfo5.label "æèŽ Â»">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
-<!ENTITY aboutTor.footer.label "The Tor Project is a US 501(c)(3) non-profit dedicated to the research, development, and education of online anonymity and privacy.">
-<!ENTITY aboutTor.learnMore.label "Learn more about The Tor Project »">
+<!ENTITY aboutTor.footer.label "Tor Project æ¯äžåçŸå 501(c)(3) éçå©çµç¹ïŒèŽåæŒç·äžå¿åèé±ç§çç ç©¶ãéçŒåæè²ã">
+<!ENTITY aboutTor.learnMore.label "äºè§£æŽå€ Tor Project çžéè³èš »">
<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html.en">
diff --git a/src/chrome/locale/zh-TW/aboutTor.properties b/src/chrome/locale/zh-TW/aboutTor.properties
index 02088f0..a66dbe3 100644
--- a/src/chrome/locale/zh-TW/aboutTor.properties
+++ b/src/chrome/locale/zh-TW/aboutTor.properties
@@ -2,14 +2,19 @@
# See LICENSE for licensing information.
# vim: set sw=2 sts=2 ts=8 et:
-aboutTor.searchSP.privacy=Search <a href="%1$S">securely</a> with <a href="%2$S">Startpage</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchSP.privacy.link=https://startpage.com/eng/protect-privacy.html
-# The following string is a link which replaces %2$S above.
-aboutTor.searchSP.search.link=https://startpage.com/
-
-aboutTor.searchDDG.privacy=Search <a href="%1$S">securely</a> with <a href="%2$S">DuckDuckGo</a>.
+aboutTor.searchDDG.privacy=éé <a href="%2$S">DuckDuckGo</a> <a href="%1$S">å®å
šå°</a>æå°ã
# The following string is a link which replaces %1$S above.
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=ç«å»ææ¬ŸïŒ
+
+aboutTor.donationBanner.slogan=Tor: å ææžäœæºæ
+aboutTor.donationBanner.mozilla=仿¥ææ¬Ÿ Mozilla æåå©å 碌èŽå!
+
+aboutTor.donationBanner.tagline1=åŸ 2006 幎起ïŒä¿è·èç¡æžçåªé«èšè
ãæå¯è
å瀟æéåè
.
+aboutTor.donationBanner.tagline2=äž²é£å
šäžç網絡èªç±
+aboutTor.donationBanner.tagline3=èªç±äžç·
+aboutTor.donationBanner.tagline4=å¬çå
šäžçç衚æèªç±
+aboutTor.donationBanner.tagline5=æ¯æ¥ä¿è·çŸè¬äººé±ç§
diff --git a/src/chrome/locale/zh-TW/brand.dtd b/src/chrome/locale/zh-TW/brand.dtd
index 59f665e..565fc61 100644
--- a/src/chrome/locale/zh-TW/brand.dtd
+++ b/src/chrome/locale/zh-TW/brand.dtd
@@ -2,7 +2,14 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY brandShortName "Tor Browser">
-<!ENTITY brandFullName "Tor Browser">
-<!ENTITY vendorShortName "Tor Project">
-<!ENTITY trademarkInfo.part1 "Firefox and the Firefox logos are trademarks of the Mozilla Foundation.">
+<!ENTITY brandShorterName "æŽè¥è·¯ç±ç芜åš">
+<!ENTITY brandShortName "æŽè¥è·¯ç±ç芜åš">
+<!ENTITY brandFullName "æŽè¥è·¯ç±ç芜åš">
+<!ENTITY vendorShortName "æŽè¥è·¯ç±å°æ¡">
+<!ENTITY trademarkInfo.part1 "Firefox è Firefox æšèªæ¯ Mozilla åºéæçèš»ååæšã">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "黿以èŒå
¥å·²å®è£çç³»çµ±å€æ">
+<!ENTITY plugins.installed.enable "åçšå€æ">
+<!ENTITY plugins.installed.disable "åçšå€æ">
+<!ENTITY plugins.installed.disable.tip "黿以黿¢èŒå
¥å·²å®è£çç³»çµ±å€æ">
diff --git a/src/chrome/locale/zh-TW/brand.properties b/src/chrome/locale/zh-TW/brand.properties
index f63def3..dfc06d7 100644
--- a/src/chrome/locale/zh-TW/brand.properties
+++ b/src/chrome/locale/zh-TW/brand.properties
@@ -2,14 +2,15 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-brandShortName=Tor Browser
-brandFullName=Tor Browser
-vendorShortName=Tor Project
+brandShorterName=æŽè¥è·¯ç±ç芜åš
+brandShortName=æŽè¥è·¯ç±ç芜åš
+brandFullName=æŽè¥è·¯ç±ç芜åš
+vendorShortName=Tor èšç«
-homePageSingleStartMain=Firefox Start, a fast home page with built-in search
-homePageImport=Import your home page from %S
+homePageSingleStartMain=Firefox Start:å
å«å
§å»ºæå°çå¿«ééŠé
+homePageImport=åŸ %S å¯å
¥æšçéŠé
-homePageMigrationPageTitle=Home Page Selection
-homePageMigrationDescription=Please select the home page you wish to use:
+homePageMigrationPageTitle=éŠé éžå
+homePageMigrationDescription=è«éžææšæ³èŠäœ¿çšçéŠé :
-syncBrandShortName=Sync
+syncBrandShortName=忥
diff --git a/src/chrome/locale/zh-TW/torbutton.dtd b/src/chrome/locale/zh-TW/torbutton.dtd
index 0f98a7a..3cb32b1 100644
--- a/src/chrome/locale/zh-TW/torbutton.dtd
+++ b/src/chrome/locale/zh-TW/torbutton.dtd
@@ -1,22 +1,51 @@
-<!ENTITY torbutton.context_menu.new_identity "æŽæèº«ä»œ">
+<!ENTITY torbutton.context_menu.new_identity "æ°èå¥èº«å">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.networksettings "Open Network SettingsâŠ">
-<!ENTITY torbutton.context_menu.downloadUpdate "Download Tor Browser Bundle Update...">
-<!ENTITY torbutton.context_menu.downloadUpdate.key "A">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections">
+<!ENTITY torbutton.context_menu.new_circuit "å»ºç«æ°çæŽè¥è·¯ç±è¿Žè·¯äŸé£æ¥äžæ€ç¶²ç«">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "å®å
šèšå®äž...">
+<!ENTITY torbutton.context_menu.preferences.key "S">
+<!ENTITY torbutton.context_menu.networksettings "æŽè¥è·¯ç±ç¶²è·¯èšå®">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
+<!ENTITY torbutton.context_menu.downloadUpdate "æª¢æ¥æŽè¥è·¯ç±çèŠœåšæŽæ°....">
+<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie ä¿è·">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
-<!ENTITY torbutton.button.tooltip "黿以åå§ Torbutton">
-<!ENTITY torbutton.prefs.restore_defaults "å埩é èšåŒ">
-<!ENTITY torbutton.cookiedialog.title "Manage Cookie Protections">
-<!ENTITY torbutton.cookiedialog.lockCol "Protected">
-<!ENTITY torbutton.cookiedialog.domainCol "Host">
+<!ENTITY torbutton.button.tooltip "æäžäžä»¥åå§å Torbutton">
+<!ENTITY torbutton.prefs.security_settings "æŽè¥è·¯ç±ç芜åšä¹å®å
šæ§èšå®">
+<!ENTITY torbutton.prefs.restore_defaults "æ¢åŸ©å°é èšåŒ">
+<!ENTITY torbutton.prefs.custom_warning "æšçç芜åšå人åèšå®å¯èœæé æå®å
šæ§ççæ
®ãåºæŒå人網路å®å
šèé±ç§çèéïŒå»ºè°æšéžçšé èšçå®å
šæ§å±€çŽéžé
ã">
+<!ENTITY torbutton.cookiedialog.title "管ç Cookie çä¿è·">
+<!ENTITY torbutton.cookiedialog.lockCol "åä¿è·">
+<!ENTITY torbutton.cookiedialog.domainCol "äž»æ©">
<!ENTITY torbutton.cookiedialog.nameCol "åçš±">
-<!ENTITY torbutton.cookiedialog.pathCol "Path">
-<!ENTITY torbutton.cookiedialog.protectCookie "Protect Cookie">
-<!ENTITY torbutton.cookiedialog.removeCookie "Remove Cookie">
-<!ENTITY torbutton.cookiedialog.unprotectCookie "Unprotect Cookie">
-<!ENTITY torbutton.cookiedialog.removeAllBut "Remove All But Protected">
-<!ENTITY torbutton.cookiedialog.saveAllCookies "Protect New Cookies">
-<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Do Not Protect New Cookies">
-<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
-<!ENTITY torbutton.prefs.resist_fingerprinting "Change details that distinguish you from other Tor Browser users">
+<!ENTITY torbutton.cookiedialog.pathCol "è·¯åŸ">
+<!ENTITY torbutton.cookiedialog.protectCookie "ä¿è· Cookie">
+<!ENTITY torbutton.cookiedialog.removeCookie "ç§»é€ Cookie">
+<!ENTITY torbutton.cookiedialog.unprotectCookie "åæ¶ä¿è· Cookie">
+<!ENTITY torbutton.cookiedialog.removeAllBut "å
šéšåªé€ïŒäœåä¿è·">
+<!ENTITY torbutton.cookiedialog.saveAllCookies "ä¿è·æ°ç Cookie">
+<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "äžä¿è·æ°ç Cookie">
+<!ENTITY torbutton.prefs.restrict_thirdparty "éå¶ç¬¬äžæ¹ cookie åå
¶ä»è¿œè¹€è³æ">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "ä¿æåçšæ€é
ç®ä»¥é¿å
ç¶æšåšçèŠœç¶²é æïŒç芜åšçæäºåèœè¢«ç¶²ç«èšèšè
å©çšäŸè¿œè¹€æšçç寊身仜ãäŸåŠïŒblob URLsã廣æé »éãçèŠœåšæ«åè³æãcookiesãfaviconsãHTTPèªèæšé ãlink preconnectsãlocalStorageãvmediaSource URLsãOCSP requestsãSharedWorkersãTLS session ticketsçã">
+<!ENTITY torbutton.prefs.resist_fingerprinting "è®æŽå¯ä»¥å奿šèå
¶ä»æŽè¥è·¯ç±ç芜åšäœ¿çšè
ç詳现è³èš">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "åŸéžå忀åèœå¯ä»¥é¿å
äžé¢éäºè³èšè¢«æé 蚪çç¶²ç«ååŸïŒéäºè³èšéœå¯ä»¥è¢«çšäŸè奿šçç寊身仜ïŒé»è
Šç³»çµ±æèœãéµç€äœå±ãèªç³»èšå®ã倿å
ä»¶çå®è£äœçœ®ãå·²å®è£ä¹å€æå
ä»¶ã網路çæ
ãè¢å¹ç倧å°èè§£æåºŠãæ¯æŽçæªæ¡æ ŒåŒã系統è²åœ©èšå®ãWebGL ä¹ç¹ªåéç®èœåã">
+<!ENTITY torbutton.prefs.sec_caption "å®å
šççŽ">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "æ€å®å
šæ§èª¿æŽæ»æ£æééæäºç芜åšçåèœïŒå°èŽæšççèŠœåšæŽå®¹æéåé§å®¢æ»æã">
+<!ENTITY torbutton.prefs.sec_standard_label "æšæº">
+<!ENTITY torbutton.prefs.sec_standard_description "ææç芜åšèç¶²ç«çåèœéœåçš">
+<!ENTITY torbutton.prefs.sec_safer_label "èŒå®å
š">
+<!ENTITY torbutton.prefs.sec_safer_description "åçšæäºåèœ,å çºå
¶æå±éª,æé æéšä»œç¶²ç«å€±èœ">
+<!ENTITY torbutton.prefs.sec_safer_list_label "åšèŒå®å
šèšå®:">
+<!ENTITY torbutton.prefs.sec_safest_label "æå®å
š">
+<!ENTITY torbutton.prefs.sec_safest_description "åªåæéæ
ç¶²ç«ååºæ¬æåçç¶²ç«åèœ.éäºè®åæåœ±é¿åç,åªé«åè
³æ¬.">
+<!ENTITY torbutton.prefs.sec_safest_list_label "åšæå®å
šèšå®:">
+<!ENTITY torbutton.prefs.sec_learn_more_label "繌çºé±è®">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "ææéHTTPSç¶²ç«æé èšåçšJavaScript ">
+<!ENTITY torbutton.prefs.sec_js_disabled "ææç¶²ç«æé èšåçšJavaScript ">
+<!ENTITY torbutton.prefs.sec_limit_typography "æäºååœ¢èæžåžç¬Šè被åçš">
+<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "æäºåå,åæš,æžåžç¬Šèèåç被åçš">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "è²é³å圱ç (HTML5 åªé«) èŠé»æææŸ">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/zh-TW/torbutton.properties b/src/chrome/locale/zh-TW/torbutton.properties
index 129d4d0..864d7fe 100644
--- a/src/chrome/locale/zh-TW/torbutton.properties
+++ b/src/chrome/locale/zh-TW/torbutton.properties
@@ -1,27 +1,58 @@
-torbutton.panel.tooltip.disabled = 黿以åçš Tor
-torbutton.panel.tooltip.enabled = 黿以åçš Tor
-torbutton.panel.label.disabled = Tor å·²åçš
-torbutton.panel.label.enabled = Tor å·²åçš
-extensions.torbutton(a)torproject.org.description = Torbutton provides a button to configure Tor settings and quickly and easily clear private browsing data.
-torbutton.popup.external.title = Load external content?
-torbutton.popup.external.app = An external application is needed to handle:\n\n
-torbutton.popup.external.note = \n\nNOTE: External applications are NOT Tor safe by default and can unmask you!\n
-torbutton.popup.external.suggest = \nåŠæéåæªæ¡æ¯äžè¢«ä¿¡ä»»çïŒæšæè©²åšå²ååŸé¢ç·æª¢èŠïŒææ¯åš VM çç°å¢äžïŒ\nææ¯èæ
®äœ¿çšééåŒ Tor 代çæååšïŒåæ¯ Tails LiveCD æ torsocksã\n
-torbutton.popup.launch = ååæçšçšåŒ
+torbutton.circuit_display.internet = ç¶²é網路
+torbutton.circuit_display.ip_unknown = æªç¥ç IP
+torbutton.circuit_display.onion_site = æŽè¥ç¶²ç«
+torbutton.circuit_display.this_browser = æ€ç芜åš
+torbutton.circuit_display.relay = äžç¹Œ
+torbutton.circuit_display.tor_bridge = æ©æ¥åš
+torbutton.circuit_display.unknown_country = æªç¥çåå®¶
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = 繌çºé±è®
+torbutton.content_sizer.margin_tooltip = æŽè¥è·¯ç±ç芜åšç¹æå°èŠçªéæ¡ç寬床åé«åºŠéæ°èšçœ®ïŒä»¥äŸ¿è®æšçç芜åšçæ
è³èšçèµ·äŸæŽçºæ®éïŒåŠæ€å¯ä»¥æžå°æšç網路掻å被èå¥äžŠè¿œè¹€çå¯èœæ§ã
+torbutton.panel.tooltip.disabled = æäžäžä»¥åçšæŽè¥è·¯ç±
+torbutton.panel.tooltip.enabled = æäžäžä»¥åçšæŽè¥è·¯ç±
+torbutton.panel.label.disabled = æŽè¥è·¯ç±å·²åçš
+torbutton.panel.label.enabled = æŽè¥è·¯ç±å·²åçš
+extensions.torbutton(a)torproject.org.description = Torbutton æäŸäžåæéäŸèšå®æŽè¥è·¯ç±ïŒä»¥åèŒé¬äŸ¿æ·å°æž
é€ç§äººçèŠœè³æã
+torbutton.popup.external.title = äžèŒå€éšæªæ¡é¡åïŒ
+torbutton.popup.external.app = æŽè¥è·¯ç±ç芜åšç¡æ³é¡¯ç€ºéåæªæ¡ïŒæšéèŠäœ¿çšå
¶ä»æçšçšåŒäŸéåå®ã\n\n
+torbutton.popup.external.note = éšä»œé¡åçæªæ¡å¯èœæååæäºæçšçšåŒïŒäžŠäžåšäžç¶éæŽè¥è·¯ç±çæ
æ³äžïŒçŽæ¥é£äžç¶²é網路ã\n
+torbutton.popup.external.suggest = çºäºå®å
šèµ·èŠïŒæšæè©²åªåšé¢ç·çæ
ææéåå·²äžèŒçæªæ¡ïŒææ¯äœ¿çšå Tails ç Tor Live CD ä¹é¡çå·¥å
·ã\n
+torbutton.popup.launch = äžèŒæªæ¡
torbutton.popup.cancel = åæ¶
-torbutton.popup.dontask = Always launch applications from now on
-torbutton.popup.prompted_language = To give you more privacy, Torbutton can request the English language version of web pages. This may cause web pages that you prefer to read in your native language to display in English instead.\n\nWould you like to request English language web pages for better privacy?
-torbutton.popup.no_newnym = Torbutton ç¡æ³å®å
šç絊æšäžåæ°ç身åãå®ç¡æ³åå Tor æ§å¶é£æ¥å ã\n\næšæ£åšäœ¿çš Tor Browser Bundle?
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.popup.dontask = åŸçŸåšéå§èªåäžèŒæªæ¡
+torbutton.popup.prompted_language = çºäºçµŠæšæŽå€çé±ç§ïŒTorbutton å¯ä»¥çŒéè±æçç¶²é çè«æ±èšèãéå¯èœæå°èŽåæ¬æè©²ä»¥æšçæ¯èªäŸé¡¯ç€ºçç¶²é ïŒæ¹æä»¥è±æç顯瀺ã\n\næšèŠäœ¿çšè±æç¶²é äŸç²åŸæŽå¥œçé±ç§åïŒ
+torbutton.popup.no_newnym = Torbutton ç¡æ³å®å
šå°çµŠäœ äžåæ°ç身仜ãå®ç¡æ³ååæŽè¥è·¯ç±çæ§å¶é£æ¥å ã\n\næšç®åæ£åšå·è¡çæ¯æŽè¥è·¯ç±ç芜åšåïŒ
+torbutton.title.prompt_torbrowser = éèŠç Torbutton è³èš
+torbutton.popup.prompt_torbrowser = Torbutton çŸåšä»¥äžåçæ¹åŒéäœïŒæšåä¹äžèœå°å
¶ééã\n\næååäºé暣çè®æŽïŒå çºè¥åšåäžåç芜åšäžïŒäœ¿çšæŽè¥è·¯ç±é 蚪網ç«ïŒååæäžç¶éæŽè¥è·¯ç±é 蚪å
¶ä»ç¶²ç«ïŒå°ææå®å
šäžççæ
®ãç®åä»æå€ªå€æåç¡æ³ä¿®åŸ©ççšåŒé¯èª€ååšã\n\nåŠææšåžæç¹Œçºæ£åžžäœ¿çšç«ççžç芜åšïŒæšæè§£é€å®è£ Torbutton 䞊äžèŒæŽè¥è·¯ç±ç芜åšå¥ä»¶ãæŽè¥è·¯ç±ç芜åšçé±ç§æ§ä¹åªæŒæ®éçç«ççžç芜åšïŒå³äœ¿ç¶ç«ççžç芜åšè Torbutton äžèµ·äœ¿çšæä¹æ¯ã\n\nèŠç§»é€ TorbuttonïŒè«ååŸ å·¥å
· -> éå å
ä»¶ -> æŽå
å¥ä»¶ ç¶åŸæäžäž Torbutton æéç ãç§»é€ãæéã
+torbutton.popup.short_torbrowser = éèŠç Torbutton è³èšïŒ\n\nTorbutton çŸåšæ°žé åçšã\n\næäžäž Torbutton ç²åæŽå€è³èšã
-torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy and anonymity.\n\nThey can also bypass Tor to reveal your current location and IP address.\n\nAre you sure you want to enable plugins?\n\n
-torbutton.popup.never_ask_again = Never ask me again
+torbutton.popup.confirm_plugins = è«žåŠ Flash çç芜åšå€æçšåŒå¯èœæå±å®³æšçé±ç§åå¿åæ§ã\n\nå®åéå¯ä»¥ç¹éæŽè¥è·¯ç±ïŒéé²åºæšç®åæåšçäœçœ®å IP äœåã\n\næšç¢ºå®èŠåçšå€æçšåŒåïŒ\n
+torbutton.popup.never_ask_again = äžèŠååæ
+torbutton.popup.confirm_newnym = æŽè¥è·¯ç±ç芜åšå°ééææèŠçªååé ãææå·²ç»å
¥çæ
äžçç¶²ç«è³èšéœå°è¢«æž
é€ã\n\nçŸåšéæ°ååæŽè¥è·¯ç±ç芜åšäŸéæ°èšçœ®æšç身仜ïŒ\n\n
+
+torbutton.slider_notification = ç¶ è²çæŽè¥éžå®è£¡çŸåšæäžåå®å
šæ»ååšïŒå¯è®æšèª¿æŽæšçå®å
šççŽãå¿«äŸççå§ïŒ
+torbutton.slider_notification_button = éåå®å
šæ§èšå®
+
+torbutton.maximize_warning = è¥å°æŽè¥è·¯ç±ç芜åšèŠçªæå€§åïŒå¯èœæè®æé 蚪çç¶²ç«èœå€ åŸç¥æšçè¢å¹å°ºå¯žïŒæ€èå¯èœè¢«å©çšäŸèå¥äžŠè¿œè¹€æšç網路掻åãå æ€æåå»ºè°æšè®æŽè¥è·¯ç±ç芜åšèŠçªä¿æåå§ç倧å°ã
# Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
-canvas.allow=Allow in the Future
+canvas.siteprompt=æ€ç¶²ç« (%S) 詊åäœ¿çš HTML 5 ç«åžåœ±åè³æïŒæ€åèœå¯èœè¢«çšäŸæšèšè奿šçé»è
Šã\n\næ¯åŠèŠå
èš±æŽè¥è·¯ç±ç芜åšå·è¡èç HTML 5 ç«åžåœ±åè³æïŒ
+canvas.notNow=çšåŸ
+canvas.notNowAccessKey=N
+canvas.allow=æ°žé å
èš±
canvas.allowAccessKey=A
-canvas.never=Never for This Site
+canvas.never=æ€ç¶²ç«æ°žäž(建è°)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S é
眮åé¡
+profileReadOnly=æšäžèœåšå¯è®çæªæ¡ç³»çµ±äžå·è¡ %SïŒè«å
å° %S è€è£œå°å
¶ä»äœçœ®äžåè¡å詊ã
+profileReadOnlyMac=æšäžèœåšå¯è®çæªæ¡ç³»çµ±äžå·è¡ %SïŒè«å
å° %S è€è£œå°æšçé»è
Šæ¡é¢ææçšçšåŒè³æå€ŸäžïŒåè¡å詊ã
+profileAccessDenied=%S æ²æè¶³å€ çå忬éïŒè«éæ°èª¿æŽæšçæªæ¡ç³»çµ±æ¬éåŸåè¡å詊ã
+profileMigrationFailed=ç¡æ³èœç§»è³æšçŸåç%Sè³æå€Ÿã\nå°äœ¿çšæ°èšå®ã
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
1
0
commit 769d546086581046448c394eb323bb61a44de1d5
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 22 06:00:02 2018 +0000
Translations update
---
src/chrome/locale/ar/network-settings.dtd | 44 +++++++++++-----------
src/chrome/locale/ar/torlauncher.properties | 52 +++++++++++++-------------
src/chrome/locale/br/torlauncher.properties | 2 +-
src/chrome/locale/de/network-settings.dtd | 4 +-
src/chrome/locale/eu/network-settings.dtd | 16 ++++----
src/chrome/locale/ms-MY/network-settings.dtd | 8 ++--
src/chrome/locale/ms-MY/torlauncher.properties | 24 ++++++------
src/chrome/locale/nb/network-settings.dtd | 4 +-
src/chrome/locale/nb/torlauncher.properties | 8 ++--
src/chrome/locale/pl/network-settings.dtd | 2 +-
src/chrome/locale/pt/network-settings.dtd | 2 +-
src/chrome/locale/ru/network-settings.dtd | 8 ++--
src/chrome/locale/ru/torlauncher.properties | 2 +-
src/chrome/locale/tr/network-settings.dtd | 6 +--
src/chrome/locale/tr/torlauncher.properties | 26 ++++++-------
15 files changed, 104 insertions(+), 104 deletions(-)
diff --git a/src/chrome/locale/ar/network-settings.dtd b/src/chrome/locale/ar/network-settings.dtd
index 6b1855a..b06d17d 100644
--- a/src/chrome/locale/ar/network-settings.dtd
+++ b/src/chrome/locale/ar/network-settings.dtd
@@ -1,7 +1,7 @@
<!ENTITY torsettings.dialog.title "إعدادات شبكة تور">
-<!ENTITY torsettings.wizard.title.default "إتصل بشبكة تور">
+<!ENTITY torsettings.wizard.title.default "اتصل بتور">
<!ENTITY torsettings.wizard.title.configure "إعدادات شبكة تور">
-<!ENTITY torsettings.wizard.title.connecting "يتم إنشاء اتصال">
+<!ENTITY torsettings.wizard.title.connecting "يجري إنشاء اتصال">
<!-- For locale picker: -->
<!ENTITY torlauncher.localePicker.title "لغة متصفح تور">
@@ -9,25 +9,25 @@
<!-- For "first run" wizard: -->
-<!ENTITY torSettings.connectPrompt "إنقر "اتصل" للإتصال بتور.">
-<!ENTITY torSettings.configurePrompt "إنقر "اضبط" لتعديل إعدادات الشبكة إن كنت في بلد يحجب تور (كمصر, الصين, تركيا) أو إن كنت تتصل من شبكة خاصة تتطلب بروكسي.">
+<!ENTITY torSettings.connectPrompt "انقر "اتصل" للاتصال بتور.">
+<!ENTITY torSettings.configurePrompt "انقر "اضبط" لضبط إعدادات الشبكة إن كنت في بلد يحجب تور (مثل مصر، والصين، وتركيا) أو إن كنت تتصل من شبكة خاصة تتطلب وسيط.">
<!ENTITY torSettings.configure "تكوين">
<!ENTITY torSettings.connect "اتصل">
<!-- Other: -->
<!ENTITY torsettings.startingTor "في انتظار تور حتي يبدء بالعمل...">
-<!ENTITY torsettings.restartTor "إعادة تشغيل تور">
-<!ENTITY torsettings.reconfigTor "إعادة إعداد">
+<!ENTITY torsettings.restartTor "أعِد تشغيل تور">
+<!ENTITY torsettings.reconfigTor "أعِد ضبط">
-<!ENTITY torsettings.discardSettings.prompt "قمت بضبت جسر تور او ادخلت اعدادات بروكسي محلي.  لانشاء اتصال مباشر بشبكه تور، يجب ازاله هذه الاعدادات.">
+<!ENTITY torsettings.discardSettings.prompt "ضبطت جسر تور أو أدخلت إعدادات الوسيط المحلي.  لإنشاء اتصال مباشر بشبكه تور، يجب إزاله هذه الإعدادات.">
<!ENTITY torsettings.discardSettings.proceed "ازل الاعدادات ثم اتصل">
<!ENTITY torsettings.optional "اختياري">
-<!ENTITY torsettings.useProxy.checkbox "إنني أستخدم وكيلا للبروكسي للإتصال بالأنترنت">
+<!ENTITY torsettings.useProxy.checkbox "أستخدم وسيطا للاتصال بالإنترنت">
<!ENTITY torsettings.useProxy.type "نوع البروكسي:">
-<!ENTITY torsettings.useProxy.type.placeholder "إختر نوع البروكسي">
+<!ENTITY torsettings.useProxy.type.placeholder "اختر نوع الوسيط">
<!ENTITY torsettings.useProxy.address "العنوان:">
<!ENTITY torsettings.useProxy.address.placeholder "عنوان الإنترنت IP أو اسم المضيف">
<!ENTITY torsettings.useProxy.port "المنفذ:">
@@ -39,24 +39,24 @@
<!ENTITY torsettings.firewall.checkbox "اتصال الإنترنت لهذا الكمبيوتر يمر بجدار حماية يسمح بالاتصال فقط من خلال منافذ معينة">
<!ENTITY torsettings.firewall.allowedPorts "المنافذ المسموح بها:">
<!ENTITY torsettings.useBridges.checkbox "تور محجوب في بلدي">
-<!ENTITY torsettings.useBridges.default "إختر جسرا مُدمَجا في البرنامج">
-<!ENTITY torsettings.useBridges.default.placeholder "إختر جسرا">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
-<!ENTITY torsettings.useBridges.captchaSubmit "إرسال">
-<!ENTITY torsettings.useBridges.custom "إدخال عنوان جسرٍ أعرفه">
-<!ENTITY torsettings.useBridges.label "أدخل معلومات جسر (بريدج) من مصدر موثوق.">
+<!ENTITY torsettings.useBridges.default "اختر جسرا مُدمَجا في البرنامج">
+<!ENTITY torsettings.useBridges.default.placeholder "اختر جسرا">
+<!ENTITY torsettings.useBridges.bridgeDB "اطلب جسرا من torproject.org">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "أدخل الرموز الموجودة في الصورة">
+<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "احصل على تحد جديد">
+<!ENTITY torsettings.useBridges.captchaSubmit "أرسل">
+<!ENTITY torsettings.useBridges.custom "أدخل عنوان جسرٍ أعرفه">
+<!ENTITY torsettings.useBridges.label "أدخل معلومات جسر من مصدر موثوق.">
<!ENTITY torsettings.useBridges.placeholder "اكتب العنوان:المنفذ (واحد لكل سطر)">
<!ENTITY torsettings.copyLog "نسخ سجل تور إلي الحافظة">
-<!ENTITY torsettings.proxyHelpTitle "مساعدة بروكسي">
-<!ENTITY torsettings.proxyHelp1 "تحتاج لبروكسي محلي عند الاتصال عبر شركة, مدرسة, أو شبكة جامعية. إذا لم تكن متأكدا من كيفية الإجابة على هذا السؤال, إلقي نظرة على إعدادات الإنترنت في متصفح آخر أو تحقق من إعدادات شبكة نظامك لتتأكد إن كان هناك حاجة لبروكسي.">
+<!ENTITY torsettings.proxyHelpTitle "مساعدة الوسيط">
+<!ENTITY torsettings.proxyHelp1 "تحتاج لوسيط (بروكسي) محلي عند الاتصال عبر شركة، أو مدرسة، أو شبكة جامعية. إذا لم تكن متأكدا من كيفية الإجابة على هذا السؤال فألق نظرة على إعدادات الإنترنت في متصفح آخر أو تحقق من إعدادات شبكة نظامك لتتأكد إن كان هناك حاجة لوسيط.">
<!ENTITY torsettings.bridgeHelpTitle "المساعدة الخاصة بالجسور المُرحلة">
-<!ENTITY torsettings.bridgeHelp1 "الجسور هي تبديلات (ريلاي) غير مدرجة تجعل حجب الاتصالات إلى شبكة تور اصعب. كل نوع من الجسور يستخدم طريقة مختلفة لتجنب الرقابة. ذوات ال (obfs) تجعل حركة معلوماتك تبدوا كضجة عشوائية, وذوات ال (meek) تجعل حركة معلوماتك تبدوا كأنها تتصل لتلك الخدمة بدلا من تور.">
-<!ENTITY torsettings.bridgeHelp2 "بسبب طريقة حظر بعض البلدان لتور, بعض الجسور تعمل في بلدان معينة لكنها لا تعمل ببعضها الآخر. إن لم تكن متأكدا بشأن أي جسور تعمل في بلدك, زر الموقع torproject.org/about/contact.html">
+<!ENTITY torsettings.bridgeHelp1 "الجسور هي تحويلات غير مدرجة تجعل حجب الاتصالات إلى شبكة تور أصعب.  كل نوع من الجسور يستخدم طريقة مختلفة لتجنب الرقابة.  جسور obfs تجعل حركة معلوماتك تبدو كضجيج عشوائي، وجسور meek تجعل حركة معلوماتك تبدوا كأنها تتصل لتلك الخدمة بدلا من تور.">
+<!ENTITY torsettings.bridgeHelp2 "بسبب طريقة حظر بعض البلدان لتور، تعمل بعض الجسور في بلدان معينة لكنها لا تعمل ببعضها الآخر. إن لم تكن متأكدا بشأن أي الجسور تعمل في بلدك، فزر torproject.org/about/contact.html#support">
<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "الرجاء الإنتظار في حين نقوم بإنشاء اتصال لشبكة تور. هذا قد يستغرق عدة دقائق.">
+<!ENTITY torprogress.pleaseWait "الرجاء الانتظار بينما ننشئ اتصالا لشبكة تور.  قد يستغرق هذا عدة دقائق.">
diff --git a/src/chrome/locale/ar/torlauncher.properties b/src/chrome/locale/ar/torlauncher.properties
index a0190e7..f66f3e8 100644
--- a/src/chrome/locale/ar/torlauncher.properties
+++ b/src/chrome/locale/ar/torlauncher.properties
@@ -3,9 +3,9 @@
torlauncher.error_title=مُشغل تور
-torlauncher.tor_exited_during_startup=تم إغلاق تور بشكل مفاجئ. قد يكون هذا بسبب مشكلة في تور نفسه أو بسبب برنامج آخر على نظامك أو بسبب مشكلة في عتاد جهازك. إلى أن تقوم بإعادة تشغيل تور، فإن متصفح تور لن يستطيع الوصول إلى أي موقع. إذا استمرت المشكلة، يرجى إرسال نسخة من سجل تور إلى فريق الدعم.
-torlauncher.tor_exited=تم إغلاق تور بشكل مفاجئ. قد يكون هذا بسبب مشكلة في تور نفسه أو بسبب برنامج آخر على نظامك أو بسبب مشكلة في عتاد جهازك. إلى أن تقوم بإعادة تشغيل تور، فإن متصفح تور لن يستطيع الوصول إلى أي موقع. إذا استمرت المشكلة، يرجى إرسال نسخة من سجل تور إلى فريق الدعم.
-torlauncher.tor_exited2=اعادة تشغيل تور لا يغلق الصفحات.
+torlauncher.tor_exited_during_startup=توقف تور أثناء بدء تشغيله. قد يكون هذا بسبب خطأ في ملف إعدادات تور، أو مشكلة في تور نفسه أو برنامج آخر على نظامك، أو بسبب مشكلة في عتاد جهازك. بدون إصلاح المشكلة الحقيقية وإعادة تشغيل تور لن يعمل متصفح تور.
+torlauncher.tor_exited=توقف تور أثناء بدء تشغيله. قد يكون هذا بسبب خطأ في ملف إعدادات تور، أو مشكلة في تور نفسه أو برنامج آخر على نظامك، أو بسبب مشكلة في عتاد جهازك. بدون إصلاح المشكلة الحقيقية وإعادة تشغيل تور لن يعمل متصفح تور. إذا استمرت المشكلة، يرجى إرسال نسخة من سجل تور إلى فريق الدعم.
+torlauncher.tor_exited2=إعادة تشغيل تور لا يغلق ألسنة المتصفح.
torlauncher.tor_controlconn_failed=تعذر الاتصال بمنفذ التحكم الخاص بتور.
torlauncher.tor_failed_to_start=تور فشل في بدء التشغيل.
torlauncher.tor_control_failed=تعذر التحكم في تور.
@@ -14,8 +14,8 @@ torlauncher.tor_bootstrap_failed_details=%1$S فشل(%2$S).
torlauncher.unable_to_start_tor=غير قادر علي بدء تشغيل تور.\n\n%S
torlauncher.tor_missing=الملف التنفيذي لتور مفقود.
-torlauncher.torrc_missing=الملف torrc مفقود ولم يتم إنشاؤه.
-torlauncher.datadir_missing=دليل البيانات تور غير موجود ولا يمكن أن ينشأ.
+torlauncher.torrc_missing=ملف torrc غير موجود وتعذّر إنشاؤه.
+torlauncher.datadir_missing=دليل بيانات تور غير موجود وتعذّر إنشاؤه.
torlauncher.password_hash_missing=فشل في الحصول على كلمة المرور المجزأة.
torlauncher.failed_to_get_settings=غير قادر علي جلب إعدادات تور.\n\n%S
@@ -29,20 +29,20 @@ torlauncher.error_default_bridges_type_missing=يجب عليك تحديد نوع
torlauncher.error_bridgedb_bridges_missing=يُرجى طلب جسر.
torlauncher.error_bridge_bad_default_type=هذا النوع غير متوفر بداخل الجسور المقدمة مع المتصفح. الرجاء تعديل إعداداتك.
-torlauncher.bridge_suffix.meek-amazon=(شغال في الصين)
-torlauncher.bridge_suffix.meek-azure=(شغال في الصين)
+torlauncher.bridge_suffix.meek-amazon=(يعمل في الصين)
+torlauncher.bridge_suffix.meek-azure=(يعمل في الصين)
-torlauncher.request_a_bridge=عملية طلب جسرٍ جارية …
-torlauncher.request_a_new_bridge=عملية طلب جسرٍ جديدة جارية …
-torlauncher.contacting_bridgedb=عملية الإتصال بقاعدة الجسور BridgeDB جارية. يُرجى الإنتظار.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=الحل ليس سليمًا بعد. يُرجى إعادة المحاولة.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=المعذرة. لا توجد هناك جسور متوفرة حاليا.
+torlauncher.request_a_bridge=اطلب جسرا…
+torlauncher.request_a_new_bridge=اطلب جسرا جديدا…
+torlauncher.contacting_bridgedb=يتصل بقاعدة بيانات الجسور BridgeDB. يُرجى الانتظار.
+torlauncher.captcha_prompt=حل كاباتشا لطلب جسر.
+torlauncher.bad_captcha_solution=الحل ليس سليمًا. يُرجى إعادة المحاولة.
+torlauncher.unable_to_get_bridge=تعذّر جلب جسر من قاعدة بيانات الجسور BridgeDB.\n\n%S
+torlauncher.no_meek=ليس المتصفح معدّا ليستخدم meek، وهو أساسي للحصول على الجسور.
+torlauncher.no_bridges_available=المعذرة. لا تتوفر أية جسور حاليا.
torlauncher.connect=اتصل
-torlauncher.restart_tor=إعادة تشغيل تور
+torlauncher.restart_tor=أعِد تشغيل تور
torlauncher.quit=إنهاء
torlauncher.quit_win=خروج
torlauncher.done=تم
@@ -50,29 +50,29 @@ torlauncher.done=تم
torlauncher.forAssistance=للمساعدة, اتصل بـ %S
torlauncher.forAssistance2=للمُساعدة, قُم بزيارة S%
-torlauncher.copiedNLogMessages=تم إكمال النسخ. %S من رسائل سجل تور جاهزة لنسخها في محرر نصوص أو رسالة بريد إلكتروني.
+torlauncher.copiedNLogMessages=تم النسخ. %S من رسائل سجل تور جاهزة للصقها في محرر نصوص أو رسالة بريد إلكتروني.
-torlauncher.bootstrapStatus.conn_dir=جارٍ الاتصال بدليل التحويلات
+torlauncher.bootstrapStatus.conn_dir=يتّصل بدليل التحويلات
torlauncher.bootstrapStatus.handshake_dir=ينشئ اتصالا مشفرا بالدليل
-torlauncher.bootstrapStatus.requesting_status=الحصول على حالة الشبكة
-torlauncher.bootstrapStatus.loading_status=تحميل حالة الشبكة
+torlauncher.bootstrapStatus.requesting_status=يجلب حالة الشبكة
+torlauncher.bootstrapStatus.loading_status=يحمّل حالة الشبكة
torlauncher.bootstrapStatus.loading_keys=يحمل شهادات السلطة
torlauncher.bootstrapStatus.requesting_descriptors=يطلب معلومات التحويلة
torlauncher.bootstrapStatus.loading_descriptors=يحمل معلومات التحويلة
-torlauncher.bootstrapStatus.conn_or=جاري الاتصال بشبكة تور
+torlauncher.bootstrapStatus.conn_or=يتصل بشبكة تور
torlauncher.bootstrapStatus.handshake_or=ينشئ دائرة تور
torlauncher.bootstrapStatus.done=تم الاتصال بشبكة تور
torlauncher.bootstrapWarning.done=تم
-torlauncher.bootstrapWarning.connectrefused=تم رفض الاتصال
+torlauncher.bootstrapWarning.connectrefused=رُفض الاتصال
torlauncher.bootstrapWarning.misc=متفرّقات
torlauncher.bootstrapWarning.resourcelimit=الموارد غير كافية
torlauncher.bootstrapWarning.identity=لم تتطابق الهوية
-torlauncher.bootstrapWarning.timeout=الاتصال عاطل
+torlauncher.bootstrapWarning.timeout=انتهت مهلة الاتصال
torlauncher.bootstrapWarning.noroute=لا طريق للمضيف
torlauncher.bootstrapWarning.ioerror=خطأ في القراءة/الكتابة
torlauncher.bootstrapWarning.pt_missing=الناقل المضاف مفقود
-torlauncher.nsresult.NS_ERROR_NET_RESET=لقد قُطع الإتصال مع الخادوم.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=فشِل الإتصال بالخادوم.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=فشِل الإتصال بوكيل البروكسي.
+torlauncher.nsresult.NS_ERROR_NET_RESET=قُطع الاتصال مع الخادوم.
+torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=فشِل الاتصال بالخادوم.
+torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=فشِل الاتصال بالوسيط.
diff --git a/src/chrome/locale/br/torlauncher.properties b/src/chrome/locale/br/torlauncher.properties
index 49cb444..90711bd 100644
--- a/src/chrome/locale/br/torlauncher.properties
+++ b/src/chrome/locale/br/torlauncher.properties
@@ -45,7 +45,7 @@ torlauncher.connect=Connect
torlauncher.restart_tor=Restart Tor
torlauncher.quit=Quit
torlauncher.quit_win=Kuitaat
-torlauncher.done=Done
+torlauncher.done=Graet
torlauncher.forAssistance=For assistance, contact %S
torlauncher.forAssistance2=For assistance, visit %S
diff --git a/src/chrome/locale/de/network-settings.dtd b/src/chrome/locale/de/network-settings.dtd
index 9cefcf3..0984152 100644
--- a/src/chrome/locale/de/network-settings.dtd
+++ b/src/chrome/locale/de/network-settings.dtd
@@ -41,8 +41,8 @@
<!ENTITY torsettings.useBridges.checkbox "Tor wird in meinem Land blockiert.">
<!ENTITY torsettings.useBridges.default "Bereitgestellte Brücke auswählen">
<!ENTITY torsettings.useBridges.default.placeholder "Brücke auswählen">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Geben Sie das Zeichen aus dem Bild ein">
+<!ENTITY torsettings.useBridges.bridgeDB "Brücke von torproject.org anfragen">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Geben Sie die Zeichen in dem Bild ein">
<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
<!ENTITY torsettings.useBridges.captchaSubmit "Übermitteln">
<!ENTITY torsettings.useBridges.custom "Biete mir eine Brücke an, die ich kenne">
diff --git a/src/chrome/locale/eu/network-settings.dtd b/src/chrome/locale/eu/network-settings.dtd
index 30c80ae..0e376c6 100644
--- a/src/chrome/locale/eu/network-settings.dtd
+++ b/src/chrome/locale/eu/network-settings.dtd
@@ -1,7 +1,7 @@
<!ENTITY torsettings.dialog.title "Tor sare ezarpenak">
<!ENTITY torsettings.wizard.title.default "Connect to Tor">
<!ENTITY torsettings.wizard.title.configure "Tor sare ezarpenak">
-<!ENTITY torsettings.wizard.title.connecting "Establishing a Connection">
+<!ENTITY torsettings.wizard.title.connecting "Konexioa Ezartzen">
<!-- For locale picker: -->
<!ENTITY torlauncher.localePicker.title "Tor nabigatzailearen hizkuntza">
@@ -25,9 +25,9 @@
<!ENTITY torsettings.optional "Hautazkoa">
-<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Proxy bat erabiltzen dut Internetera sartzeko">
<!ENTITY torsettings.useProxy.type "Proxy mota:">
-<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!ENTITY torsettings.useProxy.type.placeholder "proxy mota aukeratu">
<!ENTITY torsettings.useProxy.address "Helbidea:">
<!ENTITY torsettings.useProxy.address.placeholder "IP helbide edo ostalari izena">
<!ENTITY torsettings.useProxy.port "Ataka:">
@@ -38,13 +38,13 @@
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "Ordenagailu honek ataka zehatz batzuetara bakarrik konektatzea baimentzen duen sueten baten zehar doa">
<!ENTITY torsettings.firewall.allowedPorts "Baimendutako atakak:">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
+<!ENTITY torsettings.useBridges.checkbox "Tor zentsuratuta dago nire herrialdean">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
-<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
+<!ENTITY torsettings.useBridges.default.placeholder "aukeratu zubia">
<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
-<!ENTITY torsettings.useBridges.captchaSubmit "Submit">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Sartu irudian agertzen diren karaktereak">
+<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Lortu erronka berri bat">
+<!ENTITY torsettings.useBridges.captchaSubmit "Bidali">
<!ENTITY torsettings.useBridges.custom "Provide a bridge I know">
<!ENTITY torsettings.useBridges.label "Enter bridge information from a trusted source.">
<!ENTITY torsettings.useBridges.placeholder "type address:port (one per line)">
diff --git a/src/chrome/locale/ms-MY/network-settings.dtd b/src/chrome/locale/ms-MY/network-settings.dtd
index 8843554..d53fced 100644
--- a/src/chrome/locale/ms-MY/network-settings.dtd
+++ b/src/chrome/locale/ms-MY/network-settings.dtd
@@ -41,10 +41,10 @@
<!ENTITY torsettings.useBridges.checkbox "Tor dilarang penggunaannya di negara saya">
<!ENTITY torsettings.useBridges.default "Pilih satu titi terbina-dalam">
<!ENTITY torsettings.useBridges.default.placeholder "pilih satu titi">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
-<!ENTITY torsettings.useBridges.captchaSubmit "Submit">
+<!ENTITY torsettings.useBridges.bridgeDB "Pinta titi dari torproject.org">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Masukkan aksara yang tertera dari imej">
+<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Dapatkan satu cabaran baharu">
+<!ENTITY torsettings.useBridges.captchaSubmit "Serah">
<!ENTITY torsettings.useBridges.custom "Sediakan satu titi yang saya tahu">
<!ENTITY torsettings.useBridges.label "Masukkan maklumat titi dari sumber yang dipercayai.">
<!ENTITY torsettings.useBridges.placeholder "taip alamat:port (satu per baris)">
diff --git a/src/chrome/locale/ms-MY/torlauncher.properties b/src/chrome/locale/ms-MY/torlauncher.properties
index 91e9f69..1976a17 100644
--- a/src/chrome/locale/ms-MY/torlauncher.properties
+++ b/src/chrome/locale/ms-MY/torlauncher.properties
@@ -26,20 +26,20 @@ torlauncher.error_proxy_addr_missing=Anda mesti nyatakan kedua-dua alamat IP ata
torlauncher.error_proxy_type_missing=Anda mesti pilih jenis proksi.
torlauncher.error_bridges_missing=Anda mesti nyatakan satu atau lebih titi.
torlauncher.error_default_bridges_type_missing=Anda mesti pilih jenis angkutan untuk titi yang disediakan.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
+torlauncher.error_bridgedb_bridges_missing=Sila pinta satu titi.
torlauncher.error_bridge_bad_default_type=Tiada titi disediakan yang mempunyai jenis angkutan %S tersedia. Sila laras tetapan anda.
torlauncher.bridge_suffix.meek-amazon=(berfungsi di China)
torlauncher.bridge_suffix.meek-azure=(berfungsi di China)
-torlauncher.request_a_bridge=Request a Bridge…
-torlauncher.request_a_new_bridge=Request a New Bridge…
-torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
+torlauncher.request_a_bridge=Pinta satu Titi...
+torlauncher.request_a_new_bridge=Pinta satu Titi Baharu...
+torlauncher.contacting_bridgedb=Menghubungi BridgeDB. Tunggu sebentar.
+torlauncher.captcha_prompt=Selesaikan CAPTCHA untuk meminta satu titi.
+torlauncher.bad_captcha_solution=Jawapan salah. Cuba sekali lagi.
+torlauncher.unable_to_get_bridge=Gagal memperoleh satu titi dari BridgeDB.\n\n%S
+torlauncher.no_meek=Pelayar ini tidak dikonfigur untuk meek, yang mana perlu dapatkan titi terlebih dahulu.
+torlauncher.no_bridges_available=Tiada titi tersedia buat masa ini. Mohon maaf.
torlauncher.connect=Sambung
torlauncher.restart_tor=Mula Semula Tor
@@ -73,6 +73,6 @@ torlauncher.bootstrapWarning.noroute=tiada hala dihoskan
torlauncher.bootstrapWarning.ioerror=ralat baca/tulis
torlauncher.bootstrapWarning.pt_missing=angkutan boleh palam hilang
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
+torlauncher.nsresult.NS_ERROR_NET_RESET=Sambungan dengan pelayan telah terputus.
+torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Tidak dapat bersambung dengan pelayan.
+torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Tidak dapat bersambung dengan proksi.
diff --git a/src/chrome/locale/nb/network-settings.dtd b/src/chrome/locale/nb/network-settings.dtd
index 492b6cd..781a076 100644
--- a/src/chrome/locale/nb/network-settings.dtd
+++ b/src/chrome/locale/nb/network-settings.dtd
@@ -41,8 +41,8 @@
<!ENTITY torsettings.useBridges.checkbox "Tor er sensurert i mitt land">
<!ENTITY torsettings.useBridges.default "Velg en bro med flere innfartsårer">
<!ENTITY torsettings.useBridges.default.placeholder "velg en bro">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
+<!ENTITY torsettings.useBridges.bridgeDB "Forespør en bro fra torproject.org">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Skriv inn tegnene fra bildet">
<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
<!ENTITY torsettings.useBridges.captchaSubmit "Send inn">
<!ENTITY torsettings.useBridges.custom "Tilby en bro jeg kjenner">
diff --git a/src/chrome/locale/nb/torlauncher.properties b/src/chrome/locale/nb/torlauncher.properties
index 8e97a0d..4c50bee 100644
--- a/src/chrome/locale/nb/torlauncher.properties
+++ b/src/chrome/locale/nb/torlauncher.properties
@@ -26,7 +26,7 @@ torlauncher.error_proxy_addr_missing=Du må spesifisere både IP-adresse eller v
torlauncher.error_proxy_type_missing=Du må velge mellomtjenertypen.
torlauncher.error_bridges_missing=Du må velge én eller flere broer.
torlauncher.error_default_bridges_type_missing=Du må velge en tilkoblingstype for de angitte broene.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
+torlauncher.error_bridgedb_bridges_missing=Forespør en bro.
torlauncher.error_bridge_bad_default_type=Det er ingen angitte broer som har tilkoblingstypen %S tilgjengelig. Juster innstillingene dine.
torlauncher.bridge_suffix.meek-amazon=(virker i Kina)
@@ -73,6 +73,6 @@ torlauncher.bootstrapWarning.noroute=ingen rute til vert
torlauncher.bootstrapWarning.ioerror=lese/skrive -feil
torlauncher.bootstrapWarning.pt_missing=pluggbar transport mangler
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
+torlauncher.nsresult.NS_ERROR_NET_RESET=Tilkoblingen til tjeneren gitt tapt.
+torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Kunne ikke koble til tjeneren.
+torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Kunne ikke koble til mellomtjeneren.
diff --git a/src/chrome/locale/pl/network-settings.dtd b/src/chrome/locale/pl/network-settings.dtd
index 4e5916a..57a30bd 100644
--- a/src/chrome/locale/pl/network-settings.dtd
+++ b/src/chrome/locale/pl/network-settings.dtd
@@ -38,7 +38,7 @@
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "Ten komputer pozwala na połączenie z ustalonymi portami">
<!ENTITY torsettings.firewall.allowedPorts "Dozwolone porty:">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
+<!ENTITY torsettings.useBridges.checkbox "Tor jest ocenzurowany w moim kraju">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
diff --git a/src/chrome/locale/pt/network-settings.dtd b/src/chrome/locale/pt/network-settings.dtd
index f0576fd..b0b6e52 100644
--- a/src/chrome/locale/pt/network-settings.dtd
+++ b/src/chrome/locale/pt/network-settings.dtd
@@ -1,7 +1,7 @@
<!ENTITY torsettings.dialog.title "Configurações da Rede Tor">
<!ENTITY torsettings.wizard.title.default "Ligar ao Tor">
<!ENTITY torsettings.wizard.title.configure "Definições da Rede Tor">
-<!ENTITY torsettings.wizard.title.connecting "A Estabelecer a Ligação">
+<!ENTITY torsettings.wizard.title.connecting "Estabelecer uma Ligação">
<!-- For locale picker: -->
<!ENTITY torlauncher.localePicker.title "Idioma do Navegador Tor">
diff --git a/src/chrome/locale/ru/network-settings.dtd b/src/chrome/locale/ru/network-settings.dtd
index 37252c2..20a65e4 100644
--- a/src/chrome/locale/ru/network-settings.dtd
+++ b/src/chrome/locale/ru/network-settings.dtd
@@ -38,11 +38,11 @@
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "Мой сетевой экран позволяет мне подключиться только к определенным портам">
<!ENTITY torsettings.firewall.allowedPorts "Разрешенные порты:">
-<!ENTITY torsettings.useBridges.checkbox "Tor запрещён в моей стране">
+<!ENTITY torsettings.useBridges.checkbox "Tor запрещен в моей стране">
<!ENTITY torsettings.useBridges.default "Выбрать встроенный мост">
<!ENTITY torsettings.useBridges.default.placeholder "выбрать мост">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
+<!ENTITY torsettings.useBridges.bridgeDB "Запросить мост от torproject.org">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Введите символы с изображения">
<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
<!ENTITY torsettings.useBridges.captchaSubmit "Передать">
<!ENTITY torsettings.useBridges.custom "Указать мост, который я знаю">
@@ -56,7 +56,7 @@
<!ENTITY torsettings.bridgeHelpTitle "Помощь по ретрансляторам типа мост">
<!ENTITY torsettings.bridgeHelp1 "Мосты - это незарегистрированные реле, которые затрудняют блокировку соединений с сетью Tor.&#160 Каждый тип моста использует отличный от других метод, чтобы избежать блокировки цезорами. Обходные устройства делают ваш трафик похожим на случайный шум и имитируют то, что он подключается к этой службе вместо Tor.">
-<!ENTITY torsettings.bridgeHelp2 "Из-за того, как именно страны пытаются блокировать Tor, определённые мосты работают в одних странах, но не работают в других.  Если вы не уверены в том, какие мосты сработает в вашей стране, посетите torproject.org/about/contact.html#support">
+<!ENTITY torsettings.bridgeHelp2 "Из-за того, как именно страны пытаются блокировать Tor, определенные мосты работают в одних странах, но не работают в других.  Если вы не уверены в том, какие мосты сработает в вашей стране, посетите torproject.org/about/contact.html#support">
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Пожалуйста, подождите, пока мы установим подключение к сети Tor.  Это может занять несколько минут.">
diff --git a/src/chrome/locale/ru/torlauncher.properties b/src/chrome/locale/ru/torlauncher.properties
index 3ff6b62..7f978da 100644
--- a/src/chrome/locale/ru/torlauncher.properties
+++ b/src/chrome/locale/ru/torlauncher.properties
@@ -36,7 +36,7 @@ torlauncher.request_a_bridge=Запрос моста…
torlauncher.request_a_new_bridge=Запрос нового моста…
torlauncher.contacting_bridgedb=Обращение к BridgeDB. Пожалуйста, подождите.
torlauncher.captcha_prompt=Решите CAPTCHA для запроса моста.
-torlauncher.bad_captcha_solution=Решение не является правильным. Попробуйте ещё раз.
+torlauncher.bad_captcha_solution=Решение не является правильным. Попробуйте еще раз.
torlauncher.unable_to_get_bridge=Не удалось получить мост из BridgeDB.\n\n%S
torlauncher.no_meek=Этот браузер не настроен должным образом, что необходимо для получения мостов.
torlauncher.no_bridges_available=В настоящее время мостов не имеется. Извините.
diff --git a/src/chrome/locale/tr/network-settings.dtd b/src/chrome/locale/tr/network-settings.dtd
index 8a45e77..74a24e0 100644
--- a/src/chrome/locale/tr/network-settings.dtd
+++ b/src/chrome/locale/tr/network-settings.dtd
@@ -41,9 +41,9 @@
<!ENTITY torsettings.useBridges.checkbox "Bulunduğum ülkede Tor engelleniyor">
<!ENTITY torsettings.useBridges.default "Bir hazır köprü seçin">
<!ENTITY torsettings.useBridges.default.placeholder "bir köprü seçin">
-<!ENTITY torsettings.useBridges.bridgeDB "torproject.org'dan köprü iste">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Resimdeki karakterleri girin">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
+<!ENTITY torsettings.useBridges.bridgeDB "torproject.org üzerinden bir köprü isteyin">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Görseldeki karakterleri yazın">
+<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Yeni bir güvenlik kodu isteyin">
<!ENTITY torsettings.useBridges.captchaSubmit "Gönder">
<!ENTITY torsettings.useBridges.custom "Bildiğim bir köprü sağla">
<!ENTITY torsettings.useBridges.label "Güvenli bir kaynaktan gelen köprü bilgisini yazın.">
diff --git a/src/chrome/locale/tr/torlauncher.properties b/src/chrome/locale/tr/torlauncher.properties
index a40956d..a4b3f28 100644
--- a/src/chrome/locale/tr/torlauncher.properties
+++ b/src/chrome/locale/tr/torlauncher.properties
@@ -4,7 +4,7 @@
torlauncher.error_title=Tor Başlatıcı
torlauncher.tor_exited_during_startup=Tor başlatılırken sonlandı. Bu durum torrc dosyasındaki ya da sisteminizdeki başka bir yazılımda bulunan bir hatadan ya da sorunlu bir donanımdan kaynaklanmış olabilir. Sorun çözülene ve Tor uygulaması yeniden başlatılana kadar Tor Browser çalışmayacak.
-torlauncher.tor_exited=Tor, beklenmedik şekilde sonlandı. Bu durum Tor içinde ya da sisteminizdeki başka bir yazılımda bulunan bir hatadan ya da sorunlu bir donanımdan kaynaklanmış olabilir. Yeniden başlatılana kadar Tor Browser hiçbir web sitesine erişemeyecek. Sorun devam ederse lütfen Tor Günlüğünün bir kopyasını destek takımına gönderin.
+torlauncher.tor_exited=Tor, beklenmedik şekilde sonlandı. Bu durum Tor içinde ya da sisteminizdeki başka bir yazılımda bulunan bir hatadan ya da sorunlu bir donanımdan kaynaklanmış olabilir. Yeniden başlatılana kadar Tor Browser hiçbir web sitesine erişemeyecek. Sorun devam ederse lütfen Tor Günlüğünün bir kopyasını destek ekibine gönderin.
torlauncher.tor_exited2=Tor uygulaması yeniden başlatıldığında tarayıcı sekmeleriniz kapatılmayacak.
torlauncher.tor_controlconn_failed=Tor denetim bağlantı noktasına bağlanılamadı.
torlauncher.tor_failed_to_start=Tor başlatılamadı.
@@ -26,20 +26,20 @@ torlauncher.error_proxy_addr_missing=İnternet'e bir vekil sunucu üzerinden ba
torlauncher.error_proxy_type_missing=Vekil sunucu türünü seçmelisiniz.
torlauncher.error_bridges_missing=Bir ya da birkaç köprü belirtmelisiniz.
torlauncher.error_default_bridges_type_missing=Hazır köprüler için bir aktarım türü seçmelisiniz.
-torlauncher.error_bridgedb_bridges_missing=Lütfen köprü talep edin.
+torlauncher.error_bridgedb_bridges_missing=Lütfen bir köprü isteği yapın.
torlauncher.error_bridge_bad_default_type=Hazır köprüler %S aktarım türü için kullanılamıyor. Lütfen ayarlarınızı değiştirin.
torlauncher.bridge_suffix.meek-amazon=(Çin'de çalışır)
torlauncher.bridge_suffix.meek-azure=(Çin'de çalışır)
-torlauncher.request_a_bridge=Köprü talep edin...
-torlauncher.request_a_new_bridge=Yeni Köprü talep edin...
+torlauncher.request_a_bridge=Köprü İsteği Yap…
+torlauncher.request_a_new_bridge=Yeni Bir Köprü İsteği Yap...
torlauncher.contacting_bridgedb=Köprü veritabanına bağlanılıyor. Lütfen bekleyin.
-torlauncher.captcha_prompt=Köprü talep etmek için lütfen güvenlik kodunu girin.
-torlauncher.bad_captcha_solution=Çözümleme doğru değil. Lütfen yeniden deneyin.
-torlauncher.unable_to_get_bridge=Köprü veritabanından köprü alınamıyor.
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=Şu anda hiçbir köprü müsait değil. Üzgünüz.
+torlauncher.captcha_prompt=Köprü isteği yapmak için güvenlik kodunu çözün.
+torlauncher.bad_captcha_solution=Çözüm doğru değil. Lütfen yeniden deneyin.
+torlauncher.unable_to_get_bridge=Köprü veritabanından bir köprü alınamadı.
+torlauncher.no_meek=Bu tarayıcı, köprüleri katmak için gerekli meek uygulamasını kullanmak üzere yapılandırılmamış.
+torlauncher.no_bridges_available=Maalesef şu anda kullanılabilecek bir köprü yok.
torlauncher.connect=Bağlan
torlauncher.restart_tor=Tor'u Yeniden Başlat
@@ -47,7 +47,7 @@ torlauncher.quit=Çık
torlauncher.quit_win=Çıkış
torlauncher.done=Tamamlandı
-torlauncher.forAssistance=Yardım için %S ile görüşün
+torlauncher.forAssistance=Yardım almak için %S ile görüşün
torlauncher.forAssistance2=Yardım almak için, %S sayfasına bakın
torlauncher.copiedNLogMessages=Kopyalama tamamlandı. %S Tor günlük iletisi bir metin düzenleyici ya da e-posta iletisine kopyalanmaya hazır.
@@ -73,6 +73,6 @@ torlauncher.bootstrapWarning.noroute=sunucu yöneltmesi yok
torlauncher.bootstrapWarning.ioerror=okuma/yazma hatası
torlauncher.bootstrapWarning.pt_missing=takılabilir aktarım bulunamadı
-torlauncher.nsresult.NS_ERROR_NET_RESET=Sunucuyla bağlantı kesildi
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Sunucuya bağlanılamadı.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Vekil sunucusuna bağlanılamadı.
+torlauncher.nsresult.NS_ERROR_NET_RESET=Sunucu ile bağlantı kesildi.
+torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Sunucu ile bağlantı kurulamadı.
+torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Vekil sunucu ile bağlantı kurulamadı.
1
0
commit 453ad88f6a5e56b9b7362bff522f317bd57707ec
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 22 06:01:08 2018 +0000
Version bump
---
src/install.rdf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/install.rdf b/src/install.rdf
index e9ae610..011ab5b 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -7,7 +7,7 @@
<em:creator>The Tor Project, Inc.</em:creator>
<em:contributor>Pearl Crescent, LLC</em:contributor>
<em:id>tor-launcher(a)torproject.org</em:id>
- <em:version>0.2.15.2</em:version>
+ <em:version>0.2.16</em:version>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html</em:homepageURL>
<em:updateURL>data:text/plain,</em:updateURL>
1
0

[tor-browser-build/master] Bug 26039: <profiledir>/preferences/extension-overrides.js will not be loaded in ESR 60
by gk@torproject.org 22 Jun '18
by gk@torproject.org 22 Jun '18
22 Jun '18
commit 4f7417becede4e116eecade1dfad65f67ccbbe8d
Author: Richard Pospesel <richard(a)torproject.org>
Date: Tue Jun 19 11:45:29 2018 -0700
Bug 26039: <profiledir>/preferences/extension-overrides.js will not be loaded in ESR 60
The infrastructure for loading extension-overrides.js no longer
exists in ESR60, so these prefs had to be moved.
Unfortunately, we can't just dump the contents of extension-overrides.js
into 000-tor-browser.js. The settings are actually partially built in
tor-browser-build to conditionally include various bridge strings as well
as localization settings. So, we piggy back off this existing build
process and just append the contents of the partially generated
extension-overrids.js to 000-tor-browser.js.
---
.../extension-overrides.js | 0
.../preferences/extension-overrides.js | 63 ----------------------
.../preferences/extension-overrides.js | 63 ----------------------
projects/tor-browser/build | 17 +++---
4 files changed, 9 insertions(+), 134 deletions(-)
diff --git a/projects/tor-browser/Bundle-Data/linux/Data/Browser/profile.default/preferences/extension-overrides.js b/projects/tor-browser/Bundle-Data/PTConfigs/extension-overrides.js
similarity index 100%
rename from projects/tor-browser/Bundle-Data/linux/Data/Browser/profile.default/preferences/extension-overrides.js
rename to projects/tor-browser/Bundle-Data/PTConfigs/extension-overrides.js
diff --git a/projects/tor-browser/Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js b/projects/tor-browser/Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js
deleted file mode 100644
index c81a7bf..0000000
--- a/projects/tor-browser/Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js
+++ /dev/null
@@ -1,63 +0,0 @@
-# Overrides for Extension Preferences
-# Tor Browser Bundle
-# Do not edit this file.
-
-# HTTPS Everywhere Preferences:
-pref("extensions.https_everywhere._observatory.popup_shown", true);
-pref("extensions.https_everywhere.toolbar_hint_shown", true);
-
-# NoScript Preferences:
-pref("capability.policy.maonoscript.javascript.enabled", "allAccess");
-pref("capability.policy.maonoscript.sites", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
-pref("noscript.default", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
-pref("noscript.mandatory", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
-pref("noscript.ABE.enabled", false);
-pref("noscript.ABE.notify", false);
-pref("noscript.ABE.wanIpAsLocal", false);
-pref("noscript.confirmUnblock", false);
-pref("noscript.contentBlocker", true);
-pref("noscript.firstRunRedirection", false);
-pref("noscript.global", true);
-pref("noscript.gtemp", "");
-pref("noscript.opacizeObject", 3);
-pref("noscript.forbidWebGL", true);
-pref("noscript.forbidFonts", false);
-pref("noscript.options.tabSelectedIndexes", "5,0,0");
-pref("noscript.policynames", "");
-pref("noscript.secureCookies", true);
-pref("noscript.showAllowPage", false);
-pref("noscript.showBaseDomain", false);
-pref("noscript.showDistrust", false);
-pref("noscript.showRecentlyBlocked", false);
-pref("noscript.showTemp", false);
-pref("noscript.showTempToPerm", false);
-pref("noscript.showUntrusted", false);
-pref("noscript.STS.enabled", false);
-pref("noscript.subscription.lastCheck", -142148139);
-pref("noscript.temp", "");
-pref("noscript.untrusted", "");
-pref("noscript.forbidMedia", false);
-pref("noscript.allowWhitelistUpdates", false);
-pref("noscript.fixLinks", false);
-// Now handled by plugins.click_to_play
-pref("noscript.forbidFlash", false);
-pref("noscript.forbidSilverlight", false);
-pref("noscript.forbidJava", false);
-pref("noscript.forbidPlugins", false);
-// Usability tweaks
-pref("noscript.showPermanent", false);
-pref("noscript.showTempAllowPage", true);
-pref("noscript.showRevokeTemp", true);
-pref("noscript.notify", false);
-pref("noscript.autoReload", true);
-pref("noscript.autoReload.allTabs", false);
-pref("noscript.cascadePermissions", true);
-pref("noscript.restrictSubdocScripting", true);
-pref("noscript.showVolatilePrivatePermissionsToggle", false);
-pref("noscript.volatilePrivatePermissions", true);
-pref("noscript.clearClick", 0);
-
-# PDF.js
-// needs to be a user_pref because pdf.js blows away non-user prefs with its own
-// defaults each time
-user_pref("pdfjs.disableRange", true);
diff --git a/projects/tor-browser/Bundle-Data/windows/Data/Browser/profile.default/preferences/extension-overrides.js b/projects/tor-browser/Bundle-Data/windows/Data/Browser/profile.default/preferences/extension-overrides.js
deleted file mode 100644
index c81a7bf..0000000
--- a/projects/tor-browser/Bundle-Data/windows/Data/Browser/profile.default/preferences/extension-overrides.js
+++ /dev/null
@@ -1,63 +0,0 @@
-# Overrides for Extension Preferences
-# Tor Browser Bundle
-# Do not edit this file.
-
-# HTTPS Everywhere Preferences:
-pref("extensions.https_everywhere._observatory.popup_shown", true);
-pref("extensions.https_everywhere.toolbar_hint_shown", true);
-
-# NoScript Preferences:
-pref("capability.policy.maonoscript.javascript.enabled", "allAccess");
-pref("capability.policy.maonoscript.sites", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
-pref("noscript.default", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
-pref("noscript.mandatory", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
-pref("noscript.ABE.enabled", false);
-pref("noscript.ABE.notify", false);
-pref("noscript.ABE.wanIpAsLocal", false);
-pref("noscript.confirmUnblock", false);
-pref("noscript.contentBlocker", true);
-pref("noscript.firstRunRedirection", false);
-pref("noscript.global", true);
-pref("noscript.gtemp", "");
-pref("noscript.opacizeObject", 3);
-pref("noscript.forbidWebGL", true);
-pref("noscript.forbidFonts", false);
-pref("noscript.options.tabSelectedIndexes", "5,0,0");
-pref("noscript.policynames", "");
-pref("noscript.secureCookies", true);
-pref("noscript.showAllowPage", false);
-pref("noscript.showBaseDomain", false);
-pref("noscript.showDistrust", false);
-pref("noscript.showRecentlyBlocked", false);
-pref("noscript.showTemp", false);
-pref("noscript.showTempToPerm", false);
-pref("noscript.showUntrusted", false);
-pref("noscript.STS.enabled", false);
-pref("noscript.subscription.lastCheck", -142148139);
-pref("noscript.temp", "");
-pref("noscript.untrusted", "");
-pref("noscript.forbidMedia", false);
-pref("noscript.allowWhitelistUpdates", false);
-pref("noscript.fixLinks", false);
-// Now handled by plugins.click_to_play
-pref("noscript.forbidFlash", false);
-pref("noscript.forbidSilverlight", false);
-pref("noscript.forbidJava", false);
-pref("noscript.forbidPlugins", false);
-// Usability tweaks
-pref("noscript.showPermanent", false);
-pref("noscript.showTempAllowPage", true);
-pref("noscript.showRevokeTemp", true);
-pref("noscript.notify", false);
-pref("noscript.autoReload", true);
-pref("noscript.autoReload.allTabs", false);
-pref("noscript.cascadePermissions", true);
-pref("noscript.restrictSubdocScripting", true);
-pref("noscript.showVolatilePrivatePermissionsToggle", false);
-pref("noscript.volatilePrivatePermissions", true);
-pref("noscript.clearClick", 0);
-
-# PDF.js
-// needs to be a user_pref because pdf.js blows away non-user prefs with its own
-// defaults each time
-user_pref("pdfjs.disableRange", true);
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 1c98c35..f3ed949 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -12,6 +12,7 @@ mkdir -p $OUTDIR
# directory named tor-browser (instead of tor-browser_en-US). Therefore we
# stage everything under tor-browser-stage to avoid a conflict.
TB_STAGE_DIR=$distdir/tor-browser-stage
+EXTOVERRIDESPATH=$rootdir/Bundle-Data/PTConfigs/extension-overrides.js
[% IF c("var/osx") %]
TBDIR="$TB_STAGE_DIR/Tor Browser.app"
@@ -20,7 +21,6 @@ TB_STAGE_DIR=$distdir/tor-browser-stage
EXTSPATH=Contents/Resources/distribution/extensions
TORBINPATH=Contents/MacOS/Tor
TORCONFIGPATH=Contents/Resources/TorBrowser/Tor
- EXTOVERRIDESPATH=Contents/Resources/distribution/preferences//extension-overrides.js
MEEKPROFILEPATH=Contents/Resources/TorBrowser/Tor/PluggableTransports/template-profile.meek-http-helper
tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/libdmg') %]
@@ -31,7 +31,6 @@ TB_STAGE_DIR=$distdir/tor-browser-stage
DOCSPATH=TorBrowser/Docs
EXTSPATH=TorBrowser/Data/Browser/profile.default/extensions
TORCONFIGPATH=TorBrowser/Data/Tor
- EXTOVERRIDESPATH=TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js
MEEKPROFILEPATH=TorBrowser/Data/Browser/profile.meek-http-helper
mkdir -p "$TBDIR/TorBrowser/Data/Browser/Caches"
@@ -116,9 +115,9 @@ cat Bundle-Data/PTConfigs/[% bundledata_osname %]/torrc-defaults-appendix >> "$T
[% IF c("var/linux") -%]
[% IF ! c("var/snowflake") %]
grep -v 'default_bridge\.snowflake' Bundle-Data/PTConfigs/bridge_prefs.js \
- >> "$TBDIR/$EXTOVERRIDESPATH"
+ >> "$EXTOVERRIDESPATH"
[% ELSE %]
- cat Bundle-Data/PTConfigs/bridge_prefs.js >> "$TBDIR/$EXTOVERRIDESPATH"
+ cat Bundle-Data/PTConfigs/bridge_prefs.js >> "$EXTOVERRIDESPATH"
[% END %]
[% END -%]
[% IF c("var/windows") -%]
@@ -126,13 +125,13 @@ cat Bundle-Data/PTConfigs/[% bundledata_osname %]/torrc-defaults-appendix >> "$T
# We don't have fte available on Windows x86_64 yet
grep -v 'default_bridge\.snowflake' Bundle-Data/PTConfigs/bridge_prefs.js \
[% IF c("var/windows-x86_64") %]| grep -v 'default_bridge\.fte' [% END %] \
- >> "$TBDIR/$EXTOVERRIDESPATH"
+ >> "$EXTOVERRIDESPATH"
[% END -%]
[% IF c("var/osx") -%]
# FTE is temporarily removed due to bug 18495.
grep -Ev 'default_bridge\.fte' Bundle-Data/PTConfigs/bridge_prefs.js \
[% IF ! c("var/snowflake") %]| grep -v 'default_bridge\.snowflake' [% END %] \
- >> "$TBDIR/$EXTOVERRIDESPATH"
+ >> "$EXTOVERRIDESPATH"
[% END -%]
cat Bundle-Data/PTConfigs/meek-http-helper-user.js >> "$TBDIR/$MEEKPROFILEPATH/user.js"
@@ -146,8 +145,8 @@ cat Bundle-Data/PTConfigs/meek-http-helper-user.js >> "$TBDIR/$MEEKPROFILEPATH/u
[% END %]
[% IF ! c("var/multi_lingual") %]
- echo 'pref("extensions.torlauncher.prompt_for_locale", false);' >> "$TBDIR/$EXTOVERRIDESPATH"
- echo 'pref("intl.locale.matchOS", false);' >> "$TBDIR/$EXTOVERRIDESPATH"
+ echo 'pref("extensions.torlauncher.prompt_for_locale", false);' >> "$EXTOVERRIDESPATH"
+ echo 'pref("intl.locale.matchOS", false);' >> "$EXTOVERRIDESPATH"
[% END %]
[% IF c("var/linux") %]
@@ -174,6 +173,8 @@ unzip omni.ja chrome/en-US/locale/browser/searchplugins* || [ $? -lt 3 ]
mv chrome/en-US/locale/browser/searchplugins $rootdir
rm -rf chrome/en-US
unzip omni.ja defaults/preferences/000-tor-browser.js || [ $? -lt 3 ]
+# Append our built extension-overrides.js to 000-tor-browser.js
+cat "$EXTOVERRIDESPATH" >> defaults/preferences/000-tor-browser.js
cp defaults/preferences/000-tor-browser.js $rootdir
[% IF c("var/osx") %]
# Embed our default bookmarks within the en-US locale.
1
0

[tor-browser-build/master] Bug 20628: Add locales bn-BD, da, he, sv-SE, zh-TW
by gk@torproject.org 22 Jun '18
by gk@torproject.org 22 Jun '18
22 Jun '18
commit 7ccafbcff04c11b352dc31081be06bc68f49ad60
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Thu Jun 21 00:59:11 2018 -0700
Bug 20628: Add locales bn-BD, da, he, sv-SE, zh-TW
---
rbm.conf | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/rbm.conf b/rbm.conf
index de5102d..f283b19 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -52,10 +52,13 @@ var:
locale_ja: ja
locales:
- ar
+ - bn-BD
+ - da
- de
- es-ES
- fa
- fr
+ - he
- it
- '[% c("var/locale_ja") %]'
- ko
@@ -63,9 +66,11 @@ var:
- pl
- pt-BR
- ru
+ - sv-SE
- tr
- vi
- zh-CN
+ - zh-TW
sign_build: '[% ENV.RBM_SIGN_BUILD %]'
sign_build_gpg_opts: '[% ENV.RBM_GPG_OPTS %]'
1
0

[tor-browser-build/master] Merge remote-tracking branch 'arthur/20628+1'
by gk@torproject.org 22 Jun '18
by gk@torproject.org 22 Jun '18
22 Jun '18
commit b39dad476f870b60d7008c1e22e477dc80875c38
Merge: 6402ea6 7ccafbc
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 22 05:30:07 2018 +0000
Merge remote-tracking branch 'arthur/20628+1'
rbm.conf | 5 +++++
1 file changed, 5 insertions(+)
1
0

[tor-browser-build/maint-7.5] Revert "Bug 26428: add temporary fix to avoid https-e submodule error"
by gk@torproject.org 22 Jun '18
by gk@torproject.org 22 Jun '18
22 Jun '18
commit 1c472c7aeff5f81b1d8e8357e37168520d14a36a
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Fri Jun 22 00:14:35 2018 +0000
Revert "Bug 26428: add temporary fix to avoid https-e submodule error"
This reverts commit b3cc97d4e4adb4709c1e367d82bd1e389bba60f0.
First part of Bug 26451.
---
projects/https-everywhere/config | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/projects/https-everywhere/config b/projects/https-everywhere/config
index c55933e..2385c5c 100644
--- a/projects/https-everywhere/config
+++ b/projects/https-everywhere/config
@@ -1,12 +1,10 @@
# vim: filetype=yaml sw=2
version: 2018.6.13
-git_url: https://github.com/boklm/https-everywhere
-# Temporary fix for #26428
-git_hash: 53091373b8e4a78504dd2ddc55f953a267a7de87
+git_url: https://git.torproject.org/https-everywhere.git
+git_hash: '[% c("version") %]'
git_submodule: 1
gpg_keyring: https-everywhere.gpg
-# Temporarily disable gpg check for #26428
-#tag_gpg_id: 1
+tag_gpg_id: 1
filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].xpi"
var:
# HTTPS Everywhere is expected to be the same on all platforms. To avoid
1
0

[tor-browser-build/maint-7.5] Picking up a new HTTPS Everywhere version
by gk@torproject.org 22 Jun '18
by gk@torproject.org 22 Jun '18
22 Jun '18
commit 4377771ed4db4b90f7dddf8fc9a56626dfe491e6
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 22 04:24:31 2018 +0000
Picking up a new HTTPS Everywhere version
---
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 4 ++--
rbm.conf | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 84f2c76..6f9af8a 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -4,8 +4,8 @@ Tor Browser 7.5.6 -- June 26 2018
* Update Tor to 0.3.3.7
* Update Tor Launcher to 0.2.14.5
* Bug 20890: Increase control port connection timeout
- * Update HTTPS Everywhere to 2018.6.13
- * Bug 26428: Work around HTTPS Everywhere caused build bustage
+ * Update HTTPS Everywhere to 2018.6.21
+ * Bug 26451: Prevent HTTPS Everywhere from freezing the browser
* Update NoScript to 5.1.8.6
* Bug 21537: Mark .onion cookies as secure
* Bug 25938: Backport fix for cross-origin header leak (bug 1334776)
diff --git a/rbm.conf b/rbm.conf
index 31b9cc1..a741f7f 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -16,7 +16,7 @@ buildconf:
var:
torbrowser_version: '7.5.6'
- torbrowser_build: 'build3'
+ torbrowser_build: 'build4'
torbrowser_incremental_from:
- 7.5.4
- 7.5.5
1
0

[tor-browser-build/maint-7.5] Bug 26451: Latest https-everywhere, fixes browser freeze
by gk@torproject.org 22 Jun '18
by gk@torproject.org 22 Jun '18
22 Jun '18
commit 74af3e0e1432b956c11ee95d32eb68dc968fe209
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Fri Jun 22 00:16:58 2018 +0000
Bug 26451: Latest https-everywhere, fixes browser freeze
---
projects/https-everywhere/config | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/https-everywhere/config b/projects/https-everywhere/config
index 2385c5c..739347b 100644
--- a/projects/https-everywhere/config
+++ b/projects/https-everywhere/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 2018.6.13
+version: 2018.6.21
git_url: https://git.torproject.org/https-everywhere.git
git_hash: '[% c("version") %]'
git_submodule: 1
1
0

21 Jun '18
commit 824e6df6e8177fabcb33dac06142332add64a7dd
Merge: 46c71b6 72aacbd
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jun 21 20:28:06 2018 +0000
Merge remote-tracking branch 'gk/bug_26058'
src/chrome/content/torbutton.js | 16 ----------------
src/defaults/preferences/preferences.js | 1 -
2 files changed, 17 deletions(-)
1
0

[torbutton/master] Revert "Bug 18743: Pref to hide 'Sign in to Sync' button in hamburger menu"
by gk@torproject.org 21 Jun '18
by gk@torproject.org 21 Jun '18
21 Jun '18
commit 72aacbd7178d50abf2c95c43ce907e65b95ddb1c
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 15 12:33:21 2018 +0000
Revert "Bug 18743: Pref to hide 'Sign in to Sync' button in hamburger menu"
This reverts commit d127873b498fb83e4f608b82a8d382df25183dd3.
---
src/chrome/content/torbutton.js | 16 ----------------
src/defaults/preferences/preferences.js | 1 -
2 files changed, 17 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 7f750bc..b56a628 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -175,9 +175,6 @@ var torbutton_unique_pref_observer =
case "privacy.firstparty.isolate":
torbutton_update_isolation_prefs();
break;
- case "extensions.torbutton.hide_sync_ui":
- torbutton_update_sync_ui();
- break;
}
}
}
@@ -404,7 +401,6 @@ function torbutton_init() {
torbutton_update_toolbutton();
torbutton_notify_if_update_needed();
- torbutton_update_sync_ui();
createTorCircuitDisplay(m_tb_control_ipc_file, m_tb_control_host,
m_tb_control_port, m_tb_control_pass,
@@ -2339,18 +2335,6 @@ function torbutton_is_homepage_url(aURI)
return (urls.indexOf(aURI.spec) >= 0);
}
-// Check if "extensions.torbutton.hide_sync_ui" is enabled, and if so,
-// hide the "Sign in to Sync" button on the hamburger menu.
-function torbutton_update_sync_ui()
-{
- try {
- document.getElementById("PanelUI-footer-fxa").style.display =
- getBoolPref("extensions.torbutton.hide_sync_ui") ? "none" : "";
- } catch (e) {
- torbutton_log(5, 'Error updating the Sync UI: ' + e);
- }
-}
-
// Update the NoScript button to reflect any changes to noscript prefs
function torbutton_update_noscript_button()
{
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index f61cb89..5cfb0eb 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -6,7 +6,6 @@ pref("extensions.torbutton.logmethod",1); // 0=stdout, 1=errorconsole, 2=debuglo
pref("extensions.torbutton.display_circuit", true);
pref("extensions.torbutton(a)torproject.org.description", "chrome://torbutton/locale/torbutton.properties");
pref("extensions.torbutton.updateNeeded", false);
-pref("extensions.torbutton.hide_sync_ui", true);
// Tor check and proxy prefs
pref("extensions.torbutton.test_enabled",true);
1
0

[tor-launcher/master] Bug 20628: Add locales bn-BD, da, he, sv, zh-TW
by gk@torproject.org 21 Jun '18
by gk@torproject.org 21 Jun '18
21 Jun '18
commit f34580ab7e70487e5c97c67969326111ac00d074
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Thu Jun 21 01:37:46 2018 -0700
Bug 20628: Add locales bn-BD, da, he, sv, zh-TW
---
src/chrome/content/network-settings.js | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/chrome/content/network-settings.js b/src/chrome/content/network-settings.js
index f86402d..0e18b29 100644
--- a/src/chrome/content/network-settings.js
+++ b/src/chrome/content/network-settings.js
@@ -304,10 +304,13 @@ function populateLocaleList(aLangPackAddons)
let knownLanguages = {
"en-US" : "English",
"ar" : "\u0627\u0644\u0639\u0631\u0628\u064a\u0629",
+ "bn-BD" : "\u09ac\u09be\u0982\u09b2\u09be",
+ "da" : "Dansk",
"de" : "Deutsch",
"es-ES" : "Espa\u00f1ol",
"fa" : "\u0641\u0627\u0631\u0633\u06cc",
"fr" : "Fran\u00e7ais",
+ "he" : "\u05e2\u05d1\u05e8\u05d9\u05ea",
"it" : "Italiano",
"ja" : "\u65e5\u672c\u8a9e",
"ko" : "\ud55c\uad6d\uc5b4",
@@ -315,9 +318,11 @@ function populateLocaleList(aLangPackAddons)
"pl" : "Polski",
"pt-PT" : "Portugu\u00eas (Europeu)",
"ru" : "\u0420\u0443\u0441\u0441\u043a\u0438\u0439",
+ "sv" : "Svenska",
"tr" : "T\u00fcrk\u00e7e",
"vi" : "Ti\u1ebfng Vi\u1ec7t",
- "zh-CN" : "\u7b80\u4f53\u5b57"
+ "zh-CN" : "\u7b80\u4f53\u5b57",
+ "zh-TW" : "\u6b63\u9ad4\u5b57"
};
// Retrieve the current locale so we can select it within the list by default.
1
0

21 Jun '18
commit 46c71b6a528e70386fb8165f7d1507615d1a2a47
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Thu Jun 21 01:04:05 2018 -0700
Bug 20628: Add locales bn-BD, da, he, sv, zh-TW
---
trans_tools/import-translations.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/trans_tools/import-translations.sh b/trans_tools/import-translations.sh
index 83c2b6a..736d62f 100755
--- a/trans_tools/import-translations.sh
+++ b/trans_tools/import-translations.sh
@@ -2,14 +2,14 @@
# This var comes from the TBB locale list.
# XXX: Find some way to keep this, tor-launcher, and Tor Browser in sync
-BUNDLE_LOCALES="ar de es fa fr it ko nl pl pt-BR ru tr vi zh-CN"
+BUNDLE_LOCALES="ar bn-BD da de es fa fr he it ja ko nl pl pt-BR ru sv tr vi zh-CN zh-TW"
# XXX: Basque (eu) by request in #10687.
# This is not used for official builds, but should remain
# so Basque XPIs can be build independently. We can do
# this for other languages too, if anyone requests this
# and translations are available.
-BUNDLE_LOCALES="$BUNDLE_LOCALES eu ja sv da"
+BUNDLE_LOCALES="$BUNDLE_LOCALES eu"
LOCALE_DIR=../src/chrome/locale
1
0
commit 6402ea66ab8ccc58870f09222a71caceeed4e41d
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jun 21 19:03:17 2018 +0000
Fold in older changelogs
---
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 089cbad..4438a9d 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,13 @@
+Tor Browser 8.0a8 -- June 10 2018
+ * All platforms
+ * Update Firefox to 52.8.1esr
+ * Bug 26098: Remove amazon-meek
+
+Tor Browser 7.5.5 -- June 10 2018
+ * All platforms
+ * Update Firefox to 52.8.1esr
+ * Bug 26098: Remove amazon-meek
+
Tor Browser 8.0a7 -- May 9 2018
* All platforms
* Update Firefox to 52.8.0esr
@@ -14,6 +24,17 @@ Tor Browser 8.0a7 -- May 9 2018
* Linux
* Bug 26010: Change Snowflake rendezvous to use the Azure domain front
+Tor Browser 7.5.4 -- May 9 2018
+ * All platforms
+ * Update Firefox to 52.8.0esr
+ * Update HTTPS Everywhere to 2018.4.11
+ * Update NoScript to 5.1.8.5
+ * Bug 23439: Exempt .onion domains from mixed content warnings
+ * Bug 22614: Make e10s/non-e10s Tor Browsers indistinguishable
+ * Bug 22659: Changes to `intl.accept.languages` get overwritten after restart
+ * Bug 25973: Backport off-by-one fix (bug 1352073)
+ * Bug 25020: Add a tbb_version.json file
+
Tor Browser 8.0a6 -- April 19 2018
* All platforms
* Update Tor to 0.3.3.5-rc
1
0

21 Jun '18
commit e2e0f83294692b6ff271ba073ad9ffa25fa5d02a
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jun 21 18:48:05 2018 +0000
Picking up a -build2 from Mozilla
---
projects/firefox-langpacks/config | 2 +-
projects/firefox/config | 2 +-
rbm.conf | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/projects/firefox-langpacks/config b/projects/firefox-langpacks/config
index 4e42939..04cd7dd 100644
--- a/projects/firefox-langpacks/config
+++ b/projects/firefox-langpacks/config
@@ -4,7 +4,7 @@ filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/buil
var:
ff_version: '[% pc("firefox", "var/firefox_version") %]'
- ff_build: build1
+ ff_build: build2
ff_arch: linux-i686
input_filename: 'dl-langpack-[% c("var/ff_arch") %]-[% c("version") %]'
diff --git a/projects/firefox/config b/projects/firefox/config
index cfafe70..0ed39da 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
filename: 'firefox-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
-git_hash: 'tor-browser-[% c("var/firefox_version") %]-[% c("var/torbrowser_branch") %]-1-build1'
+git_hash: 'tor-browser-[% c("var/firefox_version") %]-[% c("var/torbrowser_branch") %]-2-build1'
tag_gpg_id: 1
git_url: https://git.torproject.org/tor-browser.git
gpg_keyring: torbutton.gpg
diff --git a/rbm.conf b/rbm.conf
index 079c216..31b9cc1 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -16,7 +16,7 @@ buildconf:
var:
torbrowser_version: '7.5.6'
- torbrowser_build: 'build2'
+ torbrowser_build: 'build3'
torbrowser_incremental_from:
- 7.5.4
- 7.5.5
1
0

[tor-browser-build/master] Bug 26440: move vaulted vars to a separate directory
by gk@torproject.org 21 Jun '18
by gk@torproject.org 21 Jun '18
21 Jun '18
commit 2baf11975323cffae6a993fb5a2f57236f7c880d
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Thu Jun 21 16:27:50 2018 +0200
Bug 26440: move vaulted vars to a separate directory
---
tools/ansible/boklm-tbb-nightly-build.yml | 2 ++
.../ansible/{group_vars => vaulted_vars}/boklm-tbb-nightly/dma-auth.yml | 0
2 files changed, 2 insertions(+)
diff --git a/tools/ansible/boklm-tbb-nightly-build.yml b/tools/ansible/boklm-tbb-nightly-build.yml
index 2fe48cd..dd9e1dc 100644
--- a/tools/ansible/boklm-tbb-nightly-build.yml
+++ b/tools/ansible/boklm-tbb-nightly-build.yml
@@ -6,3 +6,5 @@
- role: tbb-nightly-build
- role: unattended-upgrades
- role: mta
+ vars_files:
+ - vaulted_vars/boklm-tbb-nightly/dma-auth.yml
diff --git a/tools/ansible/group_vars/boklm-tbb-nightly/dma-auth.yml b/tools/ansible/vaulted_vars/boklm-tbb-nightly/dma-auth.yml
similarity index 100%
rename from tools/ansible/group_vars/boklm-tbb-nightly/dma-auth.yml
rename to tools/ansible/vaulted_vars/boklm-tbb-nightly/dma-auth.yml
1
0

[tor-browser-build/master] Bug 23384: Add user sukhbir on build-sunet-a.torproject.net
by boklm@torproject.org 21 Jun '18
by boklm@torproject.org 21 Jun '18
21 Jun '18
commit 9638ce481f00edd72e5f307cde29978e66a5d24f
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Thu Jun 21 15:50:27 2018 +0200
Bug 23384: Add user sukhbir on build-sunet-a.torproject.net
---
tools/ansible/roles/tbb-team/defaults/main.yml | 1 +
tools/ansible/roles/tbb-team/files/sukhbir.pub | 1 +
2 files changed, 2 insertions(+)
diff --git a/tools/ansible/roles/tbb-team/defaults/main.yml b/tools/ansible/roles/tbb-team/defaults/main.yml
index 1445fce..8bf2e66 100644
--- a/tools/ansible/roles/tbb-team/defaults/main.yml
+++ b/tools/ansible/roles/tbb-team/defaults/main.yml
@@ -6,3 +6,4 @@ tbb_team_members:
- gk
- mcs
- mikeperry
+ - sukhbir
diff --git a/tools/ansible/roles/tbb-team/files/sukhbir.pub b/tools/ansible/roles/tbb-team/files/sukhbir.pub
new file mode 100644
index 0000000..3277487
--- /dev/null
+++ b/tools/ansible/roles/tbb-team/files/sukhbir.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCs5gQrS9m8H4qiR+Q0BT85jIHFgSb3ns2l1M1JWgWyI5eZvXCxIq1G9xI+HOp86mHA2XX7uWSCKWiWM1lt4UnM4jHm5thC2MEsKVqHaHF7s+lXq2uhybUma2fxXdYc9AM/TxujKKJ6U5qIkqLsX3HF5tQtEKY2lgPXgXNpldfX/IhtBWOfmRGTH5iu1hBIhhMAz31lTcYR4AOpcSeeMGRhYEka5RrH492OLfCVxphtlRtXm4CtAL4NpNe/cMZnntqprJJAjRJC71gU3OpT5a2zKKctN/5wTwAWpR1URXrQK4Mu37angYhjR/698iTJVAv2XxEgkB+NUCse98cIMUj5 sukhbir.in(a)gmail.com
1
0

[tor-browser-build/master] Bug 26438: Use non-sandbox background and .DS_Store again
by boklm@torproject.org 21 Jun '18
by boklm@torproject.org 21 Jun '18
21 Jun '18
commit 8b91968072326cf32da011b2c8bd3bbef14e4ef4
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jun 21 08:44:02 2018 +0000
Bug 26438: Use non-sandbox background and .DS_Store again
---
.../Bundle-Data/mac-applications.dmg/.DS_Store | Bin 12292 -> 12292 bytes
.../mac-applications.dmg/.background/background.png | Bin 49906 -> 50020 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
diff --git a/projects/tor-browser/Bundle-Data/mac-applications.dmg/.DS_Store b/projects/tor-browser/Bundle-Data/mac-applications.dmg/.DS_Store
index 6eeec47..aeb3104 100644
Binary files a/projects/tor-browser/Bundle-Data/mac-applications.dmg/.DS_Store and b/projects/tor-browser/Bundle-Data/mac-applications.dmg/.DS_Store differ
diff --git a/projects/tor-browser/Bundle-Data/mac-applications.dmg/.background/background.png b/projects/tor-browser/Bundle-Data/mac-applications.dmg/.background/background.png
index a4358cf..94e4584 100644
Binary files a/projects/tor-browser/Bundle-Data/mac-applications.dmg/.background/background.png and b/projects/tor-browser/Bundle-Data/mac-applications.dmg/.background/background.png differ
1
0

[tor-browser-build/master] Bug 26438: Remove seatbelt profiles for macOS
by boklm@torproject.org 21 Jun '18
by boklm@torproject.org 21 Jun '18
21 Jun '18
commit 767dd879b91584d5828998804ab1ee45499ca640
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jun 21 07:45:40 2018 +0000
Bug 26438: Remove seatbelt profiles for macOS
Starting with content sandboxing being enabled our seatbelt profiles
have been broken (see: #22000). We should remove them for now to avoid
a broken experience in the alphas.
---
.../tor-browser/Bundle-Data/mac-sandbox/.DS_Store | Bin 6148 -> 0 bytes
.../tor-browser/Bundle-Data/mac-sandbox/README.txt | 29 -----
.../mac-sandbox/start-browser-with-sandbox | 24 ----
.../Bundle-Data/mac-sandbox/start-tor-with-sandbox | 42 -------
projects/tor-browser/Bundle-Data/mac-sandbox/tb.sb | 122 ---------------------
.../tor-browser/Bundle-Data/mac-sandbox/tor.sb | 64 -----------
projects/tor-browser/build | 5 -
7 files changed, 286 deletions(-)
diff --git a/projects/tor-browser/Bundle-Data/mac-sandbox/.DS_Store b/projects/tor-browser/Bundle-Data/mac-sandbox/.DS_Store
deleted file mode 100644
index 6c49e24..0000000
Binary files a/projects/tor-browser/Bundle-Data/mac-sandbox/.DS_Store and /dev/null differ
diff --git a/projects/tor-browser/Bundle-Data/mac-sandbox/README.txt b/projects/tor-browser/Bundle-Data/mac-sandbox/README.txt
deleted file mode 100644
index 47d6e5c..0000000
--- a/projects/tor-browser/Bundle-Data/mac-sandbox/README.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-Experimental Sandboxed Tor Browser for OS X
-
-Requirements:
- Mac OS 10.9 or newer.
- A willingness to run shell commands from Terminal.
-
-Follow these steps to use the sandbox profiles:
-
-1. Copy this folder ("Sandboxed Tor Browser") to a local drive, but do not
- put it in /Applications.
-2. Copy the TorBrowser app into your "Sandboxed Tor Browser" folder.
-3. Open Terminal.
-4. Run start-tor-with-sandbox and wait for Tor bootstrapping to finish.
-5. Run start-browser-with-sandbox.
-
-Known Issues:
-
-You will need to manually kill start-tor-with-sandbox or the tor.real
-process after you exit the browser.
-
-The browser has full access to the Tor control port. Ideally, access
-would be limited to the things that are necessary for New Identity and
-for the circuit display features.
-
-Printing does not work.
-
-The built-in updater will not work.
-
-Files can only be downloaded or saved to ~/Downloads.
diff --git a/projects/tor-browser/Bundle-Data/mac-sandbox/start-browser-with-sandbox b/projects/tor-browser/Bundle-Data/mac-sandbox/start-browser-with-sandbox
deleted file mode 100755
index 31d4218..0000000
--- a/projects/tor-browser/Bundle-Data/mac-sandbox/start-browser-with-sandbox
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-
-# TODO: assumes not in /Applications
-# TODO: assumes app is in TorBrowser.app
-
-BASEDIR="`dirname \"$0\"`"
-BASEDIR="`(cd \"$BASEDIR\" && pwd)`"
-TORBROWSER_APP_DIR="$BASEDIR/TorBrowser.app"
-TORBROWSER_DATA_DIR="$BASEDIR/TorBrowser-Data"
-TOR_DATA_DIR="$TORBROWSER_DATA_DIR/Tor"
-SOCKETDIR="/tmp/Tor"
-
-export TOR_SKIP_LAUNCH=1
-export TOR_CONTROL_IPC_PATH="$SOCKETDIR/control.socket"
-export TOR_SOCKS_IPC_PATH="$SOCKETDIR/socks.socket"
-export TOR_CONTROL_COOKIE_AUTH_FILE="$TOR_DATA_DIR/control_auth_cookie"
-SB_PROFILE="`pwd`/tb.sb"
-cd "$TORBROWSER_APP_DIR"
-sandbox-exec -f "$SB_PROFILE" \
- -D "HOME_DIR=$HOME" \
- -D "CURRENT_DIR=$BASEDIR" \
- -D "TORBROWSER_APP_DIR=$TORBROWSER_APP_DIR" \
- -D "TORBROWSER_DATA_DIR=$TORBROWSER_DATA_DIR" \
- "./Contents/MacOS/firefox"
diff --git a/projects/tor-browser/Bundle-Data/mac-sandbox/start-tor-with-sandbox b/projects/tor-browser/Bundle-Data/mac-sandbox/start-tor-with-sandbox
deleted file mode 100755
index ec7f15e..0000000
--- a/projects/tor-browser/Bundle-Data/mac-sandbox/start-tor-with-sandbox
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/bash
-
-# TODO: assumes not in /Applications
-# TODO: assumes /tmp/Tor is not used by anyone else.
-# TODO: assumes app is in TorBrowser.app
-
-set -e
-
-BASEDIR="`dirname \"$0\"`"
-BASEDIR="`(cd \"$BASEDIR\" && pwd)`"
-TOR_DATA_DIR="$BASEDIR/TorBrowser-Data/Tor"
-TOR_STATIC_DATA_DIR="$BASEDIR/TorBrowser.app/Contents/Resources/TorBrowser/Tor"
-TOR_BIN_DIR="$BASEDIR/TorBrowser.app/Contents/MacOS/Tor"
-TORRC="$TOR_DATA_DIR/torrc"
-SOCKETDIR="/tmp/Tor"
-
-# Compiled Python modules require a compatible Python, which means 32-bit 2.6.
-export VERSIONER_PYTHON_VERSION=2.6
-export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH
-
-mkdir -p "$TOR_DATA_DIR"
-if [ ! -e "$TORRC" ]; then
- touch "$TORRC"
-fi
-
-if [ ! -e "$SOCKETDIR" ]; then
- mkdir -p "$SOCKETDIR"
- chmod 700 "$SOCKETDIR"
-fi
-
-TOR="$TOR_BIN_DIR/tor.real"
-sandbox-exec -f tor.sb -D "TOR_DATA_DIR=$TOR_DATA_DIR" \
- -D "TOR_STATIC_DATA_DIR=$TOR_STATIC_DATA_DIR" \
- -D "TOR_BIN_DIR=$TOR_BIN_DIR" "$TOR" \
- --defaults-torrc "$TOR_STATIC_DATA_DIR/torrc-defaults" \
- -f "$TORRC" \
- CookieAuthentication 1 \
- DataDirectory "$TOR_DATA_DIR" \
- GeoIPFile "$TOR_STATIC_DATA_DIR/geoip" \
- GeoIPv6File "$TOR_STATIC_DATA_DIR/geoip6" \
- ControlPort "unix:$SOCKETDIR/control.socket" \
- SocksPort "unix:$SOCKETDIR/socks.socket"
diff --git a/projects/tor-browser/Bundle-Data/mac-sandbox/tb.sb b/projects/tor-browser/Bundle-Data/mac-sandbox/tb.sb
deleted file mode 100644
index 385e914..0000000
--- a/projects/tor-browser/Bundle-Data/mac-sandbox/tb.sb
+++ /dev/null
@@ -1,122 +0,0 @@
-(version 1)
-
-;; Parameters:
-;; HOME_DIR the user's home directory
-;; CURRENT_DIR the current working directory
-;; TORBROWSER_APP_DIR the TorBrowser.app directory
-;; TORBROWSER_DATA_DIR the TorBrowser-Data directory
-
-;; TODO: can see all dirs but can download/save only in Downloads (no error reported though!)
-;; TODO: printing does not work (Save to PDF does).
-
-(deny default)
-
-(define (home-path aSubPath)
- (path (string-append (param "HOME_DIR") aSubPath)))
-
-(define (home-subpath aSubPath)
- (subpath (string-append (param "HOME_DIR") aSubPath)))
-
-(define (torbrowser-data-dir-path aSubPath)
- (path (string-append (param "TORBROWSER_DATA_DIR") aSubPath)))
-
-(define (torbrowser-data-dir-subpath aSubPath)
- (subpath (string-append (param "TORBROWSER_DATA_DIR") aSubPath)))
-
-(define (torbrowser-app-dir-path aSubPath)
- (subpath (string-append (param "TORBROWSER_APP_DIR") aSubPath)))
-
-(allow file-read*
- (path "/Library/Preferences/com.apple.HIToolbox.plist")
- (path "/Library/Preferences/com.apple.ViewBridge.plist")
- (path "/Library/Preferences/.GlobalPreferences.plist")
- (path "/dev/random")
- (path "/dev/urandom")
- (path "/dev/dtracehelper")
- (path "/private/etc/localtime")
- (path "/private/etc/passwd")
- (path "/private/tmp")
- (path "/private/var/tmp")
- (path (param "HOME_DIR"))
- (subpath "/Library/Audio")
- (subpath "/Library/Fonts")
- (subpath "/System")
- (subpath "/private/var/folders")
- (subpath "/usr/lib")
- (subpath "/usr/share")
- (home-subpath "/Downloads")
- (home-subpath "/Library/Input Methods")
- (home-subpath "/Library/Keyboard Layouts")
- (home-subpath "/Library/Preferences")
- (torbrowser-app-dir-path "")
- (torbrowser-data-dir-path "")
- (torbrowser-data-dir-subpath "/Browser")
- (torbrowser-data-dir-path "/Tor/control_auth_cookie")
-)
-
-(allow file-read-metadata
- (home-path "/Desktop")
- (home-path "/Library")
- (home-path "/Library/Saved Application State")
- (path (param "CURRENT_DIR"))
- (path "/")
- (path "/Applications")
- (path "/Users")
- (path "/etc")
- (path "/home")
- (path "/net")
- (path "/private/var/db/.AppleSetupDone")
- (path "/tmp")
- (path "/var")
- (torbrowser-data-dir-path "/Tor/control.socket")
- (torbrowser-data-dir-path "/Tor/socks.socket")
- (path-regex "/private/tmp/Tor[-0-9]*/control.socket")
- (path-regex "/private/tmp/Tor[-0-9]*/socks.socket")
-)
-
-(allow file-write-data file-ioctl
- (path "/dev/dtracehelper")
-)
-
-(allow file-write*
- (home-subpath "/Downloads")
- (home-path "/Library/Preferences/.GlobalPreferences.plist")
- (torbrowser-data-dir-subpath "/Browser")
- (subpath "/private/var/folders")
- (path-regex (string-append "^" (param "HOME_DIR") "/Library/Preferences/org.mozilla.tor"))
- (path "/Library/Preferences/.GlobalPreferences.plist")
-)
-
-(allow iokit-open)
-
-(allow ipc-posix-shm
- (ipc-posix-name "apple.shm.notification_center")
- (ipc-posix-name-regex "^/tmp/com.apple.csseed")
- (ipc-posix-name-regex "^CFPBS:")
- (ipc-posix-name-regex "^apple\.cfprefs\.")
- (ipc-posix-name-regex "^apple\.shm\.cfprefs\.")
- (ipc-posix-name-regex "^AudioIO")
-)
-
-(allow mach-lookup)
-
-(allow mach-register
- (local-name "com.apple.CFPasteboardClient")
- (local-name "com.apple.axserver")
- (local-name "com.apple.coredrag")
- (local-name "com.apple.tsm.portname")
-)
-
-(allow network-outbound
- (path "/private/var/run/cupsd")
- (torbrowser-data-dir-path "/Tor/control.socket")
- (torbrowser-data-dir-path "/Tor/socks.socket")
- (path-regex "/private/tmp/Tor[-0-9]*/control.socket")
- (path-regex "/private/tmp/Tor[-0-9]*/socks.socket")
-)
-
-(allow process-exec*
- (torbrowser-app-dir-path "/Contents/MacOS/firefox")
-)
-
-(allow sysctl-read)
diff --git a/projects/tor-browser/Bundle-Data/mac-sandbox/tor.sb b/projects/tor-browser/Bundle-Data/mac-sandbox/tor.sb
deleted file mode 100644
index 40abc9c..0000000
--- a/projects/tor-browser/Bundle-Data/mac-sandbox/tor.sb
+++ /dev/null
@@ -1,64 +0,0 @@
-(version 1)
-
-;; Parameters:
-;; TOR_DATA_DIR directory that contains writeable config, e.g, torrc
-;; TOR_STATIC_DATA_DIR directory for read-only config, e.g., torrc-defaults
-;; TOR_BIN_DIR directory that contains tor binaries, e.g., tor.real
-
-(deny default)
-
-(allow file-read* file-write-data file-ioctl
- (path "/dev/dtracehelper")
-)
-
-(allow file-read*
- (subpath (param "TOR_BIN_DIR"))
- (subpath "/usr/local")
- (subpath (param "TOR_DATA_DIR"))
- (subpath (param "TOR_STATIC_DATA_DIR"))
- (subpath (param "TOR_BIN_DIR"))
- (path-regex "/private/tmp/Tor[-0-9]*")
-)
-
-(allow file-read-data
- (path "/dev/random")
- (path "/dev/srandom")
- (path "/dev/urandom")
- (subpath "/usr/share")
-)
-
-(allow file-read-metadata
- (path "/etc")
- (path "/private/etc/localtime")
- (path "/tmp")
- (subpath "/usr/lib")
-)
-
-(allow file-write*
- (subpath (param "TOR_DATA_DIR"))
-)
-
-(allow ipc-posix-shm-read-data
- (ipc-posix-name "apple.shm.notification_center")
-)
-
-(allow mach-lookup
- (global-name "com.apple.system.notification_center")
-)
-
-(allow network-inbound file-write*
- (path (string-append (param "TOR_DATA_DIR") "/control.socket"))
- (path (string-append (param "TOR_DATA_DIR") "/socks.socket"))
- (path-regex "/private/tmp/Tor[-0-9]*/control.socket")
- (path-regex "/private/tmp/Tor[-0-9]*/socks.socket")
-)
-
-(allow network-outbound
- (remote tcp "*:*")
-)
-
-(allow process-exec
- (path (string-append (param "TOR_BIN_DIR") "/tor.real"))
-)
-
-(allow sysctl-read)
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 65c752b..1c98c35 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -105,11 +105,6 @@ tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -xf [% c('input_files
mv "$TBDIR/$TORBINPATH/tor" "$TBDIR/$TORBINPATH/tor.real"
cp Bundle-Data/mac-tor.sh "$TBDIR/$TORCONFIGPATH/tor"
- [% IF ! c("var/release") -%]
- SANDBOX_FOLDER="$TB_STAGE_DIR/Sandboxed Tor Browser"
- mv Bundle-Data/mac-sandbox "$SANDBOX_FOLDER"
- [% END -%]
-
tar -C Bundle-Data/mac-applications.dmg -c . | tar -C $TB_STAGE_DIR -x
[% END %]
1
0

20 Jun '18
commit 1d5a375834a1fc1884145591d4fb63623b071486
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Jun 20 19:46:00 2018 +0000
Prepating build2 with fix for #26428
---
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 1 +
rbm.conf | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index f7160bf..84f2c76 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -5,6 +5,7 @@ Tor Browser 7.5.6 -- June 26 2018
* Update Tor Launcher to 0.2.14.5
* Bug 20890: Increase control port connection timeout
* Update HTTPS Everywhere to 2018.6.13
+ * Bug 26428: Work around HTTPS Everywhere caused build bustage
* Update NoScript to 5.1.8.6
* Bug 21537: Mark .onion cookies as secure
* Bug 25938: Backport fix for cross-origin header leak (bug 1334776)
diff --git a/rbm.conf b/rbm.conf
index 5a90617..079c216 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -16,7 +16,7 @@ buildconf:
var:
torbrowser_version: '7.5.6'
- torbrowser_build: 'build1'
+ torbrowser_build: 'build2'
torbrowser_incremental_from:
- 7.5.4
- 7.5.5
1
0

[tor-browser-build/maint-7.5] Bug 26428: add temporary fix to avoid https-e submodule error
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit b3cc97d4e4adb4709c1e367d82bd1e389bba60f0
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Wed Jun 20 19:14:27 2018 +0200
Bug 26428: add temporary fix to avoid https-e submodule error
---
projects/https-everywhere/config | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/projects/https-everywhere/config b/projects/https-everywhere/config
index 2385c5c..c55933e 100644
--- a/projects/https-everywhere/config
+++ b/projects/https-everywhere/config
@@ -1,10 +1,12 @@
# vim: filetype=yaml sw=2
version: 2018.6.13
-git_url: https://git.torproject.org/https-everywhere.git
-git_hash: '[% c("version") %]'
+git_url: https://github.com/boklm/https-everywhere
+# Temporary fix for #26428
+git_hash: 53091373b8e4a78504dd2ddc55f953a267a7de87
git_submodule: 1
gpg_keyring: https-everywhere.gpg
-tag_gpg_id: 1
+# Temporarily disable gpg check for #26428
+#tag_gpg_id: 1
filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].xpi"
var:
# HTTPS Everywhere is expected to be the same on all platforms. To avoid
1
0

[tor-browser-build/maint-7.5] Bug 26059: Use signed directory when generating incremental mars
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit c4dafdefafde5f6f4208eee508ef244a1333510d
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon May 21 13:14:13 2018 +0200
Bug 26059: Use signed directory when generating incremental mars
We update the update_responses script to be able to specify a different
$releases_dir for each version. When generating incremental mars, this
allows us to set the default releases_dir to {alpha,release}/signed and
the current version's releases_dir to {alpha,release}/unsigned.
---
Makefile | 4 ++--
projects/release/config | 4 ++++
projects/release/update_responses_config.yml | 5 ++++-
tools/update-responses/update_responses | 27 ++++++++++++++++-----------
4 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/Makefile b/Makefile
index 2707d41..4c21a83 100644
--- a/Makefile
+++ b/Makefile
@@ -111,13 +111,13 @@ signtag-alpha: submodule-update
$(rbm) build release --step signtag --target alpha
incrementals-release: submodule-update
- $(rbm) build release --step update_responses_config --target release
+ $(rbm) build release --step update_responses_config --target release --target create_unsigned_incrementals
tools/update-responses/download_missing_versions release
tools/update-responses/gen_incrementals release
$(rbm) build release --step hash_incrementals --target release
incrementals-alpha: submodule-update
- $(rbm) build release --step update_responses_config --target alpha
+ $(rbm) build release --step update_responses_config --target alpha --target create_unsigned_incrementals
tools/update-responses/download_missing_versions alpha
tools/update-responses/gen_incrementals alpha
$(rbm) build release --step hash_incrementals --target alpha
diff --git a/projects/release/config b/projects/release/config
index 61c6175..bd94607 100644
--- a/projects/release/config
+++ b/projects/release/config
@@ -73,6 +73,10 @@ targets:
var:
signed_status: signed
+ create_unsigned_incrementals:
+ var:
+ create_unsigned_incrementals: 1
+
input_files:
# Release
diff --git a/projects/release/update_responses_config.yml b/projects/release/update_responses_config.yml
index 01c6950..1a9b0cf 100644
--- a/projects/release/update_responses_config.yml
+++ b/projects/release/update_responses_config.yml
@@ -5,7 +5,7 @@ appname_bundle_osx: TorBrowser
appname_bundle_linux: tor-browser
appname_bundle_win32: torbrowser-install
appname_bundle_win64: torbrowser-install-win64
-releases_dir: [% path(c('output_dir')) %]/[% c("var/signed_status") %]
+releases_dir: [% path(c('output_dir')) %]/signed
download:
archive_url: https://archive.torproject.org/tor-package-archive/torbrowser
gpg_keyring: ../../keyring/torbrowser.gpg
@@ -25,6 +25,9 @@ channels:
[% pc('firefox', 'var/torbrowser_update_channel') %]: [% c("var/torbrowser_version") %]
versions:
[% c("var/torbrowser_version") %]:
+[% IF c("var/create_unsigned_incrementals") -%]
+ releases_dir: [% path(c('output_dir')) %]/unsigned
+[% END -%]
platformVersion: [% pc('firefox', 'var/firefox_platform_version') %]
detailsURL: https://blog.torproject.org/tor-browser-[% c("var/torbrowser_version") FILTER remove('\.') %]-released
incremental_from:
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index 658f451..bf2415d 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -92,7 +92,7 @@ sub get_version_files {
return if $config->{versions}{$version}{files};
my $appname = $config->{appname_marfile};
my $files = {};
- my $vdir = "$releases_dir/$version";
+ my $vdir = version_dir($config, $version);
my $download_url = "$config->{download}{mars_url}/$version";
opendir(my $d, $vdir) or exit_error "Error opening directory $vdir";
foreach my $file (readdir $d) {
@@ -126,7 +126,7 @@ sub get_version_files {
sub get_version_downloads {
my ($config, $version) = @_;
my $downloads = {};
- my $vdir = "$releases_dir/$version";
+ my $vdir = version_dir($config, $version);
my $download_url = "$config->{download}{bundles_url}/$version";
opendir(my $d, $vdir) or exit_error "Error opening directory $vdir";
foreach my $file (readdir $d) {
@@ -179,15 +179,15 @@ sub extract_mar {
}
sub mar_filename {
- my ($appname, $version, $os, $lang) = @_;
- "$releases_dir/$version/$appname-$os-${version}_$lang.mar";
+ my ($config, $appname, $version, $os, $lang) = @_;
+ version_dir($config, $version) . "/$appname-$os-${version}_$lang.mar";
}
sub create_incremental_mar {
my ($config, $pm, $from_version, $new_version, $os, $lang) = @_;
my $appname = $config->{appname_marfile};
my $mar_file = "$appname-$os-${from_version}-${new_version}_$lang.incremental.mar";
- my $mar_file_path = "$releases_dir/$new_version/$mar_file";
+ my $mar_file_path = version_dir($config, $new_version) . '/' . $mar_file;
if ($ENV{MAR_SKIP_EXISTING} && -f $mar_file_path) {
print "Skipping $mar_file\n";
return;
@@ -207,8 +207,8 @@ sub create_incremental_mar {
};
return if $pm->start($finished_file);
my $tmpdir = get_tmpdir($config);
- extract_mar(mar_filename($appname, $from_version, $os, $lang), "$tmpdir/A");
- extract_mar(mar_filename($appname, $new_version, $os, $lang), "$tmpdir/B");
+ extract_mar(mar_filename($config, $appname, $from_version, $os, $lang), "$tmpdir/A");
+ extract_mar(mar_filename($config, $appname, $new_version, $os, $lang), "$tmpdir/B");
if ($ENV{CHECK_CODESIGNATURE_EXISTS}) {
unless (-f "$tmpdir/A/Contents/_CodeSignature/CodeResources"
&& -f "$tmpdir/B/Contents/_CodeSignature/CodeResources") {
@@ -250,6 +250,11 @@ sub get_config {
// $config->{$name};
}
+sub version_dir {
+ my ($config, $version) = @_;
+ return get_config($config, $version, 'any', 'releases_dir') . "/$version";
+}
+
sub channel_to_version {
my ($config, @channels) = @_;
return values %{$config->{channels}} unless @channels;
@@ -270,7 +275,7 @@ sub get_buildinfos {
next unless $files->{$os}{$lang}{complete};
my $tmpdir = get_tmpdir($config);
extract_mar(
- mar_filename($config->{appname_marfile}, $version, $os, $lang),
+ mar_filename($config, $config->{appname_marfile}, $version, $os, $lang),
"$tmpdir");
my $appfile = "$tmpdir/application.ini" if -f "$tmpdir/application.ini";
$appfile = "$tmpdir/Contents/Resources/application.ini"
@@ -423,7 +428,7 @@ my $martools_tmpdir;
sub extract_martools {
my ($config, $version) = @_;
my $osname = osname;
- my $marzip = "$releases_dir/$version/mar-tools-$osname.zip";
+ my $marzip = version_dir($config, $version) . "/mar-tools-$osname.zip";
$martools_tmpdir = get_tmpdir($config);
my $old_cwd = getcwd;
chdir $martools_tmpdir;
@@ -523,7 +528,7 @@ sub check_update_responses_channel {
sub download_version {
my ($config, $version) = @_;
my $tmpdir = get_tmpdir($config);
- my $destdir = "$releases_dir/$version";
+ my $destdir = version_dir($config, $version);
my $urldir = "$config->{download}{archive_url}/$version";
print "Downloading version $version\n";
foreach my $file (qw(sha256sums-signed-build.txt sha256sums-signed-build.txt.asc)) {
@@ -576,7 +581,7 @@ sub download_missing_versions {
my $cversion = $config->{channels}{$channel};
next unless $config->{versions}{$cversion}{incremental_from};
foreach my $version (@{$config->{versions}{$cversion}{incremental_from}}) {
- next if -d "$releases_dir/$version";
+ next if -d version_dir($config, $version);
download_version($config, $version);
}
}
1
0

20 Jun '18
commit 376527bbad5fa5550f1109c7d9de4bb216a32da2
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Jun 20 13:30:18 2018 +0000
Release preparations for 7.5.6
Changelog update and versions bump
---
projects/firefox/config | 2 +-
projects/https-everywhere/config | 2 +-
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 16 ++++++++++++++++
projects/tor-browser/config | 4 ++--
projects/tor-launcher/config | 2 +-
projects/tor/config | 2 +-
rbm.conf | 3 ++-
7 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/projects/firefox/config b/projects/firefox/config
index e91d1ca..cfafe70 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -7,7 +7,7 @@ git_url: https://git.torproject.org/tor-browser.git
gpg_keyring: torbutton.gpg
var:
- firefox_platform_version: 52.8.1
+ firefox_platform_version: 52.9.0
firefox_version: '[% c("var/firefox_platform_version") %]esr'
torbrowser_branch: 7.5
torbrowser_update_channel: alpha
diff --git a/projects/https-everywhere/config b/projects/https-everywhere/config
index cfa0a78..2385c5c 100644
--- a/projects/https-everywhere/config
+++ b/projects/https-everywhere/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 2018.4.11
+version: 2018.6.13
git_url: https://git.torproject.org/https-everywhere.git
git_hash: '[% c("version") %]'
git_submodule: 1
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 5d52b10..f7160bf 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,19 @@
+Tor Browser 7.5.6 -- June 26 2018
+ * All platforms
+ * Update Firefox to 52.9.0esr
+ * Update Tor to 0.3.3.7
+ * Update Tor Launcher to 0.2.14.5
+ * Bug 20890: Increase control port connection timeout
+ * Update HTTPS Everywhere to 2018.6.13
+ * Update NoScript to 5.1.8.6
+ * Bug 21537: Mark .onion cookies as secure
+ * Bug 25938: Backport fix for cross-origin header leak (bug 1334776)
+ * Bug 25721: Backport patches from Mozilla's bug 1448771
+ * Bug 25147+25458: Sanitize HTML fragments for chrome documents
+ * Bug 26221: Backport fix for leak in SHA256 in nsHttpConnectionInfo.cpp
+ * Windows
+ * Bug 26424: Disable UNC paths to prevent possible proxy bypasses
+
Tor Browser 7.5.5 -- June 10 2018
* All platforms
* Update Firefox to 52.8.1esr
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index dec5648..4d7c959 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -66,9 +66,9 @@ input_files:
name: snowflake
enable: '[% c("var/snowflake") %]'
- filename: Bundle-Data
- - URL: https://secure.informaction.com/download/releases/noscript-5.1.8.5.xpi
+ - URL: https://secure.informaction.com/download/releases/noscript-5.1.8.6.xpi
name: noscript
- sha256sum: 7180f8d24ca31989682dee229b95e3503699f2bb25cb593a6a1f2ce0a2253792
+ sha256sum: c09f19b0ce79ea9b59a988af77d28d48fd7afbbd26a85f93a35c22100eb51536
- filename: 'RelativeLink/start-tor-browser.desktop'
enable: '[% c("var/linux") %]'
- filename: 'RelativeLink/execdesktop'
diff --git a/projects/tor-launcher/config b/projects/tor-launcher/config
index 05d353f..43a9cb0 100644
--- a/projects/tor-launcher/config
+++ b/projects/tor-launcher/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 0.2.14.4
+version: 0.2.14.5
git_url: https://git.torproject.org/tor-launcher.git
git_hash: '[% c("version") %]'
gpg_keyring: torbutton.gpg
diff --git a/projects/tor/config b/projects/tor/config
index 9107b28..7ec9504 100644
--- a/projects/tor/config
+++ b/projects/tor/config
@@ -1,6 +1,6 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
-version: 0.3.2.10
+version: 0.3.3.7
git_hash: 'tor-[% c("version") %]'
git_url: https://git.torproject.org/tor.git
gpg_keyring: tor.gpg
diff --git a/rbm.conf b/rbm.conf
index 4329958..5a90617 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -15,10 +15,11 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '7.5.5'
+ torbrowser_version: '7.5.6'
torbrowser_build: 'build1'
torbrowser_incremental_from:
- 7.5.4
+ - 7.5.5
project_name: tor-browser
multi_lingual: 0
build_mar: 1
1
0

[tor-browser-build/maint-7.5] Bug 26054: Make sure to create incrementals from previously signed MAR files
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit 6df6be50faee48c807e8ca257e9179998aa8bc61
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon May 21 15:54:31 2018 +0200
Bug 26054: Make sure to create incrementals from previously signed MAR files
---
tools/update-responses/update_responses | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index bf2415d..1df35b3 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -209,6 +209,10 @@ sub create_incremental_mar {
my $tmpdir = get_tmpdir($config);
extract_mar(mar_filename($config, $appname, $from_version, $os, $lang), "$tmpdir/A");
extract_mar(mar_filename($config, $appname, $new_version, $os, $lang), "$tmpdir/B");
+ # bug 26054: make sure previous macOS version is code signed
+ if (($os eq 'osx64') && ! -f "$tmpdir/A/Contents/_CodeSignature/CodeResources") {
+ exit_error "Missing code signature in $from_version while creating $mar_file";
+ }
if ($ENV{CHECK_CODESIGNATURE_EXISTS}) {
unless (-f "$tmpdir/A/Contents/_CodeSignature/CodeResources"
&& -f "$tmpdir/B/Contents/_CodeSignature/CodeResources") {
1
0

[tor-browser/tor-browser-52.8.0esr-7.5-1] Bug 1444532 - Fix a leak in SHA256 in nsHttpConnectionInfo.cpp. r=mayhemer, a=jcristau
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit 4edbd21ab9244671cb77cf9a4de5e1126079146e
Author: David Keeler <dkeeler(a)mozilla.com>
Date: Fri Mar 9 14:16:57 2018 -0800
Bug 1444532 - Fix a leak in SHA256 in nsHttpConnectionInfo.cpp. r=mayhemer, a=jcristau
The original code (from bug 1200802) declared an XPCOM object as a static bare
pointer, which for future reference is probably never the right thing to do. It
might have worked if it was cleared before shutdown but it never was.
MozReview-Commit-ID: EMe7wgzm6zv
--HG--
extra : rebase_source : 16c36a76e39b762e87c7d3c74e64204d7ca9929d
extra : source : ad1e07a06363096efbfbf115cbc274c4ee9dcd40
---
netwerk/protocol/http/nsHttpConnectionInfo.cpp | 28 +++++++++++---------------
1 file changed, 12 insertions(+), 16 deletions(-)
diff --git a/netwerk/protocol/http/nsHttpConnectionInfo.cpp b/netwerk/protocol/http/nsHttpConnectionInfo.cpp
index e965fd1cc2e9..4b9c84a7ed62 100644
--- a/netwerk/protocol/http/nsHttpConnectionInfo.cpp
+++ b/netwerk/protocol/http/nsHttpConnectionInfo.cpp
@@ -14,33 +14,29 @@
#define LOG_ENABLED() LOG5_ENABLED()
#include "nsHttpConnectionInfo.h"
+
#include "mozilla/net/DNS.h"
-#include "prnetdb.h"
-#include "nsICryptoHash.h"
#include "nsComponentManagerUtils.h"
+#include "nsICryptoHash.h"
#include "nsIProtocolProxyService.h"
+#include "nsNetCID.h"
+#include "prnetdb.h"
static nsresult
SHA256(const char* aPlainText, nsAutoCString& aResult)
{
- static nsICryptoHash* hasher = nullptr;
- nsresult rv;
- if (!hasher) {
- rv = CallCreateInstance("@mozilla.org/security/hash;1", &hasher);
+ nsresult rv;
+ nsCOMPtr<nsICryptoHash> hasher =
+ do_CreateInstance(NS_CRYPTO_HASH_CONTRACTID, &rv);
if (NS_FAILED(rv)) {
LOG(("nsHttpDigestAuth: no crypto hash!\n"));
return rv;
}
- }
-
- rv = hasher->Init(nsICryptoHash::SHA256);
- NS_ENSURE_SUCCESS(rv, rv);
-
- rv = hasher->Update((unsigned char*) aPlainText, strlen(aPlainText));
- NS_ENSURE_SUCCESS(rv, rv);
-
- rv = hasher->Finish(false, aResult);
- return rv;
+ rv = hasher->Init(nsICryptoHash::SHA256);
+ NS_ENSURE_SUCCESS(rv, rv);
+ rv = hasher->Update((unsigned char*) aPlainText, strlen(aPlainText));
+ NS_ENSURE_SUCCESS(rv, rv);
+ return hasher->Finish(false, aResult);
}
namespace mozilla {
1
0

[tor-browser/tor-browser-52.8.0esr-7.5-1] Bug 25147: Sanitize HTML fragments created for chrome-privileged documents
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit 8c3c7dcd7e71ae7ca9237fef555efb602ddc7bcc
Author: Richard Pospesel <richard(a)torproject.org>
Date: Thu Mar 1 14:12:08 2018 -0800
Bug 25147: Sanitize HTML fragments created for chrome-privileged documents
Ported over firefox patch c2db4a50dc5c (Bug 1432966)
---
.../tests/mochitest/events/test_mutation.html | 4 +-
browser/base/content/browser-media.js | 59 ++++++------
.../customizableui/CustomizableWidgets.jsm | 2 +-
browser/modules/webrtcUI.jsm | 21 +++--
.../client/responsive.html/components/browser.js | 7 ++
devtools/shared/gcli/source/lib/gcli/util/util.js | 6 +-
.../tests/browser/browser_l10n_localizeMarkup.js | 4 +-
dom/base/Element.cpp | 6 ++
dom/base/Element.h | 1 +
dom/base/FragmentOrElement.cpp | 13 ++-
dom/base/FragmentOrElement.h | 3 +-
dom/base/nsContentUtils.cpp | 60 ++++++++++--
dom/base/nsContentUtils.h | 26 +++++-
dom/base/nsDocument.cpp | 12 ++-
dom/base/nsIDocument.h | 6 ++
dom/base/test/chrome.ini | 1 +
dom/base/test/chrome/test_bug683852.xul | 4 +-
dom/base/test/test_fragment_sanitization.xul | 101 +++++++++++++++++++++
dom/webidl/Document.webidl | 5 +
dom/webidl/Element.webidl | 10 ++
layout/style/test/chrome/bug418986-2.js | 16 +++-
mobile/android/chrome/content/config.js | 4 +-
toolkit/content/tests/chrome/test_bug570192.xul | 4 +-
toolkit/mozapps/extensions/content/extensions.js | 2 +-
24 files changed, 309 insertions(+), 68 deletions(-)
diff --git a/accessible/tests/mochitest/events/test_mutation.html b/accessible/tests/mochitest/events/test_mutation.html
index 232a0972777f..63dd74ca4775 100644
--- a/accessible/tests/mochitest/events/test_mutation.html
+++ b/accessible/tests/mochitest/events/test_mutation.html
@@ -348,8 +348,8 @@
this.invoke = function insertReferredElm_invoke()
{
- this.containerNode.innerHTML =
- "<span id='insertReferredElms_span'></span><input aria-labelledby='insertReferredElms_span'>";
+ this.containerNode.unsafeSetInnerHTML(
+ "<span id='insertReferredElms_span'></span><input aria-labelledby='insertReferredElms_span'>");
}
this.getID = function insertReferredElm_getID()
diff --git a/browser/base/content/browser-media.js b/browser/base/content/browser-media.js
index 81e7faf17aad..c1ed8f9399fa 100644
--- a/browser/base/content/browser-media.js
+++ b/browser/base/content/browser-media.js
@@ -41,11 +41,23 @@ var gEMEHandler = {
}
return true;
},
- getLearnMoreLink: function(msgId) {
- let text = gNavigatorBundle.getString("emeNotifications." + msgId + ".learnMoreLabel");
+ getEMEDisabledFragment(msgId) {
+ let mainMessage = gNavigatorBundle.getString("emeNotifications.drmContentDisabled.message");
+ let [prefix, suffix] = mainMessage.split(/%(?:1\$)?S/).map(s => document.createTextNode(s));
+ let text = gNavigatorBundle.getString("emeNotifications.drmContentDisabled.learnMoreLabel");
let baseURL = Services.urlFormatter.formatURLPref("app.support.baseURL");
- return "<label class='text-link' href='" + baseURL + "drm-content'>" +
- text + "</label>";
+ let link = document.createElement("label");
+ link.className = "text-link";
+ link.setAttribute("href", baseURL + "drm-content");
+ link.textContent = text;
+
+ let fragment = document.createDocumentFragment();
+ [prefix, link, suffix].forEach(n => fragment.appendChild(n));
+ return fragment;
+ },
+ getMessageWithBrandName(notificationId) {
+ let msgId = "emeNotifications." + notificationId + ".message";
+ return gNavigatorBundle.getFormattedString(msgId, [this._brandShortName]);
},
receiveMessage: function({target: browser, data: data}) {
let parsedData;
@@ -63,7 +75,8 @@ var gEMEHandler = {
let notificationId;
let buttonCallback;
- let params = [];
+ // Notification message can be either a string or a DOM fragment.
+ let notificationMessage;
switch (status) {
case "available":
case "cdm-created":
@@ -77,18 +90,18 @@ var gEMEHandler = {
case "api-disabled":
case "cdm-disabled":
notificationId = "drmContentDisabled";
- buttonCallback = gEMEHandler.ensureEMEEnabled.bind(gEMEHandler, browser, keySystem)
- params = [this.getLearnMoreLink(notificationId)];
+ buttonCallback = gEMEHandler.ensureEMEEnabled.bind(gEMEHandler, browser, keySystem);
+ notificationMessage = this.getEMEDisabledFragment();
break;
case "cdm-insufficient-version":
notificationId = "drmContentCDMInsufficientVersion";
- params = [this._brandShortName];
+ notificationMessage = this.getMessageWithBrandName(notificationId);
break;
case "cdm-not-installed":
notificationId = "drmContentCDMInstalling";
- params = [this._brandShortName];
+ notificationMessage = this.getMessageWithBrandName(notificationId);
break;
case "cdm-not-supported":
@@ -100,43 +113,27 @@ var gEMEHandler = {
return;
}
- this.showNotificationBar(browser, notificationId, keySystem, params, buttonCallback);
- },
- showNotificationBar: function(browser, notificationId, keySystem, labelParams, callback) {
+ // Now actually create the notification
+
let box = gBrowser.getNotificationBox(browser);
if (box.getNotificationWithValue(notificationId)) {
return;
}
- let msgPrefix = "emeNotifications." + notificationId + ".";
- let msgId = msgPrefix + "message";
-
- let message = labelParams.length ?
- gNavigatorBundle.getFormattedString(msgId, labelParams) :
- gNavigatorBundle.getString(msgId);
-
let buttons = [];
- if (callback) {
+ if (buttonCallback) {
+ let msgPrefix = "emeNotifications." + notificationId + ".";
let btnLabelId = msgPrefix + "button.label";
let btnAccessKeyId = msgPrefix + "button.accesskey";
buttons.push({
label: gNavigatorBundle.getString(btnLabelId),
accessKey: gNavigatorBundle.getString(btnAccessKeyId),
- callback: callback
+ callback: buttonCallback,
});
}
let iconURL = "chrome://browser/skin/drm-icon.svg#chains-black";
-
- // Do a little dance to get rich content into the notification:
- let fragment = document.createDocumentFragment();
- let descriptionContainer = document.createElement("description");
- descriptionContainer.innerHTML = message;
- while (descriptionContainer.childNodes.length) {
- fragment.appendChild(descriptionContainer.childNodes[0]);
- }
-
- box.appendNotification(fragment, notificationId, iconURL, box.PRIORITY_WARNING_MEDIUM,
+ box.appendNotification(notificationMessage, notificationId, iconURL, box.PRIORITY_WARNING_MEDIUM,
buttons);
},
showPopupNotificationForSuccess: function(browser, keySystem) {
diff --git a/browser/components/customizableui/CustomizableWidgets.jsm b/browser/components/customizableui/CustomizableWidgets.jsm
index 907e2e0f75b7..b18249a35811 100644
--- a/browser/components/customizableui/CustomizableWidgets.jsm
+++ b/browser/components/customizableui/CustomizableWidgets.jsm
@@ -327,7 +327,7 @@ const CustomizableWidgets = [
let promoParentElt = doc.getElementById("PanelUI-remotetabs-mobile-promo");
// Put it all together...
let contents = bundle.getFormattedString("appMenuRemoteTabs.mobilePromo.text2", formatArgs);
- promoParentElt.innerHTML = contents;
+ promoParentElt.unsafeSetInnerHTML(contents);
// We manually manage the "click" event to open the promo links because
// allowing the "text-link" widget handle it has 2 problems: (1) it only
// supports button 0 and (2) it's tricky to intercept when it does the
diff --git a/browser/modules/webrtcUI.jsm b/browser/modules/webrtcUI.jsm
index b24135bfc959..ddcf09260f97 100644
--- a/browser/modules/webrtcUI.jsm
+++ b/browser/modules/webrtcUI.jsm
@@ -536,21 +536,26 @@ function prompt(aBrowser, aRequest) {
bundle.getString("getUserMedia.shareScreen.learnMoreLabel");
let baseURL =
Services.urlFormatter.formatURLPref("app.support.baseURL");
- let learnMore =
- "<label class='text-link' href='" + baseURL + "screenshare-safety'>" +
- learnMoreText + "</label>";
+
+ let learnMore = chromeWin.document.createElement("label");
+ learnMore.className = "text-link";
+ learnMore.setAttribute("href", baseURL + "screenshare-safety");
+ learnMore.textContent = learnMoreText;
if (type == "screen") {
string = bundle.getFormattedString("getUserMedia.shareScreenWarning.message",
- [learnMore]);
- }
- else {
+ ["<>"]);
+ } else {
let brand =
chromeDoc.getElementById("bundle_brand").getString("brandShortName");
string = bundle.getFormattedString("getUserMedia.shareFirefoxWarning.message",
- [brand, learnMore]);
+ [brand, "<>"]);
}
- warning.innerHTML = string;
+
+ let [pre, post] = string.split("<>");
+ warning.textContent = pre;
+ warning.appendChild(learnMore);
+ warning.appendChild(chromeWin.document.createTextNode(post));
}
let perms = Services.perms;
diff --git a/devtools/client/responsive.html/components/browser.js b/devtools/client/responsive.html/components/browser.js
index f2902905b522..91f709f0cb8a 100644
--- a/devtools/client/responsive.html/components/browser.js
+++ b/devtools/client/responsive.html/components/browser.js
@@ -16,6 +16,13 @@ const Types = require("../types");
const e10s = require("../utils/e10s");
const message = require("../utils/message");
+// Allow creation of HTML fragments without automatic sanitization, even
+// though we're in a chrome-privileged document.
+// This is, unfortunately, necessary in order to React to function
+// correctly.
+
+document.allowUnsafeHTML = true;
+
module.exports = createClass({
/**
diff --git a/devtools/shared/gcli/source/lib/gcli/util/util.js b/devtools/shared/gcli/source/lib/gcli/util/util.js
index 065bf36c07db..cfc18062e1c5 100644
--- a/devtools/shared/gcli/source/lib/gcli/util/util.js
+++ b/devtools/shared/gcli/source/lib/gcli/util/util.js
@@ -498,7 +498,11 @@ exports.setContents = function(elem, contents) {
return;
}
- if ('innerHTML' in elem) {
+ if ('unsafeSetInnerHTML' in elem) {
+ // FIXME: Stop relying on unsanitized HTML.
+ elem.unsafeSetInnerHTML(contents);
+ }
+ else if ('innerHTML' in elem) {
elem.innerHTML = contents;
}
else {
diff --git a/devtools/shared/tests/browser/browser_l10n_localizeMarkup.js b/devtools/shared/tests/browser/browser_l10n_localizeMarkup.js
index f33a5a331c51..59bbb308ba44 100644
--- a/devtools/shared/tests/browser/browser_l10n_localizeMarkup.js
+++ b/devtools/shared/tests/browser/browser_l10n_localizeMarkup.js
@@ -18,7 +18,7 @@ add_task(function* () {
info("Create the test markup");
let div = document.createElement("div");
- div.innerHTML =
+ div.unsafeSetInnerHTML(
`<div data-localization-bundle="devtools/client/locales/startup.properties">
<div id="d0" data-localization="content=inspector.someInvalidKey"></div>
<div id="d1" data-localization="content=inspector.label">Text will disappear</div>
@@ -32,7 +32,7 @@ add_task(function* () {
<div id="d5" data-localization="content=toolbox.defaultTitle"></div>
</div>
</div>
- `;
+ `);
info("Use localization helper to localize the test markup");
localizeMarkup(div);
diff --git a/dom/base/Element.cpp b/dom/base/Element.cpp
index 09c6b39da574..daf5d6aa98bf 100644
--- a/dom/base/Element.cpp
+++ b/dom/base/Element.cpp
@@ -3564,6 +3564,12 @@ Element::SetInnerHTML(const nsAString& aInnerHTML, ErrorResult& aError)
}
void
+Element::UnsafeSetInnerHTML(const nsAString& aInnerHTML, ErrorResult& aError)
+{
+ SetInnerHTMLInternal(aInnerHTML, aError, true);
+}
+
+void
Element::GetOuterHTML(nsAString& aOuterHTML)
{
GetMarkup(true, aOuterHTML);
diff --git a/dom/base/Element.h b/dom/base/Element.h
index 5d878df60668..94991b26a641 100644
--- a/dom/base/Element.h
+++ b/dom/base/Element.h
@@ -896,6 +896,7 @@ public:
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML);
virtual void SetInnerHTML(const nsAString& aInnerHTML, ErrorResult& aError);
+ void UnsafeSetInnerHTML(const nsAString& aInnerHTML, ErrorResult& aError);
void GetOuterHTML(nsAString& aOuterHTML);
void SetOuterHTML(const nsAString& aOuterHTML, ErrorResult& aError);
void InsertAdjacentHTML(const nsAString& aPosition, const nsAString& aText,
diff --git a/dom/base/FragmentOrElement.cpp b/dom/base/FragmentOrElement.cpp
index 4ad10931a8d0..c83a76dc2603 100644
--- a/dom/base/FragmentOrElement.cpp
+++ b/dom/base/FragmentOrElement.cpp
@@ -2183,7 +2183,8 @@ ContainsMarkup(const nsAString& aStr)
}
void
-FragmentOrElement::SetInnerHTMLInternal(const nsAString& aInnerHTML, ErrorResult& aError)
+FragmentOrElement::SetInnerHTMLInternal(const nsAString& aInnerHTML, ErrorResult& aError,
+ bool aNeverSanitize)
{
FragmentOrElement* target = this;
// Handle template case.
@@ -2237,6 +2238,9 @@ FragmentOrElement::SetInnerHTMLInternal(const nsAString& aInnerHTML, ErrorResult
contextNameSpaceID = shadowRoot->GetHost()->GetNameSpaceID();
}
+ auto sanitize = (aNeverSanitize ? nsContentUtils::NeverSanitize
+ : nsContentUtils::SanitizeSystemPrivileged);
+
if (doc->IsHTMLDocument()) {
int32_t oldChildCount = target->GetChildCount();
aError = nsContentUtils::ParseFragmentHTML(aInnerHTML,
@@ -2245,14 +2249,17 @@ FragmentOrElement::SetInnerHTMLInternal(const nsAString& aInnerHTML, ErrorResult
contextNameSpaceID,
doc->GetCompatibilityMode() ==
eCompatibility_NavQuirks,
- true);
+ true,
+ sanitize);
mb.NodesAdded();
// HTML5 parser has notified, but not fired mutation events.
nsContentUtils::FireMutationEventsForDirectParsing(doc, target,
oldChildCount);
} else {
RefPtr<DocumentFragment> df =
- nsContentUtils::CreateContextualFragment(target, aInnerHTML, true, aError);
+ nsContentUtils::CreateContextualFragment(target, aInnerHTML, true,
+ sanitize,
+ aError);
if (!aError.Failed()) {
// Suppress assertion about node removal mutation events that can't have
// listeners anyway, because no one has had the chance to register mutation
diff --git a/dom/base/FragmentOrElement.h b/dom/base/FragmentOrElement.h
index 3cb5575fe063..c6ed7ab85e41 100644
--- a/dom/base/FragmentOrElement.h
+++ b/dom/base/FragmentOrElement.h
@@ -357,7 +357,8 @@ public:
protected:
void GetMarkup(bool aIncludeSelf, nsAString& aMarkup);
- void SetInnerHTMLInternal(const nsAString& aInnerHTML, ErrorResult& aError);
+ void SetInnerHTMLInternal(const nsAString& aInnerHTML, ErrorResult& aError,
+ bool aNeverSanitize = false);
// Override from nsINode
virtual nsINode::nsSlots* CreateSlots() override;
diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp
index f93274280f7c..182a1686d5fe 100644
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -155,6 +155,7 @@
#include "nsIObserverService.h"
#include "nsIOfflineCacheUpdate.h"
#include "nsIParser.h"
+#include "nsIParserUtils.h"
#include "nsIParserService.h"
#include "nsIPermissionManager.h"
#include "nsIPluginHost.h"
@@ -195,6 +196,7 @@
#include "nsTextFragment.h"
#include "nsTextNode.h"
#include "nsThreadUtils.h"
+#include "nsTreeSanitizer.h"
#include "nsUnicharUtilCIID.h"
#include "nsUnicodeProperties.h"
#include "nsViewManager.h"
@@ -4576,6 +4578,7 @@ already_AddRefed<DocumentFragment>
nsContentUtils::CreateContextualFragment(nsINode* aContextNode,
const nsAString& aFragment,
bool aPreventScriptExecution,
+ SanitizeFragments aSanitize,
ErrorResult& aRv)
{
if (!aContextNode) {
@@ -4611,14 +4614,16 @@ nsContentUtils::CreateContextualFragment(nsINode* aContextNode,
contextAsContent->GetNameSpaceID(),
(document->GetCompatibilityMode() ==
eCompatibility_NavQuirks),
- aPreventScriptExecution);
+ aPreventScriptExecution,
+ aSanitize);
} else {
aRv = ParseFragmentHTML(aFragment, frag,
nsGkAtoms::body,
kNameSpaceID_XHTML,
(document->GetCompatibilityMode() ==
eCompatibility_NavQuirks),
- aPreventScriptExecution);
+ aPreventScriptExecution,
+ aSanitize);
}
return frag.forget();
@@ -4682,7 +4687,8 @@ nsContentUtils::CreateContextualFragment(nsINode* aContextNode,
nsCOMPtr<nsIDOMDocumentFragment> frag;
aRv = ParseFragmentXML(aFragment, document, tagStack,
- aPreventScriptExecution, getter_AddRefs(frag));
+ aPreventScriptExecution, getter_AddRefs(frag),
+ aSanitize);
return frag.forget().downcast<DocumentFragment>();
}
@@ -4709,7 +4715,8 @@ nsContentUtils::ParseFragmentHTML(const nsAString& aSourceBuffer,
nsIAtom* aContextLocalName,
int32_t aContextNamespace,
bool aQuirks,
- bool aPreventScriptExecution)
+ bool aPreventScriptExecution,
+ SanitizeFragments aSanitize)
{
AutoTimelineMarker m(aTargetNode->OwnerDoc()->GetDocShell(), "Parse HTML");
@@ -4723,13 +4730,39 @@ nsContentUtils::ParseFragmentHTML(const nsAString& aSourceBuffer,
NS_ADDREF(sHTMLFragmentParser = new nsHtml5StringParser());
// Now sHTMLFragmentParser owns the object
}
+
+ nsIContent* target = aTargetNode;
+
+ // If this is a chrome-privileged document, create a fragment first, and
+ // sanitize it before insertion.
+ RefPtr<DocumentFragment> fragment;
+ if (aSanitize != NeverSanitize && !aTargetNode->OwnerDoc()->AllowUnsafeHTML()) {
+ fragment = new DocumentFragment(aTargetNode->OwnerDoc()->NodeInfoManager());
+ target = fragment;
+ }
+
nsresult rv =
sHTMLFragmentParser->ParseFragment(aSourceBuffer,
- aTargetNode,
+ target,
aContextLocalName,
aContextNamespace,
aQuirks,
aPreventScriptExecution);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ if (fragment) {
+ // Don't fire mutation events for nodes removed by the sanitizer.
+ nsAutoScriptBlockerSuppressNodeRemoved scriptBlocker;
+
+ nsTreeSanitizer sanitizer(nsIParserUtils::SanitizerAllowStyle |
+ nsIParserUtils::SanitizerAllowComments);
+ sanitizer.Sanitize(fragment);
+
+ ErrorResult error;
+ aTargetNode->AppendChild(*fragment, error);
+ rv = error.StealNSResult();
+ }
+
return rv;
}
@@ -4764,7 +4797,8 @@ nsContentUtils::ParseFragmentXML(const nsAString& aSourceBuffer,
nsIDocument* aDocument,
nsTArray<nsString>& aTagStack,
bool aPreventScriptExecution,
- nsIDOMDocumentFragment** aReturn)
+ nsIDOMDocumentFragment** aReturn,
+ SanitizeFragments aSanitize)
{
AutoTimelineMarker m(aDocument->GetDocShell(), "Parse XML");
@@ -4803,6 +4837,20 @@ nsContentUtils::ParseFragmentXML(const nsAString& aSourceBuffer,
rv = sXMLFragmentSink->FinishFragmentParsing(aReturn);
sXMLFragmentParser->Reset();
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ // If this is a chrome-privileged document, sanitize the fragment before
+ // returning.
+ if (aSanitize != NeverSanitize && !aDocument->AllowUnsafeHTML()) {
+ // Don't fire mutation events for nodes removed by the sanitizer.
+ nsAutoScriptBlockerSuppressNodeRemoved scriptBlocker;
+
+ RefPtr<DocumentFragment> fragment = static_cast<DocumentFragment*>(*aReturn);
+
+ nsTreeSanitizer sanitizer(nsIParserUtils::SanitizerAllowStyle |
+ nsIParserUtils::SanitizerAllowComments);
+ sanitizer.Sanitize(fragment);
+ }
return rv;
}
diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h
index 08c5cbf02e25..f2de4a16be5d 100644
--- a/dom/base/nsContentUtils.h
+++ b/dom/base/nsContentUtils.h
@@ -1344,6 +1344,11 @@ public:
static bool IsValidNodeName(nsIAtom *aLocalName, nsIAtom *aPrefix,
int32_t aNamespaceID);
+ enum SanitizeFragments {
+ SanitizeSystemPrivileged,
+ NeverSanitize,
+ };
+
/**
* Creates a DocumentFragment from text using a context node to resolve
* namespaces.
@@ -1357,6 +1362,8 @@ public:
* @param aFragment the string which is parsed to a DocumentFragment
* @param aReturn the resulting fragment
* @param aPreventScriptExecution whether to mark scripts as already started
+ * @param aSanitize whether the fragment should be sanitized prior to
+ * injection
*/
static nsresult CreateContextualFragment(nsINode* aContextNode,
const nsAString& aFragment,
@@ -1365,7 +1372,16 @@ public:
static already_AddRefed<mozilla::dom::DocumentFragment>
CreateContextualFragment(nsINode* aContextNode, const nsAString& aFragment,
bool aPreventScriptExecution,
+ SanitizeFragments aSanitize,
mozilla::ErrorResult& aRv);
+ static already_AddRefed<mozilla::dom::DocumentFragment>
+ CreateContextualFragment(nsINode* aContextNode, const nsAString& aFragment,
+ bool aPreventScriptExecution,
+ mozilla::ErrorResult& aRv)
+ {
+ return CreateContextualFragment(aContextNode, aFragment, aPreventScriptExecution,
+ SanitizeSystemPrivileged, aRv);
+ }
/**
* Invoke the fragment parsing algorithm (innerHTML) using the HTML parser.
@@ -1378,6 +1394,8 @@ public:
* @param aPreventScriptExecution true to prevent scripts from executing;
* don't set to false when parsing into a target node that has been
* bound to tree.
+ * @param aSanitize whether the fragment should be sanitized prior to
+ * injection
* @return NS_ERROR_DOM_INVALID_STATE_ERR if a re-entrant attempt to parse
* fragments is made, NS_ERROR_OUT_OF_MEMORY if aSourceBuffer is too
* long and NS_OK otherwise.
@@ -1387,7 +1405,8 @@ public:
nsIAtom* aContextLocalName,
int32_t aContextNamespace,
bool aQuirks,
- bool aPreventScriptExecution);
+ bool aPreventScriptExecution,
+ SanitizeFragments aSanitize = SanitizeSystemPrivileged);
/**
* Invoke the fragment parsing algorithm (innerHTML) using the XML parser.
@@ -1397,6 +1416,8 @@ public:
* @param aTagStack the namespace mapping context
* @param aPreventExecution whether to mark scripts as already started
* @param aReturn the result fragment
+ * @param aSanitize whether the fragment should be sanitized prior to
+ * injection
* @return NS_ERROR_DOM_INVALID_STATE_ERR if a re-entrant attempt to parse
* fragments is made, a return code from the XML parser.
*/
@@ -1404,7 +1425,8 @@ public:
nsIDocument* aDocument,
nsTArray<nsString>& aTagStack,
bool aPreventScriptExecution,
- nsIDOMDocumentFragment** aReturn);
+ nsIDOMDocumentFragment** aReturn,
+ SanitizeFragments aSanitize = SanitizeSystemPrivileged);
/**
* Parse a string into a document using the HTML parser.
diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp
index 25e5d28d6c76..ba35493ad886 100644
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -1315,7 +1315,8 @@ nsIDocument::nsIDocument()
mFrameRequestCallbacksScheduled(false),
mBidiOptions(IBMBIDI_DEFAULT_BIDI_OPTIONS),
mPartID(0),
- mUserHasInteracted(false)
+ mUserHasInteracted(false),
+ mAllowUnsafeHTML(false)
{
SetIsInDocument();
@@ -2659,7 +2660,7 @@ nsDocument::InitCSP(nsIChannel* aChannel)
(cspSandboxFlags & SANDBOXED_ORIGIN) && !(mSandboxFlags & SANDBOXED_ORIGIN);
mSandboxFlags |= cspSandboxFlags;
-
+
if (needNewNullPrincipal) {
principal = nsNullPrincipal::CreateWithInheritedAttributes(principal);
principal->SetCsp(csp);
@@ -5734,6 +5735,13 @@ nsDocument::CustomElementConstructor(JSContext* aCx, unsigned aArgc, JS::Value*
}
bool
+nsIDocument::AllowUnsafeHTML() const
+{
+ return (!nsContentUtils::IsSystemPrincipal(NodePrincipal()) ||
+ mAllowUnsafeHTML);
+}
+
+bool
nsDocument::IsWebComponentsEnabled(JSContext* aCx, JSObject* aObject)
{
JS::Rooted<JSObject*> obj(aCx, aObject);
diff --git a/dom/base/nsIDocument.h b/dom/base/nsIDocument.h
index 5715fd233477..3ff69a6e8e1d 100644
--- a/dom/base/nsIDocument.h
+++ b/dom/base/nsIDocument.h
@@ -2660,6 +2660,8 @@ public:
CreateAttributeNS(const nsAString& aNamespaceURI,
const nsAString& aQualifiedName,
mozilla::ErrorResult& rv);
+ void SetAllowUnsafeHTML(bool aAllow) { mAllowUnsafeHTML = aAllow; }
+ bool AllowUnsafeHTML() const;
void GetInputEncoding(nsAString& aInputEncoding) const;
already_AddRefed<mozilla::dom::Location> GetLocation() const;
void GetReferrer(nsAString& aReferrer) const;
@@ -3206,6 +3208,10 @@ protected:
// UpdateFrameRequestCallbackSchedulingState.
bool mFrameRequestCallbacksScheduled : 1;
+ // True if unsafe HTML fragments should be allowed in chrome-privileged
+ // documents.
+ bool mAllowUnsafeHTML : 1;
+
enum Type {
eUnknown, // should never be used
eHTML,
diff --git a/dom/base/test/chrome.ini b/dom/base/test/chrome.ini
index f7e67ef6b9cb..8d4a9cd09a9c 100644
--- a/dom/base/test/chrome.ini
+++ b/dom/base/test/chrome.ini
@@ -16,6 +16,7 @@ support-files =
[test_copypaste.xul]
subsuite = clipboard
[test_domrequesthelper.xul]
+[test_fragment_sanitization.xul]
[test_messagemanager_principal.html]
[test_messagemanager_send_principal.html]
skip-if = buildapp == 'mulet'
diff --git a/dom/base/test/chrome/test_bug683852.xul b/dom/base/test/chrome/test_bug683852.xul
index cebc8f3583bc..e7e106f7a483 100644
--- a/dom/base/test/chrome/test_bug683852.xul
+++ b/dom/base/test/chrome/test_bug683852.xul
@@ -20,6 +20,8 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=683852
/** Test for Bug 683852 **/
SimpleTest.waitForExplicitFinish();
+ const NS_HTML = "http://www.w3.org/1999/xhtml";
+
function startTest() {
is(document.contains(document), true, "Document should contain itself!");
@@ -48,7 +50,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=683852
document.documentElement.appendChild(pi);
document.contains(pi, true, "Document should contain processing instruction");
- var df = document.createRange().createContextualFragment("<div>foo</div>");
+ var df = document.createRange().createContextualFragment(`<div xmlns="${NS_HTML}">foo</div>`);
is(df.contains(df.firstChild), true, "Document fragment should contain its child");
is(df.contains(df.firstChild.firstChild), true,
"Document fragment should contain its descendant");
diff --git a/dom/base/test/test_fragment_sanitization.xul b/dom/base/test/test_fragment_sanitization.xul
new file mode 100644
index 000000000000..0c91b210125c
--- /dev/null
+++ b/dom/base/test/test_fragment_sanitization.xul
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
+<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1432966
+-->
+<window title="Mozilla Bug 1432966"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
+ <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SpawnTask.js"/>
+
+ <script type="application/javascript"><![CDATA[
+
+var { classes: Cc, interfaces: Ci } = Components;
+
+const NS_HTML = "http://www.w3.org/1999/xhtml";
+
+function awaitLoad(frame) {
+ return new Promise(resolve => {
+ frame.addEventListener("load", resolve, {once: true});
+ });
+}
+
+async function testFrame(frame, html, expected = html) {
+ document.querySelector("body").appendChild(frame);
+ await awaitLoad(frame);
+
+ // Remove the xmlns attributes that will be automatically added when we're
+ // in an XML document, and break the comparison.
+ function unNS(text) {
+ return text.replace(RegExp(` xmlns="${NS_HTML}"`, "g"), "");
+ }
+
+ let doc = frame.contentDocument;
+ let body = doc.body || doc.documentElement;
+
+ let div = doc.createElementNS(NS_HTML, "div");
+ body.appendChild(div);
+
+ div.innerHTML = html;
+ is(unNS(div.innerHTML), expected, "innerHTML value");
+
+ div.innerHTML = "<div></div>";
+ div.firstChild.outerHTML = html;
+ is(unNS(div.innerHTML), expected, "outerHTML value");
+
+ div.textContent = "";
+ div.insertAdjacentHTML("beforeend", html);
+ is(unNS(div.innerHTML), expected, "insertAdjacentHTML('beforeend') value");
+
+ div.innerHTML = "<a>foo</a>";
+ div.firstChild.insertAdjacentHTML("afterend", html);
+ is(unNS(div.innerHTML), "<a>foo</a>" + expected, "insertAdjacentHTML('afterend') value");
+
+ frame.remove();
+}
+
+add_task(async function test_fragment_sanitization() {
+ const XUL_URL = "chrome://global/content/win.xul";
+ const HTML_URL = "chrome://mochitests/content/chrome/dom/base/test/file_empty.html";
+
+ const HTML = '<a onclick="foo()" href="javascript:foo"><script>bar()<\/script>Meh.</a><a href="http://foo/"></a>';
+ const SANITIZED = '<a>Meh.</a><a href="http://foo/"></a>';
+
+ info("Test content HTML document");
+ {
+ let frame = document.createElementNS(NS_HTML, "iframe");
+ frame.src = "http://example.com/";
+
+ await testFrame(frame, HTML);
+ }
+
+ info("Test chrome HTML document");
+ {
+ let frame = document.createElementNS(NS_HTML, "iframe");
+ frame.src = HTML_URL;
+
+ await testFrame(frame, HTML, SANITIZED);
+ }
+
+ info("Test chrome XUL document");
+ {
+ let frame = document.createElementNS(NS_HTML, "iframe");
+ frame.src = XUL_URL;
+
+ await testFrame(frame, HTML, SANITIZED);
+ }
+});
+
+ ]]></script>
+
+ <description style="-moz-user-focus: normal; -moz-user-select: text;"><![CDATA[
+ hello
+ world
+ ]]></description>
+
+ <body xmlns="http://www.w3.org/1999/xhtml">
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1432966"
+ target="_blank">Mozilla Bug 1432966</a>
+ </body>
+</window>
diff --git a/dom/webidl/Document.webidl b/dom/webidl/Document.webidl
index c895fad39275..ed071cbbd375 100644
--- a/dom/webidl/Document.webidl
+++ b/dom/webidl/Document.webidl
@@ -95,6 +95,11 @@ interface Document : Node {
Attr createAttribute(DOMString name);
[NewObject, Throws]
Attr createAttributeNS(DOMString? namespace, DOMString name);
+
+ // Allows setting innerHTML without automatic sanitization.
+ // Do not use this.
+ [ChromeOnly]
+ attribute boolean allowUnsafeHTML;
};
// http://www.whatwg.org/specs/web-apps/current-work/#the-document-object
diff --git a/dom/webidl/Element.webidl b/dom/webidl/Element.webidl
index ca5f1b35cd78..a66327ff96cd 100644
--- a/dom/webidl/Element.webidl
+++ b/dom/webidl/Element.webidl
@@ -216,6 +216,16 @@ partial interface Element {
attribute DOMString outerHTML;
[Throws]
void insertAdjacentHTML(DOMString position, DOMString text);
+
+ /**
+ * Like the innerHTML setter, but does not sanitize its values, even in
+ * chrome-privileged documents.
+ *
+ * If you're thinking about using this, don't. You have many, much better
+ * options.
+ */
+ [ChromeOnly, Throws]
+ void unsafeSetInnerHTML(DOMString html);
};
// http://www.w3.org/TR/selectors-api/#interface-definitions
diff --git a/layout/style/test/chrome/bug418986-2.js b/layout/style/test/chrome/bug418986-2.js
index 4336f4abdb2c..2fcad6d70e0b 100644
--- a/layout/style/test/chrome/bug418986-2.js
+++ b/layout/style/test/chrome/bug418986-2.js
@@ -222,13 +222,23 @@ var green = (function () {
return getComputedStyle(temp).backgroundColor;
})();
+// Injected HTML will automatically be sanitized when we're in a chrome
+// document unless we use `unsafeSetInnerHTML`. That function doesn't
+// exist in non-chrome documents, so add a stub to allow the same code
+// to run in both.
+if (!Element.prototype.unsafeSetInnerHTML) {
+ Element.prototype.unsafeSetInnerHTML = html => {
+ this.innerHTML = html;
+ };
+}
+
// __testCSS(resisting)__.
// Creates a series of divs and CSS using media queries to set their
// background color. If all media queries match as expected, then
// all divs should have a green background color.
var testCSS = function (resisting) {
- document.getElementById("display").innerHTML = generateHtmlLines(resisting);
- document.getElementById("test-css").innerHTML = generateCSSLines(resisting);
+ document.getElementById("display").unsafeSetInnerHTML(generateHtmlLines(resisting));
+ document.getElementById("test-css").unsafeSetInnerHTML(generateCSSLines(resisting));
let cssTestDivs = document.querySelectorAll(".spoof,.suppress");
for (let div of cssTestDivs) {
let color = window.getComputedStyle(div).backgroundColor;
@@ -272,7 +282,7 @@ var testMediaQueriesInPictureElements = function* (resisting) {
lines += "</picture><br/>\n";
}
}
- document.getElementById("pictures").innerHTML = lines;
+ document.getElementById("pictures").unsafeSetInnerHTML(lines);
var testImages = document.getElementsByClassName("testImage");
yield sleep(0);
for (let testImage of testImages) {
diff --git a/mobile/android/chrome/content/config.js b/mobile/android/chrome/content/config.js
index 2c868f175ee8..83f93a51c86a 100644
--- a/mobile/android/chrome/content/config.js
+++ b/mobile/android/chrome/content/config.js
@@ -599,7 +599,7 @@ Pref.prototype = {
this.li.setAttribute("contextmenu", "prefs-context-menu");
// Create list item outline, bind to object actions
- this.li.innerHTML =
+ this.li.unsafeSetInnerHTML(
"<div class='pref-name' " +
"onclick='AboutConfig.selectOrToggleBoolPref(event);'>" +
this.name +
@@ -623,7 +623,7 @@ Pref.prototype = {
"<div class='pref-button down' " +
"onclick='AboutConfig.incrOrDecrIntPref(event, -1);'>" +
"</div>" +
- "</div>";
+ "</div>");
// Delay providing the list item values, until the LI is returned and added to the document
setTimeout(this._valueSetup.bind(this), INNERHTML_VALUE_DELAY);
diff --git a/toolkit/content/tests/chrome/test_bug570192.xul b/toolkit/content/tests/chrome/test_bug570192.xul
index 09f73e932b5d..91c55805c9da 100644
--- a/toolkit/content/tests/chrome/test_bug570192.xul
+++ b/toolkit/content/tests/chrome/test_bug570192.xul
@@ -36,8 +36,8 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=570192
addLoadEvent(function() {
try {
var content = document.getElementById("content");
- content.innerHTML = '<textbox newlines="pasteintact" ' +
- 'xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"/>';
+ content.unsafeSetInnerHTML('<textbox newlines="pasteintact" ' +
+ 'xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"/>');
var textbox = content.firstChild;
ok(textbox, "created the textbox");
ok(!textbox.editor, "do we have an editor?");
diff --git a/toolkit/mozapps/extensions/content/extensions.js b/toolkit/mozapps/extensions/content/extensions.js
index 1e5f33b0a251..771008ed3bf8 100644
--- a/toolkit/mozapps/extensions/content/extensions.js
+++ b/toolkit/mozapps/extensions/content/extensions.js
@@ -3078,7 +3078,7 @@ var gDetailView = {
// plugins without having bug 624602 fixed yet, and intentionally ignores
// localisation.
if (aAddon.isGMPlugin) {
- fullDesc.innerHTML = aAddon.fullDescription;
+ fullDesc.unsafeSetInnerHTML(aAddon.fullDescription);
} else {
fullDesc.textContent = aAddon.fullDescription;
}
1
0

[tor-browser/tor-browser-52.8.0esr-7.5-1] Bug 25458: UI customization half-broken in Tor Browser 8.0a3
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit dfc72b77f566b3dd98f08db0e4a8e7bedcf050a1
Author: Richard Pospesel <richard(a)torproject.org>
Date: Fri Apr 20 16:03:41 2018 -0700
Bug 25458: UI customization half-broken in Tor Browser 8.0a3
Fixed fallout from #25147. Some of the functionality of the UI
Customize screen is dependent on setting innerHTML on divs. Since the
code runs in the System context, the HTML was being sanitized and broke
page functionality. The offending statements have been switched to the
unsafeSetInnerHTML() method which bypasses sanitization in System
context.
---
browser/components/customizableui/CustomizeMode.jsm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/browser/components/customizableui/CustomizeMode.jsm b/browser/components/customizableui/CustomizeMode.jsm
index 49868cdbd4a0..4c32fd867c09 100644
--- a/browser/components/customizableui/CustomizeMode.jsm
+++ b/browser/components/customizableui/CustomizeMode.jsm
@@ -690,13 +690,13 @@ CustomizeMode.prototype = {
// Put the tip contents in the popup.
let bundle = this.document.getElementById("bundle_browser");
const kLabelClass = "customization-tipPanel-link";
- messageNode.innerHTML = bundle.getFormattedString("customizeTips.tip0", [
+ messageNode.unsafeSetInnerHTML(bundle.getFormattedString("customizeTips.tip0", [
"<label class=\"customization-tipPanel-em\" value=\"" +
bundle.getString("customizeTips.tip0.hint") + "\"/>",
this.document.getElementById("bundle_brand").getString("brandShortName"),
"<label class=\"" + kLabelClass + " text-link\" value=\"" +
bundle.getString("customizeTips.tip0.learnMore") + "\"/>"
- ]);
+ ]));
messageNode.querySelector("." + kLabelClass).addEventListener("click", () => {
let url = Services.urlFormatter.formatURLPref("browser.customizemode.tip0.learnMoreUrl");
1
0

[tor-browser/tor-browser-60.0.1esr-8.0-1] fixup! TB4: Tor Browser's Firefox preference overrides.
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit 89614962f2ac1fa333b16c708a890167e9ec1b4e
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Jun 20 09:13:28 2018 +0000
fixup! TB4: Tor Browser's Firefox preference overrides.
Fixes our bug 26424 (disabling UNC paths) and activates Mozilla's fix
for https://bugzilla.mozilla.org/show_bug.cgi?id=1413868.
---
browser/app/profile/000-tor-browser.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 4289b7bcc5f9..cd901374ed9f 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -250,6 +250,8 @@ pref("devtools.appmanager.enabled", false);
pref("devtools.debugger.chrome-debugging-host", "127.0.0.1");
// Disable mozTCPSocket for sure (bug 18863)
pref("dom.mozTCPSocket.enabled", false);
+// Disable using UNC paths (bug 26424 and Mozilla's bug 1413868)
+pref("network.file.disable_unc_paths", true);
// Security slider
pref("svg.in-content.enabled", true);
1
0

[tor-browser/tor-browser-52.8.0esr-7.5-1] Bug 1448771 - Merge fix from upstream. r=ryanvm, a=RyanVM
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit 12148cf644e5820182306788a3d3309baf8c2720
Author: Jonathan Kew <jkew(a)mozilla.com>
Date: Mon Mar 26 20:35:48 2018 +0100
Bug 1448771 - Merge fix from upstream. r=ryanvm, a=RyanVM
--HG--
extra : source : f5db47b5c6416a3cef546de1aa9089d98109f95f
---
intl/hyphenation/hyphen/hyphen.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/intl/hyphenation/hyphen/hyphen.c b/intl/hyphenation/hyphen/hyphen.c
index 9a132d0262f2..9f2b7112c848 100644
--- a/intl/hyphenation/hyphen/hyphen.c
+++ b/intl/hyphenation/hyphen/hyphen.c
@@ -438,11 +438,25 @@ for (k = 0; k < 2; k++) {
}
if (k == 0 || nextlevel) {
- while (fgets (buf, sizeof(buf), f) != NULL) {
+ while (fgets(buf, sizeof(buf), f) != NULL) {
+
+ /* discard lines that don't fit in buffer */
+ if (!feof(f) && strchr(buf, '\n') == NULL) {
+ int c;
+ while ((c = fgetc(f)) != '\n' && c != EOF);
+ /* issue warning if not a comment */
+ if (buf[0] != '%') {
+ fprintf(stderr, "Warning: skipping too long pattern (more than %lu chars)\n", sizeof(buf));
+ }
+ continue;
+ }
+
if (strncmp(buf, "NEXTLEVEL", 9) == 0) {
- nextlevel = 1;
- break;
- } else if (buf[0] != '%') hnj_hyphen_load_line(buf, dict[k], hashtab);
+ nextlevel = 1;
+ break;
+ } else if (buf[0] != '%') {
+ hnj_hyphen_load_line(buf, dict[k], hashtab);
+ }
}
} else if (k == 1) {
/* default first level: hyphen and ASCII apostrophe */
1
0

[tor-browser/tor-browser-52.8.0esr-7.5-1] Bug 1448771 - Update hnjstdio to handle additional functions from stdio.h that libhyphen wants to use. r=glandium, a=RyanVM
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit 20a839344bbb11759a15d38d283a9ff8862da30b
Author: Jonathan Kew <jkew(a)mozilla.com>
Date: Wed Mar 28 10:17:51 2018 +0100
Bug 1448771 - Update hnjstdio to handle additional functions from stdio.h that libhyphen wants to use. r=glandium, a=RyanVM
--HG--
extra : source : 846bcaa210aa2264bec412c0595113964fafc972
---
intl/hyphenation/glue/hnjalloc.h | 6 +++++
intl/hyphenation/glue/hnjstdio.cpp | 50 ++++++++++++++++++++++++++------------
2 files changed, 41 insertions(+), 15 deletions(-)
diff --git a/intl/hyphenation/glue/hnjalloc.h b/intl/hyphenation/glue/hnjalloc.h
index fec3a4bc9009..5cee1be1b6d7 100644
--- a/intl/hyphenation/glue/hnjalloc.h
+++ b/intl/hyphenation/glue/hnjalloc.h
@@ -31,6 +31,8 @@
#define fopen(path,mode) hnjFopen(path,mode)
#define fclose(file) hnjFclose(file)
#define fgets(buf,count,file) hnjFgets(buf,count,file)
+#define feof(file) hnjFeof(file)
+#define fgetc(file) hnjFgetc(file)
typedef struct hnjFile_ hnjFile;
@@ -44,6 +46,10 @@ int hnjFclose(hnjFile* f);
char* hnjFgets(char* s, int n, hnjFile* f);
+int hnjFeof(hnjFile* f);
+
+int hnjFgetc(hnjFile* f);
+
#ifdef __cplusplus
}
#endif
diff --git a/intl/hyphenation/glue/hnjstdio.cpp b/intl/hyphenation/glue/hnjstdio.cpp
index 660ebaf13291..8d50ae17f57b 100644
--- a/intl/hyphenation/glue/hnjstdio.cpp
+++ b/intl/hyphenation/glue/hnjstdio.cpp
@@ -22,6 +22,7 @@ struct hnjFile_ {
char mBuffer[BUFSIZE];
uint32_t mCurPos;
uint32_t mLimit;
+ bool mEOF;
};
// replacement for fopen()
@@ -58,6 +59,7 @@ hnjFopen(const char* aURISpec, const char* aMode)
f->mStream = instream;
f->mCurPos = 0;
f->mLimit = 0;
+ f->mEOF = false;
return f;
}
@@ -79,6 +81,27 @@ hnjFclose(hnjFile* f)
return result;
}
+// replacement for fgetc()
+int
+hnjFgetc(hnjFile* f)
+{
+ if (f->mCurPos >= f->mLimit) {
+ f->mCurPos = 0;
+
+ nsresult rv = f->mStream->Read(f->mBuffer, BUFSIZE, &f->mLimit);
+ if (NS_FAILED(rv)) {
+ f->mLimit = 0;
+ }
+
+ if (f->mLimit == 0) {
+ f->mEOF = true;
+ return EOF;
+ }
+ }
+
+ return f->mBuffer[f->mCurPos++];
+}
+
// replacement for fgets()
// (not a full reimplementation, but sufficient for libhyphen's needs)
char*
@@ -88,24 +111,15 @@ hnjFgets(char* s, int n, hnjFile* f)
int i = 0;
while (i < n - 1) {
- if (f->mCurPos < f->mLimit) {
- char c = f->mBuffer[f->mCurPos++];
- s[i++] = c;
- if (c == '\n' || c == '\r') {
- break;
- }
- continue;
- }
-
- f->mCurPos = 0;
+ int c = hnjFgetc(f);
- nsresult rv = f->mStream->Read(f->mBuffer, BUFSIZE, &f->mLimit);
- if (NS_FAILED(rv)) {
- f->mLimit = 0;
- return nullptr;
+ if (c == EOF) {
+ break;
}
- if (f->mLimit == 0) {
+ s[i++] = c;
+
+ if (c == '\n' || c == '\r') {
break;
}
}
@@ -117,3 +131,9 @@ hnjFgets(char* s, int n, hnjFile* f)
s[i] = '\0'; // null-terminate the returned string
return s;
}
+
+int
+hnjFeof(hnjFile* f)
+{
+ return f->mEOF ? EOF : 0;
+}
1
0

[tor-browser/tor-browser-52.8.0esr-7.5-1] Bug 21537: Mark .onion cookies as secure
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit 1f33ee1778b0ad0f696977fbcbae67f72d34b99f
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Apr 13 16:59:24 2018 +0000
Bug 21537: Mark .onion cookies as secure
---
netwerk/cookie/nsCookieService.cpp | 60 ++++++++++++++++++++------------------
1 file changed, 32 insertions(+), 28 deletions(-)
diff --git a/netwerk/cookie/nsCookieService.cpp b/netwerk/cookie/nsCookieService.cpp
index cf1d91e2df36..f9390d7ef093 100644
--- a/netwerk/cookie/nsCookieService.cpp
+++ b/netwerk/cookie/nsCookieService.cpp
@@ -3112,6 +3112,26 @@ PathMatches(nsCookie* aCookie, const nsACString& aPath) {
return true;
}
+static bool
+IsSecureHost(nsIURI *aHostURI) {
+ bool isSecure = true;
+ // If SchemeIs fails, assume an insecure connection, to be on the safe side.
+ if (aHostURI && NS_FAILED(aHostURI->SchemeIs("https", &isSecure))) {
+ isSecure = false;
+ }
+ // In case HTTPS is not used check whether we have a .onion host in which
+ // case the cookie is secure, too.
+ if (aHostURI && !isSecure) {
+ nsresult rv;
+ nsAutoCString hostFromURI;
+ rv = aHostURI->GetAsciiHost(hostFromURI);
+ if (NS_SUCCEEDED(rv)) {
+ isSecure = StringEndsWith(hostFromURI, NS_LITERAL_CSTRING(".onion"));
+ }
+ }
+ return isSecure;
+}
+
void
nsCookieService::GetCookieStringInternal(nsIURI *aHostURI,
bool aIsForeign,
@@ -3164,13 +3184,10 @@ nsCookieService::GetCookieStringInternal(nsIURI *aHostURI,
// If it changes, please update that function, or file a bug for someone
// else to do so.
- // check if aHostURI is using an https secure protocol.
- // if it isn't, then we can't send a secure cookie over the connection.
- // if SchemeIs fails, assume an insecure connection, to be on the safe side
- bool isSecure;
- if (NS_FAILED(aHostURI->SchemeIs("https", &isSecure))) {
- isSecure = false;
- }
+ // Check if aHostURI is using the HTTPS protocol or if the domain is a
+ // .onion. If it isn't, then we can't send a secure cookie over the
+ // connection.
+ bool isSecure = IsSecureHost(aHostURI);
nsCookie *cookie;
AutoTArray<nsCookie*, 8> foundCookieList;
@@ -3316,20 +3333,10 @@ nsCookieService::SetCookieInternal(nsIURI *aHostURI,
// so we can handle them separately.
bool newCookie = ParseAttributes(aCookieHeader, cookieAttributes);
- // Collect telemetry on how often secure cookies are set from non-secure
- // origins, and vice-versa.
- //
- // 0 = nonsecure and "http:"
- // 1 = nonsecure and "https:"
- // 2 = secure and "http:"
- // 3 = secure and "https:"
- bool isHTTPS;
- nsresult rv = aHostURI->SchemeIs("https", &isHTTPS);
- if (NS_SUCCEEDED(rv)) {
- Telemetry::Accumulate(Telemetry::COOKIE_SCHEME_SECURITY,
- ((cookieAttributes.isSecure)? 0x02 : 0x00) |
- ((isHTTPS)? 0x01 : 0x00));
- }
+ // Check if aHostURI is using the HTTPS protocol or if the domain is a
+ // .onion. If it isn't, then we can't send a secure cookie over the
+ // connection.
+ bool isSecure = IsSecureHost(aHostURI);
int64_t currentTimeInUsec = PR_Now();
@@ -3369,7 +3376,7 @@ nsCookieService::SetCookieInternal(nsIURI *aHostURI,
return newCookie;
}
// magic prefix checks. MUST be run after CheckDomain() and CheckPath()
- if (!CheckPrefixes(cookieAttributes, isHTTPS)) {
+ if (!CheckPrefixes(cookieAttributes, isSecure)) {
COOKIE_LOGFAILURE(SET_COOKIE, aHostURI, savedCookieHeader, "failed the prefix tests");
return newCookie;
}
@@ -3457,13 +3464,10 @@ nsCookieService::AddInternal(const nsCookieKey &aKey,
return;
}
- bool isSecure = true;
- if (aHostURI && NS_FAILED(aHostURI->SchemeIs("https", &isSecure))) {
- isSecure = false;
- }
+ bool isSecure = IsSecureHost(aHostURI);
- // If the new cookie is non-https and wants to set secure flag,
- // browser have to ignore this new cookie.
+ // If the new cookie is non-https or not set by a .onion domain, and wants to
+ // set secure flag, browser have to ignore this new cookie.
// (draft-ietf-httpbis-cookie-alone section 3.1)
if (mLeaveSecureAlone && aCookie->IsSecure() && !isSecure) {
COOKIE_LOGFAILURE(SET_COOKIE, aHostURI, aCookieHeader,
1
0

[tor-browser/tor-browser-52.8.0esr-7.5-1] Bug 1334776 - ResponseHeader Visitor will get original header casing. We need to fix it at some places in devtools.
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit 1a800384e6ee8c909a1147737cdebad189f6ca3d
Author: Dragana Damjanovic <dd.mozilla(a)gmail.com>
Date: Thu Apr 27 16:48:43 2017 +0200
Bug 1334776 - ResponseHeader Visitor will get original header casing. We need to fix it at some places in devtools.
Backported to TBB/ESR52 by Arthur Edelstein <arthuredelstein(a)gmail.com>
Fixes bug 25938.
---
devtools/client/netmonitor/filter-predicates.js | 4 ++--
.../client/netmonitor/test/browser_net_copy_headers.js | 16 ++++++++--------
devtools/client/netmonitor/test/browser_net_filter-01.js | 4 ++--
.../netmonitor/test/browser_net_timing-division.js | 4 ++--
devtools/client/shared/AppCacheUtils.jsm | 8 ++++----
devtools/client/shared/curl.js | 8 ++++----
.../webconsole/net/test/mochitest/browser_net_headers.js | 4 ++--
...er_webconsole_bug_630733_response_redirect_headers.js | 2 +-
devtools/shared/webconsole/test/test_network_get.html | 8 ++++----
.../shared/webconsole/test/test_network_longstring.html | 4 ++--
devtools/shared/webconsole/test/test_network_post.html | 8 ++++----
11 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/devtools/client/netmonitor/filter-predicates.js b/devtools/client/netmonitor/filter-predicates.js
index 9c8e49c622b2..75ee422aad60 100644
--- a/devtools/client/netmonitor/filter-predicates.js
+++ b/devtools/client/netmonitor/filter-predicates.js
@@ -72,7 +72,7 @@ function isWS({ requestHeaders, responseHeaders }) {
// Find the 'upgrade' header.
let upgradeHeader = requestHeaders.headers.find(header => {
- return (header.name == "Upgrade");
+ return (header.name.toLowerCase() == "upgrade");
});
// If no header found on request, check response - mainly to get
@@ -81,7 +81,7 @@ function isWS({ requestHeaders, responseHeaders }) {
if (!upgradeHeader && responseHeaders &&
Array.isArray(responseHeaders.headers)) {
upgradeHeader = responseHeaders.headers.find(header => {
- return (header.name == "Upgrade");
+ return (header.name.toLowerCase() == "upgrade");
});
}
diff --git a/devtools/client/netmonitor/test/browser_net_copy_headers.js b/devtools/client/netmonitor/test/browser_net_copy_headers.js
index 36ce2fb34789..bb582c8e1359 100644
--- a/devtools/client/netmonitor/test/browser_net_copy_headers.js
+++ b/devtools/client/netmonitor/test/browser_net_copy_headers.js
@@ -49,12 +49,12 @@ add_task(function* () {
const EXPECTED_RESPONSE_HEADERS = [
`${httpVersion} ${status} ${statusText}`,
- "Last-Modified: Sun, 3 May 2015 11:11:11 GMT",
- "Content-Type: text/html",
- "Content-Length: 465",
- "Connection: close",
- "Server: httpd.js",
- "Date: Sun, 3 May 2015 11:11:11 GMT"
+ "last-modified: Sun, 3 May 2015 11:11:11 GMT",
+ "content-type: text/html",
+ "content-length: 465",
+ "connection: close",
+ "server: httpd.js",
+ "date: Sun, 3 May 2015 11:11:11 GMT"
].join("\n");
yield waitForClipboardPromise(function setup() {
@@ -62,8 +62,8 @@ add_task(function* () {
}, function validate(result) {
// Fake the "Last-Modified" and "Date" headers because they will vary:
result = String(result)
- .replace(/Last-Modified: [^\n]+ GMT/, "Last-Modified: Sun, 3 May 2015 11:11:11 GMT")
- .replace(/Date: [^\n]+ GMT/, "Date: Sun, 3 May 2015 11:11:11 GMT");
+ .replace(/last-modified: [^\n]+ GMT/, "last-modified: Sun, 3 May 2015 11:11:11 GMT")
+ .replace(/date: [^\n]+ GMT/, "date: Sun, 3 May 2015 11:11:11 GMT");
return result === EXPECTED_RESPONSE_HEADERS;
});
info("Clipboard contains the currently selected item's response headers.");
diff --git a/devtools/client/netmonitor/test/browser_net_filter-01.js b/devtools/client/netmonitor/test/browser_net_filter-01.js
index b0d76c6293e0..7b3a8c457dd3 100644
--- a/devtools/client/netmonitor/test/browser_net_filter-01.js
+++ b/devtools/client/netmonitor/test/browser_net_filter-01.js
@@ -181,9 +181,9 @@ add_task(function* () {
"The details pane should still be visible after filtering.");
is(RequestsMenu.items.length, visibility.length,
- "There should be a specific amount of items in the requests menu.");
+ "There should be a specific amount of items in the requests menu.");
is(RequestsMenu.visibleItems.length, visibility.filter(e => e).length,
- "There should be a specific amount of visbile items in the requests menu.");
+ "There should be a specific amount of visbile items in the requests menu.");
for (let i = 0; i < visibility.length; i++) {
is(RequestsMenu.getItemAtIndex(i).target.hidden, !visibility[i],
diff --git a/devtools/client/netmonitor/test/browser_net_timing-division.js b/devtools/client/netmonitor/test/browser_net_timing-division.js
index 0114ba235500..ff2379dc28c4 100644
--- a/devtools/client/netmonitor/test/browser_net_timing-division.js
+++ b/devtools/client/netmonitor/test/browser_net_timing-division.js
@@ -48,9 +48,9 @@ add_task(function* () {
let lastRequest = RequestsMenu.getItemAtIndex(1);
info("First request happened at: " +
- firstRequest.attachment.responseHeaders.headers.find(e => e.name == "Date").value);
+ firstRequest.attachment.responseHeaders.headers.find(e => e.name == "date").value);
info("Last request happened at: " +
- lastRequest.attachment.responseHeaders.headers.find(e => e.name == "Date").value);
+ lastRequest.attachment.responseHeaders.headers.find(e => e.name == "date").value);
ok(secDivs.length,
"There should be at least one division on the seconds time scale.");
diff --git a/devtools/client/shared/AppCacheUtils.jsm b/devtools/client/shared/AppCacheUtils.jsm
index a2beca993c32..7c8007d9ffe2 100644
--- a/devtools/client/shared/AppCacheUtils.jsm
+++ b/devtools/client/shared/AppCacheUtils.jsm
@@ -86,7 +86,7 @@ AppCacheUtils.prototype = {
_parseManifest: function ACU__parseManifest(uriInfo) {
let deferred = defer();
let manifestName = uriInfo.name;
- let manifestLastModified = new Date(uriInfo.responseHeaders["Last-Modified"]);
+ let manifestLastModified = new Date(uriInfo.responseHeaders["last-modified"]);
if (uriInfo.charset.toLowerCase() != "utf-8") {
this._addError(0, "notUTF8", uriInfo.charset);
@@ -158,7 +158,7 @@ AppCacheUtils.prototype = {
// Check that the resource was not modified after the manifest was last
// modified. If it was then the manifest file should be refreshed.
let resourceLastModified =
- new Date(uriInfo.responseHeaders["Last-Modified"]);
+ new Date(uriInfo.responseHeaders["last-modified"]);
if (manifestLastModified < resourceLastModified) {
this._addError(parsedUri.line, "fileChangedButNotManifest",
@@ -230,12 +230,12 @@ AppCacheUtils.prototype = {
result.requestHeaders = {};
request.visitRequestHeaders(function (header, value) {
- result.requestHeaders[header] = value;
+ result.requestHeaders[header.toLowerCase()] = value;
});
result.responseHeaders = {};
request.visitResponseHeaders(function (header, value) {
- result.responseHeaders[header] = value;
+ result.responseHeaders[header.toLowerCase()] = value;
});
deferred.resolve(result);
diff --git a/devtools/client/shared/curl.js b/devtools/client/shared/curl.js
index 978cbad9c845..ae954fe9f412 100644
--- a/devtools/client/shared/curl.js
+++ b/devtools/client/shared/curl.js
@@ -80,14 +80,14 @@ const Curl = {
postDataText = data.postDataText;
postData.push("--data");
postData.push(escapeString(utils.writePostDataTextParams(postDataText)));
- ignoredHeaders.add("Content-Length");
+ ignoredHeaders.add("content-length");
} else if (multipartRequest) {
postDataText = data.postDataText;
postData.push("--data-binary");
let boundary = utils.getMultipartBoundary(data);
let text = utils.removeBinaryDataFromMultipartText(postDataText, boundary);
postData.push(escapeString(text));
- ignoredHeaders.add("Content-Length");
+ ignoredHeaders.add("content-length");
}
// Add method.
@@ -118,11 +118,11 @@ const Curl = {
}
for (let i = 0; i < headers.length; i++) {
let header = headers[i];
- if (header.name === "Accept-Encoding") {
+ if (header.name.toLowerCase() === "accept-encoding") {
command.push("--compressed");
continue;
}
- if (ignoredHeaders.has(header.name)) {
+ if (ignoredHeaders.has(header.name.toLowerCase())) {
continue;
}
command.push("-H");
diff --git a/devtools/client/webconsole/net/test/mochitest/browser_net_headers.js b/devtools/client/webconsole/net/test/mochitest/browser_net_headers.js
index 4a47074ee194..14cde846c20c 100644
--- a/devtools/client/webconsole/net/test/mochitest/browser_net_headers.js
+++ b/devtools/client/webconsole/net/test/mochitest/browser_net_headers.js
@@ -26,11 +26,11 @@ add_task(function* () {
// Select "Headers" tab
let tabBody = yield selectNetInfoTab(hud, netInfoBody, "headers");
let paramName = tabBody.querySelector(
- ".netInfoParamName > span[title='Content-Type']");
+ ".netInfoParamName > span[title='content-type']");
// Verify "Content-Type" header (name and value)
ok(paramName, "Header name must exist");
- is(paramName.textContent, "Content-Type",
+ is(paramName.textContent, "content-type",
"The header name must have proper value");
let paramValue = paramName.parentNode.nextSibling;
diff --git a/devtools/client/webconsole/test/browser_webconsole_bug_630733_response_redirect_headers.js b/devtools/client/webconsole/test/browser_webconsole_bug_630733_response_redirect_headers.js
index 5097499538c9..da4bdcf122ec 100644
--- a/devtools/client/webconsole/test/browser_webconsole_bug_630733_response_redirect_headers.js
+++ b/devtools/client/webconsole/test/browser_webconsole_bug_630733_response_redirect_headers.js
@@ -87,7 +87,7 @@ function getContent() {
function performTest() {
function readHeader(name) {
for (let header of headers) {
- if (header.name == name) {
+ if (header.name.toLowerCase() == name.toLowerCase()) {
return header.value;
}
}
diff --git a/devtools/shared/webconsole/test/test_network_get.html b/devtools/shared/webconsole/test/test_network_get.html
index 710c9b0d7516..c2313be12a30 100644
--- a/devtools/shared/webconsole/test/test_network_get.html
+++ b/devtools/shared/webconsole/test/test_network_get.html
@@ -196,13 +196,13 @@ function onResponseHeaders(aState, aResponse)
ok(!!aResponse.rawHeaders, "response rawHeaders available");
checkHeadersOrCookies(aResponse.headers, {
- "Content-Type": /^application\/(json|octet-stream)$/,
- "Content-Length": /^\d+$/,
+ "content-type": /^application\/(json|octet-stream)$/,
+ "content-length": /^\d+$/,
});
checkRawHeaders(aResponse.rawHeaders, {
- "Content-Type": /^application\/(json|octet-stream)$/,
- "Content-Length": /^\d+$/,
+ "content-type": /^application\/(json|octet-stream)$/,
+ "content-length": /^\d+$/,
});
onResponseCookies = onResponseCookies.bind(null, aState);
diff --git a/devtools/shared/webconsole/test/test_network_longstring.html b/devtools/shared/webconsole/test/test_network_longstring.html
index d55136896917..9e6ea7771b63 100644
--- a/devtools/shared/webconsole/test/test_network_longstring.html
+++ b/devtools/shared/webconsole/test/test_network_longstring.html
@@ -212,8 +212,8 @@ function onResponseHeaders(aState, aResponse)
ok(aResponse.headersSize > 0, "response headersSize > 0");
checkHeadersOrCookies(aResponse.headers, {
- "Content-Type": /^application\/(json|octet-stream)$/,
- "Content-Length": /^\d+$/,
+ "content-type": /^application\/(json|octet-stream)$/,
+ "content-length": /^\d+$/,
"x-very-short": "hello world",
"x-very-long": {
"type": "longString",
diff --git a/devtools/shared/webconsole/test/test_network_post.html b/devtools/shared/webconsole/test/test_network_post.html
index d96b9b0b7c24..a0b8edb648f8 100644
--- a/devtools/shared/webconsole/test/test_network_post.html
+++ b/devtools/shared/webconsole/test/test_network_post.html
@@ -204,13 +204,13 @@ function onResponseHeaders(aState, aResponse)
ok(!!aResponse.rawHeaders, "response rawHeaders available");
checkHeadersOrCookies(aResponse.headers, {
- "Content-Type": /^application\/(json|octet-stream)$/,
- "Content-Length": /^\d+$/,
+ "content-type": /^application\/(json|octet-stream)$/,
+ "content-length": /^\d+$/,
});
checkRawHeaders(aResponse.rawHeaders, {
- "Content-Type": /^application\/(json|octet-stream)$/,
- "Content-Length": /^\d+$/,
+ "content-type": /^application\/(json|octet-stream)$/,
+ "content-length": /^\d+$/,
});
onResponseCookies = onResponseCookies.bind(null, aState);
1
0

[tor-browser/tor-browser-52.8.0esr-7.5-1] fixup! TB4: Tor Browser's Firefox preference overrides.
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit 76a19c911a7c847756d8ca20a70affdbcad56011
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Jun 20 09:13:28 2018 +0000
fixup! TB4: Tor Browser's Firefox preference overrides.
Fixes our bug 26424 (disabling UNC paths) and activates Mozilla's fix
for https://bugzilla.mozilla.org/show_bug.cgi?id=1413868.
---
browser/app/profile/000-tor-browser.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 6fa34860a7b5..f27c5dd93e04 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -255,6 +255,8 @@ pref("devtools.appmanager.enabled", false);
pref("devtools.debugger.chrome-debugging-host", "127.0.0.1");
// Disable mozTCPSocket for sure (bug 18863)
pref("dom.mozTCPSocket.enabled", false);
+// Disable using UNC paths (bug 26424 and Mozilla's bug 1413868)
+pref("network.file.disable_unc_paths", true);
// Security slider
pref("svg.in-content.enabled", true);
1
0

[tor-browser/tor-browser-52.8.0esr-7.5-1] Bug 1334776 - Store header names into nsHttpHeaderArray. r=mcmanus
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit cd2dd6a72bef0d0d5d405af3a1913bebb820fc02
Author: Dragana Damjanovic <dd.mozilla(a)gmail.com>
Date: Thu Apr 27 16:48:36 2017 +0200
Bug 1334776 - Store header names into nsHttpHeaderArray. r=mcmanus
Backported to TBB/ESR52 by Arthur Edelstein <arthuredelstein(a)gmail.com>
---
dom/security/test/cors/test_CrossSiteXHR.html | 2 +-
netwerk/protocol/http/HttpBaseChannel.cpp | 18 +---
netwerk/protocol/http/PHttpChannelParams.h | 15 +++-
netwerk/protocol/http/nsHttpHeaderArray.cpp | 100 +++++++++++++++++----
netwerk/protocol/http/nsHttpHeaderArray.h | 36 ++++++--
netwerk/protocol/http/nsHttpRequestHead.cpp | 23 ++++-
netwerk/protocol/http/nsHttpRequestHead.h | 4 +-
netwerk/protocol/http/nsHttpResponseHead.cpp | 50 ++++++++---
netwerk/protocol/http/nsHttpResponseHead.h | 6 +-
netwerk/test/unit/test_bug1064258.js | 2 +-
.../test/unit/test_original_sent_received_head.js | 14 +--
11 files changed, 204 insertions(+), 66 deletions(-)
diff --git a/dom/security/test/cors/test_CrossSiteXHR.html b/dom/security/test/cors/test_CrossSiteXHR.html
index b3cda3b871f3..d9aef5c60cd0 100644
--- a/dom/security/test/cors/test_CrossSiteXHR.html
+++ b/dom/security/test/cors/test_CrossSiteXHR.html
@@ -743,7 +743,7 @@ function runTest() {
is(res.responseHeaders[header], test.responseHeaders[header],
"|xhr.getResponseHeader()|wrong response header (" + header + ") in test for " +
test.toSource());
- is(res.allResponseHeaders[header], test.responseHeaders[header],
+ is(res.allResponseHeaders[header.toLowerCase()], test.responseHeaders[header],
"|xhr.getAllResponseHeaderss()|wrong response header (" + header + ") in test for " +
test.toSource());
}
diff --git a/netwerk/protocol/http/HttpBaseChannel.cpp b/netwerk/protocol/http/HttpBaseChannel.cpp
index e68bff1d115e..97120b97a5d3 100644
--- a/netwerk/protocol/http/HttpBaseChannel.cpp
+++ b/netwerk/protocol/http/HttpBaseChannel.cpp
@@ -1678,13 +1678,7 @@ HttpBaseChannel::SetRequestHeader(const nsACString& aHeader,
return NS_ERROR_INVALID_ARG;
}
- nsHttpAtom atom = nsHttp::ResolveAtom(flatHeader.get());
- if (!atom) {
- NS_WARNING("failed to resolve atom");
- return NS_ERROR_NOT_AVAILABLE;
- }
-
- return mRequestHead.SetHeader(atom, flatValue, aMerge);
+ return mRequestHead.SetHeader(aHeader, flatValue, aMerge);
}
NS_IMETHODIMP
@@ -1701,13 +1695,7 @@ HttpBaseChannel::SetEmptyRequestHeader(const nsACString& aHeader)
return NS_ERROR_INVALID_ARG;
}
- nsHttpAtom atom = nsHttp::ResolveAtom(flatHeader.get());
- if (!atom) {
- NS_WARNING("failed to resolve atom");
- return NS_ERROR_NOT_AVAILABLE;
- }
-
- return mRequestHead.SetEmptyHeader(atom);
+ return mRequestHead.SetEmptyHeader(aHeader);
}
NS_IMETHODIMP
@@ -1763,7 +1751,7 @@ HttpBaseChannel::SetResponseHeader(const nsACString& header,
mResponseHeadersModified = true;
- return mResponseHead->SetHeader(atom, value, merge);
+ return mResponseHead->SetHeader(header, value, merge);
}
NS_IMETHODIMP
diff --git a/netwerk/protocol/http/PHttpChannelParams.h b/netwerk/protocol/http/PHttpChannelParams.h
index 4df5c7832ee8..b04f57306c58 100644
--- a/netwerk/protocol/http/PHttpChannelParams.h
+++ b/netwerk/protocol/http/PHttpChannelParams.h
@@ -98,7 +98,11 @@ struct ParamTraits<mozilla::net::nsHttpHeaderArray::nsEntry>
static void Write(Message* aMsg, const paramType& aParam)
{
- WriteParam(aMsg, aParam.header);
+ if (aParam.headerNameOriginal.IsEmpty()) {
+ WriteParam(aMsg, aParam.header);
+ } else {
+ WriteParam(aMsg, aParam.headerNameOriginal);
+ }
WriteParam(aMsg, aParam.value);
switch (aParam.variety) {
case mozilla::net::nsHttpHeaderArray::eVarietyUnknown:
@@ -124,11 +128,18 @@ struct ParamTraits<mozilla::net::nsHttpHeaderArray::nsEntry>
static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
{
uint8_t variety;
- if (!ReadParam(aMsg, aIter, &aResult->header) ||
+ nsAutoCString header;
+ if (!ReadParam(aMsg, aIter, &header) ||
!ReadParam(aMsg, aIter, &aResult->value) ||
!ReadParam(aMsg, aIter, &variety))
return false;
+ mozilla::net::nsHttpAtom atom = mozilla::net::nsHttp::ResolveAtom(header);
+ aResult->header = atom;
+ if (!header.Equals(atom.get())) {
+ aResult->headerNameOriginal = header;
+ }
+
switch (variety) {
case 0:
aResult->variety = mozilla::net::nsHttpHeaderArray::eVarietyUnknown;
diff --git a/netwerk/protocol/http/nsHttpHeaderArray.cpp b/netwerk/protocol/http/nsHttpHeaderArray.cpp
index 670300dea50b..98c5a6b9ba47 100644
--- a/netwerk/protocol/http/nsHttpHeaderArray.cpp
+++ b/netwerk/protocol/http/nsHttpHeaderArray.cpp
@@ -18,8 +18,33 @@ namespace net {
//-----------------------------------------------------------------------------
// nsHttpHeaderArray <public>
//-----------------------------------------------------------------------------
+
+nsresult
+nsHttpHeaderArray::SetHeader(const nsACString &headerName,
+ const nsACString &value,
+ bool merge,
+ nsHttpHeaderArray::HeaderVariety variety)
+{
+ nsHttpAtom header = nsHttp::ResolveAtom(PromiseFlatCString(headerName).get());
+ if (!header) {
+ NS_WARNING("failed to resolve atom");
+ return NS_ERROR_NOT_AVAILABLE;
+ }
+ return SetHeader(header, headerName, value, merge, variety);
+}
+
+nsresult
+nsHttpHeaderArray::SetHeader(nsHttpAtom header,
+ const nsACString &value,
+ bool merge,
+ nsHttpHeaderArray::HeaderVariety variety)
+{
+ return SetHeader(header, EmptyCString(), value, merge, variety);
+}
+
nsresult
nsHttpHeaderArray::SetHeader(nsHttpAtom header,
+ const nsACString &headerName,
const nsACString &value,
bool merge,
nsHttpHeaderArray::HeaderVariety variety)
@@ -51,7 +76,7 @@ nsHttpHeaderArray::SetHeader(nsHttpAtom header,
MOZ_ASSERT(!entry || variety != eVarietyRequestDefault,
"Cannot set default entry which overrides existing entry!");
if (!entry) {
- return SetHeader_internal(header, value, variety);
+ return SetHeader_internal(header, headerName, value, variety);
} else if (merge && !IsSingletonHeader(header)) {
return MergeHeader(header, entry, value, variety);
} else {
@@ -59,7 +84,7 @@ nsHttpHeaderArray::SetHeader(nsHttpAtom header,
if (entry->variety == eVarietyResponseNetOriginalAndResponse) {
MOZ_ASSERT(variety == eVarietyResponse);
entry->variety = eVarietyResponseNetOriginal;
- return SetHeader_internal(header, value, variety);
+ return SetHeader_internal(header, headerName, value, variety);
} else {
entry->value = value;
entry->variety = variety;
@@ -71,6 +96,7 @@ nsHttpHeaderArray::SetHeader(nsHttpAtom header,
nsresult
nsHttpHeaderArray::SetHeader_internal(nsHttpAtom header,
+ const nsACString &headerName,
const nsACString &value,
nsHttpHeaderArray::HeaderVariety variety)
{
@@ -79,14 +105,26 @@ nsHttpHeaderArray::SetHeader_internal(nsHttpAtom header,
return NS_ERROR_OUT_OF_MEMORY;
}
entry->header = header;
+ // Only save original form of a header if it is different than the header
+ // atom string.
+ if (!headerName.Equals(header.get())) {
+ entry->headerNameOriginal = headerName;
+ }
entry->value = value;
entry->variety = variety;
return NS_OK;
}
nsresult
-nsHttpHeaderArray::SetEmptyHeader(nsHttpAtom header, HeaderVariety variety)
+nsHttpHeaderArray::SetEmptyHeader(const nsACString &headerName,
+ HeaderVariety variety)
{
+ nsHttpAtom header = nsHttp::ResolveAtom(PromiseFlatCString(headerName).get());
+ if (!header) {
+ NS_WARNING("failed to resolve atom");
+ return NS_ERROR_NOT_AVAILABLE;
+ }
+
MOZ_ASSERT((variety == eVarietyResponse) ||
(variety == eVarietyRequestDefault) ||
(variety == eVarietyRequestOverride),
@@ -104,11 +142,12 @@ nsHttpHeaderArray::SetEmptyHeader(nsHttpAtom header, HeaderVariety variety)
entry->variety = eVarietyResponseNetOriginal;
}
- return SetHeader_internal(header, EmptyCString(), variety);
+ return SetHeader_internal(header, headerName, EmptyCString(), variety);
}
nsresult
nsHttpHeaderArray::SetHeaderFromNet(nsHttpAtom header,
+ const nsACString &headerNameOriginal,
const nsACString &value,
bool response)
{
@@ -125,7 +164,7 @@ nsHttpHeaderArray::SetHeaderFromNet(nsHttpAtom header,
LOG(("Ignoring Empty Header: %s\n", header.get()));
if (response) {
// Set header as original but not as response header.
- return SetHeader_internal(header, value,
+ return SetHeader_internal(header, headerNameOriginal, value,
eVarietyResponseNetOriginal);
}
return NS_OK; // ignore empty headers by default
@@ -135,7 +174,7 @@ nsHttpHeaderArray::SetHeaderFromNet(nsHttpAtom header,
if (response) {
variety = eVarietyResponseNetOriginalAndResponse;
}
- return SetHeader_internal(header, value, variety);
+ return SetHeader_internal(header, headerNameOriginal, value, variety);
} else if (!IsSingletonHeader(header)) {
HeaderVariety variety = eVarietyRequestOverride;
@@ -147,7 +186,7 @@ nsHttpHeaderArray::SetHeaderFromNet(nsHttpAtom header,
return rv;
}
if (response) {
- rv = SetHeader_internal(header, value,
+ rv = SetHeader_internal(header, headerNameOriginal, value,
eVarietyResponseNetOriginal);
}
return rv;
@@ -164,7 +203,7 @@ nsHttpHeaderArray::SetHeaderFromNet(nsHttpAtom header,
}
if (response) {
- return SetHeader_internal(header, value,
+ return SetHeader_internal(header, headerNameOriginal, value,
eVarietyResponseNetOriginal);
}
}
@@ -174,6 +213,7 @@ nsHttpHeaderArray::SetHeaderFromNet(nsHttpAtom header,
nsresult
nsHttpHeaderArray::SetResponseHeaderFromCache(nsHttpAtom header,
+ const nsACString &headerNameOriginal,
const nsACString &value,
nsHttpHeaderArray::HeaderVariety variety)
{
@@ -183,7 +223,7 @@ nsHttpHeaderArray::SetResponseHeaderFromCache(nsHttpAtom header,
"eVarietyResponseNetOriginal");
if (variety == eVarietyResponseNetOriginal) {
- return SetHeader_internal(header, value,
+ return SetHeader_internal(header, headerNameOriginal, value,
eVarietyResponseNetOriginal);
} else {
nsTArray<nsEntry>::index_type index = 0;
@@ -203,7 +243,8 @@ nsHttpHeaderArray::SetResponseHeaderFromCache(nsHttpAtom header,
}
} while (index != mHeaders.NoIndex);
// If we are here, we have not found an entry so add a new one.
- return SetHeader_internal(header, value, eVarietyResponse);
+ return SetHeader_internal(header, headerNameOriginal, value,
+ eVarietyResponse);
}
}
@@ -260,8 +301,16 @@ nsHttpHeaderArray::GetOriginalHeader(nsHttpAtom aHeader,
if (entry.variety == eVarietyResponse) {
continue;
}
+
+ nsAutoCString hdr;
+ if (entry.headerNameOriginal.IsEmpty()) {
+ hdr = nsDependentCString(entry.header);
+ } else {
+ hdr = entry.headerNameOriginal;
+ }
+
rv = NS_OK;
- if (NS_FAILED(aVisitor->VisitHeader(nsDependentCString(entry.header),
+ if (NS_FAILED(aVisitor->VisitHeader(hdr,
entry.value))) {
break;
}
@@ -298,8 +347,14 @@ nsHttpHeaderArray::VisitHeaders(nsIHttpHeaderVisitor *visitor, nsHttpHeaderArray
} else if (filter == eFilterResponseOriginal && entry.variety == eVarietyResponse) {
continue;
}
- rv = visitor->VisitHeader(
- nsDependentCString(entry.header), entry.value);
+
+ nsAutoCString hdr;
+ if (entry.headerNameOriginal.IsEmpty()) {
+ hdr = nsDependentCString(entry.header);
+ } else {
+ hdr = entry.headerNameOriginal;
+ }
+ rv = visitor->VisitHeader(hdr, entry.value);
if NS_FAILED(rv) {
return rv;
}
@@ -310,6 +365,7 @@ nsHttpHeaderArray::VisitHeaders(nsIHttpHeaderVisitor *visitor, nsHttpHeaderArray
/*static*/ nsresult
nsHttpHeaderArray::ParseHeaderLine(const nsACString& line,
nsHttpAtom *hdr,
+ nsACString *headerName,
nsACString *val)
{
//
@@ -360,6 +416,7 @@ nsHttpHeaderArray::ParseHeaderLine(const nsACString& line,
// assign return values
if (hdr) *hdr = atom;
if (val) val->Assign(p, p2 - p + 1);
+ if (headerName) headerName->Assign(sub);
return NS_OK;
}
@@ -397,7 +454,11 @@ nsHttpHeaderArray::Flatten(nsACString &buf, bool pruneProxyHeaders,
continue;
}
- buf.Append(entry.header);
+ if (entry.headerNameOriginal.IsEmpty()) {
+ buf.Append(entry.header);
+ } else {
+ buf.Append(entry.headerNameOriginal);
+ }
buf.AppendLiteral(": ");
buf.Append(entry.value);
buf.AppendLiteral("\r\n");
@@ -415,7 +476,12 @@ nsHttpHeaderArray::FlattenOriginalHeader(nsACString &buf)
continue;
}
- buf.Append(entry.header);
+ if (entry.headerNameOriginal.IsEmpty()) {
+ buf.Append(entry.header);
+ } else {
+ buf.Append(entry.headerNameOriginal);
+ }
+
buf.AppendLiteral(": ");
buf.Append(entry.value);
buf.AppendLiteral("\r\n");
@@ -423,11 +489,13 @@ nsHttpHeaderArray::FlattenOriginalHeader(nsACString &buf)
}
const char *
-nsHttpHeaderArray::PeekHeaderAt(uint32_t index, nsHttpAtom &header) const
+nsHttpHeaderArray::PeekHeaderAt(uint32_t index, nsHttpAtom &header,
+ nsACString &headerNameOriginal) const
{
const nsEntry &entry = mHeaders[index];
header = entry.header;
+ headerNameOriginal = entry.headerNameOriginal;
return entry.value.get();
}
diff --git a/netwerk/protocol/http/nsHttpHeaderArray.h b/netwerk/protocol/http/nsHttpHeaderArray.h
index 91b91f04aa1c..4c4b92911a5d 100644
--- a/netwerk/protocol/http/nsHttpHeaderArray.h
+++ b/netwerk/protocol/http/nsHttpHeaderArray.h
@@ -49,19 +49,30 @@ public:
};
// Used by internal setters: to set header from network use SetHeaderFromNet
+ nsresult SetHeader(const nsACString &headerName,
+ const nsACString &value,
+ bool merge, HeaderVariety variety);
nsresult SetHeader(nsHttpAtom header, const nsACString &value,
bool merge, HeaderVariety variety);
+ nsresult SetHeader(nsHttpAtom header,
+ const nsACString &headerName,
+ const nsACString &value,
+ bool merge, HeaderVariety variety);
// Used by internal setters to set an empty header
- nsresult SetEmptyHeader(nsHttpAtom header, HeaderVariety variety);
+ nsresult SetEmptyHeader(const nsACString &headerName, HeaderVariety variety);
// Merges supported headers. For other duplicate values, determines if error
// needs to be thrown or 1st value kept.
// For the response header we keep the original headers as well.
- nsresult SetHeaderFromNet(nsHttpAtom header, const nsACString &value,
+ nsresult SetHeaderFromNet(nsHttpAtom header,
+ const nsACString &headerNameOriginal,
+ const nsACString &value,
bool response);
- nsresult SetResponseHeaderFromCache(nsHttpAtom header, const nsACString &value,
+ nsresult SetResponseHeaderFromCache(nsHttpAtom header,
+ const nsACString &headerNameOriginal,
+ const nsACString &value,
HeaderVariety variety);
nsresult GetHeader(nsHttpAtom header, nsACString &value) const;
@@ -97,15 +108,17 @@ public:
// parse a header line, return the header atom and a pointer to the
// header value (the substring of the header line -- do not free).
static nsresult ParseHeaderLine(const nsACString& line,
- nsHttpAtom *header=nullptr,
- nsACString* value=nullptr);
+ nsHttpAtom *header = nullptr,
+ nsACString *headerNameOriginal = nullptr,
+ nsACString* value = nullptr);
void Flatten(nsACString &, bool pruneProxyHeaders, bool pruneTransients);
void FlattenOriginalHeader(nsACString &);
uint32_t Count() const { return mHeaders.Length(); }
- const char *PeekHeaderAt(uint32_t i, nsHttpAtom &header) const;
+ const char *PeekHeaderAt(uint32_t i, nsHttpAtom &header,
+ nsACString &headerNameOriginal) const;
void Clear();
@@ -113,6 +126,7 @@ public:
struct nsEntry
{
nsHttpAtom header;
+ nsCString headerNameOriginal;
nsCString value;
HeaderVariety variety = eVarietyUnknown;
@@ -140,7 +154,9 @@ private:
int32_t LookupEntry(nsHttpAtom header, nsEntry **);
nsresult MergeHeader(nsHttpAtom header, nsEntry *entry,
const nsACString &value, HeaderVariety variety);
- nsresult SetHeader_internal(nsHttpAtom header, const nsACString &value,
+ nsresult SetHeader_internal(nsHttpAtom header,
+ const nsACString &headerName,
+ const nsACString &value,
HeaderVariety variety);
// Header cannot be merged: only one value possible
@@ -257,7 +273,11 @@ nsHttpHeaderArray::MergeHeader(nsHttpAtom header,
if (entry->variety == eVarietyResponseNetOriginalAndResponse) {
MOZ_ASSERT(variety == eVarietyResponse);
entry->variety = eVarietyResponseNetOriginal;
- nsresult rv = SetHeader_internal(header, newValue, eVarietyResponse);
+ // Copy entry->headerNameOriginal because in SetHeader_internal we are going
+ // to a new one and a realocation can happen.
+ nsCString headerNameOriginal = entry->headerNameOriginal;
+ nsresult rv = SetHeader_internal(header, headerNameOriginal,
+ newValue, eVarietyResponse);
if (NS_FAILED(rv)) {
return rv;
}
diff --git a/netwerk/protocol/http/nsHttpRequestHead.cpp b/netwerk/protocol/http/nsHttpRequestHead.cpp
index 094a79457094..b366a8d54264 100644
--- a/netwerk/protocol/http/nsHttpRequestHead.cpp
+++ b/netwerk/protocol/http/nsHttpRequestHead.cpp
@@ -131,6 +131,20 @@ nsHttpRequestHead::Origin(nsACString &aOrigin)
}
nsresult
+nsHttpRequestHead::SetHeader(const nsACString &h, const nsACString &v,
+ bool m /*= false*/)
+{
+ ReentrantMonitorAutoEnter mon(mReentrantMonitor);
+
+ if (mInVisitHeaders) {
+ return NS_ERROR_FAILURE;
+ }
+
+ return mHeaders.SetHeader(h, v, m,
+ nsHttpHeaderArray::eVarietyRequestOverride);
+}
+
+nsresult
nsHttpRequestHead::SetHeader(nsHttpAtom h, const nsACString &v,
bool m /*= false*/)
{
@@ -158,7 +172,7 @@ nsHttpRequestHead::SetHeader(nsHttpAtom h, const nsACString &v, bool m,
}
nsresult
-nsHttpRequestHead::SetEmptyHeader(nsHttpAtom h)
+nsHttpRequestHead::SetEmptyHeader(const nsACString &h)
{
ReentrantMonitorAutoEnter mon(mReentrantMonitor);
@@ -253,6 +267,7 @@ nsHttpRequestHead::ParseHeaderSet(const char *buffer)
{
ReentrantMonitorAutoEnter mon(mReentrantMonitor);
nsHttpAtom hdr;
+ nsAutoCString headerNameOriginal;
nsAutoCString val;
while (buffer) {
const char *eof = strchr(buffer, '\r');
@@ -262,9 +277,13 @@ nsHttpRequestHead::ParseHeaderSet(const char *buffer)
if (NS_SUCCEEDED(nsHttpHeaderArray::ParseHeaderLine(
nsDependentCSubstring(buffer, eof - buffer),
&hdr,
+ &headerNameOriginal,
&val))) {
- mHeaders.SetHeaderFromNet(hdr, val, false);
+ mHeaders.SetHeaderFromNet(hdr,
+ headerNameOriginal,
+ val,
+ false);
}
buffer = eof + 1;
if (*buffer == '\n') {
diff --git a/netwerk/protocol/http/nsHttpRequestHead.h b/netwerk/protocol/http/nsHttpRequestHead.h
index 415968083477..b7020d33a0ac 100644
--- a/netwerk/protocol/http/nsHttpRequestHead.h
+++ b/netwerk/protocol/http/nsHttpRequestHead.h
@@ -57,10 +57,12 @@ public:
int32_t port);
void Origin(nsACString &aOrigin);
+ nsresult SetHeader(const nsACString &h, const nsACString &v,
+ bool m=false);
nsresult SetHeader(nsHttpAtom h, const nsACString &v, bool m=false);
nsresult SetHeader(nsHttpAtom h, const nsACString &v, bool m,
nsHttpHeaderArray::HeaderVariety variety);
- nsresult SetEmptyHeader(nsHttpAtom h);
+ nsresult SetEmptyHeader(const nsACString &h);
nsresult GetHeader(nsHttpAtom h, nsACString &v);
nsresult ClearHeader(nsHttpAtom h);
diff --git a/netwerk/protocol/http/nsHttpResponseHead.cpp b/netwerk/protocol/http/nsHttpResponseHead.cpp
index 6d384c48872e..fa6430b8231f 100644
--- a/netwerk/protocol/http/nsHttpResponseHead.cpp
+++ b/netwerk/protocol/http/nsHttpResponseHead.cpp
@@ -137,6 +137,26 @@ nsHttpResponseHead::Immutable()
}
nsresult
+nsHttpResponseHead::SetHeader(const nsACString &hdr,
+ const nsACString &val,
+ bool merge)
+{
+ ReentrantMonitorAutoEnter monitor(mReentrantMonitor);
+
+ if (mInVisitHeaders) {
+ return NS_ERROR_FAILURE;
+ }
+
+ nsHttpAtom atom = nsHttp::ResolveAtom(PromiseFlatCString(hdr).get());
+ if (!atom) {
+ NS_WARNING("failed to resolve atom");
+ return NS_ERROR_NOT_AVAILABLE;
+ }
+
+ return SetHeader_locked(atom, hdr, val, merge);
+}
+
+nsresult
nsHttpResponseHead::SetHeader(nsHttpAtom hdr,
const nsACString &val,
bool merge)
@@ -147,24 +167,25 @@ nsHttpResponseHead::SetHeader(nsHttpAtom hdr,
return NS_ERROR_FAILURE;
}
- return SetHeader_locked(hdr, val, merge);
+ return SetHeader_locked(hdr, EmptyCString(), val, merge);
}
nsresult
-nsHttpResponseHead::SetHeader_locked(nsHttpAtom hdr,
+nsHttpResponseHead::SetHeader_locked(nsHttpAtom atom,
+ const nsACString &hdr,
const nsACString &val,
bool merge)
{
- nsresult rv = mHeaders.SetHeader(hdr, val, merge,
+ nsresult rv = mHeaders.SetHeader(atom, hdr, val, merge,
nsHttpHeaderArray::eVarietyResponse);
if (NS_FAILED(rv)) return rv;
// respond to changes in these headers. we need to reparse the entire
// header since the change may have merged in additional values.
- if (hdr == nsHttp::Cache_Control)
- ParseCacheControl(mHeaders.PeekHeader(hdr));
- else if (hdr == nsHttp::Pragma)
- ParsePragma(mHeaders.PeekHeader(hdr));
+ if (atom == nsHttp::Cache_Control)
+ ParseCacheControl(mHeaders.PeekHeader(atom));
+ else if (atom == nsHttp::Pragma)
+ ParsePragma(mHeaders.PeekHeader(atom));
return NS_OK;
}
@@ -316,6 +337,7 @@ nsHttpResponseHead::ParseCachedOriginalHeaders(char *block)
char *p = block;
nsHttpAtom hdr = {0};
+ nsAutoCString headerNameOriginal;
nsAutoCString val;
nsresult rv;
@@ -331,12 +353,13 @@ nsHttpResponseHead::ParseCachedOriginalHeaders(char *block)
*p = 0;
if (NS_FAILED(nsHttpHeaderArray::ParseHeaderLine(
- nsDependentCString(block, p - block), &hdr, &val))) {
+ nsDependentCString(block, p - block), &hdr, &headerNameOriginal, &val))) {
return NS_OK;
}
rv = mHeaders.SetResponseHeaderFromCache(hdr,
+ headerNameOriginal,
val,
nsHttpHeaderArray::eVarietyResponseNetOriginal);
@@ -567,18 +590,21 @@ nsresult
nsHttpResponseHead::ParseHeaderLine_locked(const nsACString &line, bool originalFromNetHeaders)
{
nsHttpAtom hdr = {0};
+ nsAutoCString headerNameOriginal;
nsAutoCString val;
- if (NS_FAILED(nsHttpHeaderArray::ParseHeaderLine(line, &hdr, &val))) {
+ if (NS_FAILED(nsHttpHeaderArray::ParseHeaderLine(line, &hdr, &headerNameOriginal, &val))) {
return NS_OK;
}
nsresult rv;
if (originalFromNetHeaders) {
rv = mHeaders.SetHeaderFromNet(hdr,
+ headerNameOriginal,
val,
true);
} else {
rv = mHeaders.SetResponseHeaderFromCache(hdr,
+ headerNameOriginal,
val,
nsHttpHeaderArray::eVarietyResponse);
}
@@ -856,7 +882,8 @@ nsHttpResponseHead::UpdateHeaders(nsHttpResponseHead *aOther)
uint32_t i, count = aOther->mHeaders.Count();
for (i=0; i<count; ++i) {
nsHttpAtom header;
- const char *val = aOther->mHeaders.PeekHeaderAt(i, header);
+ nsAutoCString headerNameOriginal;
+ const char *val = aOther->mHeaders.PeekHeaderAt(i, header, headerNameOriginal);
if (!val) {
continue;
@@ -890,7 +917,8 @@ nsHttpResponseHead::UpdateHeaders(nsHttpResponseHead *aOther)
LOG(("new response header [%s: %s]\n", header.get(), val));
// overwrite the current header value with the new value...
- SetHeader_locked(header, nsDependentCString(val));
+ SetHeader_locked(header, headerNameOriginal,
+ nsDependentCString(val));
}
}
diff --git a/netwerk/protocol/http/nsHttpResponseHead.h b/netwerk/protocol/http/nsHttpResponseHead.h
index 0a912f4b403b..8b51386ea229 100644
--- a/netwerk/protocol/http/nsHttpResponseHead.h
+++ b/netwerk/protocol/http/nsHttpResponseHead.h
@@ -65,6 +65,8 @@ public:
*/
int64_t TotalEntitySize();
+ nsresult SetHeader(const nsACString &h, const nsACString &v,
+ bool m=false);
nsresult SetHeader(nsHttpAtom h, const nsACString &v, bool m=false);
nsresult GetHeader(nsHttpAtom h, nsACString &v);
void ClearHeader(nsHttpAtom h);
@@ -137,8 +139,8 @@ public:
bool HasContentType();
bool HasContentCharset();
private:
- nsresult SetHeader_locked(nsHttpAtom h, const nsACString &v,
- bool m=false);
+ nsresult SetHeader_locked(nsHttpAtom atom, const nsACString &h,
+ const nsACString &v, bool m=false);
void AssignDefaultStatusText();
void ParseVersion(const char *);
void ParseCacheControl(const char *);
diff --git a/netwerk/test/unit/test_bug1064258.js b/netwerk/test/unit/test_bug1064258.js
index 3f76837ae935..da982c2d6f07 100644
--- a/netwerk/test/unit/test_bug1064258.js
+++ b/netwerk/test/unit/test_bug1064258.js
@@ -133,7 +133,7 @@ function cacheCheck2(status, entry)
do_check_eq(entry.dataSize, 0);
try {
do_check_neq(entry.getMetaDataElement("response-head"), null);
- do_check_true(entry.getMetaDataElement("response-head").match('Etag: testetag'));
+ do_check_true(entry.getMetaDataElement("response-head").match('etag: testetag'));
}
catch (ex) {
do_throw("Missing response head");
diff --git a/netwerk/test/unit/test_original_sent_received_head.js b/netwerk/test/unit/test_original_sent_received_head.js
index c4d02d5d2299..eab359a108ae 100644
--- a/netwerk/test/unit/test_original_sent_received_head.js
+++ b/netwerk/test/unit/test_original_sent_received_head.js
@@ -114,11 +114,11 @@ function checkResponse(request, data, context) {
var locationHeaderFound = 0;
request.visitResponseHeaders({
visitHeader: function visit(aName, aValue) {
- if (aName == "Link") {
+ if (aName == "link") {
linkHeaderFound++;
do_check_eq(aValue, "value1, value2");
}
- if (aName == "Location") {
+ if (aName == "location") {
locationHeaderFound++;
do_check_eq(aValue, "loc");
}
@@ -132,7 +132,7 @@ function checkResponse(request, data, context) {
var locationOrgHeaderFound = 0;
request.visitOriginalResponseHeaders({
visitHeader: function visitOrg(aName, aValue) {
- if (aName == "Link") {
+ if (aName == "link") {
if (linkOrgHeaderFound == 0) {
do_check_eq(aValue, "");
} else if (linkOrgHeaderFound == 1 ) {
@@ -142,7 +142,7 @@ function checkResponse(request, data, context) {
}
linkOrgHeaderFound++;
}
- if (aName == "Location") {
+ if (aName == "location") {
locationOrgHeaderFound++;
do_check_eq(aValue, "loc");
}
@@ -176,7 +176,7 @@ function checkResponse(request, data, context) {
var locationOrgHeaderFound2 = 0;
request.visitOriginalResponseHeaders({
visitHeader: function visitOrg(aName, aValue) {
- if (aName == "Link") {
+ if (aName == "link") {
if (linkOrgHeaderFound2 == 0) {
do_check_eq(aValue, "");
} else if (linkOrgHeaderFound2 == 1 ) {
@@ -186,7 +186,7 @@ function checkResponse(request, data, context) {
}
linkOrgHeaderFound2++;
}
- if (aName == "Location") {
+ if (aName == "location") {
locationOrgHeaderFound2++;
do_check_eq(aValue, "loc");
}
@@ -199,7 +199,7 @@ function checkResponse(request, data, context) {
if (dbg) { print("============== Test GetResponseHeader"); }
var linkOrgHeaderFound3 = 0;
- request.getOriginalResponseHeader("Link",{
+ request.getOriginalResponseHeader("link",{
visitHeader: function visitOrg(aName, aValue) {
if (linkOrgHeaderFound3 == 0) {
do_check_eq(aValue, "");
1
0

[tor-launcher/maint-0.2.14] Bug 20890: Increase control port connection timeout
by gk@torproject.org 20 Jun '18
by gk@torproject.org 20 Jun '18
20 Jun '18
commit f34e4cc7047a752f4c33736924b2133b371829b8
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Wed May 16 14:17:16 2018 -0400
Bug 20890: Increase control port connection timeout
On slow computers, it can take longer than 30 seconds for Tor Launcher
to connect to the tor control port. Increase the timeout to 5 minutes.
---
src/components/tl-process.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/tl-process.js b/src/components/tl-process.js
index 53c9919..2bf5a4c 100644
--- a/src/components/tl-process.js
+++ b/src/components/tl-process.js
@@ -38,8 +38,8 @@ TorProcessService.prototype =
kWizardProgressPageID: "progress",
kInitialControlConnDelayMS: 25,
- kMaxControlConnRetryMS: 500,
- kControlConnTimeoutMS: 30000, // Wait at most 30 seconds for tor to start.
+ kMaxControlConnRetryMS: 2000, // Retry at least every 2 seconds.
+ kControlConnTimeoutMS: 5*60*1000, // Wait at most 5 minutes for tor to start.
kStatusUnknown: 0, // Tor process status.
kStatusStarting: 1,
1
0

20 Jun '18
commit 08db71c6c4a7f4465f890bd13f502bd54fe35389
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Jun 20 10:54:43 2018 +0000
Release preparations for 0.2.14.5
Version bump
---
src/install.rdf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/install.rdf b/src/install.rdf
index 1604ac6..703b307 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -7,7 +7,7 @@
<em:creator>The Tor Project, Inc.</em:creator>
<em:contributor>Pearl Crescent, LLC</em:contributor>
<em:id>tor-launcher(a)torproject.org</em:id>
- <em:version>0.2.14.4</em:version>
+ <em:version>0.2.14.5</em:version>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html</em:homepageURL>
<em:updateURL>data:text/plain,</em:updateURL>
1
0

[tor-browser-build/master] Bug 23561: Fix NSIS builds for Windows 64
by boklm@torproject.org 19 Jun '18
by boklm@torproject.org 19 Jun '18
19 Jun '18
commit 951b1a7e01000f3dc1529c497b64d32cc0e58339
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Sun Jun 17 18:32:21 2018 -0400
Bug 23561: Fix NSIS builds for Windows 64
This commit adds support for building the 64-bit version of NSIS, and
also bumps the version to 3.03. Doing this enables us to build MAR files
in a 64-bit container for the 64-bit version of Tor Browser; see bug
26363 and bug 24477.
The pe_checksum_fix.py doesn't work in a 64-bit container with the
bundled python-pefile version so we build its latest version to fix this
issue. This change is borrowed from commit bb32ec91b and updates
python-pefile to 2017.11.5.
The Debian package and the patches are no longer required as all changes
were merged upstream in 3.01-1. (See the nsis changelog in Debian.)
---
projects/nsis/build | 26 +++++++++++++++--------
projects/nsis/config | 10 ++++-----
projects/nsis/no-insert-timestamp.patch | 28 ++++++++++++-------------
projects/nsis/nsis-missing-unistd-include.patch | 11 ----------
projects/tor-browser/build | 13 +++++++-----
projects/tor-browser/config | 22 +++++++------------
6 files changed, 51 insertions(+), 59 deletions(-)
diff --git a/projects/nsis/build b/projects/nsis/build
index 5a7b59f..c6a6d3e 100755
--- a/projects/nsis/build
+++ b/projects/nsis/build
@@ -3,23 +3,31 @@
[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
mkdir -p /var/tmp/build
tar -C /var/tmp/build -xf nsis-[% c('version') %].tar.bz2
+
+# NSIS requires zlib and we later set the path using ZLIB_W32.
+tar -C /var/tmp/build -xf [% c('input_files_by_name/zlib') %]
+
cd /var/tmp/build/nsis-[% c('version') %]-src
-tar -xf $rootdir/[% c('input_files_by_name/debian') %]
-rm -f debian/patches/nsis_system_zlib.patch
-rm -f debian/patches/parallel_build.patch
-patch -p1 < $rootdir/nsis-missing-unistd-include.patch
-for patch in $(grep '\.patch$' debian/patches/series)
-do
- [ -f debian/patches/$patch ] && patch -p1 < debian/patches/$patch
-done
# Adding --no-insert-timestamp to APPEND_LINKFLAGS is not working as it
# is used for both the host and cross-compiled parts, but this option is
# only valid for the Windows linker. Therefore we add it using a patch
# to the cross-compilation part only.
patch -p1 < $rootdir/no-insert-timestamp.patch
+
+[% IF c("var/windows-x86_64") %]
+ # Seems like setting TARGET_ARCH is not enough so we need to patch build.cpp
+ # manually; this is confirmed by a comment in the same file.
+ sed -i 's/m_target_type=TARGET_X86ANSI/m_target_type=TARGET_AMD64/' Source/build.cpp
+ [% SET target = "amd64" %]
+[% ELSE %]
+ [% SET target = "x86" %]
+[% END %]
+
[% SET scons_args = 'VERSION=' _ c("version")
_ ' APPEND_CCFLAGS="-fgnu89-inline"'
- _ " SKIPUTILS='NSIS Menu' XGCC_W32_PREFIX=i686-w64-mingw32-"
+ _ " SKIPUTILS='NSIS Menu' XGCC_W32_PREFIX=" _ c("arch") _ "-w64-mingw32-"
+ _ " TARGET_ARCH=" _ target
+ _ " ZLIB_W32=/var/tmp/build/zlib/"
_ ' PREFIX=/var/tmp/dist/nsis' -%]
scons [% scons_args %]
scons [% scons_args %] install
diff --git a/projects/nsis/config b/projects/nsis/config
index 24adc36..81273ab 100644
--- a/projects/nsis/config
+++ b/projects/nsis/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 2.51
+version: 3.03
filename: 'nsis-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
var:
container:
@@ -16,11 +16,9 @@ input_files:
- project: container-image
- filename: 'nsis-[% c("version") %].tar.bz2'
URL: 'https://downloads.sourceforge.net/nsis/nsis-[% c("version") %]-src.tar.bz2'
- sha256sum: 43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
- - name: debian
- URL: 'http://http.debian.net/debian/pool/main/n/nsis/nsis_2.51-1.debian.tar.xz'
- sha256sum: 1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
- - filename: nsis-missing-unistd-include.patch
+ sha256sum: abae7f4488bc6de7a4dd760d5f0e7cd3aad7747d4d7cd85786697c8991695eaa
- filename: no-insert-timestamp.patch
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
+ - name: zlib
+ project: zlib
diff --git a/projects/nsis/no-insert-timestamp.patch b/projects/nsis/no-insert-timestamp.patch
index e71af21..8053b82 100644
--- a/projects/nsis/no-insert-timestamp.patch
+++ b/projects/nsis/no-insert-timestamp.patch
@@ -1,27 +1,27 @@
-diff -ur nsis-2.51-src/SCons/Config/gnu nsis-2.51-src.n/SCons/Config/gnu
---- nsis-2.51-src/SCons/Config/gnu 2018-05-24 20:40:06.508000000 +0200
-+++ nsis-2.51-src.n/SCons/Config/gnu 2018-05-24 21:04:16.501000000 +0200
-@@ -89,6 +89,7 @@
+diff -ur nsis-3.03-src/SCons/Config/gnu nsis-3.03-src.n/SCons/Config/gnu
+--- nsis-3.03-src/SCons/Config/gnu 2017-10-06 15:30:20.000000000 -0400
++++ nsis-3.03-src.n/SCons/Config/gnu 2018-06-17 13:26:05.945495151 -0400
+@@ -102,6 +102,7 @@
+ stub_env.Append(LINKFLAGS = ['$NODEFLIBS_FLAG']) # no standard libraries
stub_env.Append(LINKFLAGS = ['$ALIGN_FLAG']) # 512 bytes align
- stub_env.Append(LINKFLAGS = ['-Wl,-e,_WinMain@16']) # entry point
stub_env.Append(LINKFLAGS = ['$MAP_FLAG']) # generate map file
+stub_env.Append(LINKFLAGS = ['-Wl,--no-insert-timestamp']) # remove timestamps for reproducible builds
- ### makensis environment
-
-@@ -125,6 +126,7 @@
+ stub_uenv = stub_env.Clone()
+ stub_uenv.Append(CPPDEFINES = ['_UNICODE', 'UNICODE'])
+@@ -142,6 +143,7 @@
plugin_env.Append(LINKFLAGS = ['$MAP_FLAG']) # generate map file
- plugin_env.Append(LINKFLAGS = ['-static-libgcc']) # Make sure libgcc is statically linked in, for the plugins to work.
- plugin_env.Append(LINKFLAGS = ['-static-libstdc++']) # Make sure libstdc++ is statically linked in, for the plugins to work.
+ plugin_env.Append(LINKFLAGS = ['-static-libgcc']) # remove libgcc*.dll dependency
+ plugin_env.Append(LINKFLAGS = ['-static-libstdc++']) # remove libstdc++*.dll dependency
+plugin_env.Append(LINKFLAGS = ['-Wl,--no-insert-timestamp']) # remove timestamps for reproducible builds
- ### cross-platform util environment
-
-@@ -148,6 +150,7 @@
+ plugin_uenv = plugin_env.Clone()
+ plugin_uenv.Append(CPPDEFINES = ['_UNICODE', 'UNICODE'])
+@@ -181,6 +183,7 @@
util_env.Append(LINKFLAGS = ['-mwindows']) # build windows executables
util_env.Append(LINKFLAGS = ['$ALIGN_FLAG']) # 512 bytes align
+util_env.Append(LINKFLAGS = ['-Wl,--no-insert-timestamp']) # remove timestamps for reproducible builds
+
conf = FlagsConfigure(util_env)
- if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']:
diff --git a/projects/nsis/nsis-missing-unistd-include.patch b/projects/nsis/nsis-missing-unistd-include.patch
deleted file mode 100644
index 4f4fdd2..0000000
--- a/projects/nsis/nsis-missing-unistd-include.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- nsis-2.46-src.old/Source/util.h 2009-03-28 09:47:26.000000000 +0000
-+++ nsis-2.46-src/Source/util.h 2012-01-16 12:22:14.967416817 +0000
-@@ -17,6 +17,8 @@
- #ifndef _UTIL_H_
- #define _UTIL_H_
-
-+#include <unistd.h>
-+
- #include <string> // for std::string
-
- #include "boost/scoped_ptr.hpp" // for boost::scoped_ptr
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 52678ed..65c752b 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -43,11 +43,6 @@ mkdir -p "$TBDIR/$MEEKPROFILEPATH/extensions"
# Extract the MAR tools.
unzip -d $rootdir $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip
MARTOOLS=$rootdir/mar-tools
-[% IF c("var/windows-x86_64") -%]
- # Workaround for bug 24477
- rm -Rf $MARTOOLS
- unzip -d $rootdir $rootdir/mar-tools-linux32.zip
-[% END -%]
mv [% c('input_files_by_name/tor-launcher') %] "$TBDIR/$EXTSPATH/tor-launcher(a)torproject.org.xpi"
mv [% c('input_files_by_name/torbutton') %] "$TBDIR/$EXTSPATH/torbutton(a)torproject.org.xpi"
@@ -241,6 +236,14 @@ popd
[% IF c("var/windows") %]
+ # We need to install a recent version of python-pefile so that it works
+ # in a x86_64 container:
+ # https://github.com/TheTorProject/tor-messenger-build/pull/10
+ tar xf $rootdir/[% c('input_files_by_name/python-pefile') %]
+ cd $(echo [% c('input_files_by_name/python-pefile') %] | sed s/\.tar\.gz$//)
+ python setup.py install --user
+ cd ..
+
tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/nsis') %]
export PATH="/var/tmp/dist/nsis/bin:$PATH"
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index 225a0bb..820755c 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -28,17 +28,16 @@ targets:
windows:
var:
arch_deps:
- - python-pefile
+ - python-future
+ pre_pkginst: |
+ # enable jessie-backports for python-future
+ echo 'deb http://ftp.debian.org/debian jessie-backports main' >> /etc/apt/sources.list
windows-i686:
var:
mar_osname: win32
windows-x86_64:
var:
mar_osname: win64
- # We use a 32bit container to be able to use a 32bit nsis and
- # pe_checksum_fix.py
- container:
- arch: i386
input_files:
- project: container-image
@@ -79,18 +78,13 @@ input_files:
enable: '[% c("var/osx") %]'
- project: nsis
name: nsis
- target:
- - '[% c("var/channel") %]'
- - torbrowser-windows-i686
enable: '[% c("var/windows") %]'
- name: tbb-windows-installer
project: tbb-windows-installer
enable: '[% c("var/windows") %]'
- filename: pe_checksum_fix.py
enable: '[% c("var/windows") %]'
- # Workaround for bug 24477
- - URL: https://archive.torproject.org/tor-package-archive/torbrowser/7.5a7/mar-too…
- sig_ext: asc
- file_gpg_id: 1
- gpg_keyring: torbrowser.gpg
- enable: '[% c("var/windows-x86_64") %]'
+ - name: python-pefile
+ URL: https://files.pythonhosted.org/packages/7e/9b/f99171190f04cd23768547dd34533…
+ sha256sum: 675c35ee0e1677db9e80d2f48d8a7ff2cf38e6207e8cd5e2a2c6d126db025854
+ enable: '[% c("var/windows") %]'
1
0

[tor-browser-build/master] Bug 26362: Use old MAR format for update file creation
by boklm@torproject.org 19 Jun '18
by boklm@torproject.org 19 Jun '18
19 Jun '18
commit befc4910feb0eee2016e10000ed31e3fea7ef6b1
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Jun 19 09:29:37 2018 +0000
Bug 26362: Use old MAR format for update file creation
Mozilla switched from Bzip2 to LZMA as compression algorithm for MAR
files during th Firefox 56. That means esr52-based Tor Browsers don't
understand LZMA yet. Thus, we still use Bzip2 for the first esr60-based
MAR files and switch afterwards to LZMA.
---
Makefile | 8 ++++----
projects/tor-browser/build | 3 +++
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/Makefile b/Makefile
index 4c21a83..80e9983 100644
--- a/Makefile
+++ b/Makefile
@@ -113,13 +113,13 @@ signtag-alpha: submodule-update
incrementals-release: submodule-update
$(rbm) build release --step update_responses_config --target release --target create_unsigned_incrementals
tools/update-responses/download_missing_versions release
- tools/update-responses/gen_incrementals release
+ MAR_OLD_FORMAT=1 tools/update-responses/gen_incrementals release
$(rbm) build release --step hash_incrementals --target release
incrementals-alpha: submodule-update
$(rbm) build release --step update_responses_config --target alpha --target create_unsigned_incrementals
tools/update-responses/download_missing_versions alpha
- tools/update-responses/gen_incrementals alpha
+ MAR_OLD_FORMAT=1 tools/update-responses/gen_incrementals alpha
$(rbm) build release --step hash_incrementals --target alpha
update_responses-release: submodule-update
@@ -134,13 +134,13 @@ dmg2mar-release: submodule-update
$(rbm) build release --step update_responses_config --target release --target signed
$(rbm) build release --step dmg2mar --target release --target signed
tools/update-responses/download_missing_versions release
- CHECK_CODESIGNATURE_EXISTS=1 MAR_SKIP_EXISTING=1 tools/update-responses/gen_incrementals release
+ CHECK_CODESIGNATURE_EXISTS=1 MAR_SKIP_EXISTING=1 MAR_OLD_FORMAT=1 tools/update-responses/gen_incrementals release
dmg2mar-alpha: submodule-update
$(rbm) build release --step update_responses_config --target alpha --target signed
$(rbm) build release --step dmg2mar --target alpha --target signed
tools/update-responses/download_missing_versions alpha
- CHECK_CODESIGNATURE_EXISTS=1 MAR_SKIP_EXISTING=1 tools/update-responses/gen_incrementals alpha
+ CHECK_CODESIGNATURE_EXISTS=1 MAR_SKIP_EXISTING=1 MAR_OLD_FORMAT=1 tools/update-responses/gen_incrementals alpha
submodule-update:
git submodule update --init
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 19aa657..52678ed 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -268,6 +268,9 @@ popd
cd $distdir
[% IF c("var/build_mar") -%]
+ # Let's use the bzip2 format for now so that users can update to the first
+ # esr60-based Tor Browser.
+ export MAR_OLD_FORMAT=1
# Create full MAR file and compressed package.
MAR_FILE=tor-browser-[% c("var/mar_osname") %]-[% c("var/torbrowser_version") %]_${PKG_LOCALE}.mar
MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE "$TBDIR"
1
0

19 Jun '18
commit 1e43e9c6ed448d9ca91235c38f5ea0b4d43c71cb
Merge: 65b5371 3e1c144
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Jun 19 08:17:29 2018 +0000
Merge remote-tracking branch 'arthur/26128+1'
src/chrome/content/torbutton.js | 2 +
src/modules/noscript-control.js | 126 ++++++++++++++++++++++++++++++++++++++++
src/modules/security-prefs.js | 8 +--
3 files changed, 131 insertions(+), 5 deletions(-)
1
0

[torbutton/master] Bug 26128: Adapt security slider to WebExtensions version of NoScript
by gk@torproject.org 19 Jun '18
by gk@torproject.org 19 Jun '18
19 Jun '18
commit 3e1c144a729f373b3ee70fd8d2a16646b2b6ad12
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Wed Jun 6 21:54:58 2018 -0700
Bug 26128: Adapt security slider to WebExtensions version of NoScript
We try to maintain the same security slider behavior as for the
legacy version of NoScript.
This patch uses a few tricks:
1. Using a LegacyExtensionContext (defined in LegacyExtensionsUtils.jsm)
to send JSON objects to NoScript via sendMessage.
2. Taking advantage of an existing invocation of
browser.runtime.onMessage.addListener(...) in NoScript's code that accepts
a JSON object for updating NoScript's settings.
3. Providing NoScript with settings for a "site" whose "domain" is "http:",
which causes NoScript to match non-https sites.
(Thanks to Sukhbir Singh for help.)
---
src/chrome/content/torbutton.js | 2 +
src/modules/noscript-control.js | 126 ++++++++++++++++++++++++++++++++++++++++
src/modules/security-prefs.js | 8 +--
3 files changed, 131 insertions(+), 5 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 7f750bc..11548d4 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -11,6 +11,7 @@ let { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
let { showDialog } = Cu.import("resource://torbutton/modules/utils.js", {});
let { getLocale, unescapeTorString } = Cu.import("resource://torbutton/modules/utils.js", {});
let SecurityPrefs = Cu.import("resource://torbutton/modules/security-prefs.js", {});
+let NoScriptControl = Cu.import("resource://torbutton/modules/noscript-control.js", {});
let { bindPrefAndInit, observe } = Cu.import("resource://torbutton/modules/utils.js", {});
Cu.importGlobalProperties(["XMLHttpRequest"]);
@@ -242,6 +243,7 @@ function torbutton_init() {
torbutton_log(3, 'called init()');
SecurityPrefs.initialize();
+ NoScriptControl.initialize();
if (m_tb_wasinited) {
return;
diff --git a/src/modules/noscript-control.js b/src/modules/noscript-control.js
new file mode 100644
index 0000000..6270efe
--- /dev/null
+++ b/src/modules/noscript-control.js
@@ -0,0 +1,126 @@
+// # NoScript settings control (for binding to Security Slider)
+
+/* jshint esversion:6 */
+
+// ## Utilities
+
+const { utils: Cu } = Components;
+const { LegacyExtensionContext } =
+ Cu.import("resource://gre/modules/LegacyExtensionsUtils.jsm", {});
+const { bindPrefAndInit } =
+ Cu.import("resource://torbutton/modules/utils.js", {});
+
+// ## NoScript settings
+
+// Minimum and maximum capability states as controlled by NoScript.
+const max_caps = ["fetch", "font", "frame", "media", "other", "script", "webgl"];
+const min_caps = ["frame", "other"];
+
+// Untrusted capabilities for [Standard, Safer, Safest] safety levels.
+const untrusted_caps = [
+ max_caps, // standard safety: neither http nor https
+ ["frame", "font", "other"], // safer: http
+ min_caps, // safest: neither http nor https
+];
+
+// Default capabilities for [Standard, Safer, Safest] safety levels.
+const default_caps = [
+ max_caps, // standard: both http and https
+ ["fetch", "font", "frame", "other", "script", "webgl"], // safer: https only
+ min_caps, // safest: both http and https
+];
+
+// __noscriptSettings(safetyLevel)__.
+// Produces NoScript settings with policy according to
+// the safetyLevel which can be:
+// 0 = Standard, 1 = Safer, 2 = Safest
+//
+// At the "Standard" safety level, we leave all sites at
+// default with maximal capabilities. Essentially no content
+// is blocked.
+//
+// At "Safer", we set all http sites to untrusted,
+// and all https sites to default. Scripts are only permitted
+// on https sites. Neither type of site is supposed to allow
+// media, but both allow fonts (as we used in legacy NoScript).
+//
+// At "Safest", all sites are at default with minimal
+// capabilities. Most things are blocked.
+let noscriptSettings = safetyLevel => (
+ {
+ "type": "NoScript.updateSettings",
+ "policy": {
+ "DEFAULT": {
+ "capabilities": default_caps[safetyLevel],
+ "temp": false
+ },
+ "TRUSTED": {
+ "capabilities": max_caps,
+ "temp": false
+ },
+ "UNTRUSTED": {
+ "capabilities": untrusted_caps[safetyLevel],
+ "temp": false
+ },
+ "sites": {
+ "trusted": [],
+ "untrusted": [[], ["http:"], []][safetyLevel],
+ "custom": {},
+ "temp": []
+ },
+ "enforced": true,
+ "autoAllowTop": false
+ },
+ "tabId": -1
+ });
+
+// ## Communications
+
+// The extension ID for NoScript (WebExtension)
+const noscriptID = "{73a6fe31-595d-460b-a920-fcc0f8843232}";
+
+// A mock extension object that can communicate with another extension
+// via the WebExtensions sendMessage/onMessage mechanism.
+let extensionContext = new LegacyExtensionContext({ id : noscriptID });
+
+// The component that handles WebExtensions' sendMessage.
+let messageManager = extensionContext.messenger.messageManagers[0];
+
+// __setNoScriptSettings(settings)__.
+// NoScript listens for internal settings with onMessage. We can send
+// a new settings JSON object according to NoScript's
+// protocol and these are accepted! See the use of
+// `browser.runtime.onMessage.addListener(...)` in NoScript's bg/main.js.
+let sendNoScriptSettings = settings =>
+ extensionContext.messenger.sendMessage(messageManager, settings, noscriptID);
+
+// __setNoScriptSafetyLevel(safetyLevel)__.
+// Set NoScript settings according to a particular safety level
+// (security slider level): 0 = Standard, 1 = Safer, 2 = Safest
+let setNoScriptSafetyLevel = safetyLevel =>
+ sendNoScriptSettings(noscriptSettings(safetyLevel));
+
+// ## Slider binding
+
+// __securitySliderToSafetyLevel(sliderState)__.
+// Converts the "extensions.torbutton.security_slider" pref value
+// to a "safety level" value: 0 = Standard, 1 = Safer, 2 = Safest
+let securitySliderToSafetyLevel = sliderState => [undefined, 2, 1, 1, 0][sliderState];
+
+// Ensure binding only occurs once.
+let initialized = false;
+
+// __initialize()__.
+// The main function that binds the NoScript settings to the security
+// slider pref state.
+var initialize = () => {
+ if (initialized) {
+ return;
+ }
+ bindPrefAndInit(
+ "extensions.torbutton.security_slider",
+ sliderState => setNoScriptSafetyLevel(securitySliderToSafetyLevel(sliderState)));
+};
+
+// Export initialize() function for external use.
+let EXPORTED_SYMBOLS = ["initialize"];
diff --git a/src/modules/security-prefs.js b/src/modules/security-prefs.js
index 3d3630b..d269a1f 100644
--- a/src/modules/security-prefs.js
+++ b/src/modules/security-prefs.js
@@ -16,19 +16,17 @@ let log = (level, msg) => logger.log(level, msg);
// __kSecuritySettings__.
// A table of all prefs bound to the security slider, and the value
// for each security setting. Note that 2-m and 3-m are identical,
-// corresponding to the old 2-medium-high setting.
+// corresponding to the old 2-medium-high setting. We also separately
+// bind NoScript settings to the extensions.torbutton.security_slider
+// (see noscript-control.js).
const kSecuritySettings = {
// Preference name : [0, 1-high 2-m 3-m 4-low]
"javascript.options.ion" : [, false, false, false, true ],
"javascript.options.baselinejit" : [, false, false, false, true ],
"javascript.options.native_regexp" : [, false, false, false, true ],
- "noscript.forbidMedia" : [, true, true, true, false],
"media.webaudio.enabled" : [, false, false, false, true ],
"mathml.disabled" : [, true, true, true, false],
"gfx.font_rendering.opentype_svg.enabled" : [, false, false, false, true ],
- "noscript.global" : [, false, false, false, true ],
- "noscript.globalHttpsWhitelist" : [, false, true, true, false],
- "noscript.forbidFonts" : [, true, false, false, false],
"svg.in-content.enabled" : [, false, true, true, true ],
};
1
0

[tor-browser/tor-browser-60.0.1esr-8.0-1] Bug 23247: Communicating security expectations for .onion
by gk@torproject.org 19 Jun '18
by gk@torproject.org 19 Jun '18
19 Jun '18
commit 06fd55e2e061c7348f86d7f0ced3d64ffac9baad
Author: Richard Pospesel <richard(a)torproject.org>
Date: Fri Jun 8 13:38:40 2018 -0700
Bug 23247: Communicating security expectations for .onion
Encrypting pages hosted on Onion Services with SSL/TLS is redundant
(in terms of hiding content) as all traffic within the Tor network is
already fully encrypted. Therefore, serving HTTP pages from an Onion
Service is more or less fine.
Prior to this patch, Tor Browser would mostly treat pages delivered
via Onion Services as well as pages delivered in the ordinary fashion
over the internet in the same way. This created some inconsistencies
in behaviour and misinformation presented to the user relating to the
security of pages delivered via Onion Services:
- HTTP Onion Service pages did not have any 'lock' icon indicating
the site was secure
- HTTP Onion Service pages would be marked as unencrypted in the Page
Info screen
- Mixed-mode content restrictions did not apply to HTTP Onion Service
pages embedding Non-Onion HTTP content
This patch fixes the above issues, and also adds several new 'Onion'
icons to the mix to indicate all of the various permutations of Onion
Services hosted HTTP or HTTPS pages with HTTP or HTTPS content.
Strings for Onion Service Page Info page are pulled from Torbutton's
localization strings.
---
browser/base/content/browser.js | 66 ++++++++++++++--------
browser/base/content/pageinfo/security.js | 57 +++++++++++++++----
.../shared/identity-block/identity-block.inc.css | 20 +++++++
.../shared/identity-block/onion-disabled.svg | 9 +++
.../themes/shared/identity-block/onion-lock.svg | 9 +++
browser/themes/shared/identity-block/onion.svg | 8 +++
browser/themes/shared/jar.inc.mn | 3 +
dom/base/nsContentUtils.cpp | 21 +++++++
dom/base/nsContentUtils.h | 5 ++
dom/base/nsGlobalWindowOuter.cpp | 3 +-
dom/presentation/PresentationRequest.cpp | 3 +-
dom/security/nsMixedContentBlocker.cpp | 17 +++++-
security/manager/ssl/nsSecureBrowserUIImpl.cpp | 57 +++++++++++--------
13 files changed, 216 insertions(+), 62 deletions(-)
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 68bbe3af99e9..fbfbf3e809ca 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -7507,6 +7507,10 @@ var gIdentityHandler = {
Services.prefs.getBoolPref("security.insecure_password.ui.enabled");
},
+ get _uriIsOnionHost() {
+ return this._uriHasHost ? this._uri.host.toLowerCase().endsWith(".onion") : false;
+ },
+
// smart getters
get _identityPopup() {
delete this._identityPopup;
@@ -7806,12 +7810,12 @@ var gIdentityHandler = {
get pointerlockFsWarningClassName() {
// Note that the fullscreen warning does not handle _isSecureInternalUI.
if (this._uriHasHost && this._isEV) {
- return "verifiedIdentity";
+ return this._uriIsOnionHost ? "onionVerifiedIdentity" : "verifiedIdentity";
}
if (this._uriHasHost && this._isSecure) {
- return "verifiedDomain";
+ return this._uriIsOnionHost ? "onionVerifiedDomain" : "verifiedDomain";
}
- return "unknownIdentity";
+ return this._uriIsOnionHost ? "onionUnknownIdentity" : "unknownIdentity";
},
/**
@@ -7832,9 +7836,10 @@ var gIdentityHandler = {
let brandBundle = document.getElementById("bundle_brand");
icon_label = brandBundle.getString("brandShorterName");
} else if (this._uriHasHost && this._isEV) {
- this._identityBox.className = "verifiedIdentity";
+ let uriIsOnionHost = this._uriIsOnionHost;
+ this._identityBox.className = uriIsOnionHost ? "onionVerifiedIdentity" : "verifiedIdentity";
if (this._isMixedActiveContentBlocked) {
- this._identityBox.classList.add("mixedActiveBlocked");
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedActiveBlocked" : "mixedActiveBlocked");
}
if (!this._isCertUserOverridden) {
@@ -7860,10 +7865,17 @@ var gIdentityHandler = {
let extensionName = this._pageExtensionPolicy.name;
icon_label = gNavigatorBundle.getFormattedString(
"identity.extension.label", [extensionName]);
- } else if (this._uriHasHost && this._isSecure) {
- this._identityBox.className = "verifiedDomain";
+ // _isSecure implicitly includes onion services, which may not have an SSL certificate
+ } else if (this._uriHasHost && this._isSecure && this._sslStatus != null) {
+ let uriIsOnionHost = this._uriIsOnionHost;
+ if (uriIsOnionHost) {
+ this._identityBox.className = this._sslStatus.serverCert.isSelfSigned ? "onionSelfSigned" : "onionVerifiedDomain";
+ } else {
+ this._identityBox.className = "verifiedDomain";
+ }
+
if (this._isMixedActiveContentBlocked) {
- this._identityBox.classList.add("mixedActiveBlocked");
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedActiveBlocked" : "mixedActiveBlocked");
}
if (!this._isCertUserOverridden) {
// It's a normal cert, verifier is the CA Org.
@@ -7878,31 +7890,37 @@ var gIdentityHandler = {
// For net errors we should not show notSecure as it's likely confusing
this._identityBox.className = "unknownIdentity";
} else {
+ let uriIsOnionHost = this._uriIsOnionHost;
if (this._isBroken) {
- this._identityBox.className = "unknownIdentity";
+ this._identityBox.className = uriIsOnionHost ? "onionUnknownIdentity" : "unknownIdentity";
if (this._isMixedActiveContentLoaded) {
- this._identityBox.classList.add("mixedActiveContent");
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedActiveContent" : "mixedActiveContent");
} else if (this._isMixedActiveContentBlocked) {
- this._identityBox.classList.add("mixedDisplayContentLoadedActiveBlocked");
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedDisplayContentLoadedActiveBlocked" : "mixedDisplayContentLoadedActiveBlocked");
} else if (this._isMixedPassiveContentLoaded) {
- this._identityBox.classList.add("mixedDisplayContent");
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedDisplayContent" : "mixedDisplayContent");
} else {
this._identityBox.classList.add("weakCipher");
}
} else {
- let warnOnInsecure = Services.prefs.getBoolPref("security.insecure_connection_icon.enabled") ||
- (Services.prefs.getBoolPref("security.insecure_connection_icon.pbmode.enabled") &&
- PrivateBrowsingUtils.isWindowPrivate(window));
- let className = warnOnInsecure ? "notSecure" : "unknownIdentity";
- this._identityBox.className = className;
-
- let warnTextOnInsecure = Services.prefs.getBoolPref("security.insecure_connection_text.enabled") ||
- (Services.prefs.getBoolPref("security.insecure_connection_text.pbmode.enabled") &&
- PrivateBrowsingUtils.isWindowPrivate(window));
- if (warnTextOnInsecure) {
- icon_label = gNavigatorBundle.getString("identity.notSecure.label");
- this._identityBox.classList.add("notSecureText");
+ if (!uriIsOnionHost) {
+ let warnOnInsecure = Services.prefs.getBoolPref("security.insecure_connection_icon.enabled") ||
+ (Services.prefs.getBoolPref("security.insecure_connection_icon.pbmode.enabled") &&
+ PrivateBrowsingUtils.isWindowPrivate(window));
+ let className = warnOnInsecure ? "notSecure" : "unknownIdentity";
+ this._identityBox.className = className;
+
+ let warnTextOnInsecure = Services.prefs.getBoolPref("security.insecure_connection_text.enabled") ||
+ (Services.prefs.getBoolPref("security.insecure_connection_text.pbmode.enabled") &&
+ PrivateBrowsingUtils.isWindowPrivate(window));
+ if (warnTextOnInsecure) {
+ icon_label = gNavigatorBundle.getString("identity.notSecure.label");
+ this._identityBox.classList.add("notSecureText");
+ }
+ // http onion is secure
+ } else {
+ this._identityBox.className = "onionUnknownIdentity";
}
}
if (this._hasInsecureLoginForms) {
diff --git a/browser/base/content/pageinfo/security.js b/browser/base/content/pageinfo/security.js
index 2d6c5fb1d396..5a827488ccad 100644
--- a/browser/base/content/pageinfo/security.js
+++ b/browser/base/content/pageinfo/security.js
@@ -12,6 +12,10 @@ ChromeUtils.defineModuleGetter(this, "LoginHelper",
ChromeUtils.defineModuleGetter(this, "PluralForm",
"resource://gre/modules/PluralForm.jsm");
+XPCOMUtils.defineLazyGetter(this, "gTorButtonBundle", function() {
+ return Services.strings.createBundle("chrome://torbutton/locale/torbutton.properties");
+});
+
var security = {
init(uri, windowInfo) {
this.uri = uri;
@@ -48,6 +52,8 @@ var security = {
(ui.state & Ci.nsIWebProgressListener.STATE_IS_INSECURE);
var isEV =
(ui.state & Ci.nsIWebProgressListener.STATE_IDENTITY_EV_TOPLEVEL);
+ var isOnion = hostName.endsWith(".onion");
+
ui.QueryInterface(nsISSLStatusProvider);
var status = ui.SSLStatus;
@@ -65,6 +71,7 @@ var security = {
isBroken,
isMixed,
isEV,
+ isOnion,
cert,
certificateTransparency: undefined
};
@@ -121,6 +128,7 @@ var security = {
isBroken,
isMixed,
isEV,
+ isOnion,
cert: null,
certificateTransparency: null
};
@@ -257,20 +265,49 @@ function securityOnLoad(uri, windowInfo) {
}
msg2 = pkiBundle.getString("pageInfo_Privacy_None2");
} else if (info.encryptionStrength > 0) {
- hdr = pkiBundle.getFormattedString("pageInfo_EncryptionWithBitsAndProtocol",
- [info.encryptionAlgorithm,
- info.encryptionStrength + "",
- info.version]);
+ if (!info.isOnion) {
+ hdr = pkiBundle.getFormattedString("pageInfo_EncryptionWithBitsAndProtocol",
+ [info.encryptionAlgorithm,
+ info.encryptionStrength + "",
+ info.version]);
+ } else {
+ try {
+ hdr = gTorButtonBundle.formatStringFromName("pageInfo_OnionEncryptionWithBitsAndProtocol",
+ [info.encryptionAlgorithm,
+ info.encryptionStrength + "",
+ info.version], 3);
+ } catch(err) {
+ hdr = "Connection Encrypted (Onion Service, "
+ + info.encryptionAlgorithm
+ + ", "
+ + info.encryptionStrength
+ + " bit keys, "
+ + info.version
+ + ")";
+ }
+ }
msg1 = pkiBundle.getString("pageInfo_Privacy_Encrypted1");
msg2 = pkiBundle.getString("pageInfo_Privacy_Encrypted2");
security._cert = info.cert;
} else {
- hdr = pkiBundle.getString("pageInfo_NoEncryption");
- if (info.hostName != null)
- msg1 = pkiBundle.getFormattedString("pageInfo_Privacy_None1", [info.hostName]);
- else
- msg1 = pkiBundle.getString("pageInfo_Privacy_None4");
- msg2 = pkiBundle.getString("pageInfo_Privacy_None2");
+ if (!info.isOnion) {
+ hdr = pkiBundle.getString("pageInfo_NoEncryption");
+ if (info.hostName != null) {
+ msg1 = pkiBundle.getFormattedString("pageInfo_Privacy_None1", [info.hostName]);
+ } else {
+ msg1 = pkiBundle.getString("pageInfo_Privacy_None4");
+ }
+ msg2 = pkiBundle.getString("pageInfo_Privacy_None2");
+ } else {
+ try {
+ hdr = gTorButtonBundle.GetStringFromName("pageInfo_OnionEncryption");
+ } catch (err) {
+ hdr = "Connection Encrypted (Onion Service)";
+ }
+
+ msg1 = pkiBundle.getString("pageInfo_Privacy_Encrypted1");
+ msg2 = pkiBundle.getString("pageInfo_Privacy_Encrypted2");
+ }
}
setText("security-technical-shortform", hdr);
setText("security-technical-longform1", msg1);
diff --git a/browser/themes/shared/identity-block/identity-block.inc.css b/browser/themes/shared/identity-block/identity-block.inc.css
index ac85070708c4..36bab9f13715 100644
--- a/browser/themes/shared/identity-block/identity-block.inc.css
+++ b/browser/themes/shared/identity-block/identity-block.inc.css
@@ -200,6 +200,26 @@
visibility: visible;
}
+#urlbar[pageproxystate="valid"] > #identity-box.onionUnknownIdentity > #connection-icon,
+#urlbar[pageproxystate="valid"] > #identity-box.onionSelfSigned > #connection-icon {
+ list-style-image: url(chrome://browser/skin/onion.svg);
+ visibility: visible;
+}
+
+#urlbar[pageproxystate="valid"] > #identity-box.onionVerifiedDomain > #connection-icon,
+#urlbar[pageproxystate="valid"] > #identity-box.onionVerifiedIdentity > #connection-icon,
+#urlbar[pageproxystate="valid"] > #identity-box.onionMixedActiveBlocked > #connection-icon {
+ list-style-image: url(chrome://browser/skin/onion-lock.svg);
+ visibility: visible;
+}
+
+#urlbar[pageproxystate="valid"] > #identity-box.onionMixedActiveContent > #connection-icon,
+#urlbar[pageproxystate="valid"] > #identity-box.onionMixedDisplayContentLoadedActiveBlocked > #connection-icon,
+#urlbar[pageproxystate="valid"] > #identity-box.onionMixedDisplayContent > #connection-icon {
+ list-style-image: url(chrome://browser/skin/onion-disabled.svg);
+ visibility: visible;
+}
+
#identity-box.extensionPage > #extension-icon {
list-style-image: url(chrome://mozapps/skin/extensions/extensionGeneric-16.svg);
visibility: visible;
diff --git a/browser/themes/shared/identity-block/onion-disabled.svg b/browser/themes/shared/identity-block/onion-disabled.svg
new file mode 100644
index 000000000000..f5b20a87a923
--- /dev/null
+++ b/browser/themes/shared/identity-block/onion-disabled.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>onion-disabled</title>
+ <defs></defs>
+ <g id="onion-disabled" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <path d="M3.55670557,13.5290809 C2.58943965,12.7067569 2,11.5773827 2,10.2383803 C2,8.40140797 3.11044937,6.84614642 4.80245393,5.95790561 C4.86922061,5.92314081 4.937062,5.88953483 5.00557508,5.85697179 C5.34048317,5.68140952 5.95495153,5.31464081 6.18735866,4.8796172 C6.261514,4.74090562 6.26057363,4.55305979 6.20885297,4.4070476 C6.11172559,4.13310092 5.57517408,3.53792744 5.57517408,3.53792744 L6.39988357,3 L7.47070238,3.38224206 C7.23186151,2.5028722 6.97233174,1.62308364 8.87366696,4.4408921e-16 L8.87366696,0.000113687544 C8.14572562,0.965320936 8.77600936,1.33867083 8.69392696,2.02329722 C9.36752565,0.933374736 10.7903253,0.789787368 11.8884333,0.334923505 C10.6431583,1.59850841 9.72300609,3.05795044 8.87524898,3.88361241 L9.6358507,4.15511863 C9.6358507,4.15511863 9.27501511,4.42489353 9.52743882,4.95911272 C9.65035936,5.21926936 9.85710767,5.38741514 10.0560643,5.49588134 C10.2394376,5.55069385 10.4187806,5.61269109 10.5936905,5.68164129 C10.7858529,5.7574053 10.972
3418,5.84145128 11.1524919,5.93329454 L3.55670557,13.5290809 Z M5.3590214,14.5551922 L12.7674177,7.1467959 C13.5406039,7.99044704 14,9.05632625 14,10.2383803 C14,13.0968586 11.3137496,15 8,15 C7.05229776,15 6.15591919,14.8443406 5.3590214,14.5551922 Z" id="Combined-Shape" fill="#4A4A4A" fill-rule="nonzero"></path>
+ <path d="M13.7928932,1.29289322 C14.1834175,0.902368927 14.8165825,0.902368927 15.2071068,1.29289322 C15.5976311,1.68341751 15.5976311,2.31658249 15.2071068,2.70710678 L2.70710678,15.2071068 C2.31658249,15.5976311 1.68341751,15.5976311 1.29289322,15.2071068 C0.902368927,14.8165825 0.902368927,14.1834175 1.29289322,13.7928932 L13.7928932,1.29289322 Z" id="Line-2" fill="#D92D21" fill-rule="nonzero"></path>
+ </g>
+</svg>
diff --git a/browser/themes/shared/identity-block/onion-lock.svg b/browser/themes/shared/identity-block/onion-lock.svg
new file mode 100644
index 000000000000..c88247eb19d7
--- /dev/null
+++ b/browser/themes/shared/identity-block/onion-lock.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>onion+lock</title>
+ <defs></defs>
+ <g id="onion+lock" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <path d="M6.12228848,14.9544711 C3.22461281,14.6498012 1,12.8396709 1,10.2383803 C1,8.40140797 2.11044937,6.84614642 3.80245393,5.95790561 C3.86922061,5.92314081 3.937062,5.88953483 4.00557508,5.85697179 C4.34048317,5.68140952 4.95495153,5.31464081 5.18735866,4.8796172 C5.261514,4.74090562 5.26057363,4.55305979 5.20885297,4.4070476 C5.11172559,4.13310092 4.57517408,3.53792744 4.57517408,3.53792744 L5.39988357,3 L6.47070238,3.38224206 C6.23186151,2.5028722 5.97233174,1.62308364 7.87366696,0 L7.87366696,0.000113687544 C7.14572562,0.965320936 7.77600936,1.33867083 7.69392696,2.02329722 C8.36752565,0.933374736 9.79032527,0.789787368 10.8884333,0.334923505 C9.64315826,1.59850841 8.72300609,3.05795044 7.87524898,3.88361241 L8.6358507,4.15511863 C8.6358507,4.15511863 8.27501511,4.42489353 8.52743882,4.95911272 C8.56957789,5.04829846 8.6215686,5.12667085 8.67971976,5.19553247 C7.54569301,5.94640706 6.80000003,7.23368269 6.80000003,8.70000013 L6.80000003,8.80234816 C6.31732959,9.1249
1448 6,9.67479474 6,10.3000002 L6,14.3000003 C6,14.530995 6.04331804,14.7517071 6.12228848,14.9544711 Z" id="Combined-Shape" fill="#589A0F" fill-rule="nonzero"></path>
+ <path d="M11.0000002,5.5 C9.22720009,5.5 7.80000003,6.92720006 7.80000003,8.70000013 L7.80000003,9.50000016 C7.35680001,9.50000016 7,9.85680017 7,10.3000002 L7,14.3000003 C7,14.7432004 7.35680001,15.1000004 7.80000003,15.1000004 L14.2000003,15.1000004 C14.6432003,15.1000004 15.0000003,14.7432004 15.0000003,14.3000003 L15.0000003,10.3000002 C15.0000003,9.85680017 14.6432003,9.50000016 14.2000003,9.50000016 L14.2000003,8.70000013 C14.2000003,6.92720006 12.7728002,5.5 11.0000002,5.5 Z M11.0000002,7.10000006 C11.8864002,7.10000006 12.6000002,7.81360009 12.6000002,8.70000013 L12.6000002,9.50000016 L9.4000001,9.50000016 L9.4000001,8.70000013 C9.4000001,7.81360009 10.1136001,7.10000006 11.0000002,7.10000006 Z" id="Shape" fill="#589A0F" fill-rule="nonzero"></path>
+ </g>
+</svg>
diff --git a/browser/themes/shared/identity-block/onion.svg b/browser/themes/shared/identity-block/onion.svg
new file mode 100644
index 000000000000..e102f41c5991
--- /dev/null
+++ b/browser/themes/shared/identity-block/onion.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>onion</title>
+ <defs></defs>
+ <g id="onion" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <path d="M7.47070238,3.38224206 C7.23186151,2.5028722 6.97233174,1.62308364 8.87366696,4.4408921e-16 L8.87366696,0.000113687544 C8.14572562,0.965320936 8.77600936,1.33867083 8.69392696,2.02329722 C9.36752565,0.933374736 10.7903253,0.789787368 11.8884333,0.334923505 C10.6431583,1.59850841 9.72300609,3.05795044 8.87524898,3.88361241 L9.6358507,4.15511863 C9.6358507,4.15511863 9.27501511,4.42489353 9.52743882,4.95911272 C9.65035936,5.21926936 9.85710767,5.38741514 10.0560643,5.49588134 C10.2394376,5.55069385 10.4187806,5.61269109 10.5936905,5.68164129 C12.6087813,6.47613299 14,8.18134675 14,10.2383803 C14,13.0968586 11.3137496,15 8,15 C4.68625036,15 2,13.0968586 2,10.2383803 C2,8.40140797 3.11044937,6.84614642 4.80245393,5.95790561 C4.86922061,5.92314081 4.937062,5.88953483 5.00557508,5.85697179 C5.34048317,5.68140952 5.95495153,5.31464081 6.18735866,4.8796172 C6.261514,4.74090562 6.26057363,4.55305979 6.20885297,4.4070476 C6.11172559,4.13310092 5.57517408,3.53792744 5.57517408
,3.53792744 L6.39988357,3 L7.47070238,3.38224206 Z" id="Combined-Shape" fill="#589A0F" fill-rule="nonzero"></path>
+ </g>
+</svg>
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
index 17debd82ddcd..3f59d7bfac19 100644
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
@@ -45,6 +45,9 @@
skin/classic/browser/connection-secure.svg (../shared/identity-block/connection-secure.svg)
skin/classic/browser/connection-mixed-passive-loaded.svg (../shared/identity-block/connection-mixed-passive-loaded.svg)
skin/classic/browser/connection-mixed-active-loaded.svg (../shared/identity-block/connection-mixed-active-loaded.svg)
+ skin/classic/browser/onion.svg (../shared/identity-block/onion.svg)
+ skin/classic/browser/onion-lock.svg (../shared/identity-block/onion-lock.svg)
+ skin/classic/browser/onion-disabled.svg (../shared/identity-block/onion-disabled.svg)
skin/classic/browser/identity-icon.svg (../shared/identity-block/identity-icon.svg)
skin/classic/browser/identity-icon-notice.svg (../shared/identity-block/identity-icon-notice.svg)
skin/classic/browser/info.svg (../shared/info.svg)
diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp
index 63e1ac06bf2d..8257283e65a2 100644
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -10039,6 +10039,27 @@ nsContentUtils::HttpsStateIsModern(nsIDocument* aDocument)
return false;
}
+/* static */ bool
+nsContentUtils::DocumentHasOnionURI(nsIDocument* aDocument)
+{
+ if (!aDocument) {
+ return false;
+ }
+
+ nsIURI* uri = aDocument->GetDocumentURI();
+ if (!uri) {
+ return false;
+ }
+
+ nsAutoCString host;
+ if (NS_SUCCEEDED(uri->GetHost(host))) {
+ bool hasOnionURI = StringEndsWith(host, NS_LITERAL_CSTRING(".onion"));
+ return hasOnionURI;
+ }
+
+ return false;
+}
+
/* static */ void
nsContentUtils::TryToUpgradeElement(Element* aElement)
{
diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h
index 9ef79a569ea3..246dabf340de 100644
--- a/dom/base/nsContentUtils.h
+++ b/dom/base/nsContentUtils.h
@@ -3050,6 +3050,11 @@ public:
static bool HttpsStateIsModern(nsIDocument* aDocument);
/**
+ * Returns true of the document's URI is a .onion
+ */
+ static bool DocumentHasOnionURI(nsIDocument* aDocument);
+
+ /**
* Try to upgrade an element.
* https://html.spec.whatwg.org/multipage/custom-elements.html#concept-try-upg…
*/
diff --git a/dom/base/nsGlobalWindowOuter.cpp b/dom/base/nsGlobalWindowOuter.cpp
index 7d947b653f70..e4b847406085 100644
--- a/dom/base/nsGlobalWindowOuter.cpp
+++ b/dom/base/nsGlobalWindowOuter.cpp
@@ -1495,7 +1495,8 @@ nsGlobalWindowOuter::ComputeIsSecureContext(nsIDocument* aDocument, SecureContex
return false;
}
- if (nsContentUtils::HttpsStateIsModern(aDocument)) {
+ if (nsContentUtils::HttpsStateIsModern(aDocument) ||
+ nsContentUtils::DocumentHasOnionURI(aDocument)) {
return true;
}
diff --git a/dom/presentation/PresentationRequest.cpp b/dom/presentation/PresentationRequest.cpp
index 4c00150a359d..577aa3dd739e 100644
--- a/dom/presentation/PresentationRequest.cpp
+++ b/dom/presentation/PresentationRequest.cpp
@@ -512,7 +512,8 @@ PresentationRequest::IsProhibitMixedSecurityContexts(nsIDocument* aDocument)
nsCOMPtr<nsIDocument> doc = aDocument;
while (doc && !nsContentUtils::IsChromeDoc(doc)) {
- if (nsContentUtils::HttpsStateIsModern(doc)) {
+ if (nsContentUtils::HttpsStateIsModern(doc) ||
+ nsContentUtils::DocumentHasOnionURI(doc)) {
return true;
}
diff --git a/dom/security/nsMixedContentBlocker.cpp b/dom/security/nsMixedContentBlocker.cpp
index adc0bfd80e88..7b0e5088a4de 100644
--- a/dom/security/nsMixedContentBlocker.cpp
+++ b/dom/security/nsMixedContentBlocker.cpp
@@ -694,7 +694,7 @@ nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect,
return NS_OK;
}
- // Check the parent scheme. If it is not an HTTPS page then mixed content
+ // Check the parent scheme. If it is not an HTTPS or .onion page then mixed content
// restrictions do not apply.
bool parentIsHttps;
nsCOMPtr<nsIURI> innerRequestingLocation = NS_GetInnermostURI(requestingLocation);
@@ -711,8 +711,19 @@ nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect,
return NS_OK;
}
if (!parentIsHttps) {
- *aDecision = ACCEPT;
- return NS_OK;
+ nsAutoCString parentHost;
+ rv = innerRequestingLocation->GetHost(parentHost);
+ if (NS_FAILED(rv)) {
+ NS_ERROR("requestingLocation->GetHost failed");
+ *aDecision = REJECT_REQUEST;
+ return NS_OK;
+ }
+
+ bool parentIsOnion = StringEndsWith(parentHost, NS_LITERAL_CSTRING(".onion"));
+ if (!parentIsOnion) {
+ *aDecision = ACCEPT;
+ return NS_OK;
+ }
}
nsCOMPtr<nsIDocShell> docShell = NS_CP_GetDocShellFromContext(aRequestingContext);
diff --git a/security/manager/ssl/nsSecureBrowserUIImpl.cpp b/security/manager/ssl/nsSecureBrowserUIImpl.cpp
index a2f24df7c4af..336901f0226e 100644
--- a/security/manager/ssl/nsSecureBrowserUIImpl.cpp
+++ b/security/manager/ssl/nsSecureBrowserUIImpl.cpp
@@ -294,36 +294,35 @@ static uint32_t GetSecurityStateFromSecurityInfoAndRequest(nsISupports* info,
uint32_t securityState;
nsCOMPtr<nsITransportSecurityInfo> psmInfo(do_QueryInterface(info));
+ MOZ_LOG(gSecureDocLog, LogLevel::Debug, ("SecureUI: GetSecurityState: - info is %p\n",
+ (nsISupports *)info));
if (!psmInfo) {
MOZ_LOG(gSecureDocLog, LogLevel::Debug, ("SecureUI: GetSecurityState: - no nsITransportSecurityInfo for %p\n",
(nsISupports *)info));
- return nsIWebProgressListener::STATE_IS_INSECURE;
+ securityState = nsIWebProgressListener::STATE_IS_INSECURE;
+ } else {
+ res = psmInfo->GetSecurityState(&securityState);
+ if (NS_FAILED(res)) {
+ MOZ_LOG(gSecureDocLog, LogLevel::Debug, ("SecureUI: GetSecurityState: - GetSecurityState failed: %" PRIu32 "\n",
+ static_cast<uint32_t>(res)));
+ securityState = nsIWebProgressListener::STATE_IS_BROKEN;
+ }
}
- MOZ_LOG(gSecureDocLog, LogLevel::Debug, ("SecureUI: GetSecurityState: - info is %p\n",
- (nsISupports *)info));
- res = psmInfo->GetSecurityState(&securityState);
- if (NS_FAILED(res)) {
- MOZ_LOG(gSecureDocLog, LogLevel::Debug, ("SecureUI: GetSecurityState: - GetSecurityState failed: %" PRIu32 "\n",
- static_cast<uint32_t>(res)));
- securityState = nsIWebProgressListener::STATE_IS_BROKEN;
+ nsCOMPtr<nsIURI> uri;
+ nsCOMPtr<nsIChannel> channel(do_QueryInterface(request));
+ if (channel) {
+ channel->GetURI(getter_AddRefs(uri));
+ } else {
+ nsCOMPtr<imgIRequest> imgRequest(do_QueryInterface(request));
+ if (imgRequest) {
+ imgRequest->GetURI(getter_AddRefs(uri));
+ }
}
- if (securityState != nsIWebProgressListener::STATE_IS_INSECURE) {
- // A secure connection does not yield a secure per-uri channel if the
- // scheme is plain http.
-
- nsCOMPtr<nsIURI> uri;
- nsCOMPtr<nsIChannel> channel(do_QueryInterface(request));
- if (channel) {
- channel->GetURI(getter_AddRefs(uri));
- } else {
- nsCOMPtr<imgIRequest> imgRequest(do_QueryInterface(request));
- if (imgRequest) {
- imgRequest->GetURI(getter_AddRefs(uri));
- }
- }
- if (uri) {
+ if (uri) {
+ // http and ftp are always insecure
+ if (securityState != nsIWebProgressListener::STATE_IS_INSECURE) {
bool isHttp, isFtp;
if ((NS_SUCCEEDED(uri->SchemeIs("http", &isHttp)) && isHttp) ||
(NS_SUCCEEDED(uri->SchemeIs("ftp", &isFtp)) && isFtp)) {
@@ -332,6 +331,18 @@ static uint32_t GetSecurityStateFromSecurityInfoAndRequest(nsISupports* info,
securityState = nsIWebProgressListener::STATE_IS_INSECURE;
}
}
+
+ // any protocol routed over tor is secure
+ if (securityState != nsIWebProgressListener::STATE_IS_SECURE) {
+ nsAutoCString host;
+ if (NS_SUCCEEDED(uri->GetHost(host))) {
+ if (StringEndsWith(host, NS_LITERAL_CSTRING(".onion"))) {
+ MOZ_LOG(gSecureDocLog, LogLevel::Debug, ("SecureUI: GetSecurityState: - "
+ "uri is onion.\n"));
+ securityState = nsIWebProgressListener::STATE_IS_SECURE;
+ }
+ }
+ }
}
MOZ_LOG(gSecureDocLog, LogLevel::Debug, ("SecureUI: GetSecurityState: - Returning %d\n",
1
0

[torbutton/master] Bug 23247: Communicating security expectations for .onion
by gk@torproject.org 19 Jun '18
by gk@torproject.org 19 Jun '18
19 Jun '18
commit 65b5371aadb32835b99ca56fc8feb43bef81a78e
Author: Richard Pospesel <richard(a)torproject.org>
Date: Thu Jun 7 13:17:38 2018 -0700
Bug 23247: Communicating security expectations for .onion
Added strings needed for Onion domain Page Info dialog to en locale
---
src/chrome/locale/en/torbutton.properties | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/chrome/locale/en/torbutton.properties b/src/chrome/locale/en/torbutton.properties
index 468a532..d77af1e 100644
--- a/src/chrome/locale/en/torbutton.properties
+++ b/src/chrome/locale/en/torbutton.properties
@@ -52,3 +52,7 @@ profileReadOnly=You cannot run %S from a read-only file system. Please copy %S
profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
profileMigrationFailed=Migration of your existing %S profile failed.\nNew settings will be used.
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
+pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
1
0

[tor-browser-build/master] Bug 26396: build mingw-w64-pthread with --no-insert-timestamp
by gk@torproject.org 18 Jun '18
by gk@torproject.org 18 Jun '18
18 Jun '18
commit 5a43ceb3e0f3379f13764a8cd87d469fa7d774ed
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Jun 18 11:44:39 2018 +0200
Bug 26396: build mingw-w64-pthread with --no-insert-timestamp
---
projects/mingw-w64/build | 1 +
1 file changed, 1 insertion(+)
diff --git a/projects/mingw-w64/build b/projects/mingw-w64/build
index 502ea94..1e25290 100644
--- a/projects/mingw-w64/build
+++ b/projects/mingw-w64/build
@@ -43,6 +43,7 @@ make install
mkdir -p /var/tmp/build/builddir/mingw-w64/mingw-w64-pthread
cd /var/tmp/build/builddir/mingw-w64/mingw-w64-pthread
/var/tmp/build/[% project %]-[% c("version") %]/mingw-w64-libraries/winpthreads/configure \
+ LDFLAGS="-Wl,--no-insert-timestamp" \
--host=[% c("arch") %]-w64-mingw32 --prefix=$distdir/[% c("arch") %]-w64-mingw32
make -j[% c("buildconf/num_procs") %]
make install
1
0

[tor-browser-build/master] Bug 26250: Bump Rust version to 1.26.1
by boklm@torproject.org 15 Jun '18
by boklm@torproject.org 15 Jun '18
15 Jun '18
commit 61aac87c00ca7a1da9a1be9f2d181c7841769d4c
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 15 06:12:38 2018 +0000
Bug 26250: Bump Rust version to 1.26.1
Bumping Rust to 1.26.1 avoids intermittent Firefox compilation failures
we have seen, similar to those Mozilla got and documented in
https://bugzilla.mozilla.org/show_bug.cgi?id=1445413.
---
projects/rust/binaryen.patch | 22 ----------------------
projects/rust/build | 9 +--------
projects/rust/config | 6 ++----
projects/rust/unwind.patch | 34 +++++++++++++++++++---------------
4 files changed, 22 insertions(+), 49 deletions(-)
diff --git a/projects/rust/binaryen.patch b/projects/rust/binaryen.patch
deleted file mode 100644
index fee9b6a..0000000
--- a/projects/rust/binaryen.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 820f26810baf35c1961763f6b0013e4f7e7380da Mon Sep 17 00:00:00 2001
-From: Georg Koppen <gk(a)torproject.org>
-Date: Thu, 12 Apr 2018 13:10:13 +0000
-Subject: [PATCH] Use our gcc/c++
-
-
-diff --git a/src/librustc_binaryen/build.rs b/src/librustc_binaryen/build.rs
-index f23ff3cee5..2496dd1be9 100644
---- a/src/librustc_binaryen/build.rs
-+++ b/src/librustc_binaryen/build.rs
-@@ -26,6 +26,8 @@ fn main() {
-
- Config::new("../binaryen")
- .define("BUILD_STATIC_LIB", "ON")
-+ .define("CMAKE_C_COMPILER", "gcc")
-+ .define("CMAKE_CXX_COMPILER", "c++")
- .build_target("binaryen")
- .build();
-
---
-2.16.3
-
diff --git a/projects/rust/build b/projects/rust/build
index af0f62b..936f49f 100644
--- a/projects/rust/build
+++ b/projects/rust/build
@@ -52,20 +52,13 @@ mkdir /var/tmp/build
tar -C /var/tmp/build -xf [% c('input_files_by_name/rust') %]
cd /var/tmp/build/rustc-[% c('version') %]-src
-[% IF c("var/linux") %]
- # binaryen hardcodes /usr/bin/cc and /usr/bin/c++ as the C and C++ compiler.
- # But that is too old on Debian Wheezy which is why we need to patch it, so
- # we can use our own GCC instead.
- patch -p1 < $rootdir/binaryen.patch
-[% END %]
-
[% IF c("var/windows-i686") %]
# Cross-compiling for Windows 32bit is currently not possible without any
# patches. The reason for that is libstd expecting DWARF unwinding while most
# toolchains on Linux, targeting Windows 32bit, use SjLj unwinding.
# See: https://github.com/rust-lang/rust/issues/12859 for discussion about
# that and https://github.com/rust-lang/rust/pull/49633 for a newer attempt to
- # fix this problem. We backport and apply the patch from neersighted.
+ # fix this problem. We apply the patch from neersighted.
patch -p1 < $rootdir/unwind.patch
[% END %]
diff --git a/projects/rust/config b/projects/rust/config
index 771b50b..b5547f9 100644
--- a/projects/rust/config
+++ b/projects/rust/config
@@ -1,8 +1,8 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
-version: 1.25.0
+version: 1.26.1
var:
- prev_version: 1.24.1
+ prev_version: 1.25.0
container:
use_container: 1
@@ -71,7 +71,5 @@ input_files:
sig_ext: asc
file_gpg_id: 1
gpg_keyring: rust.gpg
- - filename: binaryen.patch
- enable: '[% c("var/linux") %]'
- filename: unwind.patch
enable: '[% c("var/windows-i686") %]'
diff --git a/projects/rust/unwind.patch b/projects/rust/unwind.patch
index 8e2e0fc..3a191b9 100644
--- a/projects/rust/unwind.patch
+++ b/projects/rust/unwind.patch
@@ -1,4 +1,4 @@
-From f967c575e502e507ed51b7ed8d1e2a08525e6ae6 Mon Sep 17 00:00:00 2001
+From dd808373aefe6247975455006bbfb89aa6410ed9 Mon Sep 17 00:00:00 2001
From: Bjorn Neergaard <bjorn(a)neersighted.com>
Date: Tue, 3 Apr 2018 19:01:07 -0600
Subject: [PATCH] Fix cross-compiling i686-pc-windows-gnu from Linux
@@ -32,15 +32,15 @@ rethinking of how iOS is special-cased above, to avoid further
duplication. Input on how to best structure this file is requested.
diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
-index c85b04ddc0..2f58f0d9fa 100644
+index e6aa78fba5..624f2ccfbe 100644
--- a/src/bootstrap/compile.rs
+++ b/src/bootstrap/compile.rs
-@@ -145,6 +145,11 @@ pub fn std_cargo(build: &Build,
+@@ -146,6 +146,11 @@ pub fn std_cargo(build: &Builder,
cargo.env("MACOSX_DEPLOYMENT_TARGET", target);
}
+ // FIXME: Temporary detection of SJLJ MinGW compilers.
-+ if build.build.contains("linux") && target == "i686-pc-windows-gnu" {
++ if build.build.build.contains("linux") && target == "i686-pc-windows-gnu" {
+ features.push_str(" sjlj_eh");
+ }
+
@@ -48,7 +48,7 @@ index c85b04ddc0..2f58f0d9fa 100644
// stage0. This works fine if the local rust and being-built rust have the
// same view of what the default allocator is, but fails otherwise. Since
diff --git a/src/libstd/Cargo.toml b/src/libstd/Cargo.toml
-index c1fe4a89d6..6c8cb330d8 100644
+index 1201759885..a06ef7e0e6 100644
--- a/src/libstd/Cargo.toml
+++ b/src/libstd/Cargo.toml
@@ -49,3 +49,4 @@ force_alloc_system = []
@@ -57,18 +57,19 @@ index c1fe4a89d6..6c8cb330d8 100644
wasm_syscall = []
+sjlj_eh = ["unwind/sjlj_eh"]
diff --git a/src/libunwind/Cargo.toml b/src/libunwind/Cargo.toml
-index fbd9789d2f..5e319c67fa 100644
+index fbd9789d2f..15a20d7ff4 100644
--- a/src/libunwind/Cargo.toml
+++ b/src/libunwind/Cargo.toml
-@@ -14,3 +14,6 @@ doc = false
+@@ -14,3 +14,7 @@ doc = false
[dependencies]
core = { path = "../libcore" }
libc = { path = "../rustc/libc_shim" }
+
+[features]
+sjlj_eh = []
++
diff --git a/src/libunwind/libunwind.rs b/src/libunwind/libunwind.rs
-index e6fff7963f..6a57cf7c93 100644
+index aa73b11fb3..16c21be736 100644
--- a/src/libunwind/libunwind.rs
+++ b/src/libunwind/libunwind.rs
@@ -10,11 +10,6 @@
@@ -83,15 +84,15 @@ index e6fff7963f..6a57cf7c93 100644
use libc::{c_int, c_void, uintptr_t};
#[repr(C)]
-@@ -84,7 +79,6 @@ pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reaso
- exception: *mut _Unwind_Exception);
+@@ -85,7 +80,6 @@ pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reaso
extern "C" {
- #[unwind]
+ #[cfg_attr(stage0, unwind)]
+ #[cfg_attr(not(stage0), unwind(allowed))]
- pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
pub fn _Unwind_DeleteException(exception: *mut _Unwind_Exception);
pub fn _Unwind_GetLanguageSpecificData(ctx: *mut _Unwind_Context) -> *mut c_void;
pub fn _Unwind_GetRegionStart(ctx: *mut _Unwind_Context) -> _Unwind_Ptr;
-@@ -216,26 +210,49 @@ if #[cfg(all(any(target_os = "ios", not(target_arch = "arm"))))] {
+@@ -217,28 +211,52 @@ if #[cfg(all(any(target_os = "ios", not(target_arch = "arm"))))] {
pc
}
}
@@ -103,7 +104,8 @@ index e6fff7963f..6a57cf7c93 100644
+if #[cfg(all(target_os = "ios", target_arch = "arm"))] {
+ // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
extern "C" {
- #[unwind]
+ #[cfg_attr(stage0, unwind)]
+ #[cfg_attr(not(stage0), unwind(allowed))]
- pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
- pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
- trace_argument: *mut c_void)
@@ -121,7 +123,8 @@ index e6fff7963f..6a57cf7c93 100644
+
+} else if #[cfg(feature = "sjlj_eh")] {
extern "C" {
- #[unwind]
+ #[cfg_attr(stage0, unwind)]
+ #[cfg_attr(not(stage0), unwind(allowed))]
+ pub fn _Unwind_SjLj_Resume(e: *mut _Unwind_Exception) -> !;
pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
+ pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
@@ -140,7 +143,8 @@ index e6fff7963f..6a57cf7c93 100644
}
+} else {
+ extern "C" {
-+ #[unwind]
++ #[cfg_attr(stage0, unwind)]
++ #[cfg_attr(not(stage0), unwind(allowed))]
+ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
+ pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
+ pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
1
0

[tor-browser-build/master] Merge remote-tracking branch 'gk/bug_26250_v5'
by boklm@torproject.org 15 Jun '18
by boklm@torproject.org 15 Jun '18
15 Jun '18
commit 85db911cee972e286b358bdabc50e0796823654d
Merge: dc35588 61aac87
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri Jun 15 22:01:27 2018 +0200
Merge remote-tracking branch 'gk/bug_26250_v5'
projects/rust/binaryen.patch | 22 ----------------------
projects/rust/build | 9 +--------
projects/rust/config | 6 ++----
projects/rust/unwind.patch | 34 +++++++++++++++++++---------------
4 files changed, 22 insertions(+), 49 deletions(-)
1
0

[tor-browser-build/master] Bug 25540: Don't ship sandboxed-tor-browser anymore
by boklm@torproject.org 15 Jun '18
by boklm@torproject.org 15 Jun '18
15 Jun '18
commit dc355882e235178d0a1889a7d96c5721faad2716
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 15 11:54:02 2018 +0000
Bug 25540: Don't ship sandboxed-tor-browser anymore
sandboxed-tor-browser is not maintained anymore and Yawning requested to
not ship it anymore in our alphas once we switch to Firefox 60 ESR.
---
projects/goerrors/config | 17 -----------------
projects/gogb/config | 23 -----------------------
projects/gogb/gb-build-dir.patch | 31 -------------------------------
projects/release/build | 3 ---
projects/release/config | 7 -------
projects/sandbox/build | 26 --------------------------
projects/sandbox/config | 32 --------------------------------
7 files changed, 139 deletions(-)
diff --git a/projects/goerrors/config b/projects/goerrors/config
deleted file mode 100644
index 3c11fab..0000000
--- a/projects/goerrors/config
+++ /dev/null
@@ -1,17 +0,0 @@
-# vim: filetype=yaml sw=2
-version: '[% c("abbrev") %]'
-git_url: https://github.com/pkg/errors
-git_hash: 248dadf4e9068a0b3e79f02ed0a610d935de5302
-filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
-
-build: '[% c("projects/go/var/build_go_lib") %]'
-
-var:
- container:
- use_container: 1
- go_lib: github.com/pkg/errors
-
-input_files:
- - project: container-image
- - name: go
- project: go
diff --git a/projects/gogb/config b/projects/gogb/config
deleted file mode 100644
index dcf30f6..0000000
--- a/projects/gogb/config
+++ /dev/null
@@ -1,23 +0,0 @@
-# vim: filetype=yaml sw=2
-version: '[% c("abbrev") %]'
-git_url: https://github.com/constabulary/gb
-git_hash: 06cc925cce6592e922dcc4839a8b44feb384e71e
-filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
-
-build: '[% c("projects/go/var/build_go_lib") %]'
-
-var:
- container:
- use_container: 1
- go_lib: github.com/constabulary/gb
- go_lib_install: github.com/constabulary/gb/cmd/gb
- go_lib_deps:
- - goerrors
-
-input_files:
- - project: container-image
- - name: go
- project: go
- - name: goerrors
- project: goerrors
- - filename: gb-build-dir.patch
diff --git a/projects/gogb/gb-build-dir.patch b/projects/gogb/gb-build-dir.patch
deleted file mode 100644
index a52ca69..0000000
--- a/projects/gogb/gb-build-dir.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From a7b198e3a32509197150d7c2767262a7319ff339 Mon Sep 17 00:00:00 2001
-From: Georg Koppen <gk(a)torproject.org>
-Date: Tue, 6 Dec 2016 21:34:16 +0000
-Subject: [PATCH] Make the gb build directory deterministic
-
-
-diff --git a/context.go b/context.go
-index 53c00da..d040082 100644
---- a/context.go
-+++ b/context.go
-@@ -3,7 +3,6 @@ package gb
- import (
- "fmt"
- "io"
-- "io/ioutil"
- "os"
- "os/exec"
- "path/filepath"
-@@ -136,7 +135,8 @@ func NewContext(p Project, opts ...func(*Context) error) (*Context, error) {
- },
- GcToolchain(),
- }
-- workdir, err := ioutil.TempDir("", "gb")
-+ workdir := filepath.Join(os.TempDir(), "gb")
-+ err := os.Mkdir(workdir, 0777)
- if err != nil {
- return nil, err
- }
---
-2.10.2
-
diff --git a/projects/release/build b/projects/release/build
index a73f017..882d26d 100644
--- a/projects/release/build
+++ b/projects/release/build
@@ -20,9 +20,6 @@ mkdir -p "$destdir"
[% END -%]
[% IF c("var/torbrowser-linux-x86_64") -%]
mv [% c('input_files_by_name/linux-x86_64') %]/* "$destdir"/
- [% IF ! c("var/release") %]
- mv [% c('input_files_by_name/sandbox-linux-x86_64') %] "$destdir"/sandbox-[% pc('sandbox', 'version') %]-linux64.zip
- [% END %]
[% END -%]
cd "$destdir"
cat > .htaccess <<EOF
diff --git a/projects/release/config b/projects/release/config
index 2aba446..236325b 100644
--- a/projects/release/config
+++ b/projects/release/config
@@ -87,13 +87,6 @@ input_files:
- '[% c("var/build_target") %]'
- 'torbrowser-linux-x86_64[% c("var/debug-build") %]'
- - name: sandbox-linux-x86_64
- project: sandbox
- enable: '[% c("var/torbrowser-linux-x86_64") && ! c("var/release") %]'
- target:
- - '[% c("var/build_target") %]'
- - torbrowser-linux-x86_64
-
- name: linux-i686
project: tor-browser
enable: '[% c("var/torbrowser-linux-i686") %]'
diff --git a/projects/sandbox/build b/projects/sandbox/build
deleted file mode 100644
index 8a3edb3..0000000
--- a/projects/sandbox/build
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-[% c("var/set_default_env") -%]
-[% pc('go', 'var/setup', { go_tarfile => c('input_files_by_name/go') }) %]
-distdir=/var/tmp/dist/[% project %]
-mkdir -p $distdir
-
-tar -C /var/tmp/dist -xf [% c('input_files_by_name/gogb') %]
-
-mkdir -p /var/tmp/build
-tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
-cd /var/tmp/build/[% project %]-[% c('version') %]
-
-# we don't have access to the git repository during the build
-sed -i Makefile -e 's|git rev-parse --short HEAD > data/revision|echo [% c("abbrev") %] > data/revision|'
-# Unset GOOS and GOARCH as they change some file names, and we don't need
-# them as we are only building on x86_64
-unset GOOS
-unset GOARCH
-make
-cp bin/sandboxed-tor-browser $distdir
-
-cd $distdir/..
-[% c('zip', {
- zip_src => [ project ],
- zip_args => dest_dir _ '/' _ c('filename'),
- }) %]
diff --git a/projects/sandbox/config b/projects/sandbox/config
deleted file mode 100644
index 11fe6be..0000000
--- a/projects/sandbox/config
+++ /dev/null
@@ -1,32 +0,0 @@
-# vim: filetype=yaml sw=2
-version: 0.0.16
-git_url: https://git.torproject.org/tor-browser/sandboxed-tor-browser
-git_hash: 'sandboxed-tor-browser-[% c("version") %]'
-tag_gpg_id: 1
-gpg_keyring: obfs4.gpg
-filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
-
-var:
- container:
- use_container: 1
- suite: jessie
- arch: amd64
- deps:
- - libx11-dev
- - pkg-config
- - libgtk-3-dev
- - libnotify-dev
- - zip
-
-targets:
- nightly:
- git_hash: master
- version: '[% c("abbrev") %]'
- tag_gpg_id: 0
-
-input_files:
- - project: container-image
- - name: go
- project: go
- - name: gogb
- project: gogb
1
0

[tor-browser-build/master] Merge remote-tracking branch 'gk/bug_23231'
by boklm@torproject.org 15 Jun '18
by boklm@torproject.org 15 Jun '18
15 Jun '18
commit 5e72f5077d7c974e30c9f48f2c554ded6e8358d1
Merge: b9a2dfe aa79add
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri Jun 15 11:31:19 2018 +0200
Merge remote-tracking branch 'gk/bug_23231'
projects/firefox/STL_win64.patch | 24 ------------------------
projects/firefox/build | 4 ----
projects/firefox/config | 2 --
3 files changed, 30 deletions(-)
1
0

[tor-browser-build/master] Bug 23231: Remove our STL Wrappers workaround for Windows 64bit
by boklm@torproject.org 15 Jun '18
by boklm@torproject.org 15 Jun '18
15 Jun '18
commit aa79addec263ad31bad46f589e5964173b07d24f
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jun 14 19:52:09 2018 +0000
Bug 23231: Remove our STL Wrappers workaround for Windows 64bit
The fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1443823 makes
our workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1392604
obsolete, and we can remove it as it landed on esr60.
---
projects/firefox/STL_win64.patch | 24 ------------------------
projects/firefox/build | 4 ----
projects/firefox/config | 2 --
3 files changed, 30 deletions(-)
diff --git a/projects/firefox/STL_win64.patch b/projects/firefox/STL_win64.patch
deleted file mode 100644
index e528905..0000000
--- a/projects/firefox/STL_win64.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 8f8c1a1069d4907d3cedae578975225d8caeecaf Mon Sep 17 00:00:00 2001
-From: Nicolas Vigier <boklm(a)torproject.org>
-Date: Sat, 12 Aug 2017 22:00:13 +0200
-Subject: [PATCH] Bug 23231: disable STL Wrappers on Windows
-
-Workaround for:
-https://bugzilla.mozilla.org/show_bug.cgi?id=1392604
----
- old-configure.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/old-configure.in b/old-configure.in
-index f5a2f05..e247551 100644
---- a/old-configure.in
-+++ b/old-configure.in
-@@ -1338,7 +1338,7 @@ MOZ_CXX11
- AC_LANG_C
-
- case "${OS_TARGET}" in
--Darwin)
-+WINNT|Darwin)
- ;;
- *)
- STL_FLAGS="-I${DIST}/stl_wrappers"
diff --git a/projects/firefox/build b/projects/firefox/build
index 1b3a0d0..9f849b0 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -132,10 +132,6 @@ fi
export CC='gcc -m32'
[% END -%]
-[% IF c("var/windows-x86_64") %]
- patch -p1 < $rootdir/STL_win64.patch
-[% END -%]
-
[% IF c("var/windows") %]
patch -p1 < $rootdir/nsis-uninstall.patch
[% END -%]
diff --git a/projects/firefox/config b/projects/firefox/config
index 9d0829d..c2cbebd 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -104,8 +104,6 @@ input_files:
- project: gcc
name: gcc
enable: '[% c("var/windows") %]'
- - filename: STL_win64.patch
- enable: '[% c("var/windows-x86_64") %]'
- filename: nsis-uninstall.patch
enable: '[% c("var/windows") %]'
- project: rust
1
0

[tor-browser-build/master] Bug 26304: Bump zlib to latest stable (1.2.11)
by boklm@torproject.org 15 Jun '18
by boklm@torproject.org 15 Jun '18
15 Jun '18
commit b9a2dfe610121f88be74d8569ee2b9f904132670
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 15 06:18:26 2018 +0000
Bug 26304: Bump zlib to latest stable (1.2.11)
---
projects/zlib/config | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/zlib/config b/projects/zlib/config
index 4ac96c9..2a98469 100644
--- a/projects/zlib/config
+++ b/projects/zlib/config
@@ -1,6 +1,6 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
-version: 1.2.8
+version: 1.2.11
git_hash: 'v[% c("version") %]'
git_url: https://github.com/madler/zlib.git
gpg_keyring: zlib.gpg
1
0

[tor-browser-build/master] Bug 26205: Don't build the uninstaller for Windows during Firefox compilation
by gk@torproject.org 14 Jun '18
by gk@torproject.org 14 Jun '18
14 Jun '18
commit 0f6ebe396fad0834388fd2424218582b32493816
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Tue Jun 12 22:02:03 2018 -0400
Bug 26205: Don't build the uninstaller for Windows during Firefox compilation
---
projects/firefox/build | 4 ++
projects/firefox/config | 2 +
projects/firefox/nsis-uninstall.patch | 73 +++++++++++++++++++++++++++++++++++
3 files changed, 79 insertions(+)
diff --git a/projects/firefox/build b/projects/firefox/build
index 09620ae..1b3a0d0 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -136,6 +136,10 @@ fi
patch -p1 < $rootdir/STL_win64.patch
[% END -%]
+[% IF c("var/windows") %]
+ patch -p1 < $rootdir/nsis-uninstall.patch
+[% END -%]
+
[% IF c("var/osx") %]
patch -p1 < $rootdir/no-dmg.patch
[% END -%]
diff --git a/projects/firefox/config b/projects/firefox/config
index 120ad35..9d0829d 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -106,6 +106,8 @@ input_files:
enable: '[% c("var/windows") %]'
- filename: STL_win64.patch
enable: '[% c("var/windows-x86_64") %]'
+ - filename: nsis-uninstall.patch
+ enable: '[% c("var/windows") %]'
- project: rust
name: rust
- project: llvm
diff --git a/projects/firefox/nsis-uninstall.patch b/projects/firefox/nsis-uninstall.patch
new file mode 100644
index 0000000..765ef67
--- /dev/null
+++ b/projects/firefox/nsis-uninstall.patch
@@ -0,0 +1,73 @@
+From 4ef264b601ac92a0b385c40bd011ef94618a176a Mon Sep 17 00:00:00 2001
+From: Sukhbir Singh <sukhbir(a)torproject.org>
+Date: Tue, 12 Jun 2018 21:58:24 -0400
+Subject: [PATCH 1/1] Bug 26205: Don't build the uninstaller for Windows during
+ Firefox compilation
+
+---
+ browser/Makefile.in | 4 ----
+ browser/installer/Makefile.in | 4 ----
+ .../mozbuild/mozbuild/repackaging/installer.py | 17 +----------------
+ 3 files changed, 1 insertion(+), 24 deletions(-)
+
+diff --git a/browser/Makefile.in b/browser/Makefile.in
+index 2eb9e708f68e..0c9442183942 100644
+--- a/browser/Makefile.in
++++ b/browser/Makefile.in
+@@ -6,10 +6,6 @@ include $(topsrcdir)/config/rules.mk
+
+ ifdef MAKENSISU
+
+-# For Windows build the uninstaller during the application build since the
+-# uninstaller is included with the application for mar file generation.
+-libs::
+- $(MAKE) -C installer/windows uninstaller
+ ifdef MOZ_MAINTENANCE_SERVICE
+ $(MAKE) -C installer/windows maintenanceservice_installer
+ endif
+diff --git a/browser/installer/Makefile.in b/browser/installer/Makefile.in
+index 1bf11252ee06..dee6d5434106 100644
+--- a/browser/installer/Makefile.in
++++ b/browser/installer/Makefile.in
+@@ -98,10 +98,6 @@ ifdef NECKO_WIFI
+ DEFINES += -DNECKO_WIFI
+ endif
+
+-ifdef MAKENSISU
+-DEFINES += -DHAVE_MAKENSISU=1
+-endif
+-
+ ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
+ MOZ_PKG_MAC_DSSTORE=$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/dsstore
+ MOZ_PKG_MAC_BACKGROUND=$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/background.png
+diff --git a/python/mozbuild/mozbuild/repackaging/installer.py b/python/mozbuild/mozbuild/repackaging/installer.py
+index 9b49eb555153..1e6f6e73c3d8 100644
+--- a/python/mozbuild/mozbuild/repackaging/installer.py
++++ b/python/mozbuild/mozbuild/repackaging/installer.py
+@@ -27,22 +27,7 @@ def repackage_installer(topsrcdir, tag, setupexe, package, output, package_name,
+ tmpdir = tempfile.mkdtemp()
+ old_cwd = os.getcwd()
+ try:
+- if package:
+- z = zipfile.ZipFile(package)
+- z.extractall(tmpdir)
+- z.close()
+-
+- # Copy setup.exe into the root of the install dir, alongside the
+- # package.
+- shutil.copyfile(setupexe, mozpath.join(tmpdir, mozpath.basename(setupexe)))
+-
+- # archive_exe requires us to be in the directory where the package is
+- # unpacked (the tmpdir)
+- os.chdir(tmpdir)
+-
+- sfx_package = mozpath.join(topsrcdir, sfx_stub)
+-
+- archive_exe(package_name, tag, sfx_package, output)
++ pass
+
+ finally:
+ os.chdir(old_cwd)
+--
+2.17.1
+
1
0

[tor-browser-build/master] Bug 26203: Update mozconfig for Windows nightly build
by gk@torproject.org 14 Jun '18
by gk@torproject.org 14 Jun '18
14 Jun '18
commit 656090e748599053adfb9d0c31b6955ba7ef8129
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Tue Jun 12 22:04:06 2018 -0400
Bug 26203: Update mozconfig for Windows nightly build
Also enable rust for all builds.
---
projects/firefox/build | 8 +++-----
projects/firefox/config | 1 -
projects/firefox/mozconfig-windows-i686 | 3 +++
projects/firefox/mozconfig-windows-x86_64 | 6 +++---
4 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index 81032c6..09620ae 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -65,11 +65,9 @@ EOF
export SELFRANDO_skip_shuffle=
[% END -%]
-[% IF ! c("var/windows") %]
- mkdir -p /var/tmp/dist
- tar -C /var/tmp/dist -xf [% c('input_files_by_name/rust') %]
- export PATH="/var/tmp/dist/rust/bin:$PATH"
-[% END -%]
+mkdir -p /var/tmp/dist
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/rust') %]
+export PATH="/var/tmp/dist/rust/bin:$PATH"
[% IF c("var/linux") %]
# Add llvm so stylo can build
diff --git a/projects/firefox/config b/projects/firefox/config
index 5bde93d..120ad35 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -108,7 +108,6 @@ input_files:
enable: '[% c("var/windows-x86_64") %]'
- project: rust
name: rust
- enable: '[% ! c("var/windows") %]'
- project: llvm
name: llvm
enable: '[% c("var/linux") %]'
diff --git a/projects/firefox/mozconfig-windows-i686 b/projects/firefox/mozconfig-windows-i686
index dfb3326..daeaed4 100644
--- a/projects/firefox/mozconfig-windows-i686
+++ b/projects/firefox/mozconfig-windows-i686
@@ -24,3 +24,6 @@ ac_add_options --disable-crashreporter
ac_add_options --disable-maintenance-service
ac_add_options --disable-webrtc
ac_add_options --disable-tests
+ac_add_options --disable-stylo # Bugzilla 1390583
+ac_add_options --disable-accessibility # https://sourceforge.net/p/mingw-w64/bugs/648/
+ac_add_options --disable-jemalloc # Bugzilla 1466192
diff --git a/projects/firefox/mozconfig-windows-x86_64 b/projects/firefox/mozconfig-windows-x86_64
index 669c124..568d88d 100644
--- a/projects/firefox/mozconfig-windows-x86_64
+++ b/projects/firefox/mozconfig-windows-x86_64
@@ -18,12 +18,12 @@ ac_add_options --enable-tor-browser-update
ac_add_options --enable-signmar
ac_add_options --enable-verify-mar
-# We can't build the sandbox code with mingw-w64:
-# https://bugzilla.mozilla.org/show_bug.cgi?id=1042426
-ac_add_options --disable-sandbox
# Let's make sure no preference is enabling either Adobe's or Google's CDM.
ac_add_options --disable-eme
ac_add_options --disable-crashreporter
ac_add_options --disable-maintenance-service
ac_add_options --disable-webrtc
ac_add_options --disable-tests
+ac_add_options --disable-stylo # Bugzilla 1390583
+ac_add_options --disable-accessibility # https://sourceforge.net/p/mingw-w64/bugs/648/
+ac_add_options --disable-jemalloc # Bugzilla 1466192
1
0

[tor-browser-build/master] Bug 25837: Integrate fxc2 for Windows Tor Browser builds
by gk@torproject.org 14 Jun '18
by gk@torproject.org 14 Jun '18
14 Jun '18
commit 57693e01837f0fc7c60bb056e5b752f5f67a987b
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Thu Jun 14 13:21:18 2018 +0000
Bug 25837: Integrate fxc2 for Windows Tor Browser builds
This commit adds support for building and bundling fxc2 which is
required for Windows cross-compilation on Linux.
---
projects/firefox/build | 18 ++++++++++++++++++
projects/firefox/config | 8 ++++++++
projects/fxc2/build | 30 ++++++++++++++++++++++++++++++
projects/fxc2/config | 14 ++++++++++++++
4 files changed, 70 insertions(+)
diff --git a/projects/firefox/build b/projects/firefox/build
index 0fd3da2..81032c6 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -34,6 +34,23 @@ EOF
export PATH="$mingwdir/helpers:$PATH"
[% END -%]
+[% IF c("var/windows") %]
+ # Unpack fxc2.
+ mkdir -p /var/tmp/dist
+ tar -C /var/tmp/dist -xf [% c('input_files_by_name/fxc2') %]
+ fxcdir=/var/tmp/dist/fxc2/bin
+ cp $mingwdir/[% c("arch") %]-w64-mingw32/bin/libwinpthread-1.dll $fxcdir
+ export PATH="$fxcdir:$PATH"
+ # fxc2 requires Wine.
+ [% IF c("var/windows-x86_64") %]
+ export WINEARCH=win64
+ [% END %]
+ export HOME=/var/tmp/home
+ mkdir -p $HOME
+ WINEROOT=$HOME/.wine/drive_c
+ wine wineboot -i
+[% END -%]
+
[% IF c("var/linux") %]
mkdir -p /var/tmp/dist
tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
@@ -161,6 +178,7 @@ rm -f js/src/configure
cp -a obj-*/dist/firefox/* $distdir/Browser/
cp -a $rootdir/msvcr100.dll $distdir/Browser
cp -a $gcclibs/libssp-0.dll $distdir/Browser
+ cp -a $fxcdir/d3dcompiler_47.dll $distdir/Browser
[% END %]
# Make MAR-based update tools available for use during the bundle phase.
diff --git a/projects/firefox/config b/projects/firefox/config
index 6cb17c7..5bde93d 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -65,6 +65,11 @@ targets:
arch_deps:
- rsync
+ windows:
+ var:
+ arch_deps:
+ - wine
+
windows-i686:
var:
martools_filename: mar-tools-win32.zip
@@ -107,3 +112,6 @@ input_files:
- project: llvm
name: llvm
enable: '[% c("var/linux") %]'
+ - project: fxc2
+ name: fxc2
+ enable: '[% c("var/windows") %]'
diff --git a/projects/fxc2/build b/projects/fxc2/build
new file mode 100644
index 0000000..46a7db8
--- /dev/null
+++ b/projects/fxc2/build
@@ -0,0 +1,30 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+distdir="/var/tmp/dist/[% project %]"
+
+[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+mkdir -p /var/tmp/build
+tar -C /var/tmp/build -xf [% project %]-[% c("version") %].tar.gz
+cd /var/tmp/build/[% project %]-[% c("version") %]
+
+[% IF c("var/windows-i686") -%]
+ make x86
+[% ELSE -%]
+ make x64
+[% END -%]
+
+mkdir -p $distdir/bin/
+cp fxc2.exe $distdir/bin/
+[% IF c("var/windows-i686") -%]
+ cp dll/d3dcompiler_47_32.dll $distdir/bin/d3dcompiler_47.dll
+[% ELSE -%]
+ cp dll/d3dcompiler_47.dll $distdir/bin/
+[% END -%]
+
+cd /var/tmp/dist
+
+[% c('tar', {
+ tar_src => [ project ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/fxc2/config b/projects/fxc2/config
new file mode 100644
index 0000000..aac9158
--- /dev/null
+++ b/projects/fxc2/config
@@ -0,0 +1,14 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: https://github.com/azadi/fxc2.git
+git_hash: 079f5c7b9f6ea0b7e5504bb53abf8709cc92835d
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+var:
+ container:
+ use_container: 1
+
+input_files:
+ - project: container-image
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
1
0

[tor-browser-build/master] Bug 26329: Fix Rust cross-compilation for 32bit Windows
by boklm@torproject.org 14 Jun '18
by boklm@torproject.org 14 Jun '18
14 Jun '18
commit 3751474686ba0d2cc7b8a4086114332cbc36e29c
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jun 14 11:26:47 2018 +0000
Bug 26329: Fix Rust cross-compilation for 32bit Windows
---
projects/rust/build | 4 +-
projects/rust/config | 2 +-
projects/rust/panic-abort.patch | 36 ----------
projects/rust/unwind.patch | 154 ++++++++++++++++++++++++++++++++++++++++
4 files changed, 157 insertions(+), 39 deletions(-)
diff --git a/projects/rust/build b/projects/rust/build
index 74ce74a..af0f62b 100644
--- a/projects/rust/build
+++ b/projects/rust/build
@@ -65,8 +65,8 @@ cd /var/tmp/build/rustc-[% c('version') %]-src
# toolchains on Linux, targeting Windows 32bit, use SjLj unwinding.
# See: https://github.com/rust-lang/rust/issues/12859 for discussion about
# that and https://github.com/rust-lang/rust/pull/49633 for a newer attempt to
- # fix this problem.
- patch -p1 < $rootdir/panic-abort.patch
+ # fix this problem. We backport and apply the patch from neersighted.
+ patch -p1 < $rootdir/unwind.patch
[% END %]
mkdir build
diff --git a/projects/rust/config b/projects/rust/config
index 9d3030d..771b50b 100644
--- a/projects/rust/config
+++ b/projects/rust/config
@@ -73,5 +73,5 @@ input_files:
gpg_keyring: rust.gpg
- filename: binaryen.patch
enable: '[% c("var/linux") %]'
- - filename: panic-abort.patch
+ - filename: unwind.patch
enable: '[% c("var/windows-i686") %]'
diff --git a/projects/rust/panic-abort.patch b/projects/rust/panic-abort.patch
deleted file mode 100644
index 1711ff7..0000000
--- a/projects/rust/panic-abort.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 2fe471643721f3967f1bdf28907b0a7247fdb705 Mon Sep 17 00:00:00 2001
-From: Georg Koppen <gk(a)torproject.org>
-Date: Thu, 26 Apr 2018 13:18:27 +0000
-Subject: [PATCH] Avoid cross-compilation breakage due to unwinding
- incompatibilities
-
-
-diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs
-index 55d104b182..85330f973b 100644
---- a/src/bootstrap/bin/rustc.rs
-+++ b/src/bootstrap/bin/rustc.rs
-@@ -143,7 +143,8 @@ fn main() {
- // workaround undefined references to `rust_eh_unwind_resume` generated
- // otherwise, see issue https://github.com/rust-lang/rust/issues/43095.
- if crate_name == "panic_abort" ||
-- crate_name == "compiler_builtins" && stage != "0" {
-+ crate_name == "compiler_builtins" && stage != "0" ||
-+ target == "i686-pc-windows-gnu" {
- cmd.arg("-C").arg("panic=abort");
- }
-
-diff --git a/src/libtest/lib.rs b/src/libtest/lib.rs
-index 9ea5f39b71..bb689120af 100644
---- a/src/libtest/lib.rs
-+++ b/src/libtest/lib.rs
-@@ -45,7 +45,6 @@ extern crate getopts;
- extern crate term;
- #[cfg(any(unix, target_os = "cloudabi"))]
- extern crate libc;
--extern crate panic_unwind;
-
- pub use self::TestFn::*;
- pub use self::ColorConfig::*;
---
-2.17.0
-
diff --git a/projects/rust/unwind.patch b/projects/rust/unwind.patch
new file mode 100644
index 0000000..8e2e0fc
--- /dev/null
+++ b/projects/rust/unwind.patch
@@ -0,0 +1,154 @@
+From f967c575e502e507ed51b7ed8d1e2a08525e6ae6 Mon Sep 17 00:00:00 2001
+From: Bjorn Neergaard <bjorn(a)neersighted.com>
+Date: Tue, 3 Apr 2018 19:01:07 -0600
+Subject: [PATCH] Fix cross-compiling i686-pc-windows-gnu from Linux
+
+This is still very rough and serves as a proof-of-concept for fixing
+Linux -> 32-bit MinGW cross compilation workflow. Currently, clang and
+GCC's MinGW targets both only support DW2 (DWARF) or SJLJ (Set Jump Long
+Jump) unwinding on 32-bit Windows.
+
+The default for GCC (and the way it is shipped on every major distro) is
+to use SJLJ on Windows, as DWARF cannot traverse non-DWARF frames. This
+would work fine, except for the fact that libgcc (our C runtime on the
+MinGW platform) exports symbols under a different name when configured
+to use SJLJ-style unwinding, and uses a preprocessor macro internally to
+alias them.
+
+Because of this, we have to detect this scenario and link to the correct
+symbols ourselves. Linking has been tested with a full bootstrap on both
+x86_64-unknown-linux-gnu and i686-pc-windows-gnu, as well as
+cross-compilation of some of my own projects.
+
+Obviously, the detection is a bit unrefined. Right now we
+unconditionally use SJLJ when compiling Linux -> MinGW. I'd like to add
+feature detection using compiler build flags or autotools-style
+compilation and object analysis. Input on the best way to proceed here
+is welcome.
+
+Also, currently there is copy-pasted/duplicated code in libunwind.
+Ideally, this could be reduced, but this would likely require a
+rethinking of how iOS is special-cased above, to avoid further
+duplication. Input on how to best structure this file is requested.
+
+diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
+index c85b04ddc0..2f58f0d9fa 100644
+--- a/src/bootstrap/compile.rs
++++ b/src/bootstrap/compile.rs
+@@ -145,6 +145,11 @@ pub fn std_cargo(build: &Build,
+ cargo.env("MACOSX_DEPLOYMENT_TARGET", target);
+ }
+
++ // FIXME: Temporary detection of SJLJ MinGW compilers.
++ if build.build.contains("linux") && target == "i686-pc-windows-gnu" {
++ features.push_str(" sjlj_eh");
++ }
++
+ // When doing a local rebuild we tell cargo that we're stage1 rather than
+ // stage0. This works fine if the local rust and being-built rust have the
+ // same view of what the default allocator is, but fails otherwise. Since
+diff --git a/src/libstd/Cargo.toml b/src/libstd/Cargo.toml
+index c1fe4a89d6..6c8cb330d8 100644
+--- a/src/libstd/Cargo.toml
++++ b/src/libstd/Cargo.toml
+@@ -49,3 +49,4 @@ force_alloc_system = []
+ panic-unwind = ["panic_unwind"]
+ profiler = ["profiler_builtins"]
+ wasm_syscall = []
++sjlj_eh = ["unwind/sjlj_eh"]
+diff --git a/src/libunwind/Cargo.toml b/src/libunwind/Cargo.toml
+index fbd9789d2f..5e319c67fa 100644
+--- a/src/libunwind/Cargo.toml
++++ b/src/libunwind/Cargo.toml
+@@ -14,3 +14,6 @@ doc = false
+ [dependencies]
+ core = { path = "../libcore" }
+ libc = { path = "../rustc/libc_shim" }
++
++[features]
++sjlj_eh = []
+diff --git a/src/libunwind/libunwind.rs b/src/libunwind/libunwind.rs
+index e6fff7963f..6a57cf7c93 100644
+--- a/src/libunwind/libunwind.rs
++++ b/src/libunwind/libunwind.rs
+@@ -10,11 +10,6 @@
+
+ #![allow(bad_style)]
+
+-macro_rules! cfg_if {
+- ( $( if #[cfg( $meta:meta )] { $($it1:item)* } else { $($it2:item)* } )* ) =>
+- ( $( $( #[cfg($meta)] $it1)* $( #[cfg(not($meta))] $it2)* )* )
+-}
+-
+ use libc::{c_int, c_void, uintptr_t};
+
+ #[repr(C)]
+@@ -84,7 +79,6 @@ pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reaso
+ exception: *mut _Unwind_Exception);
+ extern "C" {
+ #[unwind]
+- pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
+ pub fn _Unwind_DeleteException(exception: *mut _Unwind_Exception);
+ pub fn _Unwind_GetLanguageSpecificData(ctx: *mut _Unwind_Context) -> *mut c_void;
+ pub fn _Unwind_GetRegionStart(ctx: *mut _Unwind_Context) -> _Unwind_Ptr;
+@@ -216,26 +210,49 @@ if #[cfg(all(any(target_os = "ios", not(target_arch = "arm"))))] {
+ pc
+ }
+ }
++} // cfg_if!
+
+-if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] {
+- // Not 32-bit iOS
++cfg_if! {
++if #[cfg(all(target_os = "ios", target_arch = "arm"))] {
++ // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
+ extern "C" {
+ #[unwind]
+- pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
+- pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
+- trace_argument: *mut c_void)
+- -> _Unwind_Reason_Code;
++ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
++ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
+ }
+-} else {
+- // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
++
++ #[inline]
++ pub unsafe fn _Unwind_RaiseException(exc: *mut _Unwind_Exception) -> _Unwind_Reason_Code {
++ _Unwind_SjLj_RaiseException(exc)
++ }
++
++} else if #[cfg(feature = "sjlj_eh")] {
+ extern "C" {
+ #[unwind]
++ pub fn _Unwind_SjLj_Resume(e: *mut _Unwind_Exception) -> !;
+ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
++ pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
++ trace_argument: *mut c_void)
++ -> _Unwind_Reason_Code;
++ }
++
++ #[inline]
++ pub unsafe fn _Unwind_Resume(exc: *mut _Unwind_Exception) -> ! {
++ _Unwind_SjLj_Resume(exc)
+ }
+
+ #[inline]
+ pub unsafe fn _Unwind_RaiseException(exc: *mut _Unwind_Exception) -> _Unwind_Reason_Code {
+ _Unwind_SjLj_RaiseException(exc)
+ }
++} else {
++ extern "C" {
++ #[unwind]
++ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
++ pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
++ pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
++ trace_argument: *mut c_void)
++ -> _Unwind_Reason_Code;
++ }
+ }
+ } // cfg_if!
+--
+2.17.1
+
1
0

[tor-browser/tor-browser-60.0.1esr-8.0-1] Bug 1448746 - Capitalization fixes for MinGW x64 build in the crash reporter. r=gsvelto, a=jcristau
by gk@torproject.org 14 Jun '18
by gk@torproject.org 14 Jun '18
14 Jun '18
commit fd2af1d9077e5ff07cb0e76976026b81663ac0ab
Author: Tom Ritter <tom(a)mozilla.com>
Date: Fri Mar 23 18:01:19 2018 -0500
Bug 1448746 - Capitalization fixes for MinGW x64 build in the crash reporter. r=gsvelto, a=jcristau
MozReview-Commit-ID: 8tZkuachYhX
--HG--
extra : rebase_source : 9170d2fdbfc92d7aba81a91d5438e0beeda2c139
extra : source : 412b3c06c06d191d1c0db2d19ccb5e9ff954813d
---
toolkit/crashreporter/minidump-analyzer/moz.build | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/toolkit/crashreporter/minidump-analyzer/moz.build b/toolkit/crashreporter/minidump-analyzer/moz.build
index 50852baee8a2..d52eaacf6704 100644
--- a/toolkit/crashreporter/minidump-analyzer/moz.build
+++ b/toolkit/crashreporter/minidump-analyzer/moz.build
@@ -25,8 +25,8 @@ if CONFIG['OS_TARGET'] != 'Android':
]
OS_LIBS += [
- 'Dbghelp',
- 'Imagehlp'
+ 'dbghelp',
+ 'imagehlp'
]
if CONFIG['OS_TARGET'] == 'WINNT' and CONFIG['CC_TYPE'] == 'gcc':
1
0

[tor-browser/tor-browser-60.0.1esr-8.0-1] Bug 1448453 - Update libvpx to have a 64 bit mingw config. r=kinetik, a=jcristau
by gk@torproject.org 14 Jun '18
by gk@torproject.org 14 Jun '18
14 Jun '18
commit 5a8dfc18b8b87bb952eeb59eb146f6091548616d
Author: Tom Ritter <tom(a)mozilla.com>
Date: Fri Mar 23 14:56:54 2018 -0500
Bug 1448453 - Update libvpx to have a 64 bit mingw config. r=kinetik, a=jcristau
MozReview-Commit-ID: 1Dt3OcMgWii
--HG--
extra : rebase_source : 98b1b48718e637bf3dc29aa44a218e8f06a6af62
extra : source : 5c5f3602567270308f6e2d51a226faaa159db692
---
media/libvpx/config/win/mingw64/vp8_rtcd.h | 264 +++++
media/libvpx/config/win/mingw64/vp9_rtcd.h | 140 +++
media/libvpx/config/win/mingw64/vpx_config.asm | 78 ++
media/libvpx/config/win/mingw64/vpx_config.c | 10 +
media/libvpx/config/win/mingw64/vpx_config.h | 93 ++
media/libvpx/config/win/mingw64/vpx_dsp_rtcd.h | 1207 ++++++++++++++++++++++
media/libvpx/config/win/mingw64/vpx_scale_rtcd.h | 69 ++
media/libvpx/moz.build | 8 +-
8 files changed, 1867 insertions(+), 2 deletions(-)
diff --git a/media/libvpx/config/win/mingw64/vp8_rtcd.h b/media/libvpx/config/win/mingw64/vp8_rtcd.h
new file mode 100644
index 000000000000..472863970439
--- /dev/null
+++ b/media/libvpx/config/win/mingw64/vp8_rtcd.h
@@ -0,0 +1,264 @@
+#ifndef VP8_RTCD_H_
+#define VP8_RTCD_H_
+
+#ifdef RTCD_C
+#define RTCD_EXTERN
+#else
+#define RTCD_EXTERN extern
+#endif
+
+/*
+ * VP8
+ */
+
+struct blockd;
+struct macroblockd;
+struct loop_filter_info;
+
+/* Encoder forward decls */
+struct block;
+struct macroblock;
+struct variance_vtable;
+union int_mv;
+struct yv12_buffer_config;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void vp8_bilinear_predict16x16_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_bilinear_predict16x16_sse2(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_bilinear_predict16x16_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+RTCD_EXTERN void (*vp8_bilinear_predict16x16)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+
+void vp8_bilinear_predict4x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_bilinear_predict4x4_mmx(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_mmx
+
+void vp8_bilinear_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_bilinear_predict8x4_mmx(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_mmx
+
+void vp8_bilinear_predict8x8_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_bilinear_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_bilinear_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+RTCD_EXTERN void (*vp8_bilinear_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+
+void vp8_blend_b_c(unsigned char *y, unsigned char *u, unsigned char *v, int y1, int u1, int v1, int alpha, int stride);
+#define vp8_blend_b vp8_blend_b_c
+
+void vp8_blend_mb_inner_c(unsigned char *y, unsigned char *u, unsigned char *v, int y1, int u1, int v1, int alpha, int stride);
+#define vp8_blend_mb_inner vp8_blend_mb_inner_c
+
+void vp8_blend_mb_outer_c(unsigned char *y, unsigned char *u, unsigned char *v, int y1, int u1, int v1, int alpha, int stride);
+#define vp8_blend_mb_outer vp8_blend_mb_outer_c
+
+int vp8_block_error_c(short *coeff, short *dqcoeff);
+int vp8_block_error_sse2(short *coeff, short *dqcoeff);
+#define vp8_block_error vp8_block_error_sse2
+
+void vp8_copy32xn_c(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
+void vp8_copy32xn_sse2(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
+void vp8_copy32xn_sse3(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
+RTCD_EXTERN void (*vp8_copy32xn)(const unsigned char *src_ptr, int source_stride, unsigned char *dst_ptr, int dst_stride, int n);
+
+void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
+void vp8_copy_mem16x16_sse2(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
+#define vp8_copy_mem16x16 vp8_copy_mem16x16_sse2
+
+void vp8_copy_mem8x4_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
+void vp8_copy_mem8x4_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
+#define vp8_copy_mem8x4 vp8_copy_mem8x4_mmx
+
+void vp8_copy_mem8x8_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
+void vp8_copy_mem8x8_mmx(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
+#define vp8_copy_mem8x8 vp8_copy_mem8x8_mmx
+
+void vp8_dc_only_idct_add_c(short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride);
+void vp8_dc_only_idct_add_mmx(short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride);
+#define vp8_dc_only_idct_add vp8_dc_only_idct_add_mmx
+
+int vp8_denoiser_filter_c(unsigned char *mc_running_avg_y, int mc_avg_y_stride, unsigned char *running_avg_y, int avg_y_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising);
+int vp8_denoiser_filter_sse2(unsigned char *mc_running_avg_y, int mc_avg_y_stride, unsigned char *running_avg_y, int avg_y_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising);
+#define vp8_denoiser_filter vp8_denoiser_filter_sse2
+
+int vp8_denoiser_filter_uv_c(unsigned char *mc_running_avg, int mc_avg_stride, unsigned char *running_avg, int avg_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising);
+int vp8_denoiser_filter_uv_sse2(unsigned char *mc_running_avg, int mc_avg_stride, unsigned char *running_avg, int avg_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising);
+#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_sse2
+
+void vp8_dequant_idct_add_c(short *input, short *dq, unsigned char *output, int stride);
+void vp8_dequant_idct_add_mmx(short *input, short *dq, unsigned char *output, int stride);
+#define vp8_dequant_idct_add vp8_dequant_idct_add_mmx
+
+void vp8_dequant_idct_add_uv_block_c(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
+void vp8_dequant_idct_add_uv_block_sse2(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
+#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_sse2
+
+void vp8_dequant_idct_add_y_block_c(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
+void vp8_dequant_idct_add_y_block_sse2(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
+#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_sse2
+
+void vp8_dequantize_b_c(struct blockd*, short *dqc);
+void vp8_dequantize_b_mmx(struct blockd*, short *dqc);
+#define vp8_dequantize_b vp8_dequantize_b_mmx
+
+int vp8_diamond_search_sad_c(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, union int_mv *best_mv, int search_param, int sad_per_bit, int *num00, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+int vp8_diamond_search_sadx4(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, union int_mv *best_mv, int search_param, int sad_per_bit, int *num00, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+#define vp8_diamond_search_sad vp8_diamond_search_sadx4
+
+void vp8_fast_quantize_b_c(struct block *, struct blockd *);
+void vp8_fast_quantize_b_sse2(struct block *, struct blockd *);
+void vp8_fast_quantize_b_ssse3(struct block *, struct blockd *);
+RTCD_EXTERN void (*vp8_fast_quantize_b)(struct block *, struct blockd *);
+
+void vp8_filter_by_weight16x16_c(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight);
+void vp8_filter_by_weight16x16_sse2(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight);
+#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_sse2
+
+void vp8_filter_by_weight4x4_c(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight);
+#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c
+
+void vp8_filter_by_weight8x8_c(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight);
+void vp8_filter_by_weight8x8_sse2(unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight);
+#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_sse2
+
+int vp8_full_search_sad_c(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+int vp8_full_search_sadx3(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+int vp8_full_search_sadx8(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+RTCD_EXTERN int (*vp8_full_search_sad)(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+
+void vp8_loop_filter_bh_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
+void vp8_loop_filter_bh_sse2(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
+#define vp8_loop_filter_bh vp8_loop_filter_bh_sse2
+
+void vp8_loop_filter_bv_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
+void vp8_loop_filter_bv_sse2(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
+#define vp8_loop_filter_bv vp8_loop_filter_bv_sse2
+
+void vp8_loop_filter_mbh_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
+void vp8_loop_filter_mbh_sse2(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
+#define vp8_loop_filter_mbh vp8_loop_filter_mbh_sse2
+
+void vp8_loop_filter_mbv_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
+void vp8_loop_filter_mbv_sse2(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
+#define vp8_loop_filter_mbv vp8_loop_filter_mbv_sse2
+
+void vp8_loop_filter_bhs_c(unsigned char *y, int ystride, const unsigned char *blimit);
+void vp8_loop_filter_bhs_sse2(unsigned char *y, int ystride, const unsigned char *blimit);
+#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_sse2
+
+void vp8_loop_filter_bvs_c(unsigned char *y, int ystride, const unsigned char *blimit);
+void vp8_loop_filter_bvs_sse2(unsigned char *y, int ystride, const unsigned char *blimit);
+#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_sse2
+
+void vp8_loop_filter_simple_horizontal_edge_c(unsigned char *y, int ystride, const unsigned char *blimit);
+void vp8_loop_filter_simple_horizontal_edge_sse2(unsigned char *y, int ystride, const unsigned char *blimit);
+#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_sse2
+
+void vp8_loop_filter_simple_vertical_edge_c(unsigned char *y, int ystride, const unsigned char *blimit);
+void vp8_loop_filter_simple_vertical_edge_sse2(unsigned char *y, int ystride, const unsigned char *blimit);
+#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_sse2
+
+int vp8_mbblock_error_c(struct macroblock *mb, int dc);
+int vp8_mbblock_error_sse2(struct macroblock *mb, int dc);
+#define vp8_mbblock_error vp8_mbblock_error_sse2
+
+int vp8_mbuverror_c(struct macroblock *mb);
+int vp8_mbuverror_sse2(struct macroblock *mb);
+#define vp8_mbuverror vp8_mbuverror_sse2
+
+int vp8_refining_search_sad_c(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+int vp8_refining_search_sadx4(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
+#define vp8_refining_search_sad vp8_refining_search_sadx4
+
+void vp8_regular_quantize_b_c(struct block *, struct blockd *);
+void vp8_regular_quantize_b_sse2(struct block *, struct blockd *);
+void vp8_regular_quantize_b_sse4_1(struct block *, struct blockd *);
+RTCD_EXTERN void (*vp8_regular_quantize_b)(struct block *, struct blockd *);
+
+void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
+void vp8_short_fdct4x4_sse2(short *input, short *output, int pitch);
+#define vp8_short_fdct4x4 vp8_short_fdct4x4_sse2
+
+void vp8_short_fdct8x4_c(short *input, short *output, int pitch);
+void vp8_short_fdct8x4_sse2(short *input, short *output, int pitch);
+#define vp8_short_fdct8x4 vp8_short_fdct8x4_sse2
+
+void vp8_short_idct4x4llm_c(short *input, unsigned char *pred, int pitch, unsigned char *dst, int dst_stride);
+void vp8_short_idct4x4llm_mmx(short *input, unsigned char *pred, int pitch, unsigned char *dst, int dst_stride);
+#define vp8_short_idct4x4llm vp8_short_idct4x4llm_mmx
+
+void vp8_short_inv_walsh4x4_c(short *input, short *output);
+void vp8_short_inv_walsh4x4_sse2(short *input, short *output);
+#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_sse2
+
+void vp8_short_inv_walsh4x4_1_c(short *input, short *output);
+#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
+
+void vp8_short_walsh4x4_c(short *input, short *output, int pitch);
+void vp8_short_walsh4x4_sse2(short *input, short *output, int pitch);
+#define vp8_short_walsh4x4 vp8_short_walsh4x4_sse2
+
+void vp8_sixtap_predict16x16_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_sixtap_predict16x16_sse2(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_sixtap_predict16x16_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+RTCD_EXTERN void (*vp8_sixtap_predict16x16)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+
+void vp8_sixtap_predict4x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_sixtap_predict4x4_mmx(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_sixtap_predict4x4_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+RTCD_EXTERN void (*vp8_sixtap_predict4x4)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+
+void vp8_sixtap_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_sixtap_predict8x4_sse2(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_sixtap_predict8x4_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+RTCD_EXTERN void (*vp8_sixtap_predict8x4)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+
+void vp8_sixtap_predict8x8_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_sixtap_predict8x8_sse2(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+void vp8_sixtap_predict8x8_ssse3(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+RTCD_EXTERN void (*vp8_sixtap_predict8x8)(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
+
+void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
+void vp8_temporal_filter_apply_sse2(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
+#define vp8_temporal_filter_apply vp8_temporal_filter_apply_sse2
+
+void vp8_rtcd(void);
+
+#ifdef RTCD_C
+#include "vpx_ports/x86.h"
+static void setup_rtcd_internal(void)
+{
+ int flags = x86_simd_caps();
+
+ (void)flags;
+
+ vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_sse2;
+ if (flags & HAS_SSSE3) vp8_bilinear_predict16x16 = vp8_bilinear_predict16x16_ssse3;
+ vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_sse2;
+ if (flags & HAS_SSSE3) vp8_bilinear_predict8x8 = vp8_bilinear_predict8x8_ssse3;
+ vp8_copy32xn = vp8_copy32xn_sse2;
+ if (flags & HAS_SSE3) vp8_copy32xn = vp8_copy32xn_sse3;
+ vp8_fast_quantize_b = vp8_fast_quantize_b_sse2;
+ if (flags & HAS_SSSE3) vp8_fast_quantize_b = vp8_fast_quantize_b_ssse3;
+ vp8_full_search_sad = vp8_full_search_sad_c;
+ if (flags & HAS_SSE3) vp8_full_search_sad = vp8_full_search_sadx3;
+ if (flags & HAS_SSE4_1) vp8_full_search_sad = vp8_full_search_sadx8;
+ vp8_regular_quantize_b = vp8_regular_quantize_b_sse2;
+ if (flags & HAS_SSE4_1) vp8_regular_quantize_b = vp8_regular_quantize_b_sse4_1;
+ vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_sse2;
+ if (flags & HAS_SSSE3) vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_ssse3;
+ vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_mmx;
+ if (flags & HAS_SSSE3) vp8_sixtap_predict4x4 = vp8_sixtap_predict4x4_ssse3;
+ vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_sse2;
+ if (flags & HAS_SSSE3) vp8_sixtap_predict8x4 = vp8_sixtap_predict8x4_ssse3;
+ vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_sse2;
+ if (flags & HAS_SSSE3) vp8_sixtap_predict8x8 = vp8_sixtap_predict8x8_ssse3;
+}
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif
diff --git a/media/libvpx/config/win/mingw64/vp9_rtcd.h b/media/libvpx/config/win/mingw64/vp9_rtcd.h
new file mode 100644
index 000000000000..47a708444d86
--- /dev/null
+++ b/media/libvpx/config/win/mingw64/vp9_rtcd.h
@@ -0,0 +1,140 @@
+#ifndef VP9_RTCD_H_
+#define VP9_RTCD_H_
+
+#ifdef RTCD_C
+#define RTCD_EXTERN
+#else
+#define RTCD_EXTERN extern
+#endif
+
+/*
+ * VP9
+ */
+
+#include "vpx/vpx_integer.h"
+#include "vp9/common/vp9_common.h"
+#include "vp9/common/vp9_enums.h"
+
+struct macroblockd;
+
+/* Encoder forward decls */
+struct macroblock;
+struct vp9_variance_vtable;
+struct search_site_config;
+struct mv;
+union int_mv;
+struct yv12_buffer_config;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int64_t vp9_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
+int64_t vp9_block_error_sse2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
+int64_t vp9_block_error_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
+RTCD_EXTERN int64_t (*vp9_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
+
+int64_t vp9_block_error_fp_c(const int16_t *coeff, const int16_t *dqcoeff, int block_size);
+int64_t vp9_block_error_fp_sse2(const int16_t *coeff, const int16_t *dqcoeff, int block_size);
+#define vp9_block_error_fp vp9_block_error_fp_sse2
+
+int vp9_diamond_search_sad_c(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv);
+int vp9_diamond_search_sad_avx(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv);
+RTCD_EXTERN int (*vp9_diamond_search_sad)(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv);
+
+void vp9_fdct8x8_quant_c(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vp9_fdct8x8_quant_sse2(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vp9_fdct8x8_quant_ssse3(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*vp9_fdct8x8_quant)(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void vp9_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+void vp9_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+#define vp9_fht16x16 vp9_fht16x16_sse2
+
+void vp9_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+void vp9_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+#define vp9_fht4x4 vp9_fht4x4_sse2
+
+void vp9_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+void vp9_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, int tx_type);
+#define vp9_fht8x8 vp9_fht8x8_sse2
+
+void vp9_filter_by_weight16x16_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int src_weight);
+void vp9_filter_by_weight16x16_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int src_weight);
+#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_sse2
+
+void vp9_filter_by_weight8x8_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int src_weight);
+void vp9_filter_by_weight8x8_sse2(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int src_weight);
+#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_sse2
+
+int vp9_full_search_sad_c(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
+int vp9_full_search_sadx3(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
+int vp9_full_search_sadx8(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
+RTCD_EXTERN int (*vp9_full_search_sad)(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
+
+void vp9_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
+void vp9_fwht4x4_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vp9_fwht4x4 vp9_fwht4x4_sse2
+
+void vp9_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
+void vp9_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
+#define vp9_iht16x16_256_add vp9_iht16x16_256_add_sse2
+
+void vp9_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
+void vp9_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
+#define vp9_iht4x4_16_add vp9_iht4x4_16_add_sse2
+
+void vp9_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
+void vp9_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
+#define vp9_iht8x8_64_add vp9_iht8x8_64_add_sse2
+
+void vp9_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vp9_quantize_fp_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vp9_quantize_fp_ssse3(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*vp9_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void vp9_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vp9_quantize_fp_32x32_ssse3(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*vp9_quantize_fp_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config *src, struct yv12_buffer_config *dst);
+void vp9_scale_and_extend_frame_ssse3(const struct yv12_buffer_config *src, struct yv12_buffer_config *dst);
+RTCD_EXTERN void (*vp9_scale_and_extend_frame)(const struct yv12_buffer_config *src, struct yv12_buffer_config *dst);
+
+void vp9_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
+void vp9_temporal_filter_apply_sse2(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
+#define vp9_temporal_filter_apply vp9_temporal_filter_apply_sse2
+
+void vp9_rtcd(void);
+
+#ifdef RTCD_C
+#include "vpx_ports/x86.h"
+static void setup_rtcd_internal(void)
+{
+ int flags = x86_simd_caps();
+
+ (void)flags;
+
+ vp9_block_error = vp9_block_error_sse2;
+ if (flags & HAS_AVX2) vp9_block_error = vp9_block_error_avx2;
+ vp9_diamond_search_sad = vp9_diamond_search_sad_c;
+ if (flags & HAS_AVX) vp9_diamond_search_sad = vp9_diamond_search_sad_avx;
+ vp9_fdct8x8_quant = vp9_fdct8x8_quant_sse2;
+ if (flags & HAS_SSSE3) vp9_fdct8x8_quant = vp9_fdct8x8_quant_ssse3;
+ vp9_full_search_sad = vp9_full_search_sad_c;
+ if (flags & HAS_SSE3) vp9_full_search_sad = vp9_full_search_sadx3;
+ if (flags & HAS_SSE4_1) vp9_full_search_sad = vp9_full_search_sadx8;
+ vp9_quantize_fp = vp9_quantize_fp_sse2;
+ if (flags & HAS_SSSE3) vp9_quantize_fp = vp9_quantize_fp_ssse3;
+ vp9_quantize_fp_32x32 = vp9_quantize_fp_32x32_c;
+ if (flags & HAS_SSSE3) vp9_quantize_fp_32x32 = vp9_quantize_fp_32x32_ssse3;
+ vp9_scale_and_extend_frame = vp9_scale_and_extend_frame_c;
+ if (flags & HAS_SSSE3) vp9_scale_and_extend_frame = vp9_scale_and_extend_frame_ssse3;
+}
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif
diff --git a/media/libvpx/config/win/mingw64/vpx_config.asm b/media/libvpx/config/win/mingw64/vpx_config.asm
new file mode 100755
index 000000000000..e4744099588a
--- /dev/null
+++ b/media/libvpx/config/win/mingw64/vpx_config.asm
@@ -0,0 +1,78 @@
+%define ARCH_ARM 0
+%define ARCH_MIPS 0
+%define ARCH_X86 0
+%define ARCH_X86_64 1
+%define HAVE_NEON 0
+%define HAVE_NEON_ASM 0
+%define HAVE_MIPS32 0
+%define HAVE_DSPR2 0
+%define HAVE_MSA 0
+%define HAVE_MIPS64 0
+%define HAVE_MMX 1
+%define HAVE_SSE 1
+%define HAVE_SSE2 1
+%define HAVE_SSE3 1
+%define HAVE_SSSE3 1
+%define HAVE_SSE4_1 1
+%define HAVE_AVX 1
+%define HAVE_AVX2 1
+%define HAVE_VPX_PORTS 1
+%define HAVE_PTHREAD_H 1
+%define CONFIG_DEPENDENCY_TRACKING 1
+%define CONFIG_EXTERNAL_BUILD 1
+%define CONFIG_INSTALL_DOCS 0
+%define CONFIG_INSTALL_BINS 1
+%define CONFIG_INSTALL_LIBS 1
+%define CONFIG_INSTALL_SRCS 0
+%define CONFIG_DEBUG 0
+%define CONFIG_GPROF 0
+%define CONFIG_GCOV 0
+%define CONFIG_RVCT 0
+%define CONFIG_GCC 1
+%define CONFIG_MSVS 0
+%define CONFIG_PIC 1
+%define CONFIG_BIG_ENDIAN 0
+%define CONFIG_CODEC_SRCS 0
+%define CONFIG_DEBUG_LIBS 0
+%define CONFIG_DEQUANT_TOKENS 0
+%define CONFIG_DC_RECON 0
+%define CONFIG_RUNTIME_CPU_DETECT 1
+%define CONFIG_POSTPROC 1
+%define CONFIG_VP9_POSTPROC 1
+%define CONFIG_MULTITHREAD 1
+%define CONFIG_INTERNAL_STATS 0
+%define CONFIG_VP8_ENCODER 1
+%define CONFIG_VP8_DECODER 1
+%define CONFIG_VP9_ENCODER 1
+%define CONFIG_VP9_DECODER 1
+%define CONFIG_VP8 1
+%define CONFIG_VP9 1
+%define CONFIG_ENCODERS 1
+%define CONFIG_DECODERS 1
+%define CONFIG_STATIC_MSVCRT 0
+%define CONFIG_SPATIAL_RESAMPLING 1
+%define CONFIG_REALTIME_ONLY 0
+%define CONFIG_ONTHEFLY_BITPACKING 0
+%define CONFIG_ERROR_CONCEALMENT 0
+%define CONFIG_SHARED 0
+%define CONFIG_STATIC 1
+%define CONFIG_SMALL 0
+%define CONFIG_POSTPROC_VISUALIZER 0
+%define CONFIG_OS_SUPPORT 1
+%define CONFIG_UNIT_TESTS 0
+%define CONFIG_WEBM_IO 1
+%define CONFIG_LIBYUV 1
+%define CONFIG_DECODE_PERF_TESTS 0
+%define CONFIG_ENCODE_PERF_TESTS 0
+%define CONFIG_MULTI_RES_ENCODING 1
+%define CONFIG_TEMPORAL_DENOISING 1
+%define CONFIG_VP9_TEMPORAL_DENOISING 0
+%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
+%define CONFIG_VP9_HIGHBITDEPTH 0
+%define CONFIG_BETTER_HW_COMPATIBILITY 0
+%define CONFIG_EXPERIMENTAL 0
+%define CONFIG_SIZE_LIMIT 1
+%define CONFIG_SPATIAL_SVC 0
+%define CONFIG_FP_MB_STATS 0
+%define CONFIG_EMULATE_HARDWARE 0
+%define CONFIG_MISC_FIXES 0
diff --git a/media/libvpx/config/win/mingw64/vpx_config.c b/media/libvpx/config/win/mingw64/vpx_config.c
new file mode 100755
index 000000000000..81497a212296
--- /dev/null
+++ b/media/libvpx/config/win/mingw64/vpx_config.c
@@ -0,0 +1,10 @@
+/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
+/* */
+/* Use of this source code is governed by a BSD-style license */
+/* that can be found in the LICENSE file in the root of the source */
+/* tree. An additional intellectual property rights grant can be found */
+/* in the file PATENTS. All contributing project authors may */
+/* be found in the AUTHORS file in the root of the source tree. */
+#include "vpx/vpx_codec.h"
+static const char* const cfg = "--target=x86_64-win64-gcc --enable-external-build --disable-examples --disable-install-docs --disable-unit-tests --enable-multi-res-encoding --size-limit=8192x4608 --enable-pic --enable-postproc --enable-vp9-postproc --as=yasm";
+const char *vpx_codec_build_config(void) {return cfg;}
diff --git a/media/libvpx/config/win/mingw64/vpx_config.h b/media/libvpx/config/win/mingw64/vpx_config.h
new file mode 100755
index 000000000000..23f32d14871f
--- /dev/null
+++ b/media/libvpx/config/win/mingw64/vpx_config.h
@@ -0,0 +1,93 @@
+/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */
+/* */
+/* Use of this source code is governed by a BSD-style license */
+/* that can be found in the LICENSE file in the root of the source */
+/* tree. An additional intellectual property rights grant can be found */
+/* in the file PATENTS. All contributing project authors may */
+/* be found in the AUTHORS file in the root of the source tree. */
+/* This file automatically generated by configure. Do not edit! */
+#ifndef VPX_CONFIG_H
+#define VPX_CONFIG_H
+#define RESTRICT
+#define INLINE inline
+#define ARCH_ARM 0
+#define ARCH_MIPS 0
+#define ARCH_X86 0
+#define ARCH_X86_64 1
+#define HAVE_NEON 0
+#define HAVE_NEON_ASM 0
+#define HAVE_MIPS32 0
+#define HAVE_DSPR2 0
+#define HAVE_MSA 0
+#define HAVE_MIPS64 0
+#define HAVE_MMX 1
+#define HAVE_SSE 1
+#define HAVE_SSE2 1
+#define HAVE_SSE3 1
+#define HAVE_SSSE3 1
+#define HAVE_SSE4_1 1
+#define HAVE_AVX 1
+#define HAVE_AVX2 1
+#define HAVE_VPX_PORTS 1
+#define HAVE_PTHREAD_H 1
+#define CONFIG_DEPENDENCY_TRACKING 1
+#define CONFIG_EXTERNAL_BUILD 1
+#define CONFIG_INSTALL_DOCS 0
+#define CONFIG_INSTALL_BINS 1
+#define CONFIG_INSTALL_LIBS 1
+#define CONFIG_INSTALL_SRCS 0
+#define CONFIG_DEBUG 0
+#define CONFIG_GPROF 0
+#define CONFIG_GCOV 0
+#define CONFIG_RVCT 0
+#define CONFIG_GCC 1
+#define CONFIG_MSVS 0
+#define CONFIG_PIC 1
+#define CONFIG_BIG_ENDIAN 0
+#define CONFIG_CODEC_SRCS 0
+#define CONFIG_DEBUG_LIBS 0
+#define CONFIG_DEQUANT_TOKENS 0
+#define CONFIG_DC_RECON 0
+#define CONFIG_RUNTIME_CPU_DETECT 1
+#define CONFIG_POSTPROC 1
+#define CONFIG_VP9_POSTPROC 1
+#define CONFIG_MULTITHREAD 1
+#define CONFIG_INTERNAL_STATS 0
+#define CONFIG_VP8_ENCODER 1
+#define CONFIG_VP8_DECODER 1
+#define CONFIG_VP9_ENCODER 1
+#define CONFIG_VP9_DECODER 1
+#define CONFIG_VP8 1
+#define CONFIG_VP9 1
+#define CONFIG_ENCODERS 1
+#define CONFIG_DECODERS 1
+#define CONFIG_STATIC_MSVCRT 0
+#define CONFIG_SPATIAL_RESAMPLING 1
+#define CONFIG_REALTIME_ONLY 0
+#define CONFIG_ONTHEFLY_BITPACKING 0
+#define CONFIG_ERROR_CONCEALMENT 0
+#define CONFIG_SHARED 0
+#define CONFIG_STATIC 1
+#define CONFIG_SMALL 0
+#define CONFIG_POSTPROC_VISUALIZER 0
+#define CONFIG_OS_SUPPORT 1
+#define CONFIG_UNIT_TESTS 0
+#define CONFIG_WEBM_IO 1
+#define CONFIG_LIBYUV 1
+#define CONFIG_DECODE_PERF_TESTS 0
+#define CONFIG_ENCODE_PERF_TESTS 0
+#define CONFIG_MULTI_RES_ENCODING 1
+#define CONFIG_TEMPORAL_DENOISING 1
+#define CONFIG_VP9_TEMPORAL_DENOISING 0
+#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
+#define CONFIG_VP9_HIGHBITDEPTH 0
+#define CONFIG_BETTER_HW_COMPATIBILITY 0
+#define CONFIG_EXPERIMENTAL 0
+#define CONFIG_SIZE_LIMIT 1
+#define CONFIG_SPATIAL_SVC 0
+#define CONFIG_FP_MB_STATS 0
+#define CONFIG_EMULATE_HARDWARE 0
+#define CONFIG_MISC_FIXES 0
+#define DECODE_WIDTH_LIMIT 8192
+#define DECODE_HEIGHT_LIMIT 4608
+#endif /* VPX_CONFIG_H */
diff --git a/media/libvpx/config/win/mingw64/vpx_dsp_rtcd.h b/media/libvpx/config/win/mingw64/vpx_dsp_rtcd.h
new file mode 100644
index 000000000000..6f181c0a0e09
--- /dev/null
+++ b/media/libvpx/config/win/mingw64/vpx_dsp_rtcd.h
@@ -0,0 +1,1207 @@
+#ifndef VPX_DSP_RTCD_H_
+#define VPX_DSP_RTCD_H_
+
+#ifdef RTCD_C
+#define RTCD_EXTERN
+#else
+#define RTCD_EXTERN extern
+#endif
+
+/*
+ * DSP
+ */
+
+#include "vpx/vpx_integer.h"
+#include "vpx_dsp/vpx_dsp_common.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+unsigned int vpx_avg_4x4_c(const uint8_t *, int p);
+unsigned int vpx_avg_4x4_sse2(const uint8_t *, int p);
+#define vpx_avg_4x4 vpx_avg_4x4_sse2
+
+unsigned int vpx_avg_8x8_c(const uint8_t *, int p);
+unsigned int vpx_avg_8x8_sse2(const uint8_t *, int p);
+#define vpx_avg_8x8 vpx_avg_8x8_sse2
+
+void vpx_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride);
+#define vpx_comp_avg_pred vpx_comp_avg_pred_c
+
+void vpx_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void vpx_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void vpx_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8_avg_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void vpx_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_avg_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8_avg_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void vpx_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_horiz_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void vpx_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve8_vert_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_convolve8_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void vpx_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define vpx_convolve_avg vpx_convolve_avg_sse2
+
+void vpx_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_convolve_copy_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define vpx_convolve_copy vpx_convolve_copy_sse2
+
+void vpx_d117_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d117_predictor_16x16 vpx_d117_predictor_16x16_c
+
+void vpx_d117_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d117_predictor_32x32 vpx_d117_predictor_32x32_c
+
+void vpx_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d117_predictor_4x4 vpx_d117_predictor_4x4_c
+
+void vpx_d117_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d117_predictor_8x8 vpx_d117_predictor_8x8_c
+
+void vpx_d135_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d135_predictor_16x16 vpx_d135_predictor_16x16_c
+
+void vpx_d135_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d135_predictor_32x32 vpx_d135_predictor_32x32_c
+
+void vpx_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d135_predictor_4x4 vpx_d135_predictor_4x4_c
+
+void vpx_d135_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d135_predictor_8x8 vpx_d135_predictor_8x8_c
+
+void vpx_d153_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d153_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d153_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d153_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d153_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d153_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d153_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d153_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d153_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d153_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d153_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d207_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d207_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d207_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d207_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d207_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d207_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d207_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d207_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d207_predictor_4x4 vpx_d207_predictor_4x4_sse2
+
+void vpx_d207_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d207_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d207_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d207e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d207e_predictor_16x16 vpx_d207e_predictor_16x16_c
+
+void vpx_d207e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d207e_predictor_32x32 vpx_d207e_predictor_32x32_c
+
+void vpx_d207e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d207e_predictor_4x4 vpx_d207e_predictor_4x4_c
+
+void vpx_d207e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d207e_predictor_8x8 vpx_d207e_predictor_8x8_c
+
+void vpx_d45_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d45_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d45_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d45_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d45_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d45_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d45_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d45_predictor_4x4 vpx_d45_predictor_4x4_sse2
+
+void vpx_d45_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d45_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d45_predictor_8x8 vpx_d45_predictor_8x8_sse2
+
+void vpx_d45e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d45e_predictor_16x16 vpx_d45e_predictor_16x16_c
+
+void vpx_d45e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d45e_predictor_32x32 vpx_d45e_predictor_32x32_c
+
+void vpx_d45e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d45e_predictor_4x4 vpx_d45e_predictor_4x4_c
+
+void vpx_d45e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d45e_predictor_8x8 vpx_d45e_predictor_8x8_c
+
+void vpx_d63_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d63_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d63_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d63_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d63_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d63_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d63_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d63_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d63_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_d63_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*vpx_d63_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void vpx_d63e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d63e_predictor_16x16 vpx_d63e_predictor_16x16_c
+
+void vpx_d63e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d63e_predictor_32x32 vpx_d63e_predictor_32x32_c
+
+void vpx_d63e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d63e_predictor_4x4 vpx_d63e_predictor_4x4_c
+
+void vpx_d63e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d63e_predictor_8x8 vpx_d63e_predictor_8x8_c
+
+void vpx_d63f_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_d63f_predictor_4x4 vpx_d63f_predictor_4x4_c
+
+void vpx_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_128_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_128_predictor_16x16 vpx_dc_128_predictor_16x16_sse2
+
+void vpx_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_128_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_128_predictor_32x32 vpx_dc_128_predictor_32x32_sse2
+
+void vpx_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_128_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_128_predictor_4x4 vpx_dc_128_predictor_4x4_sse2
+
+void vpx_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_128_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_128_predictor_8x8 vpx_dc_128_predictor_8x8_sse2
+
+void vpx_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_left_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_left_predictor_16x16 vpx_dc_left_predictor_16x16_sse2
+
+void vpx_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_left_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_left_predictor_32x32 vpx_dc_left_predictor_32x32_sse2
+
+void vpx_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_left_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_left_predictor_4x4 vpx_dc_left_predictor_4x4_sse2
+
+void vpx_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_left_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_left_predictor_8x8 vpx_dc_left_predictor_8x8_sse2
+
+void vpx_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_predictor_16x16 vpx_dc_predictor_16x16_sse2
+
+void vpx_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_predictor_32x32 vpx_dc_predictor_32x32_sse2
+
+void vpx_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_predictor_4x4 vpx_dc_predictor_4x4_sse2
+
+void vpx_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_predictor_8x8 vpx_dc_predictor_8x8_sse2
+
+void vpx_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_top_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_top_predictor_16x16 vpx_dc_top_predictor_16x16_sse2
+
+void vpx_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_top_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_top_predictor_32x32 vpx_dc_top_predictor_32x32_sse2
+
+void vpx_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_top_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_top_predictor_4x4 vpx_dc_top_predictor_4x4_sse2
+
+void vpx_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_dc_top_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_dc_top_predictor_8x8 vpx_dc_top_predictor_8x8_sse2
+
+void vpx_fdct16x16_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct16x16_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct16x16 vpx_fdct16x16_sse2
+
+void vpx_fdct16x16_1_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct16x16_1_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct16x16_1 vpx_fdct16x16_1_sse2
+
+void vpx_fdct32x32_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct32x32_sse2(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct32x32_avx2(const int16_t *input, tran_low_t *output, int stride);
+RTCD_EXTERN void (*vpx_fdct32x32)(const int16_t *input, tran_low_t *output, int stride);
+
+void vpx_fdct32x32_1_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct32x32_1_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct32x32_1 vpx_fdct32x32_1_sse2
+
+void vpx_fdct32x32_rd_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct32x32_rd_sse2(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct32x32_rd_avx2(const int16_t *input, tran_low_t *output, int stride);
+RTCD_EXTERN void (*vpx_fdct32x32_rd)(const int16_t *input, tran_low_t *output, int stride);
+
+void vpx_fdct4x4_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct4x4_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct4x4 vpx_fdct4x4_sse2
+
+void vpx_fdct4x4_1_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct4x4_1_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct4x4_1 vpx_fdct4x4_1_sse2
+
+void vpx_fdct8x8_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct8x8_sse2(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct8x8_ssse3(const int16_t *input, tran_low_t *output, int stride);
+RTCD_EXTERN void (*vpx_fdct8x8)(const int16_t *input, tran_low_t *output, int stride);
+
+void vpx_fdct8x8_1_c(const int16_t *input, tran_low_t *output, int stride);
+void vpx_fdct8x8_1_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define vpx_fdct8x8_1 vpx_fdct8x8_1_sse2
+
+void vpx_get16x16var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+void vpx_get16x16var_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+void vpx_get16x16var_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+RTCD_EXTERN void (*vpx_get16x16var)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+
+unsigned int vpx_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
+#define vpx_get4x4sse_cs vpx_get4x4sse_cs_c
+
+void vpx_get8x8var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+void vpx_get8x8var_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+#define vpx_get8x8var vpx_get8x8var_sse2
+
+unsigned int vpx_get_mb_ss_c(const int16_t *);
+unsigned int vpx_get_mb_ss_sse2(const int16_t *);
+#define vpx_get_mb_ss vpx_get_mb_ss_sse2
+
+void vpx_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_h_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_h_predictor_16x16 vpx_h_predictor_16x16_sse2
+
+void vpx_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_h_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_h_predictor_32x32 vpx_h_predictor_32x32_sse2
+
+void vpx_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_h_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_h_predictor_4x4 vpx_h_predictor_4x4_sse2
+
+void vpx_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_h_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_h_predictor_8x8 vpx_h_predictor_8x8_sse2
+
+void vpx_hadamard_16x16_c(const int16_t *src_diff, int src_stride, int16_t *coeff);
+void vpx_hadamard_16x16_sse2(const int16_t *src_diff, int src_stride, int16_t *coeff);
+#define vpx_hadamard_16x16 vpx_hadamard_16x16_sse2
+
+void vpx_hadamard_8x8_c(const int16_t *src_diff, int src_stride, int16_t *coeff);
+void vpx_hadamard_8x8_sse2(const int16_t *src_diff, int src_stride, int16_t *coeff);
+void vpx_hadamard_8x8_ssse3(const int16_t *src_diff, int src_stride, int16_t *coeff);
+RTCD_EXTERN void (*vpx_hadamard_8x8)(const int16_t *src_diff, int src_stride, int16_t *coeff);
+
+void vpx_he_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_he_predictor_4x4 vpx_he_predictor_4x4_c
+
+void vpx_idct16x16_10_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct16x16_10_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct16x16_10_add vpx_idct16x16_10_add_sse2
+
+void vpx_idct16x16_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct16x16_1_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct16x16_1_add vpx_idct16x16_1_add_sse2
+
+void vpx_idct16x16_256_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct16x16_256_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct16x16_256_add vpx_idct16x16_256_add_sse2
+
+void vpx_idct32x32_1024_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_1024_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_1024_add_ssse3(const tran_low_t *input, uint8_t *dest, int stride);
+RTCD_EXTERN void (*vpx_idct32x32_1024_add)(const tran_low_t *input, uint8_t *dest, int stride);
+
+void vpx_idct32x32_135_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_1024_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_135_add_ssse3(const tran_low_t *input, uint8_t *dest, int stride);
+RTCD_EXTERN void (*vpx_idct32x32_135_add)(const tran_low_t *input, uint8_t *dest, int stride);
+
+void vpx_idct32x32_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_1_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct32x32_1_add vpx_idct32x32_1_add_sse2
+
+void vpx_idct32x32_34_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_34_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct32x32_34_add_ssse3(const tran_low_t *input, uint8_t *dest, int stride);
+RTCD_EXTERN void (*vpx_idct32x32_34_add)(const tran_low_t *input, uint8_t *dest, int stride);
+
+void vpx_idct4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct4x4_16_add vpx_idct4x4_16_add_sse2
+
+void vpx_idct4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct4x4_1_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct4x4_1_add vpx_idct4x4_1_add_sse2
+
+void vpx_idct8x8_12_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct8x8_12_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct8x8_12_add_ssse3(const tran_low_t *input, uint8_t *dest, int stride);
+RTCD_EXTERN void (*vpx_idct8x8_12_add)(const tran_low_t *input, uint8_t *dest, int stride);
+
+void vpx_idct8x8_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct8x8_1_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_idct8x8_1_add vpx_idct8x8_1_add_sse2
+
+void vpx_idct8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_idct8x8_64_add_ssse3(const tran_low_t *input, uint8_t *dest, int stride);
+RTCD_EXTERN void (*vpx_idct8x8_64_add)(const tran_low_t *input, uint8_t *dest, int stride);
+
+int16_t vpx_int_pro_col_c(const uint8_t *ref, const int width);
+int16_t vpx_int_pro_col_sse2(const uint8_t *ref, const int width);
+#define vpx_int_pro_col vpx_int_pro_col_sse2
+
+void vpx_int_pro_row_c(int16_t *hbuf, const uint8_t *ref, const int ref_stride, const int height);
+void vpx_int_pro_row_sse2(int16_t *hbuf, const uint8_t *ref, const int ref_stride, const int height);
+#define vpx_int_pro_row vpx_int_pro_row_sse2
+
+void vpx_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+void vpx_iwht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_iwht4x4_16_add vpx_iwht4x4_16_add_sse2
+
+void vpx_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
+#define vpx_iwht4x4_1_add vpx_iwht4x4_1_add_c
+
+void vpx_lpf_horizontal_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_16_avx2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+RTCD_EXTERN void (*vpx_lpf_horizontal_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+
+void vpx_lpf_horizontal_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_16_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_16_dual_avx2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+RTCD_EXTERN void (*vpx_lpf_horizontal_16_dual)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+
+void vpx_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_4_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_horizontal_4 vpx_lpf_horizontal_4_sse2
+
+void vpx_lpf_horizontal_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+void vpx_lpf_horizontal_4_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define vpx_lpf_horizontal_4_dual vpx_lpf_horizontal_4_dual_sse2
+
+void vpx_lpf_horizontal_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_horizontal_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_horizontal_8 vpx_lpf_horizontal_8_sse2
+
+void vpx_lpf_horizontal_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+void vpx_lpf_horizontal_8_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define vpx_lpf_horizontal_8_dual vpx_lpf_horizontal_8_dual_sse2
+
+void vpx_lpf_vertical_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_vertical_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_vertical_16 vpx_lpf_vertical_16_sse2
+
+void vpx_lpf_vertical_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_vertical_16_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_vertical_16_dual vpx_lpf_vertical_16_dual_sse2
+
+void vpx_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_vertical_4_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_vertical_4 vpx_lpf_vertical_4_sse2
+
+void vpx_lpf_vertical_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+void vpx_lpf_vertical_4_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define vpx_lpf_vertical_4_dual vpx_lpf_vertical_4_dual_sse2
+
+void vpx_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void vpx_lpf_vertical_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define vpx_lpf_vertical_8 vpx_lpf_vertical_8_sse2
+
+void vpx_lpf_vertical_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+void vpx_lpf_vertical_8_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define vpx_lpf_vertical_8_dual vpx_lpf_vertical_8_dual_sse2
+
+void vpx_mbpost_proc_across_ip_c(unsigned char *dst, int pitch, int rows, int cols,int flimit);
+void vpx_mbpost_proc_across_ip_sse2(unsigned char *dst, int pitch, int rows, int cols,int flimit);
+#define vpx_mbpost_proc_across_ip vpx_mbpost_proc_across_ip_sse2
+
+void vpx_mbpost_proc_down_c(unsigned char *dst, int pitch, int rows, int cols,int flimit);
+void vpx_mbpost_proc_down_sse2(unsigned char *dst, int pitch, int rows, int cols,int flimit);
+#define vpx_mbpost_proc_down vpx_mbpost_proc_down_sse2
+
+void vpx_minmax_8x8_c(const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max);
+void vpx_minmax_8x8_sse2(const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max);
+#define vpx_minmax_8x8 vpx_minmax_8x8_sse2
+
+unsigned int vpx_mse16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int vpx_mse16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int vpx_mse16x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_mse16x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+
+unsigned int vpx_mse16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int vpx_mse16x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define vpx_mse16x8 vpx_mse16x8_sse2
+
+unsigned int vpx_mse8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int vpx_mse8x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define vpx_mse8x16 vpx_mse8x16_sse2
+
+unsigned int vpx_mse8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int vpx_mse8x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define vpx_mse8x8 vpx_mse8x8_sse2
+
+void vpx_plane_add_noise_c(uint8_t *start, const int8_t *noise, int blackclamp, int whiteclamp, int width, int height, int pitch);
+void vpx_plane_add_noise_sse2(uint8_t *start, const int8_t *noise, int blackclamp, int whiteclamp, int width, int height, int pitch);
+#define vpx_plane_add_noise vpx_plane_add_noise_sse2
+
+void vpx_post_proc_down_and_across_mb_row_c(unsigned char *src, unsigned char *dst, int src_pitch, int dst_pitch, int cols, unsigned char *flimits, int size);
+void vpx_post_proc_down_and_across_mb_row_sse2(unsigned char *src, unsigned char *dst, int src_pitch, int dst_pitch, int cols, unsigned char *flimits, int size);
+#define vpx_post_proc_down_and_across_mb_row vpx_post_proc_down_and_across_mb_row_sse2
+
+void vpx_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vpx_quantize_b_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vpx_quantize_b_ssse3(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vpx_quantize_b_avx(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*vpx_quantize_b)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void vpx_quantize_b_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vpx_quantize_b_32x32_ssse3(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void vpx_quantize_b_32x32_avx(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*vpx_quantize_b_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+unsigned int vpx_sad16x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad16x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad16x16 vpx_sad16x16_sse2
+
+unsigned int vpx_sad16x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad16x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad16x16_avg vpx_sad16x16_avg_sse2
+
+void vpx_sad16x16x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x16x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x16x3_ssse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad16x16x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void vpx_sad16x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad16x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad16x16x4d vpx_sad16x16x4d_sse2
+
+void vpx_sad16x16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x16x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad16x16x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int vpx_sad16x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad16x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad16x32 vpx_sad16x32_sse2
+
+unsigned int vpx_sad16x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad16x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad16x32_avg vpx_sad16x32_avg_sse2
+
+void vpx_sad16x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad16x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad16x32x4d vpx_sad16x32x4d_sse2
+
+unsigned int vpx_sad16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad16x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad16x8 vpx_sad16x8_sse2
+
+unsigned int vpx_sad16x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad16x8_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad16x8_avg vpx_sad16x8_avg_sse2
+
+void vpx_sad16x8x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x8x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x8x3_ssse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad16x8x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void vpx_sad16x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad16x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad16x8x4d vpx_sad16x8x4d_sse2
+
+void vpx_sad16x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad16x8x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad16x8x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int vpx_sad32x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x16_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*vpx_sad32x16)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int vpx_sad32x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x16_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*vpx_sad32x16_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void vpx_sad32x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad32x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad32x16x4d vpx_sad32x16x4d_sse2
+
+unsigned int vpx_sad32x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*vpx_sad32x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int vpx_sad32x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x32_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*vpx_sad32x32_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void vpx_sad32x32x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define vpx_sad32x32x3 vpx_sad32x32x3_c
+
+void vpx_sad32x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad32x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad32x32x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad32x32x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+void vpx_sad32x32x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define vpx_sad32x32x8 vpx_sad32x32x8_c
+
+unsigned int vpx_sad32x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x64_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad32x64_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*vpx_sad32x64)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int vpx_sad32x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x64_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad32x64_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*vpx_sad32x64_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void vpx_sad32x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad32x64x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad32x64x4d vpx_sad32x64x4d_sse2
+
+unsigned int vpx_sad4x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad4x4_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad4x4 vpx_sad4x4_sse2
+
+unsigned int vpx_sad4x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad4x4_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad4x4_avg vpx_sad4x4_avg_sse2
+
+void vpx_sad4x4x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad4x4x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad4x4x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void vpx_sad4x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad4x4x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad4x4x4d vpx_sad4x4x4d_sse2
+
+void vpx_sad4x4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad4x4x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad4x4x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int vpx_sad4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad4x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad4x8 vpx_sad4x8_sse2
+
+unsigned int vpx_sad4x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad4x8_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad4x8_avg vpx_sad4x8_avg_sse2
+
+void vpx_sad4x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad4x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad4x8x4d vpx_sad4x8x4d_sse2
+
+void vpx_sad4x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define vpx_sad4x8x8 vpx_sad4x8x8_c
+
+unsigned int vpx_sad64x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad64x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad64x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*vpx_sad64x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int vpx_sad64x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad64x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad64x32_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*vpx_sad64x32_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void vpx_sad64x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad64x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad64x32x4d vpx_sad64x32x4d_sse2
+
+unsigned int vpx_sad64x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad64x64_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad64x64_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*vpx_sad64x64)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int vpx_sad64x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad64x64_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad64x64_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*vpx_sad64x64_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void vpx_sad64x64x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define vpx_sad64x64x3 vpx_sad64x64x3_c
+
+void vpx_sad64x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad64x64x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad64x64x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad64x64x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+void vpx_sad64x64x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define vpx_sad64x64x8 vpx_sad64x64x8_c
+
+unsigned int vpx_sad8x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad8x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad8x16 vpx_sad8x16_sse2
+
+unsigned int vpx_sad8x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad8x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad8x16_avg vpx_sad8x16_avg_sse2
+
+void vpx_sad8x16x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad8x16x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad8x16x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void vpx_sad8x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad8x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad8x16x4d vpx_sad8x16x4d_sse2
+
+void vpx_sad8x16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad8x16x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad8x16x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int vpx_sad8x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad8x4_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad8x4 vpx_sad8x4_sse2
+
+unsigned int vpx_sad8x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad8x4_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad8x4_avg vpx_sad8x4_avg_sse2
+
+void vpx_sad8x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad8x4x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad8x4x4d vpx_sad8x4x4d_sse2
+
+void vpx_sad8x4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define vpx_sad8x4x8 vpx_sad8x4x8_c
+
+unsigned int vpx_sad8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int vpx_sad8x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define vpx_sad8x8 vpx_sad8x8_sse2
+
+unsigned int vpx_sad8x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int vpx_sad8x8_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define vpx_sad8x8_avg vpx_sad8x8_avg_sse2
+
+void vpx_sad8x8x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad8x8x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad8x8x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void vpx_sad8x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void vpx_sad8x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define vpx_sad8x8x4d vpx_sad8x8x4d_sse2
+
+void vpx_sad8x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void vpx_sad8x8x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*vpx_sad8x8x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+int vpx_satd_c(const int16_t *coeff, int length);
+int vpx_satd_sse2(const int16_t *coeff, int length);
+#define vpx_satd vpx_satd_sse2
+
+void vpx_scaled_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void vpx_scaled_2d_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*vpx_scaled_2d)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void vpx_scaled_avg_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define vpx_scaled_avg_2d vpx_scaled_avg_2d_c
+
+void vpx_scaled_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define vpx_scaled_avg_horiz vpx_scaled_avg_horiz_c
+
+void vpx_scaled_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define vpx_scaled_avg_vert vpx_scaled_avg_vert_c
+
+void vpx_scaled_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define vpx_scaled_horiz vpx_scaled_horiz_c
+
+void vpx_scaled_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define vpx_scaled_vert vpx_scaled_vert_c
+
+uint32_t vpx_sub_pixel_avg_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance16x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance16x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance16x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance16x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance32x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance32x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance32x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance32x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance4x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance4x4_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance4x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance4x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance4x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance4x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance64x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance64x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance64x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance64x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance8x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x4_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance8x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_avg_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t vpx_sub_pixel_avg_variance8x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_avg_variance8x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t vpx_sub_pixel_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance16x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance16x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance16x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance16x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance32x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance32x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance32x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance32x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance4x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance4x4_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance4x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance4x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance4x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance4x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance64x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance64x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance64x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance64x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance8x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x4_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance8x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t vpx_sub_pixel_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t vpx_sub_pixel_variance8x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*vpx_sub_pixel_variance8x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+void vpx_subtract_block_c(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride);
+void vpx_subtract_block_sse2(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride);
+#define vpx_subtract_block vpx_subtract_block_sse2
+
+uint64_t vpx_sum_squares_2d_i16_c(const int16_t *src, int stride, int size);
+uint64_t vpx_sum_squares_2d_i16_sse2(const int16_t *src, int stride, int size);
+#define vpx_sum_squares_2d_i16 vpx_sum_squares_2d_i16_sse2
+
+void vpx_tm_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_tm_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_tm_predictor_16x16 vpx_tm_predictor_16x16_sse2
+
+void vpx_tm_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_tm_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_tm_predictor_32x32 vpx_tm_predictor_32x32_sse2
+
+void vpx_tm_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_tm_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_tm_predictor_4x4 vpx_tm_predictor_4x4_sse2
+
+void vpx_tm_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_tm_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_tm_predictor_8x8 vpx_tm_predictor_8x8_sse2
+
+void vpx_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_v_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_v_predictor_16x16 vpx_v_predictor_16x16_sse2
+
+void vpx_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_v_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_v_predictor_32x32 vpx_v_predictor_32x32_sse2
+
+void vpx_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_v_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_v_predictor_4x4 vpx_v_predictor_4x4_sse2
+
+void vpx_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void vpx_v_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_v_predictor_8x8 vpx_v_predictor_8x8_sse2
+
+unsigned int vpx_variance16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance16x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance16x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance16x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance16x32 vpx_variance16x32_sse2
+
+unsigned int vpx_variance16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance16x8 vpx_variance16x8_sse2
+
+unsigned int vpx_variance32x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance32x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance32x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance32x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance32x32)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance32x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance32x64 vpx_variance32x64_sse2
+
+unsigned int vpx_variance4x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance4x4_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance4x4 vpx_variance4x4_sse2
+
+unsigned int vpx_variance4x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance4x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance4x8 vpx_variance4x8_sse2
+
+unsigned int vpx_variance64x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance64x32_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance64x32)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance64x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*vpx_variance64x64)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int vpx_variance8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance8x16 vpx_variance8x16_sse2
+
+unsigned int vpx_variance8x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance8x4 vpx_variance8x4_sse2
+
+unsigned int vpx_variance8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int vpx_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define vpx_variance8x8 vpx_variance8x8_sse2
+
+void vpx_ve_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define vpx_ve_predictor_4x4 vpx_ve_predictor_4x4_c
+
+int vpx_vector_var_c(const int16_t *ref, const int16_t *src, const int bwl);
+int vpx_vector_var_sse2(const int16_t *ref, const int16_t *src, const int bwl);
+#define vpx_vector_var vpx_vector_var_sse2
+
+void vpx_dsp_rtcd(void);
+
+#ifdef RTCD_C
+#include "vpx_ports/x86.h"
+static void setup_rtcd_internal(void)
+{
+ int flags = x86_simd_caps();
+
+ (void)flags;
+
+ vpx_convolve8 = vpx_convolve8_sse2;
+ if (flags & HAS_SSSE3) vpx_convolve8 = vpx_convolve8_ssse3;
+ if (flags & HAS_AVX2) vpx_convolve8 = vpx_convolve8_avx2;
+ vpx_convolve8_avg = vpx_convolve8_avg_sse2;
+ if (flags & HAS_SSSE3) vpx_convolve8_avg = vpx_convolve8_avg_ssse3;
+ vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_sse2;
+ if (flags & HAS_SSSE3) vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_ssse3;
+ vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_sse2;
+ if (flags & HAS_SSSE3) vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_ssse3;
+ vpx_convolve8_horiz = vpx_convolve8_horiz_sse2;
+ if (flags & HAS_SSSE3) vpx_convolve8_horiz = vpx_convolve8_horiz_ssse3;
+ if (flags & HAS_AVX2) vpx_convolve8_horiz = vpx_convolve8_horiz_avx2;
+ vpx_convolve8_vert = vpx_convolve8_vert_sse2;
+ if (flags & HAS_SSSE3) vpx_convolve8_vert = vpx_convolve8_vert_ssse3;
+ if (flags & HAS_AVX2) vpx_convolve8_vert = vpx_convolve8_vert_avx2;
+ vpx_d153_predictor_16x16 = vpx_d153_predictor_16x16_c;
+ if (flags & HAS_SSSE3) vpx_d153_predictor_16x16 = vpx_d153_predictor_16x16_ssse3;
+ vpx_d153_predictor_32x32 = vpx_d153_predictor_32x32_c;
+ if (flags & HAS_SSSE3) vpx_d153_predictor_32x32 = vpx_d153_predictor_32x32_ssse3;
+ vpx_d153_predictor_4x4 = vpx_d153_predictor_4x4_c;
+ if (flags & HAS_SSSE3) vpx_d153_predictor_4x4 = vpx_d153_predictor_4x4_ssse3;
+ vpx_d153_predictor_8x8 = vpx_d153_predictor_8x8_c;
+ if (flags & HAS_SSSE3) vpx_d153_predictor_8x8 = vpx_d153_predictor_8x8_ssse3;
+ vpx_d207_predictor_16x16 = vpx_d207_predictor_16x16_c;
+ if (flags & HAS_SSSE3) vpx_d207_predictor_16x16 = vpx_d207_predictor_16x16_ssse3;
+ vpx_d207_predictor_32x32 = vpx_d207_predictor_32x32_c;
+ if (flags & HAS_SSSE3) vpx_d207_predictor_32x32 = vpx_d207_predictor_32x32_ssse3;
+ vpx_d207_predictor_8x8 = vpx_d207_predictor_8x8_c;
+ if (flags & HAS_SSSE3) vpx_d207_predictor_8x8 = vpx_d207_predictor_8x8_ssse3;
+ vpx_d45_predictor_16x16 = vpx_d45_predictor_16x16_c;
+ if (flags & HAS_SSSE3) vpx_d45_predictor_16x16 = vpx_d45_predictor_16x16_ssse3;
+ vpx_d45_predictor_32x32 = vpx_d45_predictor_32x32_c;
+ if (flags & HAS_SSSE3) vpx_d45_predictor_32x32 = vpx_d45_predictor_32x32_ssse3;
+ vpx_d63_predictor_16x16 = vpx_d63_predictor_16x16_c;
+ if (flags & HAS_SSSE3) vpx_d63_predictor_16x16 = vpx_d63_predictor_16x16_ssse3;
+ vpx_d63_predictor_32x32 = vpx_d63_predictor_32x32_c;
+ if (flags & HAS_SSSE3) vpx_d63_predictor_32x32 = vpx_d63_predictor_32x32_ssse3;
+ vpx_d63_predictor_4x4 = vpx_d63_predictor_4x4_c;
+ if (flags & HAS_SSSE3) vpx_d63_predictor_4x4 = vpx_d63_predictor_4x4_ssse3;
+ vpx_d63_predictor_8x8 = vpx_d63_predictor_8x8_c;
+ if (flags & HAS_SSSE3) vpx_d63_predictor_8x8 = vpx_d63_predictor_8x8_ssse3;
+ vpx_fdct32x32 = vpx_fdct32x32_sse2;
+ if (flags & HAS_AVX2) vpx_fdct32x32 = vpx_fdct32x32_avx2;
+ vpx_fdct32x32_rd = vpx_fdct32x32_rd_sse2;
+ if (flags & HAS_AVX2) vpx_fdct32x32_rd = vpx_fdct32x32_rd_avx2;
+ vpx_fdct8x8 = vpx_fdct8x8_sse2;
+ if (flags & HAS_SSSE3) vpx_fdct8x8 = vpx_fdct8x8_ssse3;
+ vpx_get16x16var = vpx_get16x16var_sse2;
+ if (flags & HAS_AVX2) vpx_get16x16var = vpx_get16x16var_avx2;
+ vpx_hadamard_8x8 = vpx_hadamard_8x8_sse2;
+ if (flags & HAS_SSSE3) vpx_hadamard_8x8 = vpx_hadamard_8x8_ssse3;
+ vpx_idct32x32_1024_add = vpx_idct32x32_1024_add_sse2;
+ if (flags & HAS_SSSE3) vpx_idct32x32_1024_add = vpx_idct32x32_1024_add_ssse3;
+ vpx_idct32x32_135_add = vpx_idct32x32_1024_add_sse2;
+ if (flags & HAS_SSSE3) vpx_idct32x32_135_add = vpx_idct32x32_135_add_ssse3;
+ vpx_idct32x32_34_add = vpx_idct32x32_34_add_sse2;
+ if (flags & HAS_SSSE3) vpx_idct32x32_34_add = vpx_idct32x32_34_add_ssse3;
+ vpx_idct8x8_12_add = vpx_idct8x8_12_add_sse2;
+ if (flags & HAS_SSSE3) vpx_idct8x8_12_add = vpx_idct8x8_12_add_ssse3;
+ vpx_idct8x8_64_add = vpx_idct8x8_64_add_sse2;
+ if (flags & HAS_SSSE3) vpx_idct8x8_64_add = vpx_idct8x8_64_add_ssse3;
+ vpx_lpf_horizontal_16 = vpx_lpf_horizontal_16_sse2;
+ if (flags & HAS_AVX2) vpx_lpf_horizontal_16 = vpx_lpf_horizontal_16_avx2;
+ vpx_lpf_horizontal_16_dual = vpx_lpf_horizontal_16_dual_sse2;
+ if (flags & HAS_AVX2) vpx_lpf_horizontal_16_dual = vpx_lpf_horizontal_16_dual_avx2;
+ vpx_mse16x16 = vpx_mse16x16_sse2;
+ if (flags & HAS_AVX2) vpx_mse16x16 = vpx_mse16x16_avx2;
+ vpx_quantize_b = vpx_quantize_b_sse2;
+ if (flags & HAS_SSSE3) vpx_quantize_b = vpx_quantize_b_ssse3;
+ if (flags & HAS_AVX) vpx_quantize_b = vpx_quantize_b_avx;
+ vpx_quantize_b_32x32 = vpx_quantize_b_32x32_c;
+ if (flags & HAS_SSSE3) vpx_quantize_b_32x32 = vpx_quantize_b_32x32_ssse3;
+ if (flags & HAS_AVX) vpx_quantize_b_32x32 = vpx_quantize_b_32x32_avx;
+ vpx_sad16x16x3 = vpx_sad16x16x3_c;
+ if (flags & HAS_SSE3) vpx_sad16x16x3 = vpx_sad16x16x3_sse3;
+ if (flags & HAS_SSSE3) vpx_sad16x16x3 = vpx_sad16x16x3_ssse3;
+ vpx_sad16x16x8 = vpx_sad16x16x8_c;
+ if (flags & HAS_SSE4_1) vpx_sad16x16x8 = vpx_sad16x16x8_sse4_1;
+ vpx_sad16x8x3 = vpx_sad16x8x3_c;
+ if (flags & HAS_SSE3) vpx_sad16x8x3 = vpx_sad16x8x3_sse3;
+ if (flags & HAS_SSSE3) vpx_sad16x8x3 = vpx_sad16x8x3_ssse3;
+ vpx_sad16x8x8 = vpx_sad16x8x8_c;
+ if (flags & HAS_SSE4_1) vpx_sad16x8x8 = vpx_sad16x8x8_sse4_1;
+ vpx_sad32x16 = vpx_sad32x16_sse2;
+ if (flags & HAS_AVX2) vpx_sad32x16 = vpx_sad32x16_avx2;
+ vpx_sad32x16_avg = vpx_sad32x16_avg_sse2;
+ if (flags & HAS_AVX2) vpx_sad32x16_avg = vpx_sad32x16_avg_avx2;
+ vpx_sad32x32 = vpx_sad32x32_sse2;
+ if (flags & HAS_AVX2) vpx_sad32x32 = vpx_sad32x32_avx2;
+ vpx_sad32x32_avg = vpx_sad32x32_avg_sse2;
+ if (flags & HAS_AVX2) vpx_sad32x32_avg = vpx_sad32x32_avg_avx2;
+ vpx_sad32x32x4d = vpx_sad32x32x4d_sse2;
+ if (flags & HAS_AVX2) vpx_sad32x32x4d = vpx_sad32x32x4d_avx2;
+ vpx_sad32x64 = vpx_sad32x64_sse2;
+ if (flags & HAS_AVX2) vpx_sad32x64 = vpx_sad32x64_avx2;
+ vpx_sad32x64_avg = vpx_sad32x64_avg_sse2;
+ if (flags & HAS_AVX2) vpx_sad32x64_avg = vpx_sad32x64_avg_avx2;
+ vpx_sad4x4x3 = vpx_sad4x4x3_c;
+ if (flags & HAS_SSE3) vpx_sad4x4x3 = vpx_sad4x4x3_sse3;
+ vpx_sad4x4x8 = vpx_sad4x4x8_c;
+ if (flags & HAS_SSE4_1) vpx_sad4x4x8 = vpx_sad4x4x8_sse4_1;
+ vpx_sad64x32 = vpx_sad64x32_sse2;
+ if (flags & HAS_AVX2) vpx_sad64x32 = vpx_sad64x32_avx2;
+ vpx_sad64x32_avg = vpx_sad64x32_avg_sse2;
+ if (flags & HAS_AVX2) vpx_sad64x32_avg = vpx_sad64x32_avg_avx2;
+ vpx_sad64x64 = vpx_sad64x64_sse2;
+ if (flags & HAS_AVX2) vpx_sad64x64 = vpx_sad64x64_avx2;
+ vpx_sad64x64_avg = vpx_sad64x64_avg_sse2;
+ if (flags & HAS_AVX2) vpx_sad64x64_avg = vpx_sad64x64_avg_avx2;
+ vpx_sad64x64x4d = vpx_sad64x64x4d_sse2;
+ if (flags & HAS_AVX2) vpx_sad64x64x4d = vpx_sad64x64x4d_avx2;
+ vpx_sad8x16x3 = vpx_sad8x16x3_c;
+ if (flags & HAS_SSE3) vpx_sad8x16x3 = vpx_sad8x16x3_sse3;
+ vpx_sad8x16x8 = vpx_sad8x16x8_c;
+ if (flags & HAS_SSE4_1) vpx_sad8x16x8 = vpx_sad8x16x8_sse4_1;
+ vpx_sad8x8x3 = vpx_sad8x8x3_c;
+ if (flags & HAS_SSE3) vpx_sad8x8x3 = vpx_sad8x8x3_sse3;
+ vpx_sad8x8x8 = vpx_sad8x8x8_c;
+ if (flags & HAS_SSE4_1) vpx_sad8x8x8 = vpx_sad8x8x8_sse4_1;
+ vpx_scaled_2d = vpx_scaled_2d_c;
+ if (flags & HAS_SSSE3) vpx_scaled_2d = vpx_scaled_2d_ssse3;
+ vpx_sub_pixel_avg_variance16x16 = vpx_sub_pixel_avg_variance16x16_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance16x16 = vpx_sub_pixel_avg_variance16x16_ssse3;
+ vpx_sub_pixel_avg_variance16x32 = vpx_sub_pixel_avg_variance16x32_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance16x32 = vpx_sub_pixel_avg_variance16x32_ssse3;
+ vpx_sub_pixel_avg_variance16x8 = vpx_sub_pixel_avg_variance16x8_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance16x8 = vpx_sub_pixel_avg_variance16x8_ssse3;
+ vpx_sub_pixel_avg_variance32x16 = vpx_sub_pixel_avg_variance32x16_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance32x16 = vpx_sub_pixel_avg_variance32x16_ssse3;
+ vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_ssse3;
+ if (flags & HAS_AVX2) vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_avx2;
+ vpx_sub_pixel_avg_variance32x64 = vpx_sub_pixel_avg_variance32x64_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance32x64 = vpx_sub_pixel_avg_variance32x64_ssse3;
+ vpx_sub_pixel_avg_variance4x4 = vpx_sub_pixel_avg_variance4x4_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance4x4 = vpx_sub_pixel_avg_variance4x4_ssse3;
+ vpx_sub_pixel_avg_variance4x8 = vpx_sub_pixel_avg_variance4x8_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance4x8 = vpx_sub_pixel_avg_variance4x8_ssse3;
+ vpx_sub_pixel_avg_variance64x32 = vpx_sub_pixel_avg_variance64x32_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance64x32 = vpx_sub_pixel_avg_variance64x32_ssse3;
+ vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_ssse3;
+ if (flags & HAS_AVX2) vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_avx2;
+ vpx_sub_pixel_avg_variance8x16 = vpx_sub_pixel_avg_variance8x16_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance8x16 = vpx_sub_pixel_avg_variance8x16_ssse3;
+ vpx_sub_pixel_avg_variance8x4 = vpx_sub_pixel_avg_variance8x4_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance8x4 = vpx_sub_pixel_avg_variance8x4_ssse3;
+ vpx_sub_pixel_avg_variance8x8 = vpx_sub_pixel_avg_variance8x8_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_avg_variance8x8 = vpx_sub_pixel_avg_variance8x8_ssse3;
+ vpx_sub_pixel_variance16x16 = vpx_sub_pixel_variance16x16_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance16x16 = vpx_sub_pixel_variance16x16_ssse3;
+ vpx_sub_pixel_variance16x32 = vpx_sub_pixel_variance16x32_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance16x32 = vpx_sub_pixel_variance16x32_ssse3;
+ vpx_sub_pixel_variance16x8 = vpx_sub_pixel_variance16x8_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance16x8 = vpx_sub_pixel_variance16x8_ssse3;
+ vpx_sub_pixel_variance32x16 = vpx_sub_pixel_variance32x16_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance32x16 = vpx_sub_pixel_variance32x16_ssse3;
+ vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_ssse3;
+ if (flags & HAS_AVX2) vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_avx2;
+ vpx_sub_pixel_variance32x64 = vpx_sub_pixel_variance32x64_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance32x64 = vpx_sub_pixel_variance32x64_ssse3;
+ vpx_sub_pixel_variance4x4 = vpx_sub_pixel_variance4x4_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance4x4 = vpx_sub_pixel_variance4x4_ssse3;
+ vpx_sub_pixel_variance4x8 = vpx_sub_pixel_variance4x8_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance4x8 = vpx_sub_pixel_variance4x8_ssse3;
+ vpx_sub_pixel_variance64x32 = vpx_sub_pixel_variance64x32_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance64x32 = vpx_sub_pixel_variance64x32_ssse3;
+ vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_ssse3;
+ if (flags & HAS_AVX2) vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_avx2;
+ vpx_sub_pixel_variance8x16 = vpx_sub_pixel_variance8x16_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance8x16 = vpx_sub_pixel_variance8x16_ssse3;
+ vpx_sub_pixel_variance8x4 = vpx_sub_pixel_variance8x4_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance8x4 = vpx_sub_pixel_variance8x4_ssse3;
+ vpx_sub_pixel_variance8x8 = vpx_sub_pixel_variance8x8_sse2;
+ if (flags & HAS_SSSE3) vpx_sub_pixel_variance8x8 = vpx_sub_pixel_variance8x8_ssse3;
+ vpx_variance16x16 = vpx_variance16x16_sse2;
+ if (flags & HAS_AVX2) vpx_variance16x16 = vpx_variance16x16_avx2;
+ vpx_variance32x16 = vpx_variance32x16_sse2;
+ if (flags & HAS_AVX2) vpx_variance32x16 = vpx_variance32x16_avx2;
+ vpx_variance32x32 = vpx_variance32x32_sse2;
+ if (flags & HAS_AVX2) vpx_variance32x32 = vpx_variance32x32_avx2;
+ vpx_variance64x32 = vpx_variance64x32_sse2;
+ if (flags & HAS_AVX2) vpx_variance64x32 = vpx_variance64x32_avx2;
+ vpx_variance64x64 = vpx_variance64x64_sse2;
+ if (flags & HAS_AVX2) vpx_variance64x64 = vpx_variance64x64_avx2;
+}
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif
diff --git a/media/libvpx/config/win/mingw64/vpx_scale_rtcd.h b/media/libvpx/config/win/mingw64/vpx_scale_rtcd.h
new file mode 100644
index 000000000000..ddf7d01ccaa5
--- /dev/null
+++ b/media/libvpx/config/win/mingw64/vpx_scale_rtcd.h
@@ -0,0 +1,69 @@
+#ifndef VPX_SCALE_RTCD_H_
+#define VPX_SCALE_RTCD_H_
+
+#ifdef RTCD_C
+#define RTCD_EXTERN
+#else
+#define RTCD_EXTERN extern
+#endif
+
+struct yv12_buffer_config;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void vp8_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
+#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
+
+void vp8_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
+#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
+
+void vp8_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
+#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
+
+void vp8_vertical_band_2_1_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
+#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
+
+void vp8_vertical_band_2_1_scale_i_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
+#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
+
+void vp8_vertical_band_5_3_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
+#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
+
+void vp8_vertical_band_5_4_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
+#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
+
+void vp8_yv12_copy_frame_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
+#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
+
+void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf);
+#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
+
+void vpx_extend_frame_borders_c(struct yv12_buffer_config *ybf);
+#define vpx_extend_frame_borders vpx_extend_frame_borders_c
+
+void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf);
+#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
+
+void vpx_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
+#define vpx_yv12_copy_y vpx_yv12_copy_y_c
+
+void vpx_scale_rtcd(void);
+
+#ifdef RTCD_C
+#include "vpx_ports/x86.h"
+static void setup_rtcd_internal(void)
+{
+ int flags = x86_simd_caps();
+
+ (void)flags;
+
+}
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif
diff --git a/media/libvpx/moz.build b/media/libvpx/moz.build
old mode 100755
new mode 100644
index 48385dd9386f..f2e05075450a
--- a/media/libvpx/moz.build
+++ b/media/libvpx/moz.build
@@ -17,8 +17,12 @@ if CONFIG['CPU_ARCH'] == 'x86_64':
EXPORTS.vpx += files['X64_EXPORTS']
SOURCES += files['X64_SOURCES']
if CONFIG['OS_TARGET'] == 'WINNT':
- ASFLAGS += [ '-I%s/media/libvpx/config/win/x64/' % TOPSRCDIR ]
- LOCAL_INCLUDES += [ '/media/libvpx/config/win/x64/' ]
+ if CONFIG['CC_TYPE'] == 'gcc':
+ ASFLAGS += [ '-I%s/media/libvpx/config/win/mingw64/' % TOPSRCDIR ]
+ LOCAL_INCLUDES += [ '/media/libvpx/config/win/mingw64/' ]
+ else:
+ ASFLAGS += [ '-I%s/media/libvpx/config/win/x64/' % TOPSRCDIR ]
+ LOCAL_INCLUDES += [ '/media/libvpx/config/win/x64/' ]
elif CONFIG['OS_TARGET'] == 'Darwin':
ASFLAGS += [ '-I%s/media/libvpx/config/mac/x64/' % TOPSRCDIR ]
LOCAL_INCLUDES += [ '/media/libvpx/config/mac/x64/' ]
1
0

[tor-browser/tor-browser-60.0.1esr-8.0-1] Bug 1448461 - Give libaom a x64 MinGW config. r=kinetik, a=jcristau
by gk@torproject.org 14 Jun '18
by gk@torproject.org 14 Jun '18
14 Jun '18
commit ed7d52061e83d4dffe1443121852bec0d1c03c82
Author: Tom Ritter <tom(a)mozilla.com>
Date: Fri Mar 23 15:14:00 2018 -0500
Bug 1448461 - Give libaom a x64 MinGW config. r=kinetik, a=jcristau
MozReview-Commit-ID: BiBqBFSWYtK
--HG--
extra : rebase_source : 891c101a9f37cd9b2e0e98914a4bf80ebbf216b5
extra : source : d4ffee5831765d4ee616d3dd88c601268db5fb31
---
media/libaom/config/win/mingw64/aom_config.asm | 176 +
media/libaom/config/win/mingw64/aom_config.c | 11 +
media/libaom/config/win/mingw64/aom_config.h | 192 +
media/libaom/config/win/mingw64/aom_dsp_rtcd.h | 4524 ++++++++++++++++++++++
media/libaom/config/win/mingw64/aom_scale_rtcd.h | 78 +
media/libaom/config/win/mingw64/av1_rtcd.h | 590 +++
media/libaom/generate_sources_mozbuild.sh | 4 +
media/libaom/moz.build | 11 +-
8 files changed, 5583 insertions(+), 3 deletions(-)
diff --git a/media/libaom/config/win/mingw64/aom_config.asm b/media/libaom/config/win/mingw64/aom_config.asm
new file mode 100644
index 000000000000..455683b8f89b
--- /dev/null
+++ b/media/libaom/config/win/mingw64/aom_config.asm
@@ -0,0 +1,176 @@
+ARCH_ARM equ 0
+ARCH_MIPS equ 0
+ARCH_X86 equ 0
+ARCH_X86_64 equ 1
+HAVE_NEON equ 0
+HAVE_NEON_ASM equ 0
+HAVE_MIPS32 equ 0
+HAVE_DSPR2 equ 0
+HAVE_MSA equ 0
+HAVE_MIPS64 equ 0
+HAVE_MMX equ 1
+HAVE_SSE equ 1
+HAVE_SSE2 equ 1
+HAVE_SSE3 equ 1
+HAVE_SSSE3 equ 1
+HAVE_SSE4_1 equ 1
+HAVE_AVX equ 1
+HAVE_AVX2 equ 1
+HAVE_AOM_PORTS equ 1
+HAVE_FEXCEPT equ 1
+HAVE_PTHREAD_H equ 1
+HAVE_WXWIDGETS equ 0
+CONFIG_DEPENDENCY_TRACKING equ 1
+CONFIG_EXTERNAL_BUILD equ 1
+CONFIG_INSTALL_DOCS equ 1
+CONFIG_INSTALL_BINS equ 1
+CONFIG_INSTALL_LIBS equ 1
+CONFIG_INSTALL_SRCS equ 0
+CONFIG_DEBUG equ 0
+CONFIG_GPROF equ 0
+CONFIG_GCOV equ 0
+CONFIG_RVCT equ 0
+CONFIG_GCC equ 1
+CONFIG_MSVS equ 0
+CONFIG_PIC equ 1
+CONFIG_BIG_ENDIAN equ 0
+CONFIG_CODEC_SRCS equ 0
+CONFIG_DEBUG_LIBS equ 0
+CONFIG_RUNTIME_CPU_DETECT equ 1
+CONFIG_POSTPROC equ 1
+CONFIG_MULTITHREAD equ 1
+CONFIG_INTERNAL_STATS equ 0
+CONFIG_AV1_ENCODER equ 1
+CONFIG_AV1_DECODER equ 1
+CONFIG_AV1 equ 1
+CONFIG_STATIC_MSVCRT equ 0
+CONFIG_SPATIAL_RESAMPLING equ 1
+CONFIG_REALTIME_ONLY equ 0
+CONFIG_SHARED equ 0
+CONFIG_STATIC equ 1
+CONFIG_SMALL equ 0
+CONFIG_POSTPROC_VISUALIZER equ 0
+CONFIG_OS_SUPPORT equ 1
+CONFIG_UNIT_TESTS equ 0
+CONFIG_WEBM_IO equ 1
+CONFIG_LIBYUV equ 1
+CONFIG_ACCOUNTING equ 0
+CONFIG_INSPECTION equ 0
+CONFIG_DECODE_PERF_TESTS equ 0
+CONFIG_ENCODE_PERF_TESTS equ 0
+CONFIG_BITSTREAM_DEBUG equ 0
+CONFIG_SYMBOLRATE equ 0
+CONFIG_COEFFICIENT_RANGE_CHECKING equ 0
+CONFIG_LOWBITDEPTH equ 1
+CONFIG_HIGHBITDEPTH equ 1
+CONFIG_EXPERIMENTAL equ 0
+CONFIG_SIZE_LIMIT equ 1
+CONFIG_FP_MB_STATS equ 0
+CONFIG_CDEF equ 1
+CONFIG_CDEF_SINGLEPASS equ 1
+CONFIG_VAR_TX equ 1
+CONFIG_RECT_TX equ 1
+CONFIG_RECT_TX_EXT equ 0
+CONFIG_TPL_MV equ 0
+CONFIG_DUAL_FILTER equ 1
+CONFIG_CONVOLVE_ROUND equ 1
+CONFIG_COMPOUND_ROUND equ 0
+CONFIG_EXT_TX equ 1
+CONFIG_TX64X64 equ 0
+CONFIG_EXT_INTRA equ 1
+CONFIG_INTRA_INTERP equ 0
+CONFIG_FILTER_INTRA equ 0
+CONFIG_INTRA_EDGE equ 1
+CONFIG_INTRABC equ 0
+CONFIG_INTERINTRA equ 1
+CONFIG_WEDGE equ 1
+CONFIG_COMPOUND_SEGMENT equ 1
+CONFIG_EXT_REFS equ 1
+CONFIG_GLOBAL_MOTION equ 1
+CONFIG_NEW_QUANT equ 0
+CONFIG_SUPERTX equ 0
+CONFIG_ANS equ 0
+CONFIG_LOOP_RESTORATION equ 1
+CONFIG_STRIPED_LOOP_RESTORATION equ 0
+CONFIG_EXT_PARTITION equ 0
+CONFIG_EXT_PARTITION_TYPES equ 0
+CONFIG_EXT_PARTITION_TYPES_AB equ 0
+CONFIG_UNPOISON_PARTITION_CTX equ 0
+CONFIG_EXT_TILE equ 0
+CONFIG_MOTION_VAR equ 1
+CONFIG_NCOBMC equ 0
+CONFIG_WARPED_MOTION equ 1
+CONFIG_Q_ADAPT_PROBS equ 0
+CONFIG_INTER_STATS_ONLY equ 0
+CONFIG_PALETTE_DELTA_ENCODING equ 0
+CONFIG_RAWBITS equ 0
+CONFIG_KF_CTX equ 0
+CONFIG_PVQ equ 0
+CONFIG_CFL equ 0
+CONFIG_XIPHRC equ 0
+CONFIG_DCT_ONLY equ 0
+CONFIG_DAALA_TX equ 0
+CONFIG_DAALA_DCT4 equ 0
+CONFIG_DAALA_DCT8 equ 0
+CONFIG_DAALA_DCT16 equ 0
+CONFIG_DAALA_DCT32 equ 0
+CONFIG_DAALA_DCT64 equ 0
+CONFIG_CB4X4 equ 1
+CONFIG_CHROMA_2X2 equ 0
+CONFIG_CHROMA_SUB8X8 equ 1
+CONFIG_FRAME_SIZE equ 0
+CONFIG_EXT_DELTA_Q equ 1
+CONFIG_ADAPT_SCAN equ 0
+CONFIG_PARALLEL_DEBLOCKING equ 1
+CONFIG_DEBLOCK_13TAP equ 0
+CONFIG_LOOPFILTERING_ACROSS_TILES equ 1
+CONFIG_TEMPMV_SIGNALING equ 1
+CONFIG_RD_DEBUG equ 0
+CONFIG_REFERENCE_BUFFER equ 1
+CONFIG_COEF_INTERLEAVE equ 0
+CONFIG_ENTROPY_STATS equ 0
+CONFIG_MASKED_TX equ 0
+CONFIG_DEPENDENT_HORZTILES equ 0
+CONFIG_DIST_8X8 equ 1
+CONFIG_PALETTE_THROUGHPUT equ 1
+CONFIG_REF_ADAPT equ 0
+CONFIG_LV_MAP equ 0
+CONFIG_CTX1D equ 0
+CONFIG_TXK_SEL equ 0
+CONFIG_MV_COMPRESS equ 1
+CONFIG_SEGMENT_ZEROMV equ 0
+CONFIG_FRAME_SUPERRES equ 0
+CONFIG_NEW_MULTISYMBOL equ 0
+CONFIG_COMPOUND_SINGLEREF equ 0
+CONFIG_AOM_QM equ 1
+CONFIG_ONE_SIDED_COMPOUND equ 1
+CONFIG_EXT_COMP_REFS equ 1
+CONFIG_SMOOTH_HV equ 1
+CONFIG_VAR_REFS equ 0
+CONFIG_LGT equ 0
+CONFIG_LGT_FROM_PRED equ 0
+CONFIG_SBL_SYMBOL equ 0
+CONFIG_NCOBMC_ADAPT_WEIGHT equ 0
+CONFIG_BGSPRITE equ 0
+CONFIG_VAR_TX_NO_TX_MODE equ 0
+CONFIG_MRC_TX equ 0
+CONFIG_LPF_DIRECT equ 0
+CONFIG_LOOPFILTER_LEVEL equ 0
+CONFIG_NO_FRAME_CONTEXT_SIGNALING equ 0
+CONFIG_TXMG equ 1
+CONFIG_MAX_TILE equ 0
+CONFIG_HASH_ME equ 0
+CONFIG_COLORSPACE_HEADERS equ 0
+CONFIG_MFMV equ 0
+CONFIG_FRAME_MARKER equ 0
+CONFIG_JNT_COMP equ 0
+CONFIG_FRAME_SIGN_BIAS equ 0
+CONFIG_EXT_SKIP equ 0
+CONFIG_OBU equ 0
+CONFIG_AMVR equ 0
+CONFIG_LPF_SB equ 0
+CONFIG_OPT_REF_MV equ 0
+CONFIG_TMV equ 0
+CONFIG_RESTRICT_COMPRESSED_HDR equ 0
+CONFIG_HORZONLY_FRAME_SUPERRES equ 0
+CONFIG_ANALYZER equ 0
diff --git a/media/libaom/config/win/mingw64/aom_config.c b/media/libaom/config/win/mingw64/aom_config.c
new file mode 100644
index 000000000000..3d86ef9bc2a1
--- /dev/null
+++ b/media/libaom/config/win/mingw64/aom_config.c
@@ -0,0 +1,11 @@
+/* Copyright (c) 2016, Alliance for Open Media. All rights reserved. */
+/* */
+/* This source code is subject to the terms of the BSD 2 Clause License and */
+/* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License */
+/* was not distributed with this source code in the LICENSE file, you can */
+/* obtain it at www.aomedia.org/license/software. If the Alliance for Open */
+/* Media Patent License 1.0 was not distributed with this source code in the */
+/* PATENTS file, you can obtain it at www.aomedia.org/license/patent. */
+#include "aom/aom_codec.h"
+static const char* const cfg = "--target=x86_64-win64-gcc --enable-external-build --disable-examples --disable-docs --disable-unit-tests --size-limit=8192x4608 --enable-pic --enable-postproc --as=yasm";
+const char *aom_codec_build_config(void) {return cfg;}
diff --git a/media/libaom/config/win/mingw64/aom_config.h b/media/libaom/config/win/mingw64/aom_config.h
new file mode 100644
index 000000000000..675561be8fcd
--- /dev/null
+++ b/media/libaom/config/win/mingw64/aom_config.h
@@ -0,0 +1,192 @@
+/* Copyright (c) 2016, Alliance for Open Media. All rights reserved. */
+/* */
+/* This source code is subject to the terms of the BSD 2 Clause License and */
+/* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License */
+/* was not distributed with this source code in the LICENSE file, you can */
+/* obtain it at www.aomedia.org/license/software. If the Alliance for Open */
+/* Media Patent License 1.0 was not distributed with this source code in the */
+/* PATENTS file, you can obtain it at www.aomedia.org/license/patent. */
+/* This file automatically generated by configure. Do not edit! */
+#ifndef AOM_CONFIG_H
+#define AOM_CONFIG_H
+#define RESTRICT
+#define INLINE inline
+#define ARCH_ARM 0
+#define ARCH_MIPS 0
+#define ARCH_X86 0
+#define ARCH_X86_64 1
+#define HAVE_NEON 0
+#define HAVE_NEON_ASM 0
+#define HAVE_MIPS32 0
+#define HAVE_DSPR2 0
+#define HAVE_MSA 0
+#define HAVE_MIPS64 0
+#define HAVE_MMX 1
+#define HAVE_SSE 1
+#define HAVE_SSE2 1
+#define HAVE_SSE3 1
+#define HAVE_SSSE3 1
+#define HAVE_SSE4_1 1
+#define HAVE_AVX 1
+#define HAVE_AVX2 1
+#define HAVE_AOM_PORTS 1
+#define HAVE_FEXCEPT 1
+#define HAVE_PTHREAD_H 1
+#define HAVE_WXWIDGETS 0
+#define CONFIG_DEPENDENCY_TRACKING 1
+#define CONFIG_EXTERNAL_BUILD 1
+#define CONFIG_INSTALL_DOCS 1
+#define CONFIG_INSTALL_BINS 1
+#define CONFIG_INSTALL_LIBS 1
+#define CONFIG_INSTALL_SRCS 0
+#define CONFIG_DEBUG 0
+#define CONFIG_GPROF 0
+#define CONFIG_GCOV 0
+#define CONFIG_RVCT 0
+#define CONFIG_GCC 1
+#define CONFIG_MSVS 0
+#define CONFIG_PIC 1
+#define CONFIG_BIG_ENDIAN 0
+#define CONFIG_CODEC_SRCS 0
+#define CONFIG_DEBUG_LIBS 0
+#define CONFIG_RUNTIME_CPU_DETECT 1
+#define CONFIG_POSTPROC 1
+#define CONFIG_MULTITHREAD 1
+#define CONFIG_INTERNAL_STATS 0
+#define CONFIG_AV1_ENCODER 1
+#define CONFIG_AV1_DECODER 1
+#define CONFIG_AV1 1
+#define CONFIG_STATIC_MSVCRT 0
+#define CONFIG_SPATIAL_RESAMPLING 1
+#define CONFIG_REALTIME_ONLY 0
+#define CONFIG_SHARED 0
+#define CONFIG_STATIC 1
+#define CONFIG_SMALL 0
+#define CONFIG_POSTPROC_VISUALIZER 0
+#define CONFIG_OS_SUPPORT 1
+#define CONFIG_UNIT_TESTS 0
+#define CONFIG_WEBM_IO 1
+#define CONFIG_LIBYUV 1
+#define CONFIG_ACCOUNTING 0
+#define CONFIG_INSPECTION 0
+#define CONFIG_DECODE_PERF_TESTS 0
+#define CONFIG_ENCODE_PERF_TESTS 0
+#define CONFIG_BITSTREAM_DEBUG 0
+#define CONFIG_SYMBOLRATE 0
+#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
+#define CONFIG_LOWBITDEPTH 1
+#define CONFIG_HIGHBITDEPTH 1
+#define CONFIG_EXPERIMENTAL 0
+#define CONFIG_SIZE_LIMIT 1
+#define CONFIG_FP_MB_STATS 0
+#define CONFIG_CDEF 1
+#define CONFIG_CDEF_SINGLEPASS 1
+#define CONFIG_VAR_TX 1
+#define CONFIG_RECT_TX 1
+#define CONFIG_RECT_TX_EXT 0
+#define CONFIG_TPL_MV 0
+#define CONFIG_DUAL_FILTER 1
+#define CONFIG_CONVOLVE_ROUND 1
+#define CONFIG_COMPOUND_ROUND 0
+#define CONFIG_EXT_TX 1
+#define CONFIG_TX64X64 0
+#define CONFIG_EXT_INTRA 1
+#define CONFIG_INTRA_INTERP 0
+#define CONFIG_FILTER_INTRA 0
+#define CONFIG_INTRA_EDGE 1
+#define CONFIG_INTRABC 0
+#define CONFIG_INTERINTRA 1
+#define CONFIG_WEDGE 1
+#define CONFIG_COMPOUND_SEGMENT 1
+#define CONFIG_EXT_REFS 1
+#define CONFIG_GLOBAL_MOTION 1
+#define CONFIG_NEW_QUANT 0
+#define CONFIG_SUPERTX 0
+#define CONFIG_ANS 0
+#define CONFIG_LOOP_RESTORATION 1
+#define CONFIG_STRIPED_LOOP_RESTORATION 0
+#define CONFIG_EXT_PARTITION 0
+#define CONFIG_EXT_PARTITION_TYPES 0
+#define CONFIG_EXT_PARTITION_TYPES_AB 0
+#define CONFIG_UNPOISON_PARTITION_CTX 0
+#define CONFIG_EXT_TILE 0
+#define CONFIG_MOTION_VAR 1
+#define CONFIG_NCOBMC 0
+#define CONFIG_WARPED_MOTION 1
+#define CONFIG_Q_ADAPT_PROBS 0
+#define CONFIG_INTER_STATS_ONLY 0
+#define CONFIG_PALETTE_DELTA_ENCODING 0
+#define CONFIG_RAWBITS 0
+#define CONFIG_KF_CTX 0
+#define CONFIG_PVQ 0
+#define CONFIG_CFL 0
+#define CONFIG_XIPHRC 0
+#define CONFIG_DCT_ONLY 0
+#define CONFIG_DAALA_TX 0
+#define CONFIG_DAALA_DCT4 0
+#define CONFIG_DAALA_DCT8 0
+#define CONFIG_DAALA_DCT16 0
+#define CONFIG_DAALA_DCT32 0
+#define CONFIG_DAALA_DCT64 0
+#define CONFIG_CB4X4 1
+#define CONFIG_CHROMA_2X2 0
+#define CONFIG_CHROMA_SUB8X8 1
+#define CONFIG_FRAME_SIZE 0
+#define CONFIG_EXT_DELTA_Q 1
+#define CONFIG_ADAPT_SCAN 0
+#define CONFIG_PARALLEL_DEBLOCKING 1
+#define CONFIG_DEBLOCK_13TAP 0
+#define CONFIG_LOOPFILTERING_ACROSS_TILES 1
+#define CONFIG_TEMPMV_SIGNALING 1
+#define CONFIG_RD_DEBUG 0
+#define CONFIG_REFERENCE_BUFFER 1
+#define CONFIG_COEF_INTERLEAVE 0
+#define CONFIG_ENTROPY_STATS 0
+#define CONFIG_MASKED_TX 0
+#define CONFIG_DEPENDENT_HORZTILES 0
+#define CONFIG_DIST_8X8 1
+#define CONFIG_PALETTE_THROUGHPUT 1
+#define CONFIG_REF_ADAPT 0
+#define CONFIG_LV_MAP 0
+#define CONFIG_CTX1D 0
+#define CONFIG_TXK_SEL 0
+#define CONFIG_MV_COMPRESS 1
+#define CONFIG_SEGMENT_ZEROMV 0
+#define CONFIG_FRAME_SUPERRES 0
+#define CONFIG_NEW_MULTISYMBOL 0
+#define CONFIG_COMPOUND_SINGLEREF 0
+#define CONFIG_AOM_QM 1
+#define CONFIG_ONE_SIDED_COMPOUND 1
+#define CONFIG_EXT_COMP_REFS 1
+#define CONFIG_SMOOTH_HV 1
+#define CONFIG_VAR_REFS 0
+#define CONFIG_LGT 0
+#define CONFIG_LGT_FROM_PRED 0
+#define CONFIG_SBL_SYMBOL 0
+#define CONFIG_NCOBMC_ADAPT_WEIGHT 0
+#define CONFIG_BGSPRITE 0
+#define CONFIG_VAR_TX_NO_TX_MODE 0
+#define CONFIG_MRC_TX 0
+#define CONFIG_LPF_DIRECT 0
+#define CONFIG_LOOPFILTER_LEVEL 0
+#define CONFIG_NO_FRAME_CONTEXT_SIGNALING 0
+#define CONFIG_TXMG 1
+#define CONFIG_MAX_TILE 0
+#define CONFIG_HASH_ME 0
+#define CONFIG_COLORSPACE_HEADERS 0
+#define CONFIG_MFMV 0
+#define CONFIG_FRAME_MARKER 0
+#define CONFIG_JNT_COMP 0
+#define CONFIG_FRAME_SIGN_BIAS 0
+#define CONFIG_EXT_SKIP 0
+#define CONFIG_OBU 0
+#define CONFIG_AMVR 0
+#define CONFIG_LPF_SB 0
+#define CONFIG_OPT_REF_MV 0
+#define CONFIG_TMV 0
+#define CONFIG_RESTRICT_COMPRESSED_HDR 0
+#define CONFIG_HORZONLY_FRAME_SUPERRES 0
+#define CONFIG_ANALYZER 0
+#define DECODE_WIDTH_LIMIT 8192
+#define DECODE_HEIGHT_LIMIT 4608
+#endif /* AOM_CONFIG_H */
diff --git a/media/libaom/config/win/mingw64/aom_dsp_rtcd.h b/media/libaom/config/win/mingw64/aom_dsp_rtcd.h
new file mode 100644
index 000000000000..d2bee385ff45
--- /dev/null
+++ b/media/libaom/config/win/mingw64/aom_dsp_rtcd.h
@@ -0,0 +1,4524 @@
+#ifndef AOM_DSP_RTCD_H_
+#define AOM_DSP_RTCD_H_
+
+#ifdef RTCD_C
+#define RTCD_EXTERN
+#else
+#define RTCD_EXTERN extern
+#endif
+
+/*
+ * DSP
+ */
+
+#include "aom/aom_integer.h"
+#include "aom_dsp/aom_dsp_common.h"
+#include "av1/common/enums.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void aom_blend_a64_d32_mask_c(int32_t *dst, uint32_t dst_stride, const int32_t *src0, uint32_t src0_stride, const int32_t *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int h, int w, int suby, int subx);
+#define aom_blend_a64_d32_mask aom_blend_a64_d32_mask_c
+
+void aom_blend_a64_hmask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w);
+void aom_blend_a64_hmask_sse4_1(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w);
+RTCD_EXTERN void (*aom_blend_a64_hmask)(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w);
+
+void aom_blend_a64_mask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int h, int w, int suby, int subx);
+void aom_blend_a64_mask_sse4_1(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int h, int w, int suby, int subx);
+RTCD_EXTERN void (*aom_blend_a64_mask)(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int h, int w, int suby, int subx);
+
+void aom_blend_a64_vmask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w);
+void aom_blend_a64_vmask_sse4_1(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w);
+RTCD_EXTERN void (*aom_blend_a64_vmask)(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w);
+
+void aom_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride);
+#define aom_comp_avg_pred aom_comp_avg_pred_c
+
+void aom_comp_avg_upsampled_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref, int ref_stride);
+void aom_comp_avg_upsampled_pred_sse2(uint8_t *comp_pred, const uint8_t *pred, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref, int ref_stride);
+#define aom_comp_avg_upsampled_pred aom_comp_avg_upsampled_pred_sse2
+
+void aom_comp_mask_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask);
+#define aom_comp_mask_pred aom_comp_mask_pred_c
+
+void aom_comp_mask_upsampled_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask);
+#define aom_comp_mask_upsampled_pred aom_comp_mask_upsampled_pred_c
+
+void aom_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*aom_convolve8)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void aom_convolve8_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_add_src_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*aom_convolve8_add_src)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void aom_convolve8_add_src_hip_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_add_src_hip_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define aom_convolve8_add_src_hip aom_convolve8_add_src_hip_sse2
+
+void aom_convolve8_add_src_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_add_src_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*aom_convolve8_add_src_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void aom_convolve8_add_src_horiz_hip_c(const uint8_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define aom_convolve8_add_src_horiz_hip aom_convolve8_add_src_horiz_hip_c
+
+void aom_convolve8_add_src_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_add_src_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*aom_convolve8_add_src_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void aom_convolve8_add_src_vert_hip_c(const uint16_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define aom_convolve8_add_src_vert_hip aom_convolve8_add_src_vert_hip_c
+
+void aom_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_avg_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*aom_convolve8_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void aom_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_avg_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_avg_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*aom_convolve8_avg_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void aom_convolve8_avg_horiz_scale_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h);
+#define aom_convolve8_avg_horiz_scale aom_convolve8_avg_horiz_scale_c
+
+void aom_convolve8_avg_scale_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h);
+#define aom_convolve8_avg_scale aom_convolve8_avg_scale_c
+
+void aom_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_avg_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_avg_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*aom_convolve8_avg_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void aom_convolve8_avg_vert_scale_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h);
+#define aom_convolve8_avg_vert_scale aom_convolve8_avg_vert_scale_c
+
+void aom_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_horiz_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*aom_convolve8_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void aom_convolve8_horiz_scale_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h);
+#define aom_convolve8_horiz_scale aom_convolve8_horiz_scale_c
+
+void aom_convolve8_scale_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h);
+#define aom_convolve8_scale aom_convolve8_scale_c
+
+void aom_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve8_vert_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*aom_convolve8_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void aom_convolve8_vert_scale_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int subpel_x, int x_step_q4, const int16_t *filter_y, int subpel_y, int y_step_q4, int w, int h);
+#define aom_convolve8_vert_scale aom_convolve8_vert_scale_c
+
+void aom_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define aom_convolve_avg aom_convolve_avg_sse2
+
+void aom_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_convolve_copy_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define aom_convolve_copy aom_convolve_copy_sse2
+
+void aom_d117_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d117_predictor_16x16 aom_d117_predictor_16x16_c
+
+void aom_d117_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d117_predictor_16x32 aom_d117_predictor_16x32_c
+
+void aom_d117_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d117_predictor_16x8 aom_d117_predictor_16x8_c
+
+void aom_d117_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d117_predictor_2x2 aom_d117_predictor_2x2_c
+
+void aom_d117_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d117_predictor_32x16 aom_d117_predictor_32x16_c
+
+void aom_d117_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d117_predictor_32x32 aom_d117_predictor_32x32_c
+
+void aom_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d117_predictor_4x4 aom_d117_predictor_4x4_c
+
+void aom_d117_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d117_predictor_4x8 aom_d117_predictor_4x8_c
+
+void aom_d117_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d117_predictor_8x16 aom_d117_predictor_8x16_c
+
+void aom_d117_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d117_predictor_8x4 aom_d117_predictor_8x4_c
+
+void aom_d117_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d117_predictor_8x8 aom_d117_predictor_8x8_c
+
+void aom_d135_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d135_predictor_16x16 aom_d135_predictor_16x16_c
+
+void aom_d135_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d135_predictor_16x32 aom_d135_predictor_16x32_c
+
+void aom_d135_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d135_predictor_16x8 aom_d135_predictor_16x8_c
+
+void aom_d135_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d135_predictor_2x2 aom_d135_predictor_2x2_c
+
+void aom_d135_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d135_predictor_32x16 aom_d135_predictor_32x16_c
+
+void aom_d135_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d135_predictor_32x32 aom_d135_predictor_32x32_c
+
+void aom_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d135_predictor_4x4 aom_d135_predictor_4x4_c
+
+void aom_d135_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d135_predictor_4x8 aom_d135_predictor_4x8_c
+
+void aom_d135_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d135_predictor_8x16 aom_d135_predictor_8x16_c
+
+void aom_d135_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d135_predictor_8x4 aom_d135_predictor_8x4_c
+
+void aom_d135_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d135_predictor_8x8 aom_d135_predictor_8x8_c
+
+void aom_d153_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_d153_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_d153_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_d153_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d153_predictor_16x32 aom_d153_predictor_16x32_c
+
+void aom_d153_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d153_predictor_16x8 aom_d153_predictor_16x8_c
+
+void aom_d153_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d153_predictor_2x2 aom_d153_predictor_2x2_c
+
+void aom_d153_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d153_predictor_32x16 aom_d153_predictor_32x16_c
+
+void aom_d153_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_d153_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_d153_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_d153_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_d153_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_d153_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d153_predictor_4x8 aom_d153_predictor_4x8_c
+
+void aom_d153_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d153_predictor_8x16 aom_d153_predictor_8x16_c
+
+void aom_d153_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d153_predictor_8x4 aom_d153_predictor_8x4_c
+
+void aom_d153_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_d153_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_d153_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_d207e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d207e_predictor_16x16 aom_d207e_predictor_16x16_c
+
+void aom_d207e_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d207e_predictor_16x32 aom_d207e_predictor_16x32_c
+
+void aom_d207e_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d207e_predictor_16x8 aom_d207e_predictor_16x8_c
+
+void aom_d207e_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d207e_predictor_2x2 aom_d207e_predictor_2x2_c
+
+void aom_d207e_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d207e_predictor_32x16 aom_d207e_predictor_32x16_c
+
+void aom_d207e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d207e_predictor_32x32 aom_d207e_predictor_32x32_c
+
+void aom_d207e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d207e_predictor_4x4 aom_d207e_predictor_4x4_c
+
+void aom_d207e_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d207e_predictor_4x8 aom_d207e_predictor_4x8_c
+
+void aom_d207e_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d207e_predictor_8x16 aom_d207e_predictor_8x16_c
+
+void aom_d207e_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d207e_predictor_8x4 aom_d207e_predictor_8x4_c
+
+void aom_d207e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d207e_predictor_8x8 aom_d207e_predictor_8x8_c
+
+void aom_d45e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d45e_predictor_16x16 aom_d45e_predictor_16x16_c
+
+void aom_d45e_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d45e_predictor_16x32 aom_d45e_predictor_16x32_c
+
+void aom_d45e_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d45e_predictor_16x8 aom_d45e_predictor_16x8_c
+
+void aom_d45e_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d45e_predictor_2x2 aom_d45e_predictor_2x2_c
+
+void aom_d45e_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d45e_predictor_32x16 aom_d45e_predictor_32x16_c
+
+void aom_d45e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d45e_predictor_32x32 aom_d45e_predictor_32x32_c
+
+void aom_d45e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d45e_predictor_4x4 aom_d45e_predictor_4x4_c
+
+void aom_d45e_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d45e_predictor_4x8 aom_d45e_predictor_4x8_c
+
+void aom_d45e_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d45e_predictor_8x16 aom_d45e_predictor_8x16_c
+
+void aom_d45e_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d45e_predictor_8x4 aom_d45e_predictor_8x4_c
+
+void aom_d45e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d45e_predictor_8x8 aom_d45e_predictor_8x8_c
+
+void aom_d63e_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d63e_predictor_16x16 aom_d63e_predictor_16x16_c
+
+void aom_d63e_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d63e_predictor_16x32 aom_d63e_predictor_16x32_c
+
+void aom_d63e_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d63e_predictor_16x8 aom_d63e_predictor_16x8_c
+
+void aom_d63e_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d63e_predictor_2x2 aom_d63e_predictor_2x2_c
+
+void aom_d63e_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d63e_predictor_32x16 aom_d63e_predictor_32x16_c
+
+void aom_d63e_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d63e_predictor_32x32 aom_d63e_predictor_32x32_c
+
+void aom_d63e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_d63e_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_d63e_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_d63e_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d63e_predictor_4x8 aom_d63e_predictor_4x8_c
+
+void aom_d63e_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d63e_predictor_8x16 aom_d63e_predictor_8x16_c
+
+void aom_d63e_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d63e_predictor_8x4 aom_d63e_predictor_8x4_c
+
+void aom_d63e_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_d63e_predictor_8x8 aom_d63e_predictor_8x8_c
+
+void aom_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_128_predictor_16x16 aom_dc_128_predictor_16x16_sse2
+
+void aom_dc_128_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_16x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_128_predictor_16x32 aom_dc_128_predictor_16x32_sse2
+
+void aom_dc_128_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_128_predictor_16x8 aom_dc_128_predictor_16x8_sse2
+
+void aom_dc_128_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_128_predictor_2x2 aom_dc_128_predictor_2x2_c
+
+void aom_dc_128_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_dc_128_predictor_32x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_32x32_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_dc_128_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_128_predictor_4x4 aom_dc_128_predictor_4x4_sse2
+
+void aom_dc_128_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_4x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_128_predictor_4x8 aom_dc_128_predictor_4x8_sse2
+
+void aom_dc_128_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_8x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_128_predictor_8x16 aom_dc_128_predictor_8x16_sse2
+
+void aom_dc_128_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_128_predictor_8x4 aom_dc_128_predictor_8x4_sse2
+
+void aom_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_128_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_128_predictor_8x8 aom_dc_128_predictor_8x8_sse2
+
+void aom_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_left_predictor_16x16 aom_dc_left_predictor_16x16_sse2
+
+void aom_dc_left_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_16x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_left_predictor_16x32 aom_dc_left_predictor_16x32_sse2
+
+void aom_dc_left_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_left_predictor_16x8 aom_dc_left_predictor_16x8_sse2
+
+void aom_dc_left_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_left_predictor_2x2 aom_dc_left_predictor_2x2_c
+
+void aom_dc_left_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_dc_left_predictor_32x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_32x32_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_dc_left_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_left_predictor_4x4 aom_dc_left_predictor_4x4_sse2
+
+void aom_dc_left_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_4x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_left_predictor_4x8 aom_dc_left_predictor_4x8_sse2
+
+void aom_dc_left_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_8x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_left_predictor_8x16 aom_dc_left_predictor_8x16_sse2
+
+void aom_dc_left_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_left_predictor_8x4 aom_dc_left_predictor_8x4_sse2
+
+void aom_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_left_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_left_predictor_8x8 aom_dc_left_predictor_8x8_sse2
+
+void aom_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_predictor_16x16 aom_dc_predictor_16x16_sse2
+
+void aom_dc_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_16x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_predictor_16x32 aom_dc_predictor_16x32_sse2
+
+void aom_dc_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_predictor_16x8 aom_dc_predictor_16x8_sse2
+
+void aom_dc_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_predictor_2x2 aom_dc_predictor_2x2_c
+
+void aom_dc_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_dc_predictor_32x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_32x32_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_dc_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_predictor_4x4 aom_dc_predictor_4x4_sse2
+
+void aom_dc_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_4x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_predictor_4x8 aom_dc_predictor_4x8_sse2
+
+void aom_dc_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_8x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_predictor_8x16 aom_dc_predictor_8x16_sse2
+
+void aom_dc_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_predictor_8x4 aom_dc_predictor_8x4_sse2
+
+void aom_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_predictor_8x8 aom_dc_predictor_8x8_sse2
+
+void aom_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_top_predictor_16x16 aom_dc_top_predictor_16x16_sse2
+
+void aom_dc_top_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_16x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_top_predictor_16x32 aom_dc_top_predictor_16x32_sse2
+
+void aom_dc_top_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_top_predictor_16x8 aom_dc_top_predictor_16x8_sse2
+
+void aom_dc_top_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_top_predictor_2x2 aom_dc_top_predictor_2x2_c
+
+void aom_dc_top_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_dc_top_predictor_32x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_32x32_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_dc_top_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_top_predictor_4x4 aom_dc_top_predictor_4x4_sse2
+
+void aom_dc_top_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_4x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_top_predictor_4x8 aom_dc_top_predictor_4x8_sse2
+
+void aom_dc_top_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_8x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_top_predictor_8x16 aom_dc_top_predictor_8x16_sse2
+
+void aom_dc_top_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_top_predictor_8x4 aom_dc_top_predictor_8x4_sse2
+
+void aom_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_dc_top_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_dc_top_predictor_8x8 aom_dc_top_predictor_8x8_sse2
+
+void aom_fdct16x16_c(const int16_t *input, tran_low_t *output, int stride);
+void aom_fdct16x16_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define aom_fdct16x16 aom_fdct16x16_sse2
+
+void aom_fdct32x32_c(const int16_t *input, tran_low_t *output, int stride);
+void aom_fdct32x32_sse2(const int16_t *input, tran_low_t *output, int stride);
+void aom_fdct32x32_avx2(const int16_t *input, tran_low_t *output, int stride);
+RTCD_EXTERN void (*aom_fdct32x32)(const int16_t *input, tran_low_t *output, int stride);
+
+void aom_fdct32x32_rd_c(const int16_t *input, tran_low_t *output, int stride);
+void aom_fdct32x32_rd_sse2(const int16_t *input, tran_low_t *output, int stride);
+void aom_fdct32x32_rd_avx2(const int16_t *input, tran_low_t *output, int stride);
+RTCD_EXTERN void (*aom_fdct32x32_rd)(const int16_t *input, tran_low_t *output, int stride);
+
+void aom_fdct4x4_c(const int16_t *input, tran_low_t *output, int stride);
+void aom_fdct4x4_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define aom_fdct4x4 aom_fdct4x4_sse2
+
+void aom_fdct4x4_1_c(const int16_t *input, tran_low_t *output, int stride);
+void aom_fdct4x4_1_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define aom_fdct4x4_1 aom_fdct4x4_1_sse2
+
+void aom_fdct8x8_c(const int16_t *input, tran_low_t *output, int stride);
+void aom_fdct8x8_sse2(const int16_t *input, tran_low_t *output, int stride);
+void aom_fdct8x8_ssse3(const int16_t *input, tran_low_t *output, int stride);
+RTCD_EXTERN void (*aom_fdct8x8)(const int16_t *input, tran_low_t *output, int stride);
+
+void aom_get16x16var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+void aom_get16x16var_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+void aom_get16x16var_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+RTCD_EXTERN void (*aom_get16x16var)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+
+unsigned int aom_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
+#define aom_get4x4sse_cs aom_get4x4sse_cs_c
+
+void aom_get8x8var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+void aom_get8x8var_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+#define aom_get8x8var aom_get8x8var_sse2
+
+unsigned int aom_get_mb_ss_c(const int16_t *);
+unsigned int aom_get_mb_ss_sse2(const int16_t *);
+#define aom_get_mb_ss aom_get_mb_ss_sse2
+
+void aom_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_h_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_h_predictor_16x16 aom_h_predictor_16x16_sse2
+
+void aom_h_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_h_predictor_16x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_h_predictor_16x32 aom_h_predictor_16x32_sse2
+
+void aom_h_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_h_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_h_predictor_16x8 aom_h_predictor_16x8_sse2
+
+void aom_h_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_h_predictor_2x2 aom_h_predictor_2x2_c
+
+void aom_h_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_h_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_h_predictor_32x16 aom_h_predictor_32x16_sse2
+
+void aom_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_h_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_h_predictor_32x32_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_h_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_h_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_h_predictor_4x4 aom_h_predictor_4x4_sse2
+
+void aom_h_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_h_predictor_4x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_h_predictor_4x8 aom_h_predictor_4x8_sse2
+
+void aom_h_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_h_predictor_8x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_h_predictor_8x16 aom_h_predictor_8x16_sse2
+
+void aom_h_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_h_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_h_predictor_8x4 aom_h_predictor_8x4_sse2
+
+void aom_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_h_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_h_predictor_8x8 aom_h_predictor_8x8_sse2
+
+void aom_hadamard_16x16_c(const int16_t *src_diff, int src_stride, int16_t *coeff);
+void aom_hadamard_16x16_sse2(const int16_t *src_diff, int src_stride, int16_t *coeff);
+#define aom_hadamard_16x16 aom_hadamard_16x16_sse2
+
+void aom_hadamard_8x8_c(const int16_t *src_diff, int src_stride, int16_t *coeff);
+void aom_hadamard_8x8_sse2(const int16_t *src_diff, int src_stride, int16_t *coeff);
+void aom_hadamard_8x8_ssse3(const int16_t *src_diff, int src_stride, int16_t *coeff);
+RTCD_EXTERN void (*aom_hadamard_8x8)(const int16_t *src_diff, int src_stride, int16_t *coeff);
+
+void aom_highbd_10_get16x16var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+#define aom_highbd_10_get16x16var aom_highbd_10_get16x16var_c
+
+void aom_highbd_10_get8x8var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+#define aom_highbd_10_get8x8var aom_highbd_10_get8x8var_c
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance16x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance16x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance16x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance16x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance16x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance16x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance16x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance16x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance16x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance32x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance32x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance32x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance32x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance32x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance32x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance32x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance32x64_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance32x64)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance4x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance4x4_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance4x4)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance4x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance4x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance4x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance64x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance64x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance64x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance64x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance64x64_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance64x64)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance8x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance8x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance8x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance8x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance8x4_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance8x4)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_masked_sub_pixel_variance8x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_10_masked_sub_pixel_variance8x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_masked_sub_pixel_variance8x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_mse16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int aom_highbd_10_mse16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_10_mse16x16 aom_highbd_10_mse16x16_sse2
+
+unsigned int aom_highbd_10_mse16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_10_mse16x8 aom_highbd_10_mse16x8_c
+
+unsigned int aom_highbd_10_mse8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_10_mse8x16 aom_highbd_10_mse8x16_c
+
+unsigned int aom_highbd_10_mse8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int aom_highbd_10_mse8x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_10_mse8x8 aom_highbd_10_mse8x8_sse2
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance16x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance16x16 aom_highbd_10_obmc_sub_pixel_variance16x16_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance16x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance16x32 aom_highbd_10_obmc_sub_pixel_variance16x32_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance16x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance16x8 aom_highbd_10_obmc_sub_pixel_variance16x8_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance32x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance32x16 aom_highbd_10_obmc_sub_pixel_variance32x16_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance32x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance32x32 aom_highbd_10_obmc_sub_pixel_variance32x32_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance32x64_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance32x64 aom_highbd_10_obmc_sub_pixel_variance32x64_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance4x4_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance4x4 aom_highbd_10_obmc_sub_pixel_variance4x4_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance4x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance4x8 aom_highbd_10_obmc_sub_pixel_variance4x8_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance64x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance64x32 aom_highbd_10_obmc_sub_pixel_variance64x32_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance64x64_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance64x64 aom_highbd_10_obmc_sub_pixel_variance64x64_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance8x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance8x16 aom_highbd_10_obmc_sub_pixel_variance8x16_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance8x4_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance8x4 aom_highbd_10_obmc_sub_pixel_variance8x4_c
+
+unsigned int aom_highbd_10_obmc_sub_pixel_variance8x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_10_obmc_sub_pixel_variance8x8 aom_highbd_10_obmc_sub_pixel_variance8x8_c
+
+unsigned int aom_highbd_10_obmc_variance16x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance16x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance16x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance16x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance16x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance16x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance16x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance16x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance16x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance32x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance32x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance32x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance32x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance32x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance32x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance32x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance32x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance32x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance4x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance4x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance4x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance4x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance4x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance4x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance64x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance64x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance64x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance64x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance64x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance64x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance8x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance8x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance8x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance8x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance8x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance8x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_10_obmc_variance8x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_10_obmc_variance8x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_obmc_variance8x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance16x16 aom_highbd_10_sub_pixel_avg_variance16x16_sse2
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance16x32 aom_highbd_10_sub_pixel_avg_variance16x32_sse2
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance16x8 aom_highbd_10_sub_pixel_avg_variance16x8_sse2
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance32x16 aom_highbd_10_sub_pixel_avg_variance32x16_sse2
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance32x32 aom_highbd_10_sub_pixel_avg_variance32x32_sse2
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance32x64 aom_highbd_10_sub_pixel_avg_variance32x64_sse2
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance4x4_sse4_1(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_highbd_10_sub_pixel_avg_variance4x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance4x8 aom_highbd_10_sub_pixel_avg_variance4x8_c
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance64x32 aom_highbd_10_sub_pixel_avg_variance64x32_sse2
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance64x64 aom_highbd_10_sub_pixel_avg_variance64x64_sse2
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance8x16 aom_highbd_10_sub_pixel_avg_variance8x16_sse2
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance8x4 aom_highbd_10_sub_pixel_avg_variance8x4_sse2
+
+uint32_t aom_highbd_10_sub_pixel_avg_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_10_sub_pixel_avg_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_10_sub_pixel_avg_variance8x8 aom_highbd_10_sub_pixel_avg_variance8x8_sse2
+
+uint32_t aom_highbd_10_sub_pixel_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance16x16 aom_highbd_10_sub_pixel_variance16x16_sse2
+
+uint32_t aom_highbd_10_sub_pixel_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance16x32 aom_highbd_10_sub_pixel_variance16x32_sse2
+
+uint32_t aom_highbd_10_sub_pixel_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance16x8 aom_highbd_10_sub_pixel_variance16x8_sse2
+
+uint32_t aom_highbd_10_sub_pixel_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance32x16 aom_highbd_10_sub_pixel_variance32x16_sse2
+
+uint32_t aom_highbd_10_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance32x32 aom_highbd_10_sub_pixel_variance32x32_sse2
+
+uint32_t aom_highbd_10_sub_pixel_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance32x64 aom_highbd_10_sub_pixel_variance32x64_sse2
+
+uint32_t aom_highbd_10_sub_pixel_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance4x4_sse4_1(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_highbd_10_sub_pixel_variance4x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_highbd_10_sub_pixel_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance4x8 aom_highbd_10_sub_pixel_variance4x8_c
+
+uint32_t aom_highbd_10_sub_pixel_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance64x32 aom_highbd_10_sub_pixel_variance64x32_sse2
+
+uint32_t aom_highbd_10_sub_pixel_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance64x64 aom_highbd_10_sub_pixel_variance64x64_sse2
+
+uint32_t aom_highbd_10_sub_pixel_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance8x16 aom_highbd_10_sub_pixel_variance8x16_sse2
+
+uint32_t aom_highbd_10_sub_pixel_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance8x4 aom_highbd_10_sub_pixel_variance8x4_sse2
+
+uint32_t aom_highbd_10_sub_pixel_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_10_sub_pixel_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_10_sub_pixel_variance8x8 aom_highbd_10_sub_pixel_variance8x8_sse2
+
+unsigned int aom_highbd_10_variance16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_10_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance16x16 aom_highbd_10_variance16x16_sse2
+
+unsigned int aom_highbd_10_variance16x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_10_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance16x32 aom_highbd_10_variance16x32_sse2
+
+unsigned int aom_highbd_10_variance16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_10_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance16x8 aom_highbd_10_variance16x8_sse2
+
+unsigned int aom_highbd_10_variance2x2_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance2x2 aom_highbd_10_variance2x2_c
+
+unsigned int aom_highbd_10_variance2x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance2x4 aom_highbd_10_variance2x4_c
+
+unsigned int aom_highbd_10_variance32x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_10_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance32x16 aom_highbd_10_variance32x16_sse2
+
+unsigned int aom_highbd_10_variance32x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_10_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance32x32 aom_highbd_10_variance32x32_sse2
+
+unsigned int aom_highbd_10_variance32x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_10_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance32x64 aom_highbd_10_variance32x64_sse2
+
+unsigned int aom_highbd_10_variance4x2_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance4x2 aom_highbd_10_variance4x2_c
+
+unsigned int aom_highbd_10_variance4x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_10_variance4x4_sse4_1(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_10_variance4x4)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int aom_highbd_10_variance4x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance4x8 aom_highbd_10_variance4x8_c
+
+unsigned int aom_highbd_10_variance64x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_10_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance64x32 aom_highbd_10_variance64x32_sse2
+
+unsigned int aom_highbd_10_variance64x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_10_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance64x64 aom_highbd_10_variance64x64_sse2
+
+unsigned int aom_highbd_10_variance8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_10_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance8x16 aom_highbd_10_variance8x16_sse2
+
+unsigned int aom_highbd_10_variance8x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance8x4 aom_highbd_10_variance8x4_c
+
+unsigned int aom_highbd_10_variance8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_10_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_10_variance8x8 aom_highbd_10_variance8x8_sse2
+
+void aom_highbd_12_get16x16var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+#define aom_highbd_12_get16x16var aom_highbd_12_get16x16var_c
+
+void aom_highbd_12_get8x8var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+#define aom_highbd_12_get8x8var aom_highbd_12_get8x8var_c
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance16x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance16x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance16x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance16x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance16x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance16x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance16x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance16x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance16x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance32x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance32x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance32x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance32x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance32x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance32x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance32x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance32x64_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance32x64)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance4x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance4x4_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance4x4)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance4x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance4x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance4x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance64x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance64x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance64x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance64x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance64x64_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance64x64)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance8x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance8x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance8x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance8x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance8x4_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance8x4)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_masked_sub_pixel_variance8x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_12_masked_sub_pixel_variance8x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_masked_sub_pixel_variance8x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_mse16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int aom_highbd_12_mse16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_12_mse16x16 aom_highbd_12_mse16x16_sse2
+
+unsigned int aom_highbd_12_mse16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_12_mse16x8 aom_highbd_12_mse16x8_c
+
+unsigned int aom_highbd_12_mse8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_12_mse8x16 aom_highbd_12_mse8x16_c
+
+unsigned int aom_highbd_12_mse8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int aom_highbd_12_mse8x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_12_mse8x8 aom_highbd_12_mse8x8_sse2
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance16x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance16x16 aom_highbd_12_obmc_sub_pixel_variance16x16_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance16x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance16x32 aom_highbd_12_obmc_sub_pixel_variance16x32_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance16x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance16x8 aom_highbd_12_obmc_sub_pixel_variance16x8_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance32x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance32x16 aom_highbd_12_obmc_sub_pixel_variance32x16_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance32x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance32x32 aom_highbd_12_obmc_sub_pixel_variance32x32_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance32x64_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance32x64 aom_highbd_12_obmc_sub_pixel_variance32x64_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance4x4_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance4x4 aom_highbd_12_obmc_sub_pixel_variance4x4_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance4x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance4x8 aom_highbd_12_obmc_sub_pixel_variance4x8_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance64x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance64x32 aom_highbd_12_obmc_sub_pixel_variance64x32_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance64x64_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance64x64 aom_highbd_12_obmc_sub_pixel_variance64x64_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance8x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance8x16 aom_highbd_12_obmc_sub_pixel_variance8x16_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance8x4_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance8x4 aom_highbd_12_obmc_sub_pixel_variance8x4_c
+
+unsigned int aom_highbd_12_obmc_sub_pixel_variance8x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_12_obmc_sub_pixel_variance8x8 aom_highbd_12_obmc_sub_pixel_variance8x8_c
+
+unsigned int aom_highbd_12_obmc_variance16x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance16x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance16x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance16x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance16x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance16x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance16x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance16x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance16x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance32x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance32x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance32x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance32x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance32x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance32x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance32x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance32x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance32x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance4x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance4x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance4x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance4x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance4x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance4x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance64x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance64x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance64x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance64x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance64x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance64x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance8x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance8x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance8x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance8x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance8x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance8x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_12_obmc_variance8x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_12_obmc_variance8x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_obmc_variance8x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance16x16 aom_highbd_12_sub_pixel_avg_variance16x16_sse2
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance16x32 aom_highbd_12_sub_pixel_avg_variance16x32_sse2
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance16x8 aom_highbd_12_sub_pixel_avg_variance16x8_sse2
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance32x16 aom_highbd_12_sub_pixel_avg_variance32x16_sse2
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance32x32 aom_highbd_12_sub_pixel_avg_variance32x32_sse2
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance32x64 aom_highbd_12_sub_pixel_avg_variance32x64_sse2
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance4x4_sse4_1(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_highbd_12_sub_pixel_avg_variance4x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance4x8 aom_highbd_12_sub_pixel_avg_variance4x8_c
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance64x32 aom_highbd_12_sub_pixel_avg_variance64x32_sse2
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance64x64 aom_highbd_12_sub_pixel_avg_variance64x64_sse2
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance8x16 aom_highbd_12_sub_pixel_avg_variance8x16_sse2
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance8x4 aom_highbd_12_sub_pixel_avg_variance8x4_sse2
+
+uint32_t aom_highbd_12_sub_pixel_avg_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_12_sub_pixel_avg_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_12_sub_pixel_avg_variance8x8 aom_highbd_12_sub_pixel_avg_variance8x8_sse2
+
+uint32_t aom_highbd_12_sub_pixel_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance16x16 aom_highbd_12_sub_pixel_variance16x16_sse2
+
+uint32_t aom_highbd_12_sub_pixel_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance16x32 aom_highbd_12_sub_pixel_variance16x32_sse2
+
+uint32_t aom_highbd_12_sub_pixel_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance16x8 aom_highbd_12_sub_pixel_variance16x8_sse2
+
+uint32_t aom_highbd_12_sub_pixel_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance32x16 aom_highbd_12_sub_pixel_variance32x16_sse2
+
+uint32_t aom_highbd_12_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance32x32 aom_highbd_12_sub_pixel_variance32x32_sse2
+
+uint32_t aom_highbd_12_sub_pixel_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance32x64 aom_highbd_12_sub_pixel_variance32x64_sse2
+
+uint32_t aom_highbd_12_sub_pixel_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance4x4_sse4_1(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_highbd_12_sub_pixel_variance4x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_highbd_12_sub_pixel_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance4x8 aom_highbd_12_sub_pixel_variance4x8_c
+
+uint32_t aom_highbd_12_sub_pixel_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance64x32 aom_highbd_12_sub_pixel_variance64x32_sse2
+
+uint32_t aom_highbd_12_sub_pixel_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance64x64 aom_highbd_12_sub_pixel_variance64x64_sse2
+
+uint32_t aom_highbd_12_sub_pixel_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance8x16 aom_highbd_12_sub_pixel_variance8x16_sse2
+
+uint32_t aom_highbd_12_sub_pixel_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance8x4 aom_highbd_12_sub_pixel_variance8x4_sse2
+
+uint32_t aom_highbd_12_sub_pixel_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_12_sub_pixel_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_12_sub_pixel_variance8x8 aom_highbd_12_sub_pixel_variance8x8_sse2
+
+unsigned int aom_highbd_12_variance16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_12_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance16x16 aom_highbd_12_variance16x16_sse2
+
+unsigned int aom_highbd_12_variance16x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_12_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance16x32 aom_highbd_12_variance16x32_sse2
+
+unsigned int aom_highbd_12_variance16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_12_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance16x8 aom_highbd_12_variance16x8_sse2
+
+unsigned int aom_highbd_12_variance2x2_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance2x2 aom_highbd_12_variance2x2_c
+
+unsigned int aom_highbd_12_variance2x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance2x4 aom_highbd_12_variance2x4_c
+
+unsigned int aom_highbd_12_variance32x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_12_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance32x16 aom_highbd_12_variance32x16_sse2
+
+unsigned int aom_highbd_12_variance32x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_12_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance32x32 aom_highbd_12_variance32x32_sse2
+
+unsigned int aom_highbd_12_variance32x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_12_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance32x64 aom_highbd_12_variance32x64_sse2
+
+unsigned int aom_highbd_12_variance4x2_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance4x2 aom_highbd_12_variance4x2_c
+
+unsigned int aom_highbd_12_variance4x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_12_variance4x4_sse4_1(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_12_variance4x4)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int aom_highbd_12_variance4x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance4x8 aom_highbd_12_variance4x8_c
+
+unsigned int aom_highbd_12_variance64x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_12_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance64x32 aom_highbd_12_variance64x32_sse2
+
+unsigned int aom_highbd_12_variance64x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_12_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance64x64 aom_highbd_12_variance64x64_sse2
+
+unsigned int aom_highbd_12_variance8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_12_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance8x16 aom_highbd_12_variance8x16_sse2
+
+unsigned int aom_highbd_12_variance8x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance8x4 aom_highbd_12_variance8x4_c
+
+unsigned int aom_highbd_12_variance8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_12_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_12_variance8x8 aom_highbd_12_variance8x8_sse2
+
+void aom_highbd_8_get16x16var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+#define aom_highbd_8_get16x16var aom_highbd_8_get16x16var_c
+
+void aom_highbd_8_get8x8var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
+#define aom_highbd_8_get8x8var aom_highbd_8_get8x8var_c
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance16x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance16x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance16x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance16x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance16x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance16x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance16x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance16x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance16x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance32x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance32x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance32x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance32x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance32x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance32x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance32x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance32x64_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance32x64)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance4x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance4x4_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance4x4)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance4x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance4x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance4x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance64x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance64x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance64x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance64x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance64x64_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance64x64)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance8x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance8x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance8x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance8x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance8x4_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance8x4)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_masked_sub_pixel_variance8x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_highbd_8_masked_sub_pixel_variance8x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_masked_sub_pixel_variance8x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_highbd_8_mse16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int aom_highbd_8_mse16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_8_mse16x16 aom_highbd_8_mse16x16_sse2
+
+unsigned int aom_highbd_8_mse16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_8_mse16x8 aom_highbd_8_mse16x8_c
+
+unsigned int aom_highbd_8_mse8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_8_mse8x16 aom_highbd_8_mse8x16_c
+
+unsigned int aom_highbd_8_mse8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int aom_highbd_8_mse8x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_highbd_8_mse8x8 aom_highbd_8_mse8x8_sse2
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance16x16 aom_highbd_8_sub_pixel_avg_variance16x16_sse2
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance16x32 aom_highbd_8_sub_pixel_avg_variance16x32_sse2
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance16x8 aom_highbd_8_sub_pixel_avg_variance16x8_sse2
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance32x16 aom_highbd_8_sub_pixel_avg_variance32x16_sse2
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance32x32 aom_highbd_8_sub_pixel_avg_variance32x32_sse2
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance32x64 aom_highbd_8_sub_pixel_avg_variance32x64_sse2
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance4x4_sse4_1(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_highbd_8_sub_pixel_avg_variance4x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance4x8 aom_highbd_8_sub_pixel_avg_variance4x8_c
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance64x32 aom_highbd_8_sub_pixel_avg_variance64x32_sse2
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance64x64 aom_highbd_8_sub_pixel_avg_variance64x64_sse2
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance8x16 aom_highbd_8_sub_pixel_avg_variance8x16_sse2
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance8x4 aom_highbd_8_sub_pixel_avg_variance8x4_sse2
+
+uint32_t aom_highbd_8_sub_pixel_avg_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_highbd_8_sub_pixel_avg_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+#define aom_highbd_8_sub_pixel_avg_variance8x8 aom_highbd_8_sub_pixel_avg_variance8x8_sse2
+
+uint32_t aom_highbd_8_sub_pixel_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance16x16 aom_highbd_8_sub_pixel_variance16x16_sse2
+
+uint32_t aom_highbd_8_sub_pixel_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance16x32 aom_highbd_8_sub_pixel_variance16x32_sse2
+
+uint32_t aom_highbd_8_sub_pixel_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance16x8 aom_highbd_8_sub_pixel_variance16x8_sse2
+
+uint32_t aom_highbd_8_sub_pixel_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance32x16 aom_highbd_8_sub_pixel_variance32x16_sse2
+
+uint32_t aom_highbd_8_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance32x32 aom_highbd_8_sub_pixel_variance32x32_sse2
+
+uint32_t aom_highbd_8_sub_pixel_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance32x64 aom_highbd_8_sub_pixel_variance32x64_sse2
+
+uint32_t aom_highbd_8_sub_pixel_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance4x4_sse4_1(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_highbd_8_sub_pixel_variance4x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_highbd_8_sub_pixel_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance4x8 aom_highbd_8_sub_pixel_variance4x8_c
+
+uint32_t aom_highbd_8_sub_pixel_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance64x32 aom_highbd_8_sub_pixel_variance64x32_sse2
+
+uint32_t aom_highbd_8_sub_pixel_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance64x64 aom_highbd_8_sub_pixel_variance64x64_sse2
+
+uint32_t aom_highbd_8_sub_pixel_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance8x16 aom_highbd_8_sub_pixel_variance8x16_sse2
+
+uint32_t aom_highbd_8_sub_pixel_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance8x4 aom_highbd_8_sub_pixel_variance8x4_sse2
+
+uint32_t aom_highbd_8_sub_pixel_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_highbd_8_sub_pixel_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_highbd_8_sub_pixel_variance8x8 aom_highbd_8_sub_pixel_variance8x8_sse2
+
+unsigned int aom_highbd_8_variance16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_8_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance16x16 aom_highbd_8_variance16x16_sse2
+
+unsigned int aom_highbd_8_variance16x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_8_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance16x32 aom_highbd_8_variance16x32_sse2
+
+unsigned int aom_highbd_8_variance16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_8_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance16x8 aom_highbd_8_variance16x8_sse2
+
+unsigned int aom_highbd_8_variance2x2_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance2x2 aom_highbd_8_variance2x2_c
+
+unsigned int aom_highbd_8_variance2x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance2x4 aom_highbd_8_variance2x4_c
+
+unsigned int aom_highbd_8_variance32x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_8_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance32x16 aom_highbd_8_variance32x16_sse2
+
+unsigned int aom_highbd_8_variance32x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_8_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance32x32 aom_highbd_8_variance32x32_sse2
+
+unsigned int aom_highbd_8_variance32x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_8_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance32x64 aom_highbd_8_variance32x64_sse2
+
+unsigned int aom_highbd_8_variance4x2_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance4x2 aom_highbd_8_variance4x2_c
+
+unsigned int aom_highbd_8_variance4x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_8_variance4x4_sse4_1(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_8_variance4x4)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int aom_highbd_8_variance4x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance4x8 aom_highbd_8_variance4x8_c
+
+unsigned int aom_highbd_8_variance64x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_8_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance64x32 aom_highbd_8_variance64x32_sse2
+
+unsigned int aom_highbd_8_variance64x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_8_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance64x64 aom_highbd_8_variance64x64_sse2
+
+unsigned int aom_highbd_8_variance8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_8_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance8x16 aom_highbd_8_variance8x16_sse2
+
+unsigned int aom_highbd_8_variance8x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance8x4 aom_highbd_8_variance8x4_c
+
+unsigned int aom_highbd_8_variance8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_highbd_8_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_highbd_8_variance8x8 aom_highbd_8_variance8x8_sse2
+
+void aom_highbd_blend_a64_hmask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w, int bd);
+void aom_highbd_blend_a64_hmask_sse4_1(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w, int bd);
+RTCD_EXTERN void (*aom_highbd_blend_a64_hmask)(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w, int bd);
+
+void aom_highbd_blend_a64_mask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int h, int w, int suby, int subx, int bd);
+void aom_highbd_blend_a64_mask_sse4_1(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int h, int w, int suby, int subx, int bd);
+RTCD_EXTERN void (*aom_highbd_blend_a64_mask)(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int h, int w, int suby, int subx, int bd);
+
+void aom_highbd_blend_a64_vmask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w, int bd);
+void aom_highbd_blend_a64_vmask_sse4_1(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w, int bd);
+RTCD_EXTERN void (*aom_highbd_blend_a64_vmask)(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int h, int w, int bd);
+
+void aom_highbd_comp_avg_pred_c(uint16_t *comp_pred, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride);
+#define aom_highbd_comp_avg_pred aom_highbd_comp_avg_pred_c
+
+void aom_highbd_comp_avg_upsampled_pred_c(uint16_t *comp_pred, const uint8_t *pred8, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref8, int ref_stride, int bd);
+void aom_highbd_comp_avg_upsampled_pred_sse2(uint16_t *comp_pred, const uint8_t *pred8, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref8, int ref_stride, int bd);
+#define aom_highbd_comp_avg_upsampled_pred aom_highbd_comp_avg_upsampled_pred_sse2
+
+void aom_highbd_comp_mask_pred_c(uint16_t *comp_pred, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask);
+#define aom_highbd_comp_mask_pred aom_highbd_comp_mask_pred_c
+
+void aom_highbd_comp_mask_upsampled_pred_c(uint16_t *comp_pred, const uint8_t *pred8, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref8, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask, int bd);
+#define aom_highbd_comp_mask_upsampled_pred aom_highbd_comp_mask_upsampled_pred_c
+
+void aom_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+RTCD_EXTERN void (*aom_highbd_convolve8)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+
+void aom_highbd_convolve8_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_add_src_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define aom_highbd_convolve8_add_src aom_highbd_convolve8_add_src_sse2
+
+void aom_highbd_convolve8_add_src_hip_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_add_src_hip_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+RTCD_EXTERN void (*aom_highbd_convolve8_add_src_hip)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+
+void aom_highbd_convolve8_add_src_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define aom_highbd_convolve8_add_src_horiz aom_highbd_convolve8_add_src_horiz_c
+
+void aom_highbd_convolve8_add_src_horiz_hip_c(const uint8_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define aom_highbd_convolve8_add_src_horiz_hip aom_highbd_convolve8_add_src_horiz_hip_c
+
+void aom_highbd_convolve8_add_src_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define aom_highbd_convolve8_add_src_vert aom_highbd_convolve8_add_src_vert_c
+
+void aom_highbd_convolve8_add_src_vert_hip_c(const uint16_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define aom_highbd_convolve8_add_src_vert_hip aom_highbd_convolve8_add_src_vert_hip_c
+
+void aom_highbd_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_avg_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+RTCD_EXTERN void (*aom_highbd_convolve8_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+
+void aom_highbd_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_avg_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_avg_horiz_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+RTCD_EXTERN void (*aom_highbd_convolve8_avg_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+
+void aom_highbd_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_avg_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_avg_vert_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+RTCD_EXTERN void (*aom_highbd_convolve8_avg_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+
+void aom_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_horiz_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+RTCD_EXTERN void (*aom_highbd_convolve8_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+
+void aom_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve8_vert_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+RTCD_EXTERN void (*aom_highbd_convolve8_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+
+void aom_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve_avg_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+RTCD_EXTERN void (*aom_highbd_convolve_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+
+void aom_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve_copy_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void aom_highbd_convolve_copy_avx2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+RTCD_EXTERN void (*aom_highbd_convolve_copy)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+
+void aom_highbd_d117_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d117_predictor_16x16_ssse3(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d117_predictor_16x16)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d117_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d117_predictor_16x32 aom_highbd_d117_predictor_16x32_c
+
+void aom_highbd_d117_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d117_predictor_16x8 aom_highbd_d117_predictor_16x8_c
+
+void aom_highbd_d117_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d117_predictor_2x2 aom_highbd_d117_predictor_2x2_c
+
+void aom_highbd_d117_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d117_predictor_32x16 aom_highbd_d117_predictor_32x16_c
+
+void aom_highbd_d117_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d117_predictor_32x32_ssse3(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d117_predictor_32x32)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d117_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d117_predictor_4x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d117_predictor_4x4 aom_highbd_d117_predictor_4x4_sse2
+
+void aom_highbd_d117_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d117_predictor_4x8 aom_highbd_d117_predictor_4x8_c
+
+void aom_highbd_d117_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d117_predictor_8x16 aom_highbd_d117_predictor_8x16_c
+
+void aom_highbd_d117_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d117_predictor_8x4 aom_highbd_d117_predictor_8x4_c
+
+void aom_highbd_d117_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d117_predictor_8x8_ssse3(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d117_predictor_8x8)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d135_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d135_predictor_16x16_ssse3(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d135_predictor_16x16)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d135_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d135_predictor_16x32 aom_highbd_d135_predictor_16x32_c
+
+void aom_highbd_d135_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d135_predictor_16x8 aom_highbd_d135_predictor_16x8_c
+
+void aom_highbd_d135_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d135_predictor_2x2 aom_highbd_d135_predictor_2x2_c
+
+void aom_highbd_d135_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d135_predictor_32x16 aom_highbd_d135_predictor_32x16_c
+
+void aom_highbd_d135_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d135_predictor_32x32_ssse3(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d135_predictor_32x32)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d135_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d135_predictor_4x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d135_predictor_4x4 aom_highbd_d135_predictor_4x4_sse2
+
+void aom_highbd_d135_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d135_predictor_4x8 aom_highbd_d135_predictor_4x8_c
+
+void aom_highbd_d135_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d135_predictor_8x16 aom_highbd_d135_predictor_8x16_c
+
+void aom_highbd_d135_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d135_predictor_8x4 aom_highbd_d135_predictor_8x4_c
+
+void aom_highbd_d135_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d135_predictor_8x8_ssse3(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d135_predictor_8x8)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d153_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d153_predictor_16x16_ssse3(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d153_predictor_16x16)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d153_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d153_predictor_16x32 aom_highbd_d153_predictor_16x32_c
+
+void aom_highbd_d153_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d153_predictor_16x8 aom_highbd_d153_predictor_16x8_c
+
+void aom_highbd_d153_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d153_predictor_2x2 aom_highbd_d153_predictor_2x2_c
+
+void aom_highbd_d153_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d153_predictor_32x16 aom_highbd_d153_predictor_32x16_c
+
+void aom_highbd_d153_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d153_predictor_32x32_ssse3(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d153_predictor_32x32)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d153_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d153_predictor_4x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d153_predictor_4x4 aom_highbd_d153_predictor_4x4_sse2
+
+void aom_highbd_d153_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d153_predictor_4x8 aom_highbd_d153_predictor_4x8_c
+
+void aom_highbd_d153_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d153_predictor_8x16 aom_highbd_d153_predictor_8x16_c
+
+void aom_highbd_d153_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d153_predictor_8x4 aom_highbd_d153_predictor_8x4_c
+
+void aom_highbd_d153_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d153_predictor_8x8_ssse3(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d153_predictor_8x8)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d207e_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d207e_predictor_16x16 aom_highbd_d207e_predictor_16x16_c
+
+void aom_highbd_d207e_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d207e_predictor_16x32 aom_highbd_d207e_predictor_16x32_c
+
+void aom_highbd_d207e_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d207e_predictor_16x8 aom_highbd_d207e_predictor_16x8_c
+
+void aom_highbd_d207e_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d207e_predictor_2x2 aom_highbd_d207e_predictor_2x2_c
+
+void aom_highbd_d207e_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d207e_predictor_32x16 aom_highbd_d207e_predictor_32x16_c
+
+void aom_highbd_d207e_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d207e_predictor_32x32 aom_highbd_d207e_predictor_32x32_c
+
+void aom_highbd_d207e_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d207e_predictor_4x4 aom_highbd_d207e_predictor_4x4_c
+
+void aom_highbd_d207e_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d207e_predictor_4x8 aom_highbd_d207e_predictor_4x8_c
+
+void aom_highbd_d207e_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d207e_predictor_8x16 aom_highbd_d207e_predictor_8x16_c
+
+void aom_highbd_d207e_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d207e_predictor_8x4 aom_highbd_d207e_predictor_8x4_c
+
+void aom_highbd_d207e_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d207e_predictor_8x8 aom_highbd_d207e_predictor_8x8_c
+
+void aom_highbd_d45e_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d45e_predictor_16x16_avx2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d45e_predictor_16x16)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d45e_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d45e_predictor_16x32_avx2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d45e_predictor_16x32)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d45e_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d45e_predictor_16x8_avx2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d45e_predictor_16x8)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d45e_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d45e_predictor_2x2 aom_highbd_d45e_predictor_2x2_c
+
+void aom_highbd_d45e_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d45e_predictor_32x16_avx2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d45e_predictor_32x16)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d45e_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d45e_predictor_32x32_avx2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+RTCD_EXTERN void (*aom_highbd_d45e_predictor_32x32)(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+
+void aom_highbd_d45e_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d45e_predictor_4x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d45e_predictor_4x4 aom_highbd_d45e_predictor_4x4_sse2
+
+void aom_highbd_d45e_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d45e_predictor_4x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d45e_predictor_4x8 aom_highbd_d45e_predictor_4x8_sse2
+
+void aom_highbd_d45e_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d45e_predictor_8x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d45e_predictor_8x16 aom_highbd_d45e_predictor_8x16_sse2
+
+void aom_highbd_d45e_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d45e_predictor_8x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d45e_predictor_8x4 aom_highbd_d45e_predictor_8x4_sse2
+
+void aom_highbd_d45e_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_d45e_predictor_8x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d45e_predictor_8x8 aom_highbd_d45e_predictor_8x8_sse2
+
+void aom_highbd_d63e_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d63e_predictor_16x16 aom_highbd_d63e_predictor_16x16_c
+
+void aom_highbd_d63e_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d63e_predictor_16x32 aom_highbd_d63e_predictor_16x32_c
+
+void aom_highbd_d63e_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d63e_predictor_16x8 aom_highbd_d63e_predictor_16x8_c
+
+void aom_highbd_d63e_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d63e_predictor_2x2 aom_highbd_d63e_predictor_2x2_c
+
+void aom_highbd_d63e_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d63e_predictor_32x16 aom_highbd_d63e_predictor_32x16_c
+
+void aom_highbd_d63e_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d63e_predictor_32x32 aom_highbd_d63e_predictor_32x32_c
+
+void aom_highbd_d63e_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d63e_predictor_4x4 aom_highbd_d63e_predictor_4x4_c
+
+void aom_highbd_d63e_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d63e_predictor_4x8 aom_highbd_d63e_predictor_4x8_c
+
+void aom_highbd_d63e_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d63e_predictor_8x16 aom_highbd_d63e_predictor_8x16_c
+
+void aom_highbd_d63e_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d63e_predictor_8x4 aom_highbd_d63e_predictor_8x4_c
+
+void aom_highbd_d63e_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_d63e_predictor_8x8 aom_highbd_d63e_predictor_8x8_c
+
+void aom_highbd_dc_128_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_128_predictor_16x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_128_predictor_16x16 aom_highbd_dc_128_predictor_16x16_sse2
+
+void aom_highbd_dc_128_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_128_predictor_16x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_128_predictor_16x32 aom_highbd_dc_128_predictor_16x32_sse2
+
+void aom_highbd_dc_128_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_128_predictor_16x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_128_predictor_16x8 aom_highbd_dc_128_predictor_16x8_sse2
+
+void aom_highbd_dc_128_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_128_predictor_2x2 aom_highbd_dc_128_predictor_2x2_c
+
+void aom_highbd_dc_128_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_128_predictor_32x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_128_predictor_32x16 aom_highbd_dc_128_predictor_32x16_sse2
+
+void aom_highbd_dc_128_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_128_predictor_32x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_128_predictor_32x32 aom_highbd_dc_128_predictor_32x32_sse2
+
+void aom_highbd_dc_128_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_128_predictor_4x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_128_predictor_4x4 aom_highbd_dc_128_predictor_4x4_sse2
+
+void aom_highbd_dc_128_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_128_predictor_4x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_128_predictor_4x8 aom_highbd_dc_128_predictor_4x8_sse2
+
+void aom_highbd_dc_128_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_128_predictor_8x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_128_predictor_8x16 aom_highbd_dc_128_predictor_8x16_sse2
+
+void aom_highbd_dc_128_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_128_predictor_8x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_128_predictor_8x4 aom_highbd_dc_128_predictor_8x4_sse2
+
+void aom_highbd_dc_128_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_128_predictor_8x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_128_predictor_8x8 aom_highbd_dc_128_predictor_8x8_sse2
+
+void aom_highbd_dc_left_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_left_predictor_16x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_left_predictor_16x16 aom_highbd_dc_left_predictor_16x16_sse2
+
+void aom_highbd_dc_left_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_left_predictor_16x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_left_predictor_16x32 aom_highbd_dc_left_predictor_16x32_sse2
+
+void aom_highbd_dc_left_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_left_predictor_16x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_left_predictor_16x8 aom_highbd_dc_left_predictor_16x8_sse2
+
+void aom_highbd_dc_left_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_left_predictor_2x2 aom_highbd_dc_left_predictor_2x2_c
+
+void aom_highbd_dc_left_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_left_predictor_32x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_left_predictor_32x16 aom_highbd_dc_left_predictor_32x16_sse2
+
+void aom_highbd_dc_left_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_left_predictor_32x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_left_predictor_32x32 aom_highbd_dc_left_predictor_32x32_sse2
+
+void aom_highbd_dc_left_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_left_predictor_4x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_left_predictor_4x4 aom_highbd_dc_left_predictor_4x4_sse2
+
+void aom_highbd_dc_left_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_left_predictor_4x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_left_predictor_4x8 aom_highbd_dc_left_predictor_4x8_sse2
+
+void aom_highbd_dc_left_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_left_predictor_8x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_left_predictor_8x16 aom_highbd_dc_left_predictor_8x16_sse2
+
+void aom_highbd_dc_left_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_left_predictor_8x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_left_predictor_8x4 aom_highbd_dc_left_predictor_8x4_sse2
+
+void aom_highbd_dc_left_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_left_predictor_8x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_left_predictor_8x8 aom_highbd_dc_left_predictor_8x8_sse2
+
+void aom_highbd_dc_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_predictor_16x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_predictor_16x16 aom_highbd_dc_predictor_16x16_sse2
+
+void aom_highbd_dc_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_predictor_16x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_predictor_16x32 aom_highbd_dc_predictor_16x32_sse2
+
+void aom_highbd_dc_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_predictor_16x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_predictor_16x8 aom_highbd_dc_predictor_16x8_sse2
+
+void aom_highbd_dc_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_predictor_2x2 aom_highbd_dc_predictor_2x2_c
+
+void aom_highbd_dc_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_predictor_32x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_predictor_32x16 aom_highbd_dc_predictor_32x16_sse2
+
+void aom_highbd_dc_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_predictor_32x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_predictor_32x32 aom_highbd_dc_predictor_32x32_sse2
+
+void aom_highbd_dc_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_predictor_4x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_predictor_4x4 aom_highbd_dc_predictor_4x4_sse2
+
+void aom_highbd_dc_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_predictor_4x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_predictor_4x8 aom_highbd_dc_predictor_4x8_sse2
+
+void aom_highbd_dc_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_predictor_8x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_predictor_8x16 aom_highbd_dc_predictor_8x16_sse2
+
+void aom_highbd_dc_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_predictor_8x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_predictor_8x4 aom_highbd_dc_predictor_8x4_sse2
+
+void aom_highbd_dc_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_predictor_8x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_predictor_8x8 aom_highbd_dc_predictor_8x8_sse2
+
+void aom_highbd_dc_top_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_top_predictor_16x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_top_predictor_16x16 aom_highbd_dc_top_predictor_16x16_sse2
+
+void aom_highbd_dc_top_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_top_predictor_16x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_top_predictor_16x32 aom_highbd_dc_top_predictor_16x32_sse2
+
+void aom_highbd_dc_top_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_top_predictor_16x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_top_predictor_16x8 aom_highbd_dc_top_predictor_16x8_sse2
+
+void aom_highbd_dc_top_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_top_predictor_2x2 aom_highbd_dc_top_predictor_2x2_c
+
+void aom_highbd_dc_top_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_top_predictor_32x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_top_predictor_32x16 aom_highbd_dc_top_predictor_32x16_sse2
+
+void aom_highbd_dc_top_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_top_predictor_32x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_top_predictor_32x32 aom_highbd_dc_top_predictor_32x32_sse2
+
+void aom_highbd_dc_top_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_top_predictor_4x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_top_predictor_4x4 aom_highbd_dc_top_predictor_4x4_sse2
+
+void aom_highbd_dc_top_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_top_predictor_4x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_top_predictor_4x8 aom_highbd_dc_top_predictor_4x8_sse2
+
+void aom_highbd_dc_top_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_top_predictor_8x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_top_predictor_8x16 aom_highbd_dc_top_predictor_8x16_sse2
+
+void aom_highbd_dc_top_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_top_predictor_8x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_top_predictor_8x4 aom_highbd_dc_top_predictor_8x4_sse2
+
+void aom_highbd_dc_top_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_dc_top_predictor_8x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_dc_top_predictor_8x8 aom_highbd_dc_top_predictor_8x8_sse2
+
+void aom_highbd_fdct16x16_c(const int16_t *input, tran_low_t *output, int stride);
+void aom_highbd_fdct16x16_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define aom_highbd_fdct16x16 aom_highbd_fdct16x16_sse2
+
+void aom_highbd_fdct32x32_c(const int16_t *input, tran_low_t *output, int stride);
+void aom_highbd_fdct32x32_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define aom_highbd_fdct32x32 aom_highbd_fdct32x32_sse2
+
+void aom_highbd_fdct32x32_rd_c(const int16_t *input, tran_low_t *output, int stride);
+void aom_highbd_fdct32x32_rd_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define aom_highbd_fdct32x32_rd aom_highbd_fdct32x32_rd_sse2
+
+void aom_highbd_fdct4x4_c(const int16_t *input, tran_low_t *output, int stride);
+void aom_highbd_fdct4x4_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define aom_highbd_fdct4x4 aom_highbd_fdct4x4_sse2
+
+void aom_highbd_fdct8x8_c(const int16_t *input, tran_low_t *output, int stride);
+void aom_highbd_fdct8x8_sse2(const int16_t *input, tran_low_t *output, int stride);
+#define aom_highbd_fdct8x8 aom_highbd_fdct8x8_sse2
+
+void aom_highbd_h_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_h_predictor_16x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_h_predictor_16x16 aom_highbd_h_predictor_16x16_sse2
+
+void aom_highbd_h_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_h_predictor_16x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_h_predictor_16x32 aom_highbd_h_predictor_16x32_sse2
+
+void aom_highbd_h_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_h_predictor_16x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_h_predictor_16x8 aom_highbd_h_predictor_16x8_sse2
+
+void aom_highbd_h_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_h_predictor_2x2 aom_highbd_h_predictor_2x2_c
+
+void aom_highbd_h_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_h_predictor_32x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_h_predictor_32x16 aom_highbd_h_predictor_32x16_sse2
+
+void aom_highbd_h_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_h_predictor_32x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_h_predictor_32x32 aom_highbd_h_predictor_32x32_sse2
+
+void aom_highbd_h_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_h_predictor_4x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_h_predictor_4x4 aom_highbd_h_predictor_4x4_sse2
+
+void aom_highbd_h_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_h_predictor_4x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_h_predictor_4x8 aom_highbd_h_predictor_4x8_sse2
+
+void aom_highbd_h_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_h_predictor_8x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_h_predictor_8x16 aom_highbd_h_predictor_8x16_sse2
+
+void aom_highbd_h_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_h_predictor_8x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_h_predictor_8x4 aom_highbd_h_predictor_8x4_sse2
+
+void aom_highbd_h_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_h_predictor_8x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_h_predictor_8x8 aom_highbd_h_predictor_8x8_sse2
+
+void aom_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
+#define aom_highbd_iwht4x4_16_add aom_highbd_iwht4x4_16_add_c
+
+void aom_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd);
+#define aom_highbd_iwht4x4_1_add aom_highbd_iwht4x4_1_add_c
+
+void aom_highbd_lpf_horizontal_4_c(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+void aom_highbd_lpf_horizontal_4_sse2(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+#define aom_highbd_lpf_horizontal_4 aom_highbd_lpf_horizontal_4_sse2
+
+void aom_highbd_lpf_horizontal_4_dual_c(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+void aom_highbd_lpf_horizontal_4_dual_sse2(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+void aom_highbd_lpf_horizontal_4_dual_avx2(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+RTCD_EXTERN void (*aom_highbd_lpf_horizontal_4_dual)(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+
+void aom_highbd_lpf_horizontal_8_c(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+void aom_highbd_lpf_horizontal_8_sse2(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+#define aom_highbd_lpf_horizontal_8 aom_highbd_lpf_horizontal_8_sse2
+
+void aom_highbd_lpf_horizontal_8_dual_c(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+void aom_highbd_lpf_horizontal_8_dual_sse2(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+void aom_highbd_lpf_horizontal_8_dual_avx2(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+RTCD_EXTERN void (*aom_highbd_lpf_horizontal_8_dual)(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+
+void aom_highbd_lpf_horizontal_edge_16_c(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+void aom_highbd_lpf_horizontal_edge_16_sse2(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+void aom_highbd_lpf_horizontal_edge_16_avx2(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+RTCD_EXTERN void (*aom_highbd_lpf_horizontal_edge_16)(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+
+void aom_highbd_lpf_horizontal_edge_8_c(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+void aom_highbd_lpf_horizontal_edge_8_sse2(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+#define aom_highbd_lpf_horizontal_edge_8 aom_highbd_lpf_horizontal_edge_8_sse2
+
+void aom_highbd_lpf_vertical_16_c(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+void aom_highbd_lpf_vertical_16_sse2(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+#define aom_highbd_lpf_vertical_16 aom_highbd_lpf_vertical_16_sse2
+
+void aom_highbd_lpf_vertical_16_dual_c(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+void aom_highbd_lpf_vertical_16_dual_sse2(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+void aom_highbd_lpf_vertical_16_dual_avx2(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+RTCD_EXTERN void (*aom_highbd_lpf_vertical_16_dual)(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+
+void aom_highbd_lpf_vertical_4_c(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+void aom_highbd_lpf_vertical_4_sse2(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+#define aom_highbd_lpf_vertical_4 aom_highbd_lpf_vertical_4_sse2
+
+void aom_highbd_lpf_vertical_4_dual_c(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+void aom_highbd_lpf_vertical_4_dual_sse2(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+void aom_highbd_lpf_vertical_4_dual_avx2(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+RTCD_EXTERN void (*aom_highbd_lpf_vertical_4_dual)(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+
+void aom_highbd_lpf_vertical_8_c(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+void aom_highbd_lpf_vertical_8_sse2(uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd);
+#define aom_highbd_lpf_vertical_8 aom_highbd_lpf_vertical_8_sse2
+
+void aom_highbd_lpf_vertical_8_dual_c(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+void aom_highbd_lpf_vertical_8_dual_sse2(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+void aom_highbd_lpf_vertical_8_dual_avx2(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+RTCD_EXTERN void (*aom_highbd_lpf_vertical_8_dual)(uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd);
+
+unsigned int aom_highbd_masked_sad16x16_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad16x16_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad16x16)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad16x32_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad16x32_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad16x32)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad16x8_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad16x8_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad16x8)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad32x16_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad32x16_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad32x16)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad32x32_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad32x32_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad32x32)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad32x64_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad32x64_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad32x64)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad4x4_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad4x4_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad4x4)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad4x8_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad4x8_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad4x8)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad64x32_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad64x32_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad64x32)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad64x64_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad64x64_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad64x64)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad8x16_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad8x16_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad8x16)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad8x4_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad8x4_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad8x4)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_highbd_masked_sad8x8_c(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_highbd_masked_sad8x8_ssse3(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_highbd_masked_sad8x8)(const uint8_t *src8, int src_stride, const uint8_t *ref8, int ref_stride, const uint8_t *second_pred8, const uint8_t *msk, int msk_stride, int invert_mask);
+
+void aom_highbd_minmax_8x8_c(const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max);
+#define aom_highbd_minmax_8x8 aom_highbd_minmax_8x8_c
+
+unsigned int aom_highbd_obmc_sad16x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad16x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad16x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad16x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad16x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad16x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad16x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad16x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad16x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad32x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad32x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad32x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad32x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad32x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad32x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad32x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad32x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad32x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad4x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad4x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad4x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad4x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad4x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad4x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad64x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad64x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad64x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad64x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad64x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad64x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad8x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad8x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad8x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad8x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad8x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad8x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sad8x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_highbd_obmc_sad8x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_sad8x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_highbd_obmc_sub_pixel_variance16x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance16x16 aom_highbd_obmc_sub_pixel_variance16x16_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance16x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance16x32 aom_highbd_obmc_sub_pixel_variance16x32_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance16x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance16x8 aom_highbd_obmc_sub_pixel_variance16x8_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance32x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance32x16 aom_highbd_obmc_sub_pixel_variance32x16_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance32x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance32x32 aom_highbd_obmc_sub_pixel_variance32x32_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance32x64_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance32x64 aom_highbd_obmc_sub_pixel_variance32x64_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance4x4_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance4x4 aom_highbd_obmc_sub_pixel_variance4x4_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance4x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance4x8 aom_highbd_obmc_sub_pixel_variance4x8_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance64x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance64x32 aom_highbd_obmc_sub_pixel_variance64x32_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance64x64_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance64x64 aom_highbd_obmc_sub_pixel_variance64x64_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance8x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance8x16 aom_highbd_obmc_sub_pixel_variance8x16_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance8x4_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance8x4 aom_highbd_obmc_sub_pixel_variance8x4_c
+
+unsigned int aom_highbd_obmc_sub_pixel_variance8x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_highbd_obmc_sub_pixel_variance8x8 aom_highbd_obmc_sub_pixel_variance8x8_c
+
+unsigned int aom_highbd_obmc_variance16x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance16x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance16x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance16x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance16x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance16x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance16x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance16x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance16x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance32x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance32x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance32x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance32x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance32x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance32x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance32x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance32x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance32x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance4x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance4x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance4x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance4x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance4x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance4x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance64x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance64x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance64x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance64x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance64x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance64x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance8x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance8x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance8x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance8x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance8x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance8x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_highbd_obmc_variance8x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_highbd_obmc_variance8x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_highbd_obmc_variance8x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+void aom_highbd_paeth_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_paeth_predictor_16x16 aom_highbd_paeth_predictor_16x16_c
+
+void aom_highbd_paeth_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_paeth_predictor_16x32 aom_highbd_paeth_predictor_16x32_c
+
+void aom_highbd_paeth_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_paeth_predictor_16x8 aom_highbd_paeth_predictor_16x8_c
+
+void aom_highbd_paeth_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_paeth_predictor_2x2 aom_highbd_paeth_predictor_2x2_c
+
+void aom_highbd_paeth_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_paeth_predictor_32x16 aom_highbd_paeth_predictor_32x16_c
+
+void aom_highbd_paeth_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_paeth_predictor_32x32 aom_highbd_paeth_predictor_32x32_c
+
+void aom_highbd_paeth_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_paeth_predictor_4x4 aom_highbd_paeth_predictor_4x4_c
+
+void aom_highbd_paeth_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_paeth_predictor_4x8 aom_highbd_paeth_predictor_4x8_c
+
+void aom_highbd_paeth_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_paeth_predictor_8x16 aom_highbd_paeth_predictor_8x16_c
+
+void aom_highbd_paeth_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_paeth_predictor_8x4 aom_highbd_paeth_predictor_8x4_c
+
+void aom_highbd_paeth_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_paeth_predictor_8x8 aom_highbd_paeth_predictor_8x8_c
+
+void aom_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void aom_highbd_quantize_b_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void aom_highbd_quantize_b_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*aom_highbd_quantize_b)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void aom_highbd_quantize_b_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void aom_highbd_quantize_b_32x32_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+#define aom_highbd_quantize_b_32x32 aom_highbd_quantize_b_32x32_sse2
+
+void aom_highbd_quantize_b_64x64_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+#define aom_highbd_quantize_b_64x64 aom_highbd_quantize_b_64x64_c
+
+unsigned int aom_highbd_sad16x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad16x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad16x16_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_highbd_sad16x16)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_highbd_sad16x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad16x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad16x16_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_highbd_sad16x16_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_highbd_sad16x16x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad16x16x3 aom_highbd_sad16x16x3_c
+
+void aom_highbd_sad16x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad16x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad16x16x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_highbd_sad16x16x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+void aom_highbd_sad16x16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad16x16x8 aom_highbd_sad16x16x8_c
+
+unsigned int aom_highbd_sad16x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad16x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad16x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_highbd_sad16x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_highbd_sad16x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad16x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad16x32_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_highbd_sad16x32_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_highbd_sad16x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad16x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad16x32x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_highbd_sad16x32x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+unsigned int aom_highbd_sad16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad16x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad16x8_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_highbd_sad16x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_highbd_sad16x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad16x8_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad16x8_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_highbd_sad16x8_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_highbd_sad16x8x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad16x8x3 aom_highbd_sad16x8x3_c
+
+void aom_highbd_sad16x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad16x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad16x8x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_highbd_sad16x8x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+void aom_highbd_sad16x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad16x8x8 aom_highbd_sad16x8x8_c
+
+unsigned int aom_highbd_sad32x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad32x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad32x16_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_highbd_sad32x16)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_highbd_sad32x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad32x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad32x16_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_highbd_sad32x16_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_highbd_sad32x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad32x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad32x16x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_highbd_sad32x16x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+unsigned int aom_highbd_sad32x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad32x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad32x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_highbd_sad32x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_highbd_sad32x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad32x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad32x32_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_highbd_sad32x32_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_highbd_sad32x32x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad32x32x3 aom_highbd_sad32x32x3_c
+
+void aom_highbd_sad32x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad32x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad32x32x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_highbd_sad32x32x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+void aom_highbd_sad32x32x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad32x32x8 aom_highbd_sad32x32x8_c
+
+unsigned int aom_highbd_sad32x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad32x64_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad32x64_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_highbd_sad32x64)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_highbd_sad32x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad32x64_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad32x64_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_highbd_sad32x64_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_highbd_sad32x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad32x64x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad32x64x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_highbd_sad32x64x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+unsigned int aom_highbd_sad4x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_highbd_sad4x4 aom_highbd_sad4x4_c
+
+unsigned int aom_highbd_sad4x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_highbd_sad4x4_avg aom_highbd_sad4x4_avg_c
+
+void aom_highbd_sad4x4x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad4x4x3 aom_highbd_sad4x4x3_c
+
+void aom_highbd_sad4x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad4x4x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad4x4x4d aom_highbd_sad4x4x4d_sse2
+
+void aom_highbd_sad4x4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad4x4x8 aom_highbd_sad4x4x8_c
+
+unsigned int aom_highbd_sad4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_highbd_sad4x8 aom_highbd_sad4x8_c
+
+unsigned int aom_highbd_sad4x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_highbd_sad4x8_avg aom_highbd_sad4x8_avg_c
+
+void aom_highbd_sad4x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad4x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad4x8x4d aom_highbd_sad4x8x4d_sse2
+
+void aom_highbd_sad4x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad4x8x8 aom_highbd_sad4x8x8_c
+
+unsigned int aom_highbd_sad64x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad64x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad64x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_highbd_sad64x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_highbd_sad64x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad64x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad64x32_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_highbd_sad64x32_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_highbd_sad64x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad64x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad64x32x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_highbd_sad64x32x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+unsigned int aom_highbd_sad64x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad64x64_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad64x64_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_highbd_sad64x64)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_highbd_sad64x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad64x64_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad64x64_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_highbd_sad64x64_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_highbd_sad64x64x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad64x64x3 aom_highbd_sad64x64x3_c
+
+void aom_highbd_sad64x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad64x64x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad64x64x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_highbd_sad64x64x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+void aom_highbd_sad64x64x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad64x64x8 aom_highbd_sad64x64x8_c
+
+unsigned int aom_highbd_sad8x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad8x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_highbd_sad8x16 aom_highbd_sad8x16_sse2
+
+unsigned int aom_highbd_sad8x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad8x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_highbd_sad8x16_avg aom_highbd_sad8x16_avg_sse2
+
+void aom_highbd_sad8x16x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad8x16x3 aom_highbd_sad8x16x3_c
+
+void aom_highbd_sad8x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad8x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad8x16x4d aom_highbd_sad8x16x4d_sse2
+
+void aom_highbd_sad8x16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad8x16x8 aom_highbd_sad8x16x8_c
+
+unsigned int aom_highbd_sad8x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad8x4_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_highbd_sad8x4 aom_highbd_sad8x4_sse2
+
+unsigned int aom_highbd_sad8x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad8x4_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_highbd_sad8x4_avg aom_highbd_sad8x4_avg_sse2
+
+void aom_highbd_sad8x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad8x4x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad8x4x4d aom_highbd_sad8x4x4d_sse2
+
+void aom_highbd_sad8x4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad8x4x8 aom_highbd_sad8x4x8_c
+
+unsigned int aom_highbd_sad8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_highbd_sad8x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_highbd_sad8x8 aom_highbd_sad8x8_sse2
+
+unsigned int aom_highbd_sad8x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_highbd_sad8x8_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_highbd_sad8x8_avg aom_highbd_sad8x8_avg_sse2
+
+void aom_highbd_sad8x8x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad8x8x3 aom_highbd_sad8x8x3_c
+
+void aom_highbd_sad8x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_highbd_sad8x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad8x8x4d aom_highbd_sad8x8x4d_sse2
+
+void aom_highbd_sad8x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_highbd_sad8x8x8 aom_highbd_sad8x8x8_c
+
+void aom_highbd_smooth_h_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_h_predictor_16x16 aom_highbd_smooth_h_predictor_16x16_c
+
+void aom_highbd_smooth_h_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_h_predictor_16x32 aom_highbd_smooth_h_predictor_16x32_c
+
+void aom_highbd_smooth_h_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_h_predictor_16x8 aom_highbd_smooth_h_predictor_16x8_c
+
+void aom_highbd_smooth_h_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_h_predictor_2x2 aom_highbd_smooth_h_predictor_2x2_c
+
+void aom_highbd_smooth_h_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_h_predictor_32x16 aom_highbd_smooth_h_predictor_32x16_c
+
+void aom_highbd_smooth_h_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_h_predictor_32x32 aom_highbd_smooth_h_predictor_32x32_c
+
+void aom_highbd_smooth_h_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_h_predictor_4x4 aom_highbd_smooth_h_predictor_4x4_c
+
+void aom_highbd_smooth_h_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_h_predictor_4x8 aom_highbd_smooth_h_predictor_4x8_c
+
+void aom_highbd_smooth_h_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_h_predictor_8x16 aom_highbd_smooth_h_predictor_8x16_c
+
+void aom_highbd_smooth_h_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_h_predictor_8x4 aom_highbd_smooth_h_predictor_8x4_c
+
+void aom_highbd_smooth_h_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_h_predictor_8x8 aom_highbd_smooth_h_predictor_8x8_c
+
+void aom_highbd_smooth_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_predictor_16x16 aom_highbd_smooth_predictor_16x16_c
+
+void aom_highbd_smooth_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_predictor_16x32 aom_highbd_smooth_predictor_16x32_c
+
+void aom_highbd_smooth_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_predictor_16x8 aom_highbd_smooth_predictor_16x8_c
+
+void aom_highbd_smooth_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_predictor_2x2 aom_highbd_smooth_predictor_2x2_c
+
+void aom_highbd_smooth_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_predictor_32x16 aom_highbd_smooth_predictor_32x16_c
+
+void aom_highbd_smooth_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_predictor_32x32 aom_highbd_smooth_predictor_32x32_c
+
+void aom_highbd_smooth_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_predictor_4x4 aom_highbd_smooth_predictor_4x4_c
+
+void aom_highbd_smooth_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_predictor_4x8 aom_highbd_smooth_predictor_4x8_c
+
+void aom_highbd_smooth_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_predictor_8x16 aom_highbd_smooth_predictor_8x16_c
+
+void aom_highbd_smooth_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_predictor_8x4 aom_highbd_smooth_predictor_8x4_c
+
+void aom_highbd_smooth_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_predictor_8x8 aom_highbd_smooth_predictor_8x8_c
+
+void aom_highbd_smooth_v_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_v_predictor_16x16 aom_highbd_smooth_v_predictor_16x16_c
+
+void aom_highbd_smooth_v_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_v_predictor_16x32 aom_highbd_smooth_v_predictor_16x32_c
+
+void aom_highbd_smooth_v_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_v_predictor_16x8 aom_highbd_smooth_v_predictor_16x8_c
+
+void aom_highbd_smooth_v_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_v_predictor_2x2 aom_highbd_smooth_v_predictor_2x2_c
+
+void aom_highbd_smooth_v_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_v_predictor_32x16 aom_highbd_smooth_v_predictor_32x16_c
+
+void aom_highbd_smooth_v_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_v_predictor_32x32 aom_highbd_smooth_v_predictor_32x32_c
+
+void aom_highbd_smooth_v_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_v_predictor_4x4 aom_highbd_smooth_v_predictor_4x4_c
+
+void aom_highbd_smooth_v_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_v_predictor_4x8 aom_highbd_smooth_v_predictor_4x8_c
+
+void aom_highbd_smooth_v_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_v_predictor_8x16 aom_highbd_smooth_v_predictor_8x16_c
+
+void aom_highbd_smooth_v_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_v_predictor_8x4 aom_highbd_smooth_v_predictor_8x4_c
+
+void aom_highbd_smooth_v_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_smooth_v_predictor_8x8 aom_highbd_smooth_v_predictor_8x8_c
+
+void aom_highbd_subtract_block_c(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride, int bd);
+void aom_highbd_subtract_block_sse2(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride, int bd);
+#define aom_highbd_subtract_block aom_highbd_subtract_block_sse2
+
+void aom_highbd_upsampled_pred_c(uint16_t *comp_pred, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref8, int ref_stride, int bd);
+void aom_highbd_upsampled_pred_sse2(uint16_t *comp_pred, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref8, int ref_stride, int bd);
+#define aom_highbd_upsampled_pred aom_highbd_upsampled_pred_sse2
+
+void aom_highbd_v_predictor_16x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_v_predictor_16x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_v_predictor_16x16 aom_highbd_v_predictor_16x16_sse2
+
+void aom_highbd_v_predictor_16x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_v_predictor_16x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_v_predictor_16x32 aom_highbd_v_predictor_16x32_sse2
+
+void aom_highbd_v_predictor_16x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_v_predictor_16x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_v_predictor_16x8 aom_highbd_v_predictor_16x8_sse2
+
+void aom_highbd_v_predictor_2x2_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_v_predictor_2x2 aom_highbd_v_predictor_2x2_c
+
+void aom_highbd_v_predictor_32x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_v_predictor_32x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_v_predictor_32x16 aom_highbd_v_predictor_32x16_sse2
+
+void aom_highbd_v_predictor_32x32_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_v_predictor_32x32_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_v_predictor_32x32 aom_highbd_v_predictor_32x32_sse2
+
+void aom_highbd_v_predictor_4x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_v_predictor_4x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_v_predictor_4x4 aom_highbd_v_predictor_4x4_sse2
+
+void aom_highbd_v_predictor_4x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_v_predictor_4x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_v_predictor_4x8 aom_highbd_v_predictor_4x8_sse2
+
+void aom_highbd_v_predictor_8x16_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_v_predictor_8x16_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_v_predictor_8x16 aom_highbd_v_predictor_8x16_sse2
+
+void aom_highbd_v_predictor_8x4_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_v_predictor_8x4_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_v_predictor_8x4 aom_highbd_v_predictor_8x4_sse2
+
+void aom_highbd_v_predictor_8x8_c(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+void aom_highbd_v_predictor_8x8_sse2(uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd);
+#define aom_highbd_v_predictor_8x8 aom_highbd_v_predictor_8x8_sse2
+
+void aom_idct16x16_10_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct16x16_10_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct16x16_10_add_avx2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+RTCD_EXTERN void (*aom_idct16x16_10_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
+
+void aom_idct16x16_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct16x16_1_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct16x16_1_add_avx2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+RTCD_EXTERN void (*aom_idct16x16_1_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
+
+void aom_idct16x16_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct16x16_256_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct16x16_256_add_avx2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+RTCD_EXTERN void (*aom_idct16x16_256_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
+
+void aom_idct16x16_38_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct16x16_38_add_avx2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+RTCD_EXTERN void (*aom_idct16x16_38_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
+
+void aom_idct32x32_1024_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct32x32_1024_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct32x32_1024_add_ssse3(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct32x32_1024_add_avx2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+RTCD_EXTERN void (*aom_idct32x32_1024_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
+
+void aom_idct32x32_135_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct32x32_1024_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct32x32_135_add_ssse3(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct32x32_135_add_avx2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+RTCD_EXTERN void (*aom_idct32x32_135_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
+
+void aom_idct32x32_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct32x32_1_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct32x32_1_add_avx2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+RTCD_EXTERN void (*aom_idct32x32_1_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
+
+void aom_idct32x32_34_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct32x32_34_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct32x32_34_add_ssse3(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct32x32_34_add_avx2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+RTCD_EXTERN void (*aom_idct32x32_34_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
+
+void aom_idct4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+#define aom_idct4x4_16_add aom_idct4x4_16_add_sse2
+
+void aom_idct4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct4x4_1_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+#define aom_idct4x4_1_add aom_idct4x4_1_add_sse2
+
+void aom_idct8x8_12_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct8x8_12_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct8x8_12_add_ssse3(const tran_low_t *input, uint8_t *dest, int dest_stride);
+RTCD_EXTERN void (*aom_idct8x8_12_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
+
+void aom_idct8x8_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct8x8_1_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+#define aom_idct8x8_1_add aom_idct8x8_1_add_sse2
+
+void aom_idct8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_idct8x8_64_add_ssse3(const tran_low_t *input, uint8_t *dest, int dest_stride);
+RTCD_EXTERN void (*aom_idct8x8_64_add)(const tran_low_t *input, uint8_t *dest, int dest_stride);
+
+int16_t aom_int_pro_col_c(const uint8_t *ref, int width);
+int16_t aom_int_pro_col_sse2(const uint8_t *ref, int width);
+#define aom_int_pro_col aom_int_pro_col_sse2
+
+void aom_int_pro_row_c(int16_t *hbuf, const uint8_t *ref, int ref_stride, int height);
+void aom_int_pro_row_sse2(int16_t *hbuf, const uint8_t *ref, int ref_stride, int height);
+#define aom_int_pro_row aom_int_pro_row_sse2
+
+void aom_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+void aom_iwht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride);
+#define aom_iwht4x4_16_add aom_iwht4x4_16_add_sse2
+
+void aom_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride);
+#define aom_iwht4x4_1_add aom_iwht4x4_1_add_c
+
+void aom_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void aom_lpf_horizontal_4_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define aom_lpf_horizontal_4 aom_lpf_horizontal_4_sse2
+
+void aom_lpf_horizontal_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define aom_lpf_horizontal_4_dual aom_lpf_horizontal_4_dual_c
+
+void aom_lpf_horizontal_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void aom_lpf_horizontal_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define aom_lpf_horizontal_8 aom_lpf_horizontal_8_sse2
+
+void aom_lpf_horizontal_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define aom_lpf_horizontal_8_dual aom_lpf_horizontal_8_dual_c
+
+void aom_lpf_horizontal_edge_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void aom_lpf_horizontal_edge_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define aom_lpf_horizontal_edge_16 aom_lpf_horizontal_edge_16_sse2
+
+void aom_lpf_horizontal_edge_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void aom_lpf_horizontal_edge_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define aom_lpf_horizontal_edge_8 aom_lpf_horizontal_edge_8_sse2
+
+void aom_lpf_vertical_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void aom_lpf_vertical_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define aom_lpf_vertical_16 aom_lpf_vertical_16_sse2
+
+void aom_lpf_vertical_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define aom_lpf_vertical_16_dual aom_lpf_vertical_16_dual_c
+
+void aom_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void aom_lpf_vertical_4_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define aom_lpf_vertical_4 aom_lpf_vertical_4_sse2
+
+void aom_lpf_vertical_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define aom_lpf_vertical_4_dual aom_lpf_vertical_4_dual_c
+
+void aom_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+void aom_lpf_vertical_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
+#define aom_lpf_vertical_8 aom_lpf_vertical_8_sse2
+
+void aom_lpf_vertical_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
+#define aom_lpf_vertical_8_dual aom_lpf_vertical_8_dual_c
+
+unsigned int aom_masked_sad16x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad16x16_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad16x16)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad16x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad16x32_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad16x32)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad16x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad16x8_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad16x8)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad32x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad32x16_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad32x16)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad32x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad32x32_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad32x32)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad32x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad32x64_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad32x64)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad4x4_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad4x4_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad4x4)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad4x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad4x8_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad4x8)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad64x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad64x32_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad64x32)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad64x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad64x64_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad64x64)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad8x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad8x16_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad8x16)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad8x4_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad8x4_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad8x4)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sad8x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+unsigned int aom_masked_sad8x8_ssse3(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+RTCD_EXTERN unsigned int (*aom_masked_sad8x8)(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask);
+
+unsigned int aom_masked_sub_pixel_variance16x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance16x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance16x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance16x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance16x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance16x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance16x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance16x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance16x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance32x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance32x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance32x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance32x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance32x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance32x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance32x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance32x64_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance32x64)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance4x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance4x4_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance4x4)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance4x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance4x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance4x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance64x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance64x32_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance64x32)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance64x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance64x64_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance64x64)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance8x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance8x16_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance8x16)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance8x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance8x4_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance8x4)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+unsigned int aom_masked_sub_pixel_variance8x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+unsigned int aom_masked_sub_pixel_variance8x8_ssse3(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_masked_sub_pixel_variance8x8)(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse);
+
+void aom_minmax_8x8_c(const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max);
+void aom_minmax_8x8_sse2(const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max);
+#define aom_minmax_8x8 aom_minmax_8x8_sse2
+
+unsigned int aom_mse16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int aom_mse16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int aom_mse16x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_mse16x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+
+unsigned int aom_mse16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int aom_mse16x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_mse16x8 aom_mse16x8_sse2
+
+unsigned int aom_mse8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int aom_mse8x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_mse8x16 aom_mse8x16_sse2
+
+unsigned int aom_mse8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+unsigned int aom_mse8x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
+#define aom_mse8x8 aom_mse8x8_sse2
+
+unsigned int aom_obmc_sad16x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad16x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad16x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad16x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad16x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad16x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad16x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad16x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad16x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad32x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad32x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad32x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad32x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad32x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad32x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad32x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad32x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad32x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad4x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad4x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad4x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad4x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad4x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad4x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad64x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad64x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad64x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad64x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad64x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad64x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad8x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad8x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad8x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad8x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad8x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad8x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sad8x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+unsigned int aom_obmc_sad8x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+RTCD_EXTERN unsigned int (*aom_obmc_sad8x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask);
+
+unsigned int aom_obmc_sub_pixel_variance16x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance16x16 aom_obmc_sub_pixel_variance16x16_c
+
+unsigned int aom_obmc_sub_pixel_variance16x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance16x32 aom_obmc_sub_pixel_variance16x32_c
+
+unsigned int aom_obmc_sub_pixel_variance16x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance16x8 aom_obmc_sub_pixel_variance16x8_c
+
+unsigned int aom_obmc_sub_pixel_variance32x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance32x16 aom_obmc_sub_pixel_variance32x16_c
+
+unsigned int aom_obmc_sub_pixel_variance32x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance32x32 aom_obmc_sub_pixel_variance32x32_c
+
+unsigned int aom_obmc_sub_pixel_variance32x64_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance32x64 aom_obmc_sub_pixel_variance32x64_c
+
+unsigned int aom_obmc_sub_pixel_variance4x4_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance4x4 aom_obmc_sub_pixel_variance4x4_c
+
+unsigned int aom_obmc_sub_pixel_variance4x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance4x8 aom_obmc_sub_pixel_variance4x8_c
+
+unsigned int aom_obmc_sub_pixel_variance64x32_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance64x32 aom_obmc_sub_pixel_variance64x32_c
+
+unsigned int aom_obmc_sub_pixel_variance64x64_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance64x64 aom_obmc_sub_pixel_variance64x64_c
+
+unsigned int aom_obmc_sub_pixel_variance8x16_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance8x16 aom_obmc_sub_pixel_variance8x16_c
+
+unsigned int aom_obmc_sub_pixel_variance8x4_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance8x4 aom_obmc_sub_pixel_variance8x4_c
+
+unsigned int aom_obmc_sub_pixel_variance8x8_c(const uint8_t *pre, int pre_stride, int xoffset, int yoffset, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+#define aom_obmc_sub_pixel_variance8x8 aom_obmc_sub_pixel_variance8x8_c
+
+unsigned int aom_obmc_variance16x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance16x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance16x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance16x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance16x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance16x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance16x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance16x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance16x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance32x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance32x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance32x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance32x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance32x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance32x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance32x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance32x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance32x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance4x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance4x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance4x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance4x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance4x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance4x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance64x32_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance64x32_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance64x32)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance64x64_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance64x64_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance64x64)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance8x16_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance8x16_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance8x16)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance8x4_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance8x4_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance8x4)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+unsigned int aom_obmc_variance8x8_c(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+unsigned int aom_obmc_variance8x8_sse4_1(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_obmc_variance8x8)(const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask, unsigned int *sse);
+
+void aom_paeth_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_16x16_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_paeth_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_paeth_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_16x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_16x32_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_paeth_predictor_16x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_paeth_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_16x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_16x8_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_paeth_predictor_16x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_paeth_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_paeth_predictor_2x2 aom_paeth_predictor_2x2_c
+
+void aom_paeth_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_32x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_paeth_predictor_32x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_paeth_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_32x32_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_paeth_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_paeth_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_paeth_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_paeth_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_4x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_paeth_predictor_4x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_paeth_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_8x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_paeth_predictor_8x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_paeth_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_8x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_paeth_predictor_8x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_paeth_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_paeth_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_paeth_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void aom_quantize_b_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void aom_quantize_b_ssse3(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void aom_quantize_b_avx(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*aom_quantize_b)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void aom_quantize_b_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void aom_quantize_b_32x32_ssse3(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void aom_quantize_b_32x32_avx(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*aom_quantize_b_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void aom_quantize_b_64x64_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+#define aom_quantize_b_64x64 aom_quantize_b_64x64_c
+
+unsigned int aom_sad16x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad16x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_sad16x16 aom_sad16x16_sse2
+
+unsigned int aom_sad16x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad16x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_sad16x16_avg aom_sad16x16_avg_sse2
+
+void aom_sad16x16x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad16x16x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad16x16x3_ssse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad16x16x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void aom_sad16x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad16x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_sad16x16x4d aom_sad16x16x4d_sse2
+
+void aom_sad16x16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad16x16x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad16x16x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int aom_sad16x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad16x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_sad16x32 aom_sad16x32_sse2
+
+unsigned int aom_sad16x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad16x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_sad16x32_avg aom_sad16x32_avg_sse2
+
+void aom_sad16x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad16x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_sad16x32x4d aom_sad16x32x4d_sse2
+
+unsigned int aom_sad16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad16x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_sad16x8 aom_sad16x8_sse2
+
+unsigned int aom_sad16x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad16x8_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_sad16x8_avg aom_sad16x8_avg_sse2
+
+void aom_sad16x8x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad16x8x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad16x8x3_ssse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad16x8x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void aom_sad16x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad16x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_sad16x8x4d aom_sad16x8x4d_sse2
+
+void aom_sad16x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad16x8x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad16x8x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int aom_sad32x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad32x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad32x16_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_sad32x16)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_sad32x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad32x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad32x16_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_sad32x16_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_sad32x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad32x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_sad32x16x4d aom_sad32x16x4d_sse2
+
+unsigned int aom_sad32x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad32x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad32x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_sad32x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_sad32x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad32x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad32x32_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_sad32x32_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_sad32x32x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_sad32x32x3 aom_sad32x32x3_c
+
+void aom_sad32x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad32x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad32x32x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad32x32x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+void aom_sad32x32x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_sad32x32x8 aom_sad32x32x8_c
+
+unsigned int aom_sad32x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad32x64_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad32x64_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_sad32x64)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_sad32x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad32x64_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad32x64_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_sad32x64_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_sad32x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad32x64x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad32x64x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad32x64x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+unsigned int aom_sad4x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad4x4_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_sad4x4 aom_sad4x4_sse2
+
+unsigned int aom_sad4x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad4x4_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_sad4x4_avg aom_sad4x4_avg_sse2
+
+void aom_sad4x4x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad4x4x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad4x4x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void aom_sad4x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad4x4x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_sad4x4x4d aom_sad4x4x4d_sse2
+
+void aom_sad4x4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad4x4x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad4x4x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int aom_sad4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad4x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_sad4x8 aom_sad4x8_sse2
+
+unsigned int aom_sad4x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad4x8_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_sad4x8_avg aom_sad4x8_avg_sse2
+
+void aom_sad4x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad4x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_sad4x8x4d aom_sad4x8x4d_sse2
+
+void aom_sad4x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_sad4x8x8 aom_sad4x8x8_c
+
+unsigned int aom_sad64x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad64x32_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad64x32_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_sad64x32)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_sad64x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad64x32_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad64x32_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_sad64x32_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_sad64x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad64x32x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad64x32x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad64x32x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+unsigned int aom_sad64x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad64x64_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad64x64_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+RTCD_EXTERN unsigned int (*aom_sad64x64)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+
+unsigned int aom_sad64x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad64x64_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad64x64_avg_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+RTCD_EXTERN unsigned int (*aom_sad64x64_avg)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+
+void aom_sad64x64x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_sad64x64x3 aom_sad64x64x3_c
+
+void aom_sad64x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad64x64x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad64x64x4d_avx2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad64x64x4d)(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+
+void aom_sad64x64x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_sad64x64x8 aom_sad64x64x8_c
+
+unsigned int aom_sad8x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad8x16_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_sad8x16 aom_sad8x16_sse2
+
+unsigned int aom_sad8x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad8x16_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_sad8x16_avg aom_sad8x16_avg_sse2
+
+void aom_sad8x16x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad8x16x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad8x16x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void aom_sad8x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad8x16x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_sad8x16x4d aom_sad8x16x4d_sse2
+
+void aom_sad8x16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad8x16x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad8x16x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+unsigned int aom_sad8x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad8x4_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_sad8x4 aom_sad8x4_sse2
+
+unsigned int aom_sad8x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad8x4_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_sad8x4_avg aom_sad8x4_avg_sse2
+
+void aom_sad8x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad8x4x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_sad8x4x4d aom_sad8x4x4d_sse2
+
+void aom_sad8x4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+#define aom_sad8x4x8 aom_sad8x4x8_c
+
+unsigned int aom_sad8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+unsigned int aom_sad8x8_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
+#define aom_sad8x8 aom_sad8x8_sse2
+
+unsigned int aom_sad8x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+unsigned int aom_sad8x8_avg_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
+#define aom_sad8x8_avg aom_sad8x8_avg_sse2
+
+void aom_sad8x8x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad8x8x3_sse3(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad8x8x3)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+void aom_sad8x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+void aom_sad8x8x4d_sse2(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
+#define aom_sad8x8x4d aom_sad8x8x4d_sse2
+
+void aom_sad8x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+void aom_sad8x8x8_sse4_1(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+RTCD_EXTERN void (*aom_sad8x8x8)(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
+
+int aom_satd_c(const int16_t *coeff, int length);
+int aom_satd_sse2(const int16_t *coeff, int length);
+#define aom_satd aom_satd_sse2
+
+void aom_scaled_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+void aom_scaled_2d_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+RTCD_EXTERN void (*aom_scaled_2d)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+
+void aom_scaled_avg_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define aom_scaled_avg_2d aom_scaled_avg_2d_c
+
+void aom_scaled_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define aom_scaled_avg_horiz aom_scaled_avg_horiz_c
+
+void aom_scaled_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define aom_scaled_avg_vert aom_scaled_avg_vert_c
+
+void aom_scaled_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define aom_scaled_horiz aom_scaled_horiz_c
+
+void aom_scaled_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
+#define aom_scaled_vert aom_scaled_vert_c
+
+void aom_smooth_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_h_predictor_16x16 aom_smooth_h_predictor_16x16_c
+
+void aom_smooth_h_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_h_predictor_16x32 aom_smooth_h_predictor_16x32_c
+
+void aom_smooth_h_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_h_predictor_16x8 aom_smooth_h_predictor_16x8_c
+
+void aom_smooth_h_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_h_predictor_2x2 aom_smooth_h_predictor_2x2_c
+
+void aom_smooth_h_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_h_predictor_32x16 aom_smooth_h_predictor_32x16_c
+
+void aom_smooth_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_h_predictor_32x32 aom_smooth_h_predictor_32x32_c
+
+void aom_smooth_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_h_predictor_4x4 aom_smooth_h_predictor_4x4_c
+
+void aom_smooth_h_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_h_predictor_4x8 aom_smooth_h_predictor_4x8_c
+
+void aom_smooth_h_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_h_predictor_8x16 aom_smooth_h_predictor_8x16_c
+
+void aom_smooth_h_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_h_predictor_8x4 aom_smooth_h_predictor_8x4_c
+
+void aom_smooth_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_h_predictor_8x8 aom_smooth_h_predictor_8x8_c
+
+void aom_smooth_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_smooth_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_smooth_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_smooth_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_smooth_predictor_16x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_smooth_predictor_16x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_smooth_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_smooth_predictor_16x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_smooth_predictor_16x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_smooth_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_predictor_2x2 aom_smooth_predictor_2x2_c
+
+void aom_smooth_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_smooth_predictor_32x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_smooth_predictor_32x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_smooth_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_smooth_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_smooth_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_smooth_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_smooth_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_smooth_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_smooth_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_smooth_predictor_4x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_smooth_predictor_4x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_smooth_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_smooth_predictor_8x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_smooth_predictor_8x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_smooth_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_smooth_predictor_8x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_smooth_predictor_8x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_smooth_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_smooth_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_smooth_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_smooth_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_v_predictor_16x16 aom_smooth_v_predictor_16x16_c
+
+void aom_smooth_v_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_v_predictor_16x32 aom_smooth_v_predictor_16x32_c
+
+void aom_smooth_v_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_v_predictor_16x8 aom_smooth_v_predictor_16x8_c
+
+void aom_smooth_v_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_v_predictor_2x2 aom_smooth_v_predictor_2x2_c
+
+void aom_smooth_v_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_v_predictor_32x16 aom_smooth_v_predictor_32x16_c
+
+void aom_smooth_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_v_predictor_32x32 aom_smooth_v_predictor_32x32_c
+
+void aom_smooth_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_v_predictor_4x4 aom_smooth_v_predictor_4x4_c
+
+void aom_smooth_v_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_v_predictor_4x8 aom_smooth_v_predictor_4x8_c
+
+void aom_smooth_v_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_v_predictor_8x16 aom_smooth_v_predictor_8x16_c
+
+void aom_smooth_v_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_v_predictor_8x4 aom_smooth_v_predictor_8x4_c
+
+void aom_smooth_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_smooth_v_predictor_8x8 aom_smooth_v_predictor_8x8_c
+
+uint32_t aom_sub_pixel_avg_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance16x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance16x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance16x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance16x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance16x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance16x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance32x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance32x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance32x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance32x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance32x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance32x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance4x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance4x4_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance4x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance4x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance4x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance4x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance64x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance64x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance64x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance64x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance8x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance8x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance8x4_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance8x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_avg_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+uint32_t aom_sub_pixel_avg_variance8x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_avg_variance8x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
+
+uint32_t aom_sub_pixel_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance16x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance16x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance16x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance16x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance16x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance16x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance32x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance32x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance32x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance32x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance32x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance32x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance4x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance4x4_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance4x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance4x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance4x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance4x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance64x32_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance64x32)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance64x64_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance64x64)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance8x16_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance8x16)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance8x4_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance8x4)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+uint32_t aom_sub_pixel_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_sub_pixel_variance8x8_ssse3(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+RTCD_EXTERN uint32_t (*aom_sub_pixel_variance8x8)(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
+
+void aom_subtract_block_c(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride);
+void aom_subtract_block_sse2(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride);
+#define aom_subtract_block aom_subtract_block_sse2
+
+uint64_t aom_sum_squares_2d_i16_c(const int16_t *src, int stride, int width, int height);
+uint64_t aom_sum_squares_2d_i16_sse2(const int16_t *src, int stride, int width, int height);
+#define aom_sum_squares_2d_i16 aom_sum_squares_2d_i16_sse2
+
+uint64_t aom_sum_squares_i16_c(const int16_t *src, uint32_t N);
+uint64_t aom_sum_squares_i16_sse2(const int16_t *src, uint32_t N);
+#define aom_sum_squares_i16 aom_sum_squares_i16_sse2
+
+void aom_upsampled_pred_c(uint8_t *comp_pred, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref, int ref_stride);
+void aom_upsampled_pred_sse2(uint8_t *comp_pred, int width, int height, int subsample_x_q3, int subsample_y_q3, const uint8_t *ref, int ref_stride);
+#define aom_upsampled_pred aom_upsampled_pred_sse2
+
+void aom_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_v_predictor_16x16 aom_v_predictor_16x16_sse2
+
+void aom_v_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_16x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_v_predictor_16x32 aom_v_predictor_16x32_sse2
+
+void aom_v_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_v_predictor_16x8 aom_v_predictor_16x8_sse2
+
+void aom_v_predictor_2x2_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_v_predictor_2x2 aom_v_predictor_2x2_c
+
+void aom_v_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_v_predictor_32x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_32x32_avx2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+RTCD_EXTERN void (*aom_v_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+
+void aom_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_4x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_v_predictor_4x4 aom_v_predictor_4x4_sse2
+
+void aom_v_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_4x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_v_predictor_4x8 aom_v_predictor_4x8_sse2
+
+void aom_v_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_8x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_v_predictor_8x16 aom_v_predictor_8x16_sse2
+
+void aom_v_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_v_predictor_8x4 aom_v_predictor_8x4_sse2
+
+void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+void aom_v_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
+#define aom_v_predictor_8x8 aom_v_predictor_8x8_sse2
+
+unsigned int aom_variance16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance16x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance16x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_variance16x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int aom_variance16x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance16x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_variance16x32 aom_variance16x32_sse2
+
+unsigned int aom_variance16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance16x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_variance16x8 aom_variance16x8_sse2
+
+unsigned int aom_variance2x2_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_variance2x2 aom_variance2x2_c
+
+unsigned int aom_variance2x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_variance2x4 aom_variance2x4_c
+
+unsigned int aom_variance32x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance32x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance32x16_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_variance32x16)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int aom_variance32x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance32x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance32x32_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_variance32x32)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int aom_variance32x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance32x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_variance32x64 aom_variance32x64_sse2
+
+unsigned int aom_variance4x2_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_variance4x2 aom_variance4x2_c
+
+unsigned int aom_variance4x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance4x4_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_variance4x4 aom_variance4x4_sse2
+
+unsigned int aom_variance4x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance4x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_variance4x8 aom_variance4x8_sse2
+
+unsigned int aom_variance64x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance64x32_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance64x32_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_variance64x32)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int aom_variance64x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance64x64_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance64x64_avx2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+RTCD_EXTERN unsigned int (*aom_variance64x64)(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+
+unsigned int aom_variance8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance8x16_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_variance8x16 aom_variance8x16_sse2
+
+unsigned int aom_variance8x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance8x4_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_variance8x4 aom_variance8x4_sse2
+
+unsigned int aom_variance8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+unsigned int aom_variance8x8_sse2(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
+#define aom_variance8x8 aom_variance8x8_sse2
+
+uint32_t aom_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_variance_halfpixvar16x16_h_sse2(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_variance_halfpixvar16x16_h aom_variance_halfpixvar16x16_h_sse2
+
+uint32_t aom_variance_halfpixvar16x16_hv_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_variance_halfpixvar16x16_hv_sse2(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_variance_halfpixvar16x16_hv aom_variance_halfpixvar16x16_hv_sse2
+
+uint32_t aom_variance_halfpixvar16x16_v_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, uint32_t *sse);
+uint32_t aom_variance_halfpixvar16x16_v_sse2(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, uint32_t *sse);
+#define aom_variance_halfpixvar16x16_v aom_variance_halfpixvar16x16_v_sse2
+
+int aom_vector_var_c(const int16_t *ref, const int16_t *src, int bwl);
+int aom_vector_var_sse2(const int16_t *ref, const int16_t *src, int bwl);
+#define aom_vector_var aom_vector_var_sse2
+
+void aom_dsp_rtcd(void);
+
+#ifdef RTCD_C
+#include "aom_ports/x86.h"
+static void setup_rtcd_internal(void)
+{
+ int flags = x86_simd_caps();
+
+ (void)flags;
+
+ aom_blend_a64_hmask = aom_blend_a64_hmask_c;
+ if (flags & HAS_SSE4_1) aom_blend_a64_hmask = aom_blend_a64_hmask_sse4_1;
+ aom_blend_a64_mask = aom_blend_a64_mask_c;
+ if (flags & HAS_SSE4_1) aom_blend_a64_mask = aom_blend_a64_mask_sse4_1;
+ aom_blend_a64_vmask = aom_blend_a64_vmask_c;
+ if (flags & HAS_SSE4_1) aom_blend_a64_vmask = aom_blend_a64_vmask_sse4_1;
+ aom_convolve8 = aom_convolve8_sse2;
+ if (flags & HAS_SSSE3) aom_convolve8 = aom_convolve8_ssse3;
+ if (flags & HAS_AVX2) aom_convolve8 = aom_convolve8_avx2;
+ aom_convolve8_add_src = aom_convolve8_add_src_c;
+ if (flags & HAS_SSSE3) aom_convolve8_add_src = aom_convolve8_add_src_ssse3;
+ aom_convolve8_add_src_horiz = aom_convolve8_add_src_horiz_c;
+ if (flags & HAS_SSSE3) aom_convolve8_add_src_horiz = aom_convolve8_add_src_horiz_ssse3;
+ aom_convolve8_add_src_vert = aom_convolve8_add_src_vert_c;
+ if (flags & HAS_SSSE3) aom_convolve8_add_src_vert = aom_convolve8_add_src_vert_ssse3;
+ aom_convolve8_avg = aom_convolve8_avg_sse2;
+ if (flags & HAS_SSSE3) aom_convolve8_avg = aom_convolve8_avg_ssse3;
+ aom_convolve8_avg_horiz = aom_convolve8_avg_horiz_sse2;
+ if (flags & HAS_SSSE3) aom_convolve8_avg_horiz = aom_convolve8_avg_horiz_ssse3;
+ aom_convolve8_avg_vert = aom_convolve8_avg_vert_sse2;
+ if (flags & HAS_SSSE3) aom_convolve8_avg_vert = aom_convolve8_avg_vert_ssse3;
+ aom_convolve8_horiz = aom_convolve8_horiz_sse2;
+ if (flags & HAS_SSSE3) aom_convolve8_horiz = aom_convolve8_horiz_ssse3;
+ if (flags & HAS_AVX2) aom_convolve8_horiz = aom_convolve8_horiz_avx2;
+ aom_convolve8_vert = aom_convolve8_vert_sse2;
+ if (flags & HAS_SSSE3) aom_convolve8_vert = aom_convolve8_vert_ssse3;
+ if (flags & HAS_AVX2) aom_convolve8_vert = aom_convolve8_vert_avx2;
+ aom_d153_predictor_16x16 = aom_d153_predictor_16x16_c;
+ if (flags & HAS_SSSE3) aom_d153_predictor_16x16 = aom_d153_predictor_16x16_ssse3;
+ aom_d153_predictor_32x32 = aom_d153_predictor_32x32_c;
+ if (flags & HAS_SSSE3) aom_d153_predictor_32x32 = aom_d153_predictor_32x32_ssse3;
+ aom_d153_predictor_4x4 = aom_d153_predictor_4x4_c;
+ if (flags & HAS_SSSE3) aom_d153_predictor_4x4 = aom_d153_predictor_4x4_ssse3;
+ aom_d153_predictor_8x8 = aom_d153_predictor_8x8_c;
+ if (flags & HAS_SSSE3) aom_d153_predictor_8x8 = aom_d153_predictor_8x8_ssse3;
+ aom_d63e_predictor_4x4 = aom_d63e_predictor_4x4_c;
+ if (flags & HAS_SSSE3) aom_d63e_predictor_4x4 = aom_d63e_predictor_4x4_ssse3;
+ aom_dc_128_predictor_32x16 = aom_dc_128_predictor_32x16_sse2;
+ if (flags & HAS_AVX2) aom_dc_128_predictor_32x16 = aom_dc_128_predictor_32x16_avx2;
+ aom_dc_128_predictor_32x32 = aom_dc_128_predictor_32x32_sse2;
+ if (flags & HAS_AVX2) aom_dc_128_predictor_32x32 = aom_dc_128_predictor_32x32_avx2;
+ aom_dc_left_predictor_32x16 = aom_dc_left_predictor_32x16_sse2;
+ if (flags & HAS_AVX2) aom_dc_left_predictor_32x16 = aom_dc_left_predictor_32x16_avx2;
+ aom_dc_left_predictor_32x32 = aom_dc_left_predictor_32x32_sse2;
+ if (flags & HAS_AVX2) aom_dc_left_predictor_32x32 = aom_dc_left_predictor_32x32_avx2;
+ aom_dc_predictor_32x16 = aom_dc_predictor_32x16_sse2;
+ if (flags & HAS_AVX2) aom_dc_predictor_32x16 = aom_dc_predictor_32x16_avx2;
+ aom_dc_predictor_32x32 = aom_dc_predictor_32x32_sse2;
+ if (flags & HAS_AVX2) aom_dc_predictor_32x32 = aom_dc_predictor_32x32_avx2;
+ aom_dc_top_predictor_32x16 = aom_dc_top_predictor_32x16_sse2;
+ if (flags & HAS_AVX2) aom_dc_top_predictor_32x16 = aom_dc_top_predictor_32x16_avx2;
+ aom_dc_top_predictor_32x32 = aom_dc_top_predictor_32x32_sse2;
+ if (flags & HAS_AVX2) aom_dc_top_predictor_32x32 = aom_dc_top_predictor_32x32_avx2;
+ aom_fdct32x32 = aom_fdct32x32_sse2;
+ if (flags & HAS_AVX2) aom_fdct32x32 = aom_fdct32x32_avx2;
+ aom_fdct32x32_rd = aom_fdct32x32_rd_sse2;
+ if (flags & HAS_AVX2) aom_fdct32x32_rd = aom_fdct32x32_rd_avx2;
+ aom_fdct8x8 = aom_fdct8x8_sse2;
+ if (flags & HAS_SSSE3) aom_fdct8x8 = aom_fdct8x8_ssse3;
+ aom_get16x16var = aom_get16x16var_sse2;
+ if (flags & HAS_AVX2) aom_get16x16var = aom_get16x16var_avx2;
+ aom_h_predictor_32x32 = aom_h_predictor_32x32_sse2;
+ if (flags & HAS_AVX2) aom_h_predictor_32x32 = aom_h_predictor_32x32_avx2;
+ aom_hadamard_8x8 = aom_hadamard_8x8_sse2;
+ if (flags & HAS_SSSE3) aom_hadamard_8x8 = aom_hadamard_8x8_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance16x16 = aom_highbd_10_masked_sub_pixel_variance16x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance16x16 = aom_highbd_10_masked_sub_pixel_variance16x16_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance16x32 = aom_highbd_10_masked_sub_pixel_variance16x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance16x32 = aom_highbd_10_masked_sub_pixel_variance16x32_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance16x8 = aom_highbd_10_masked_sub_pixel_variance16x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance16x8 = aom_highbd_10_masked_sub_pixel_variance16x8_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance32x16 = aom_highbd_10_masked_sub_pixel_variance32x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance32x16 = aom_highbd_10_masked_sub_pixel_variance32x16_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance32x32 = aom_highbd_10_masked_sub_pixel_variance32x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance32x32 = aom_highbd_10_masked_sub_pixel_variance32x32_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance32x64 = aom_highbd_10_masked_sub_pixel_variance32x64_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance32x64 = aom_highbd_10_masked_sub_pixel_variance32x64_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance4x4 = aom_highbd_10_masked_sub_pixel_variance4x4_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance4x4 = aom_highbd_10_masked_sub_pixel_variance4x4_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance4x8 = aom_highbd_10_masked_sub_pixel_variance4x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance4x8 = aom_highbd_10_masked_sub_pixel_variance4x8_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance64x32 = aom_highbd_10_masked_sub_pixel_variance64x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance64x32 = aom_highbd_10_masked_sub_pixel_variance64x32_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance64x64 = aom_highbd_10_masked_sub_pixel_variance64x64_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance64x64 = aom_highbd_10_masked_sub_pixel_variance64x64_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance8x16 = aom_highbd_10_masked_sub_pixel_variance8x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance8x16 = aom_highbd_10_masked_sub_pixel_variance8x16_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance8x4 = aom_highbd_10_masked_sub_pixel_variance8x4_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance8x4 = aom_highbd_10_masked_sub_pixel_variance8x4_ssse3;
+ aom_highbd_10_masked_sub_pixel_variance8x8 = aom_highbd_10_masked_sub_pixel_variance8x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_10_masked_sub_pixel_variance8x8 = aom_highbd_10_masked_sub_pixel_variance8x8_ssse3;
+ aom_highbd_10_obmc_variance16x16 = aom_highbd_10_obmc_variance16x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance16x16 = aom_highbd_10_obmc_variance16x16_sse4_1;
+ aom_highbd_10_obmc_variance16x32 = aom_highbd_10_obmc_variance16x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance16x32 = aom_highbd_10_obmc_variance16x32_sse4_1;
+ aom_highbd_10_obmc_variance16x8 = aom_highbd_10_obmc_variance16x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance16x8 = aom_highbd_10_obmc_variance16x8_sse4_1;
+ aom_highbd_10_obmc_variance32x16 = aom_highbd_10_obmc_variance32x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance32x16 = aom_highbd_10_obmc_variance32x16_sse4_1;
+ aom_highbd_10_obmc_variance32x32 = aom_highbd_10_obmc_variance32x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance32x32 = aom_highbd_10_obmc_variance32x32_sse4_1;
+ aom_highbd_10_obmc_variance32x64 = aom_highbd_10_obmc_variance32x64_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance32x64 = aom_highbd_10_obmc_variance32x64_sse4_1;
+ aom_highbd_10_obmc_variance4x4 = aom_highbd_10_obmc_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance4x4 = aom_highbd_10_obmc_variance4x4_sse4_1;
+ aom_highbd_10_obmc_variance4x8 = aom_highbd_10_obmc_variance4x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance4x8 = aom_highbd_10_obmc_variance4x8_sse4_1;
+ aom_highbd_10_obmc_variance64x32 = aom_highbd_10_obmc_variance64x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance64x32 = aom_highbd_10_obmc_variance64x32_sse4_1;
+ aom_highbd_10_obmc_variance64x64 = aom_highbd_10_obmc_variance64x64_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance64x64 = aom_highbd_10_obmc_variance64x64_sse4_1;
+ aom_highbd_10_obmc_variance8x16 = aom_highbd_10_obmc_variance8x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance8x16 = aom_highbd_10_obmc_variance8x16_sse4_1;
+ aom_highbd_10_obmc_variance8x4 = aom_highbd_10_obmc_variance8x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance8x4 = aom_highbd_10_obmc_variance8x4_sse4_1;
+ aom_highbd_10_obmc_variance8x8 = aom_highbd_10_obmc_variance8x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_obmc_variance8x8 = aom_highbd_10_obmc_variance8x8_sse4_1;
+ aom_highbd_10_sub_pixel_avg_variance4x4 = aom_highbd_10_sub_pixel_avg_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_sub_pixel_avg_variance4x4 = aom_highbd_10_sub_pixel_avg_variance4x4_sse4_1;
+ aom_highbd_10_sub_pixel_variance4x4 = aom_highbd_10_sub_pixel_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_sub_pixel_variance4x4 = aom_highbd_10_sub_pixel_variance4x4_sse4_1;
+ aom_highbd_10_variance4x4 = aom_highbd_10_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_10_variance4x4 = aom_highbd_10_variance4x4_sse4_1;
+ aom_highbd_12_masked_sub_pixel_variance16x16 = aom_highbd_12_masked_sub_pixel_variance16x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance16x16 = aom_highbd_12_masked_sub_pixel_variance16x16_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance16x32 = aom_highbd_12_masked_sub_pixel_variance16x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance16x32 = aom_highbd_12_masked_sub_pixel_variance16x32_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance16x8 = aom_highbd_12_masked_sub_pixel_variance16x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance16x8 = aom_highbd_12_masked_sub_pixel_variance16x8_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance32x16 = aom_highbd_12_masked_sub_pixel_variance32x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance32x16 = aom_highbd_12_masked_sub_pixel_variance32x16_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance32x32 = aom_highbd_12_masked_sub_pixel_variance32x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance32x32 = aom_highbd_12_masked_sub_pixel_variance32x32_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance32x64 = aom_highbd_12_masked_sub_pixel_variance32x64_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance32x64 = aom_highbd_12_masked_sub_pixel_variance32x64_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance4x4 = aom_highbd_12_masked_sub_pixel_variance4x4_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance4x4 = aom_highbd_12_masked_sub_pixel_variance4x4_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance4x8 = aom_highbd_12_masked_sub_pixel_variance4x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance4x8 = aom_highbd_12_masked_sub_pixel_variance4x8_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance64x32 = aom_highbd_12_masked_sub_pixel_variance64x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance64x32 = aom_highbd_12_masked_sub_pixel_variance64x32_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance64x64 = aom_highbd_12_masked_sub_pixel_variance64x64_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance64x64 = aom_highbd_12_masked_sub_pixel_variance64x64_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance8x16 = aom_highbd_12_masked_sub_pixel_variance8x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance8x16 = aom_highbd_12_masked_sub_pixel_variance8x16_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance8x4 = aom_highbd_12_masked_sub_pixel_variance8x4_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance8x4 = aom_highbd_12_masked_sub_pixel_variance8x4_ssse3;
+ aom_highbd_12_masked_sub_pixel_variance8x8 = aom_highbd_12_masked_sub_pixel_variance8x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_12_masked_sub_pixel_variance8x8 = aom_highbd_12_masked_sub_pixel_variance8x8_ssse3;
+ aom_highbd_12_obmc_variance16x16 = aom_highbd_12_obmc_variance16x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance16x16 = aom_highbd_12_obmc_variance16x16_sse4_1;
+ aom_highbd_12_obmc_variance16x32 = aom_highbd_12_obmc_variance16x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance16x32 = aom_highbd_12_obmc_variance16x32_sse4_1;
+ aom_highbd_12_obmc_variance16x8 = aom_highbd_12_obmc_variance16x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance16x8 = aom_highbd_12_obmc_variance16x8_sse4_1;
+ aom_highbd_12_obmc_variance32x16 = aom_highbd_12_obmc_variance32x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance32x16 = aom_highbd_12_obmc_variance32x16_sse4_1;
+ aom_highbd_12_obmc_variance32x32 = aom_highbd_12_obmc_variance32x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance32x32 = aom_highbd_12_obmc_variance32x32_sse4_1;
+ aom_highbd_12_obmc_variance32x64 = aom_highbd_12_obmc_variance32x64_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance32x64 = aom_highbd_12_obmc_variance32x64_sse4_1;
+ aom_highbd_12_obmc_variance4x4 = aom_highbd_12_obmc_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance4x4 = aom_highbd_12_obmc_variance4x4_sse4_1;
+ aom_highbd_12_obmc_variance4x8 = aom_highbd_12_obmc_variance4x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance4x8 = aom_highbd_12_obmc_variance4x8_sse4_1;
+ aom_highbd_12_obmc_variance64x32 = aom_highbd_12_obmc_variance64x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance64x32 = aom_highbd_12_obmc_variance64x32_sse4_1;
+ aom_highbd_12_obmc_variance64x64 = aom_highbd_12_obmc_variance64x64_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance64x64 = aom_highbd_12_obmc_variance64x64_sse4_1;
+ aom_highbd_12_obmc_variance8x16 = aom_highbd_12_obmc_variance8x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance8x16 = aom_highbd_12_obmc_variance8x16_sse4_1;
+ aom_highbd_12_obmc_variance8x4 = aom_highbd_12_obmc_variance8x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance8x4 = aom_highbd_12_obmc_variance8x4_sse4_1;
+ aom_highbd_12_obmc_variance8x8 = aom_highbd_12_obmc_variance8x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_obmc_variance8x8 = aom_highbd_12_obmc_variance8x8_sse4_1;
+ aom_highbd_12_sub_pixel_avg_variance4x4 = aom_highbd_12_sub_pixel_avg_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_sub_pixel_avg_variance4x4 = aom_highbd_12_sub_pixel_avg_variance4x4_sse4_1;
+ aom_highbd_12_sub_pixel_variance4x4 = aom_highbd_12_sub_pixel_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_sub_pixel_variance4x4 = aom_highbd_12_sub_pixel_variance4x4_sse4_1;
+ aom_highbd_12_variance4x4 = aom_highbd_12_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_12_variance4x4 = aom_highbd_12_variance4x4_sse4_1;
+ aom_highbd_8_masked_sub_pixel_variance16x16 = aom_highbd_8_masked_sub_pixel_variance16x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance16x16 = aom_highbd_8_masked_sub_pixel_variance16x16_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance16x32 = aom_highbd_8_masked_sub_pixel_variance16x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance16x32 = aom_highbd_8_masked_sub_pixel_variance16x32_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance16x8 = aom_highbd_8_masked_sub_pixel_variance16x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance16x8 = aom_highbd_8_masked_sub_pixel_variance16x8_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance32x16 = aom_highbd_8_masked_sub_pixel_variance32x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance32x16 = aom_highbd_8_masked_sub_pixel_variance32x16_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance32x32 = aom_highbd_8_masked_sub_pixel_variance32x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance32x32 = aom_highbd_8_masked_sub_pixel_variance32x32_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance32x64 = aom_highbd_8_masked_sub_pixel_variance32x64_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance32x64 = aom_highbd_8_masked_sub_pixel_variance32x64_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance4x4 = aom_highbd_8_masked_sub_pixel_variance4x4_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance4x4 = aom_highbd_8_masked_sub_pixel_variance4x4_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance4x8 = aom_highbd_8_masked_sub_pixel_variance4x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance4x8 = aom_highbd_8_masked_sub_pixel_variance4x8_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance64x32 = aom_highbd_8_masked_sub_pixel_variance64x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance64x32 = aom_highbd_8_masked_sub_pixel_variance64x32_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance64x64 = aom_highbd_8_masked_sub_pixel_variance64x64_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance64x64 = aom_highbd_8_masked_sub_pixel_variance64x64_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance8x16 = aom_highbd_8_masked_sub_pixel_variance8x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance8x16 = aom_highbd_8_masked_sub_pixel_variance8x16_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance8x4 = aom_highbd_8_masked_sub_pixel_variance8x4_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance8x4 = aom_highbd_8_masked_sub_pixel_variance8x4_ssse3;
+ aom_highbd_8_masked_sub_pixel_variance8x8 = aom_highbd_8_masked_sub_pixel_variance8x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_8_masked_sub_pixel_variance8x8 = aom_highbd_8_masked_sub_pixel_variance8x8_ssse3;
+ aom_highbd_8_sub_pixel_avg_variance4x4 = aom_highbd_8_sub_pixel_avg_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_8_sub_pixel_avg_variance4x4 = aom_highbd_8_sub_pixel_avg_variance4x4_sse4_1;
+ aom_highbd_8_sub_pixel_variance4x4 = aom_highbd_8_sub_pixel_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_8_sub_pixel_variance4x4 = aom_highbd_8_sub_pixel_variance4x4_sse4_1;
+ aom_highbd_8_variance4x4 = aom_highbd_8_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_8_variance4x4 = aom_highbd_8_variance4x4_sse4_1;
+ aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_c;
+ if (flags & HAS_SSE4_1) aom_highbd_blend_a64_hmask = aom_highbd_blend_a64_hmask_sse4_1;
+ aom_highbd_blend_a64_mask = aom_highbd_blend_a64_mask_c;
+ if (flags & HAS_SSE4_1) aom_highbd_blend_a64_mask = aom_highbd_blend_a64_mask_sse4_1;
+ aom_highbd_blend_a64_vmask = aom_highbd_blend_a64_vmask_c;
+ if (flags & HAS_SSE4_1) aom_highbd_blend_a64_vmask = aom_highbd_blend_a64_vmask_sse4_1;
+ aom_highbd_convolve8 = aom_highbd_convolve8_sse2;
+ if (flags & HAS_AVX2) aom_highbd_convolve8 = aom_highbd_convolve8_avx2;
+ aom_highbd_convolve8_add_src_hip = aom_highbd_convolve8_add_src_hip_c;
+ if (flags & HAS_SSSE3) aom_highbd_convolve8_add_src_hip = aom_highbd_convolve8_add_src_hip_ssse3;
+ aom_highbd_convolve8_avg = aom_highbd_convolve8_avg_sse2;
+ if (flags & HAS_AVX2) aom_highbd_convolve8_avg = aom_highbd_convolve8_avg_avx2;
+ aom_highbd_convolve8_avg_horiz = aom_highbd_convolve8_avg_horiz_sse2;
+ if (flags & HAS_AVX2) aom_highbd_convolve8_avg_horiz = aom_highbd_convolve8_avg_horiz_avx2;
+ aom_highbd_convolve8_avg_vert = aom_highbd_convolve8_avg_vert_sse2;
+ if (flags & HAS_AVX2) aom_highbd_convolve8_avg_vert = aom_highbd_convolve8_avg_vert_avx2;
+ aom_highbd_convolve8_horiz = aom_highbd_convolve8_horiz_sse2;
+ if (flags & HAS_AVX2) aom_highbd_convolve8_horiz = aom_highbd_convolve8_horiz_avx2;
+ aom_highbd_convolve8_vert = aom_highbd_convolve8_vert_sse2;
+ if (flags & HAS_AVX2) aom_highbd_convolve8_vert = aom_highbd_convolve8_vert_avx2;
+ aom_highbd_convolve_avg = aom_highbd_convolve_avg_sse2;
+ if (flags & HAS_AVX2) aom_highbd_convolve_avg = aom_highbd_convolve_avg_avx2;
+ aom_highbd_convolve_copy = aom_highbd_convolve_copy_sse2;
+ if (flags & HAS_AVX2) aom_highbd_convolve_copy = aom_highbd_convolve_copy_avx2;
+ aom_highbd_d117_predictor_16x16 = aom_highbd_d117_predictor_16x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_d117_predictor_16x16 = aom_highbd_d117_predictor_16x16_ssse3;
+ aom_highbd_d117_predictor_32x32 = aom_highbd_d117_predictor_32x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_d117_predictor_32x32 = aom_highbd_d117_predictor_32x32_ssse3;
+ aom_highbd_d117_predictor_8x8 = aom_highbd_d117_predictor_8x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_d117_predictor_8x8 = aom_highbd_d117_predictor_8x8_ssse3;
+ aom_highbd_d135_predictor_16x16 = aom_highbd_d135_predictor_16x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_d135_predictor_16x16 = aom_highbd_d135_predictor_16x16_ssse3;
+ aom_highbd_d135_predictor_32x32 = aom_highbd_d135_predictor_32x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_d135_predictor_32x32 = aom_highbd_d135_predictor_32x32_ssse3;
+ aom_highbd_d135_predictor_8x8 = aom_highbd_d135_predictor_8x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_d135_predictor_8x8 = aom_highbd_d135_predictor_8x8_ssse3;
+ aom_highbd_d153_predictor_16x16 = aom_highbd_d153_predictor_16x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_d153_predictor_16x16 = aom_highbd_d153_predictor_16x16_ssse3;
+ aom_highbd_d153_predictor_32x32 = aom_highbd_d153_predictor_32x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_d153_predictor_32x32 = aom_highbd_d153_predictor_32x32_ssse3;
+ aom_highbd_d153_predictor_8x8 = aom_highbd_d153_predictor_8x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_d153_predictor_8x8 = aom_highbd_d153_predictor_8x8_ssse3;
+ aom_highbd_d45e_predictor_16x16 = aom_highbd_d45e_predictor_16x16_c;
+ if (flags & HAS_AVX2) aom_highbd_d45e_predictor_16x16 = aom_highbd_d45e_predictor_16x16_avx2;
+ aom_highbd_d45e_predictor_16x32 = aom_highbd_d45e_predictor_16x32_c;
+ if (flags & HAS_AVX2) aom_highbd_d45e_predictor_16x32 = aom_highbd_d45e_predictor_16x32_avx2;
+ aom_highbd_d45e_predictor_16x8 = aom_highbd_d45e_predictor_16x8_c;
+ if (flags & HAS_AVX2) aom_highbd_d45e_predictor_16x8 = aom_highbd_d45e_predictor_16x8_avx2;
+ aom_highbd_d45e_predictor_32x16 = aom_highbd_d45e_predictor_32x16_c;
+ if (flags & HAS_AVX2) aom_highbd_d45e_predictor_32x16 = aom_highbd_d45e_predictor_32x16_avx2;
+ aom_highbd_d45e_predictor_32x32 = aom_highbd_d45e_predictor_32x32_c;
+ if (flags & HAS_AVX2) aom_highbd_d45e_predictor_32x32 = aom_highbd_d45e_predictor_32x32_avx2;
+ aom_highbd_lpf_horizontal_4_dual = aom_highbd_lpf_horizontal_4_dual_sse2;
+ if (flags & HAS_AVX2) aom_highbd_lpf_horizontal_4_dual = aom_highbd_lpf_horizontal_4_dual_avx2;
+ aom_highbd_lpf_horizontal_8_dual = aom_highbd_lpf_horizontal_8_dual_sse2;
+ if (flags & HAS_AVX2) aom_highbd_lpf_horizontal_8_dual = aom_highbd_lpf_horizontal_8_dual_avx2;
+ aom_highbd_lpf_horizontal_edge_16 = aom_highbd_lpf_horizontal_edge_16_sse2;
+ if (flags & HAS_AVX2) aom_highbd_lpf_horizontal_edge_16 = aom_highbd_lpf_horizontal_edge_16_avx2;
+ aom_highbd_lpf_vertical_16_dual = aom_highbd_lpf_vertical_16_dual_sse2;
+ if (flags & HAS_AVX2) aom_highbd_lpf_vertical_16_dual = aom_highbd_lpf_vertical_16_dual_avx2;
+ aom_highbd_lpf_vertical_4_dual = aom_highbd_lpf_vertical_4_dual_sse2;
+ if (flags & HAS_AVX2) aom_highbd_lpf_vertical_4_dual = aom_highbd_lpf_vertical_4_dual_avx2;
+ aom_highbd_lpf_vertical_8_dual = aom_highbd_lpf_vertical_8_dual_sse2;
+ if (flags & HAS_AVX2) aom_highbd_lpf_vertical_8_dual = aom_highbd_lpf_vertical_8_dual_avx2;
+ aom_highbd_masked_sad16x16 = aom_highbd_masked_sad16x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad16x16 = aom_highbd_masked_sad16x16_ssse3;
+ aom_highbd_masked_sad16x32 = aom_highbd_masked_sad16x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad16x32 = aom_highbd_masked_sad16x32_ssse3;
+ aom_highbd_masked_sad16x8 = aom_highbd_masked_sad16x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad16x8 = aom_highbd_masked_sad16x8_ssse3;
+ aom_highbd_masked_sad32x16 = aom_highbd_masked_sad32x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad32x16 = aom_highbd_masked_sad32x16_ssse3;
+ aom_highbd_masked_sad32x32 = aom_highbd_masked_sad32x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad32x32 = aom_highbd_masked_sad32x32_ssse3;
+ aom_highbd_masked_sad32x64 = aom_highbd_masked_sad32x64_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad32x64 = aom_highbd_masked_sad32x64_ssse3;
+ aom_highbd_masked_sad4x4 = aom_highbd_masked_sad4x4_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad4x4 = aom_highbd_masked_sad4x4_ssse3;
+ aom_highbd_masked_sad4x8 = aom_highbd_masked_sad4x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad4x8 = aom_highbd_masked_sad4x8_ssse3;
+ aom_highbd_masked_sad64x32 = aom_highbd_masked_sad64x32_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad64x32 = aom_highbd_masked_sad64x32_ssse3;
+ aom_highbd_masked_sad64x64 = aom_highbd_masked_sad64x64_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad64x64 = aom_highbd_masked_sad64x64_ssse3;
+ aom_highbd_masked_sad8x16 = aom_highbd_masked_sad8x16_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad8x16 = aom_highbd_masked_sad8x16_ssse3;
+ aom_highbd_masked_sad8x4 = aom_highbd_masked_sad8x4_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad8x4 = aom_highbd_masked_sad8x4_ssse3;
+ aom_highbd_masked_sad8x8 = aom_highbd_masked_sad8x8_c;
+ if (flags & HAS_SSSE3) aom_highbd_masked_sad8x8 = aom_highbd_masked_sad8x8_ssse3;
+ aom_highbd_obmc_sad16x16 = aom_highbd_obmc_sad16x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad16x16 = aom_highbd_obmc_sad16x16_sse4_1;
+ aom_highbd_obmc_sad16x32 = aom_highbd_obmc_sad16x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad16x32 = aom_highbd_obmc_sad16x32_sse4_1;
+ aom_highbd_obmc_sad16x8 = aom_highbd_obmc_sad16x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad16x8 = aom_highbd_obmc_sad16x8_sse4_1;
+ aom_highbd_obmc_sad32x16 = aom_highbd_obmc_sad32x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad32x16 = aom_highbd_obmc_sad32x16_sse4_1;
+ aom_highbd_obmc_sad32x32 = aom_highbd_obmc_sad32x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad32x32 = aom_highbd_obmc_sad32x32_sse4_1;
+ aom_highbd_obmc_sad32x64 = aom_highbd_obmc_sad32x64_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad32x64 = aom_highbd_obmc_sad32x64_sse4_1;
+ aom_highbd_obmc_sad4x4 = aom_highbd_obmc_sad4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad4x4 = aom_highbd_obmc_sad4x4_sse4_1;
+ aom_highbd_obmc_sad4x8 = aom_highbd_obmc_sad4x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad4x8 = aom_highbd_obmc_sad4x8_sse4_1;
+ aom_highbd_obmc_sad64x32 = aom_highbd_obmc_sad64x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad64x32 = aom_highbd_obmc_sad64x32_sse4_1;
+ aom_highbd_obmc_sad64x64 = aom_highbd_obmc_sad64x64_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad64x64 = aom_highbd_obmc_sad64x64_sse4_1;
+ aom_highbd_obmc_sad8x16 = aom_highbd_obmc_sad8x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad8x16 = aom_highbd_obmc_sad8x16_sse4_1;
+ aom_highbd_obmc_sad8x4 = aom_highbd_obmc_sad8x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad8x4 = aom_highbd_obmc_sad8x4_sse4_1;
+ aom_highbd_obmc_sad8x8 = aom_highbd_obmc_sad8x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_sad8x8 = aom_highbd_obmc_sad8x8_sse4_1;
+ aom_highbd_obmc_variance16x16 = aom_highbd_obmc_variance16x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance16x16 = aom_highbd_obmc_variance16x16_sse4_1;
+ aom_highbd_obmc_variance16x32 = aom_highbd_obmc_variance16x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance16x32 = aom_highbd_obmc_variance16x32_sse4_1;
+ aom_highbd_obmc_variance16x8 = aom_highbd_obmc_variance16x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance16x8 = aom_highbd_obmc_variance16x8_sse4_1;
+ aom_highbd_obmc_variance32x16 = aom_highbd_obmc_variance32x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance32x16 = aom_highbd_obmc_variance32x16_sse4_1;
+ aom_highbd_obmc_variance32x32 = aom_highbd_obmc_variance32x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance32x32 = aom_highbd_obmc_variance32x32_sse4_1;
+ aom_highbd_obmc_variance32x64 = aom_highbd_obmc_variance32x64_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance32x64 = aom_highbd_obmc_variance32x64_sse4_1;
+ aom_highbd_obmc_variance4x4 = aom_highbd_obmc_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance4x4 = aom_highbd_obmc_variance4x4_sse4_1;
+ aom_highbd_obmc_variance4x8 = aom_highbd_obmc_variance4x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance4x8 = aom_highbd_obmc_variance4x8_sse4_1;
+ aom_highbd_obmc_variance64x32 = aom_highbd_obmc_variance64x32_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance64x32 = aom_highbd_obmc_variance64x32_sse4_1;
+ aom_highbd_obmc_variance64x64 = aom_highbd_obmc_variance64x64_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance64x64 = aom_highbd_obmc_variance64x64_sse4_1;
+ aom_highbd_obmc_variance8x16 = aom_highbd_obmc_variance8x16_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance8x16 = aom_highbd_obmc_variance8x16_sse4_1;
+ aom_highbd_obmc_variance8x4 = aom_highbd_obmc_variance8x4_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance8x4 = aom_highbd_obmc_variance8x4_sse4_1;
+ aom_highbd_obmc_variance8x8 = aom_highbd_obmc_variance8x8_c;
+ if (flags & HAS_SSE4_1) aom_highbd_obmc_variance8x8 = aom_highbd_obmc_variance8x8_sse4_1;
+ aom_highbd_quantize_b = aom_highbd_quantize_b_sse2;
+ if (flags & HAS_AVX2) aom_highbd_quantize_b = aom_highbd_quantize_b_avx2;
+ aom_highbd_sad16x16 = aom_highbd_sad16x16_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad16x16 = aom_highbd_sad16x16_avx2;
+ aom_highbd_sad16x16_avg = aom_highbd_sad16x16_avg_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad16x16_avg = aom_highbd_sad16x16_avg_avx2;
+ aom_highbd_sad16x16x4d = aom_highbd_sad16x16x4d_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad16x16x4d = aom_highbd_sad16x16x4d_avx2;
+ aom_highbd_sad16x32 = aom_highbd_sad16x32_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad16x32 = aom_highbd_sad16x32_avx2;
+ aom_highbd_sad16x32_avg = aom_highbd_sad16x32_avg_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad16x32_avg = aom_highbd_sad16x32_avg_avx2;
+ aom_highbd_sad16x32x4d = aom_highbd_sad16x32x4d_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad16x32x4d = aom_highbd_sad16x32x4d_avx2;
+ aom_highbd_sad16x8 = aom_highbd_sad16x8_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad16x8 = aom_highbd_sad16x8_avx2;
+ aom_highbd_sad16x8_avg = aom_highbd_sad16x8_avg_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad16x8_avg = aom_highbd_sad16x8_avg_avx2;
+ aom_highbd_sad16x8x4d = aom_highbd_sad16x8x4d_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad16x8x4d = aom_highbd_sad16x8x4d_avx2;
+ aom_highbd_sad32x16 = aom_highbd_sad32x16_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad32x16 = aom_highbd_sad32x16_avx2;
+ aom_highbd_sad32x16_avg = aom_highbd_sad32x16_avg_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad32x16_avg = aom_highbd_sad32x16_avg_avx2;
+ aom_highbd_sad32x16x4d = aom_highbd_sad32x16x4d_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad32x16x4d = aom_highbd_sad32x16x4d_avx2;
+ aom_highbd_sad32x32 = aom_highbd_sad32x32_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad32x32 = aom_highbd_sad32x32_avx2;
+ aom_highbd_sad32x32_avg = aom_highbd_sad32x32_avg_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad32x32_avg = aom_highbd_sad32x32_avg_avx2;
+ aom_highbd_sad32x32x4d = aom_highbd_sad32x32x4d_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad32x32x4d = aom_highbd_sad32x32x4d_avx2;
+ aom_highbd_sad32x64 = aom_highbd_sad32x64_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad32x64 = aom_highbd_sad32x64_avx2;
+ aom_highbd_sad32x64_avg = aom_highbd_sad32x64_avg_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad32x64_avg = aom_highbd_sad32x64_avg_avx2;
+ aom_highbd_sad32x64x4d = aom_highbd_sad32x64x4d_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad32x64x4d = aom_highbd_sad32x64x4d_avx2;
+ aom_highbd_sad64x32 = aom_highbd_sad64x32_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad64x32 = aom_highbd_sad64x32_avx2;
+ aom_highbd_sad64x32_avg = aom_highbd_sad64x32_avg_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad64x32_avg = aom_highbd_sad64x32_avg_avx2;
+ aom_highbd_sad64x32x4d = aom_highbd_sad64x32x4d_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad64x32x4d = aom_highbd_sad64x32x4d_avx2;
+ aom_highbd_sad64x64 = aom_highbd_sad64x64_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad64x64 = aom_highbd_sad64x64_avx2;
+ aom_highbd_sad64x64_avg = aom_highbd_sad64x64_avg_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad64x64_avg = aom_highbd_sad64x64_avg_avx2;
+ aom_highbd_sad64x64x4d = aom_highbd_sad64x64x4d_sse2;
+ if (flags & HAS_AVX2) aom_highbd_sad64x64x4d = aom_highbd_sad64x64x4d_avx2;
+ aom_idct16x16_10_add = aom_idct16x16_10_add_sse2;
+ if (flags & HAS_AVX2) aom_idct16x16_10_add = aom_idct16x16_10_add_avx2;
+ aom_idct16x16_1_add = aom_idct16x16_1_add_sse2;
+ if (flags & HAS_AVX2) aom_idct16x16_1_add = aom_idct16x16_1_add_avx2;
+ aom_idct16x16_256_add = aom_idct16x16_256_add_sse2;
+ if (flags & HAS_AVX2) aom_idct16x16_256_add = aom_idct16x16_256_add_avx2;
+ aom_idct16x16_38_add = aom_idct16x16_38_add_c;
+ if (flags & HAS_AVX2) aom_idct16x16_38_add = aom_idct16x16_38_add_avx2;
+ aom_idct32x32_1024_add = aom_idct32x32_1024_add_sse2;
+ if (flags & HAS_SSSE3) aom_idct32x32_1024_add = aom_idct32x32_1024_add_ssse3;
+ if (flags & HAS_AVX2) aom_idct32x32_1024_add = aom_idct32x32_1024_add_avx2;
+ aom_idct32x32_135_add = aom_idct32x32_1024_add_sse2;
+ if (flags & HAS_SSSE3) aom_idct32x32_135_add = aom_idct32x32_135_add_ssse3;
+ if (flags & HAS_AVX2) aom_idct32x32_135_add = aom_idct32x32_135_add_avx2;
+ aom_idct32x32_1_add = aom_idct32x32_1_add_sse2;
+ if (flags & HAS_AVX2) aom_idct32x32_1_add = aom_idct32x32_1_add_avx2;
+ aom_idct32x32_34_add = aom_idct32x32_34_add_sse2;
+ if (flags & HAS_SSSE3) aom_idct32x32_34_add = aom_idct32x32_34_add_ssse3;
+ if (flags & HAS_AVX2) aom_idct32x32_34_add = aom_idct32x32_34_add_avx2;
+ aom_idct8x8_12_add = aom_idct8x8_12_add_sse2;
+ if (flags & HAS_SSSE3) aom_idct8x8_12_add = aom_idct8x8_12_add_ssse3;
+ aom_idct8x8_64_add = aom_idct8x8_64_add_sse2;
+ if (flags & HAS_SSSE3) aom_idct8x8_64_add = aom_idct8x8_64_add_ssse3;
+ aom_masked_sad16x16 = aom_masked_sad16x16_c;
+ if (flags & HAS_SSSE3) aom_masked_sad16x16 = aom_masked_sad16x16_ssse3;
+ aom_masked_sad16x32 = aom_masked_sad16x32_c;
+ if (flags & HAS_SSSE3) aom_masked_sad16x32 = aom_masked_sad16x32_ssse3;
+ aom_masked_sad16x8 = aom_masked_sad16x8_c;
+ if (flags & HAS_SSSE3) aom_masked_sad16x8 = aom_masked_sad16x8_ssse3;
+ aom_masked_sad32x16 = aom_masked_sad32x16_c;
+ if (flags & HAS_SSSE3) aom_masked_sad32x16 = aom_masked_sad32x16_ssse3;
+ aom_masked_sad32x32 = aom_masked_sad32x32_c;
+ if (flags & HAS_SSSE3) aom_masked_sad32x32 = aom_masked_sad32x32_ssse3;
+ aom_masked_sad32x64 = aom_masked_sad32x64_c;
+ if (flags & HAS_SSSE3) aom_masked_sad32x64 = aom_masked_sad32x64_ssse3;
+ aom_masked_sad4x4 = aom_masked_sad4x4_c;
+ if (flags & HAS_SSSE3) aom_masked_sad4x4 = aom_masked_sad4x4_ssse3;
+ aom_masked_sad4x8 = aom_masked_sad4x8_c;
+ if (flags & HAS_SSSE3) aom_masked_sad4x8 = aom_masked_sad4x8_ssse3;
+ aom_masked_sad64x32 = aom_masked_sad64x32_c;
+ if (flags & HAS_SSSE3) aom_masked_sad64x32 = aom_masked_sad64x32_ssse3;
+ aom_masked_sad64x64 = aom_masked_sad64x64_c;
+ if (flags & HAS_SSSE3) aom_masked_sad64x64 = aom_masked_sad64x64_ssse3;
+ aom_masked_sad8x16 = aom_masked_sad8x16_c;
+ if (flags & HAS_SSSE3) aom_masked_sad8x16 = aom_masked_sad8x16_ssse3;
+ aom_masked_sad8x4 = aom_masked_sad8x4_c;
+ if (flags & HAS_SSSE3) aom_masked_sad8x4 = aom_masked_sad8x4_ssse3;
+ aom_masked_sad8x8 = aom_masked_sad8x8_c;
+ if (flags & HAS_SSSE3) aom_masked_sad8x8 = aom_masked_sad8x8_ssse3;
+ aom_masked_sub_pixel_variance16x16 = aom_masked_sub_pixel_variance16x16_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance16x16 = aom_masked_sub_pixel_variance16x16_ssse3;
+ aom_masked_sub_pixel_variance16x32 = aom_masked_sub_pixel_variance16x32_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance16x32 = aom_masked_sub_pixel_variance16x32_ssse3;
+ aom_masked_sub_pixel_variance16x8 = aom_masked_sub_pixel_variance16x8_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance16x8 = aom_masked_sub_pixel_variance16x8_ssse3;
+ aom_masked_sub_pixel_variance32x16 = aom_masked_sub_pixel_variance32x16_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance32x16 = aom_masked_sub_pixel_variance32x16_ssse3;
+ aom_masked_sub_pixel_variance32x32 = aom_masked_sub_pixel_variance32x32_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance32x32 = aom_masked_sub_pixel_variance32x32_ssse3;
+ aom_masked_sub_pixel_variance32x64 = aom_masked_sub_pixel_variance32x64_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance32x64 = aom_masked_sub_pixel_variance32x64_ssse3;
+ aom_masked_sub_pixel_variance4x4 = aom_masked_sub_pixel_variance4x4_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance4x4 = aom_masked_sub_pixel_variance4x4_ssse3;
+ aom_masked_sub_pixel_variance4x8 = aom_masked_sub_pixel_variance4x8_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance4x8 = aom_masked_sub_pixel_variance4x8_ssse3;
+ aom_masked_sub_pixel_variance64x32 = aom_masked_sub_pixel_variance64x32_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance64x32 = aom_masked_sub_pixel_variance64x32_ssse3;
+ aom_masked_sub_pixel_variance64x64 = aom_masked_sub_pixel_variance64x64_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance64x64 = aom_masked_sub_pixel_variance64x64_ssse3;
+ aom_masked_sub_pixel_variance8x16 = aom_masked_sub_pixel_variance8x16_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance8x16 = aom_masked_sub_pixel_variance8x16_ssse3;
+ aom_masked_sub_pixel_variance8x4 = aom_masked_sub_pixel_variance8x4_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance8x4 = aom_masked_sub_pixel_variance8x4_ssse3;
+ aom_masked_sub_pixel_variance8x8 = aom_masked_sub_pixel_variance8x8_c;
+ if (flags & HAS_SSSE3) aom_masked_sub_pixel_variance8x8 = aom_masked_sub_pixel_variance8x8_ssse3;
+ aom_mse16x16 = aom_mse16x16_sse2;
+ if (flags & HAS_AVX2) aom_mse16x16 = aom_mse16x16_avx2;
+ aom_obmc_sad16x16 = aom_obmc_sad16x16_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad16x16 = aom_obmc_sad16x16_sse4_1;
+ aom_obmc_sad16x32 = aom_obmc_sad16x32_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad16x32 = aom_obmc_sad16x32_sse4_1;
+ aom_obmc_sad16x8 = aom_obmc_sad16x8_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad16x8 = aom_obmc_sad16x8_sse4_1;
+ aom_obmc_sad32x16 = aom_obmc_sad32x16_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad32x16 = aom_obmc_sad32x16_sse4_1;
+ aom_obmc_sad32x32 = aom_obmc_sad32x32_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad32x32 = aom_obmc_sad32x32_sse4_1;
+ aom_obmc_sad32x64 = aom_obmc_sad32x64_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad32x64 = aom_obmc_sad32x64_sse4_1;
+ aom_obmc_sad4x4 = aom_obmc_sad4x4_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad4x4 = aom_obmc_sad4x4_sse4_1;
+ aom_obmc_sad4x8 = aom_obmc_sad4x8_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad4x8 = aom_obmc_sad4x8_sse4_1;
+ aom_obmc_sad64x32 = aom_obmc_sad64x32_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad64x32 = aom_obmc_sad64x32_sse4_1;
+ aom_obmc_sad64x64 = aom_obmc_sad64x64_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad64x64 = aom_obmc_sad64x64_sse4_1;
+ aom_obmc_sad8x16 = aom_obmc_sad8x16_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad8x16 = aom_obmc_sad8x16_sse4_1;
+ aom_obmc_sad8x4 = aom_obmc_sad8x4_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad8x4 = aom_obmc_sad8x4_sse4_1;
+ aom_obmc_sad8x8 = aom_obmc_sad8x8_c;
+ if (flags & HAS_SSE4_1) aom_obmc_sad8x8 = aom_obmc_sad8x8_sse4_1;
+ aom_obmc_variance16x16 = aom_obmc_variance16x16_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance16x16 = aom_obmc_variance16x16_sse4_1;
+ aom_obmc_variance16x32 = aom_obmc_variance16x32_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance16x32 = aom_obmc_variance16x32_sse4_1;
+ aom_obmc_variance16x8 = aom_obmc_variance16x8_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance16x8 = aom_obmc_variance16x8_sse4_1;
+ aom_obmc_variance32x16 = aom_obmc_variance32x16_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance32x16 = aom_obmc_variance32x16_sse4_1;
+ aom_obmc_variance32x32 = aom_obmc_variance32x32_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance32x32 = aom_obmc_variance32x32_sse4_1;
+ aom_obmc_variance32x64 = aom_obmc_variance32x64_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance32x64 = aom_obmc_variance32x64_sse4_1;
+ aom_obmc_variance4x4 = aom_obmc_variance4x4_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance4x4 = aom_obmc_variance4x4_sse4_1;
+ aom_obmc_variance4x8 = aom_obmc_variance4x8_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance4x8 = aom_obmc_variance4x8_sse4_1;
+ aom_obmc_variance64x32 = aom_obmc_variance64x32_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance64x32 = aom_obmc_variance64x32_sse4_1;
+ aom_obmc_variance64x64 = aom_obmc_variance64x64_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance64x64 = aom_obmc_variance64x64_sse4_1;
+ aom_obmc_variance8x16 = aom_obmc_variance8x16_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance8x16 = aom_obmc_variance8x16_sse4_1;
+ aom_obmc_variance8x4 = aom_obmc_variance8x4_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance8x4 = aom_obmc_variance8x4_sse4_1;
+ aom_obmc_variance8x8 = aom_obmc_variance8x8_c;
+ if (flags & HAS_SSE4_1) aom_obmc_variance8x8 = aom_obmc_variance8x8_sse4_1;
+ aom_paeth_predictor_16x16 = aom_paeth_predictor_16x16_c;
+ if (flags & HAS_SSSE3) aom_paeth_predictor_16x16 = aom_paeth_predictor_16x16_ssse3;
+ if (flags & HAS_AVX2) aom_paeth_predictor_16x16 = aom_paeth_predictor_16x16_avx2;
+ aom_paeth_predictor_16x32 = aom_paeth_predictor_16x32_c;
+ if (flags & HAS_SSSE3) aom_paeth_predictor_16x32 = aom_paeth_predictor_16x32_ssse3;
+ if (flags & HAS_AVX2) aom_paeth_predictor_16x32 = aom_paeth_predictor_16x32_avx2;
+ aom_paeth_predictor_16x8 = aom_paeth_predictor_16x8_c;
+ if (flags & HAS_SSSE3) aom_paeth_predictor_16x8 = aom_paeth_predictor_16x8_ssse3;
+ if (flags & HAS_AVX2) aom_paeth_predictor_16x8 = aom_paeth_predictor_16x8_avx2;
+ aom_paeth_predictor_32x16 = aom_paeth_predictor_32x16_c;
+ if (flags & HAS_SSSE3) aom_paeth_predictor_32x16 = aom_paeth_predictor_32x16_ssse3;
+ if (flags & HAS_AVX2) aom_paeth_predictor_32x16 = aom_paeth_predictor_32x16_avx2;
+ aom_paeth_predictor_32x32 = aom_paeth_predictor_32x32_c;
+ if (flags & HAS_SSSE3) aom_paeth_predictor_32x32 = aom_paeth_predictor_32x32_ssse3;
+ if (flags & HAS_AVX2) aom_paeth_predictor_32x32 = aom_paeth_predictor_32x32_avx2;
+ aom_paeth_predictor_4x4 = aom_paeth_predictor_4x4_c;
+ if (flags & HAS_SSSE3) aom_paeth_predictor_4x4 = aom_paeth_predictor_4x4_ssse3;
+ aom_paeth_predictor_4x8 = aom_paeth_predictor_4x8_c;
+ if (flags & HAS_SSSE3) aom_paeth_predictor_4x8 = aom_paeth_predictor_4x8_ssse3;
+ aom_paeth_predictor_8x16 = aom_paeth_predictor_8x16_c;
+ if (flags & HAS_SSSE3) aom_paeth_predictor_8x16 = aom_paeth_predictor_8x16_ssse3;
+ aom_paeth_predictor_8x4 = aom_paeth_predictor_8x4_c;
+ if (flags & HAS_SSSE3) aom_paeth_predictor_8x4 = aom_paeth_predictor_8x4_ssse3;
+ aom_paeth_predictor_8x8 = aom_paeth_predictor_8x8_c;
+ if (flags & HAS_SSSE3) aom_paeth_predictor_8x8 = aom_paeth_predictor_8x8_ssse3;
+ aom_quantize_b = aom_quantize_b_sse2;
+ if (flags & HAS_SSSE3) aom_quantize_b = aom_quantize_b_ssse3;
+ if (flags & HAS_AVX) aom_quantize_b = aom_quantize_b_avx;
+ aom_quantize_b_32x32 = aom_quantize_b_32x32_c;
+ if (flags & HAS_SSSE3) aom_quantize_b_32x32 = aom_quantize_b_32x32_ssse3;
+ if (flags & HAS_AVX) aom_quantize_b_32x32 = aom_quantize_b_32x32_avx;
+ aom_sad16x16x3 = aom_sad16x16x3_c;
+ if (flags & HAS_SSE3) aom_sad16x16x3 = aom_sad16x16x3_sse3;
+ if (flags & HAS_SSSE3) aom_sad16x16x3 = aom_sad16x16x3_ssse3;
+ aom_sad16x16x8 = aom_sad16x16x8_c;
+ if (flags & HAS_SSE4_1) aom_sad16x16x8 = aom_sad16x16x8_sse4_1;
+ aom_sad16x8x3 = aom_sad16x8x3_c;
+ if (flags & HAS_SSE3) aom_sad16x8x3 = aom_sad16x8x3_sse3;
+ if (flags & HAS_SSSE3) aom_sad16x8x3 = aom_sad16x8x3_ssse3;
+ aom_sad16x8x8 = aom_sad16x8x8_c;
+ if (flags & HAS_SSE4_1) aom_sad16x8x8 = aom_sad16x8x8_sse4_1;
+ aom_sad32x16 = aom_sad32x16_sse2;
+ if (flags & HAS_AVX2) aom_sad32x16 = aom_sad32x16_avx2;
+ aom_sad32x16_avg = aom_sad32x16_avg_sse2;
+ if (flags & HAS_AVX2) aom_sad32x16_avg = aom_sad32x16_avg_avx2;
+ aom_sad32x32 = aom_sad32x32_sse2;
+ if (flags & HAS_AVX2) aom_sad32x32 = aom_sad32x32_avx2;
+ aom_sad32x32_avg = aom_sad32x32_avg_sse2;
+ if (flags & HAS_AVX2) aom_sad32x32_avg = aom_sad32x32_avg_avx2;
+ aom_sad32x32x4d = aom_sad32x32x4d_sse2;
+ if (flags & HAS_AVX2) aom_sad32x32x4d = aom_sad32x32x4d_avx2;
+ aom_sad32x64 = aom_sad32x64_sse2;
+ if (flags & HAS_AVX2) aom_sad32x64 = aom_sad32x64_avx2;
+ aom_sad32x64_avg = aom_sad32x64_avg_sse2;
+ if (flags & HAS_AVX2) aom_sad32x64_avg = aom_sad32x64_avg_avx2;
+ aom_sad32x64x4d = aom_sad32x64x4d_sse2;
+ if (flags & HAS_AVX2) aom_sad32x64x4d = aom_sad32x64x4d_avx2;
+ aom_sad4x4x3 = aom_sad4x4x3_c;
+ if (flags & HAS_SSE3) aom_sad4x4x3 = aom_sad4x4x3_sse3;
+ aom_sad4x4x8 = aom_sad4x4x8_c;
+ if (flags & HAS_SSE4_1) aom_sad4x4x8 = aom_sad4x4x8_sse4_1;
+ aom_sad64x32 = aom_sad64x32_sse2;
+ if (flags & HAS_AVX2) aom_sad64x32 = aom_sad64x32_avx2;
+ aom_sad64x32_avg = aom_sad64x32_avg_sse2;
+ if (flags & HAS_AVX2) aom_sad64x32_avg = aom_sad64x32_avg_avx2;
+ aom_sad64x32x4d = aom_sad64x32x4d_sse2;
+ if (flags & HAS_AVX2) aom_sad64x32x4d = aom_sad64x32x4d_avx2;
+ aom_sad64x64 = aom_sad64x64_sse2;
+ if (flags & HAS_AVX2) aom_sad64x64 = aom_sad64x64_avx2;
+ aom_sad64x64_avg = aom_sad64x64_avg_sse2;
+ if (flags & HAS_AVX2) aom_sad64x64_avg = aom_sad64x64_avg_avx2;
+ aom_sad64x64x4d = aom_sad64x64x4d_sse2;
+ if (flags & HAS_AVX2) aom_sad64x64x4d = aom_sad64x64x4d_avx2;
+ aom_sad8x16x3 = aom_sad8x16x3_c;
+ if (flags & HAS_SSE3) aom_sad8x16x3 = aom_sad8x16x3_sse3;
+ aom_sad8x16x8 = aom_sad8x16x8_c;
+ if (flags & HAS_SSE4_1) aom_sad8x16x8 = aom_sad8x16x8_sse4_1;
+ aom_sad8x8x3 = aom_sad8x8x3_c;
+ if (flags & HAS_SSE3) aom_sad8x8x3 = aom_sad8x8x3_sse3;
+ aom_sad8x8x8 = aom_sad8x8x8_c;
+ if (flags & HAS_SSE4_1) aom_sad8x8x8 = aom_sad8x8x8_sse4_1;
+ aom_scaled_2d = aom_scaled_2d_c;
+ if (flags & HAS_SSSE3) aom_scaled_2d = aom_scaled_2d_ssse3;
+ aom_smooth_predictor_16x16 = aom_smooth_predictor_16x16_c;
+ if (flags & HAS_SSSE3) aom_smooth_predictor_16x16 = aom_smooth_predictor_16x16_ssse3;
+ aom_smooth_predictor_16x32 = aom_smooth_predictor_16x32_c;
+ if (flags & HAS_SSSE3) aom_smooth_predictor_16x32 = aom_smooth_predictor_16x32_ssse3;
+ aom_smooth_predictor_16x8 = aom_smooth_predictor_16x8_c;
+ if (flags & HAS_SSSE3) aom_smooth_predictor_16x8 = aom_smooth_predictor_16x8_ssse3;
+ aom_smooth_predictor_32x16 = aom_smooth_predictor_32x16_c;
+ if (flags & HAS_SSSE3) aom_smooth_predictor_32x16 = aom_smooth_predictor_32x16_ssse3;
+ aom_smooth_predictor_32x32 = aom_smooth_predictor_32x32_c;
+ if (flags & HAS_SSSE3) aom_smooth_predictor_32x32 = aom_smooth_predictor_32x32_ssse3;
+ aom_smooth_predictor_4x4 = aom_smooth_predictor_4x4_c;
+ if (flags & HAS_SSSE3) aom_smooth_predictor_4x4 = aom_smooth_predictor_4x4_ssse3;
+ aom_smooth_predictor_4x8 = aom_smooth_predictor_4x8_c;
+ if (flags & HAS_SSSE3) aom_smooth_predictor_4x8 = aom_smooth_predictor_4x8_ssse3;
+ aom_smooth_predictor_8x16 = aom_smooth_predictor_8x16_c;
+ if (flags & HAS_SSSE3) aom_smooth_predictor_8x16 = aom_smooth_predictor_8x16_ssse3;
+ aom_smooth_predictor_8x4 = aom_smooth_predictor_8x4_c;
+ if (flags & HAS_SSSE3) aom_smooth_predictor_8x4 = aom_smooth_predictor_8x4_ssse3;
+ aom_smooth_predictor_8x8 = aom_smooth_predictor_8x8_c;
+ if (flags & HAS_SSSE3) aom_smooth_predictor_8x8 = aom_smooth_predictor_8x8_ssse3;
+ aom_sub_pixel_avg_variance16x16 = aom_sub_pixel_avg_variance16x16_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance16x16 = aom_sub_pixel_avg_variance16x16_ssse3;
+ aom_sub_pixel_avg_variance16x32 = aom_sub_pixel_avg_variance16x32_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance16x32 = aom_sub_pixel_avg_variance16x32_ssse3;
+ aom_sub_pixel_avg_variance16x8 = aom_sub_pixel_avg_variance16x8_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance16x8 = aom_sub_pixel_avg_variance16x8_ssse3;
+ aom_sub_pixel_avg_variance32x16 = aom_sub_pixel_avg_variance32x16_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance32x16 = aom_sub_pixel_avg_variance32x16_ssse3;
+ aom_sub_pixel_avg_variance32x32 = aom_sub_pixel_avg_variance32x32_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance32x32 = aom_sub_pixel_avg_variance32x32_ssse3;
+ if (flags & HAS_AVX2) aom_sub_pixel_avg_variance32x32 = aom_sub_pixel_avg_variance32x32_avx2;
+ aom_sub_pixel_avg_variance32x64 = aom_sub_pixel_avg_variance32x64_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance32x64 = aom_sub_pixel_avg_variance32x64_ssse3;
+ aom_sub_pixel_avg_variance4x4 = aom_sub_pixel_avg_variance4x4_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance4x4 = aom_sub_pixel_avg_variance4x4_ssse3;
+ aom_sub_pixel_avg_variance4x8 = aom_sub_pixel_avg_variance4x8_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance4x8 = aom_sub_pixel_avg_variance4x8_ssse3;
+ aom_sub_pixel_avg_variance64x32 = aom_sub_pixel_avg_variance64x32_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance64x32 = aom_sub_pixel_avg_variance64x32_ssse3;
+ aom_sub_pixel_avg_variance64x64 = aom_sub_pixel_avg_variance64x64_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance64x64 = aom_sub_pixel_avg_variance64x64_ssse3;
+ if (flags & HAS_AVX2) aom_sub_pixel_avg_variance64x64 = aom_sub_pixel_avg_variance64x64_avx2;
+ aom_sub_pixel_avg_variance8x16 = aom_sub_pixel_avg_variance8x16_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance8x16 = aom_sub_pixel_avg_variance8x16_ssse3;
+ aom_sub_pixel_avg_variance8x4 = aom_sub_pixel_avg_variance8x4_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance8x4 = aom_sub_pixel_avg_variance8x4_ssse3;
+ aom_sub_pixel_avg_variance8x8 = aom_sub_pixel_avg_variance8x8_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_avg_variance8x8 = aom_sub_pixel_avg_variance8x8_ssse3;
+ aom_sub_pixel_variance16x16 = aom_sub_pixel_variance16x16_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance16x16 = aom_sub_pixel_variance16x16_ssse3;
+ aom_sub_pixel_variance16x32 = aom_sub_pixel_variance16x32_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance16x32 = aom_sub_pixel_variance16x32_ssse3;
+ aom_sub_pixel_variance16x8 = aom_sub_pixel_variance16x8_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance16x8 = aom_sub_pixel_variance16x8_ssse3;
+ aom_sub_pixel_variance32x16 = aom_sub_pixel_variance32x16_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance32x16 = aom_sub_pixel_variance32x16_ssse3;
+ aom_sub_pixel_variance32x32 = aom_sub_pixel_variance32x32_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance32x32 = aom_sub_pixel_variance32x32_ssse3;
+ if (flags & HAS_AVX2) aom_sub_pixel_variance32x32 = aom_sub_pixel_variance32x32_avx2;
+ aom_sub_pixel_variance32x64 = aom_sub_pixel_variance32x64_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance32x64 = aom_sub_pixel_variance32x64_ssse3;
+ aom_sub_pixel_variance4x4 = aom_sub_pixel_variance4x4_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance4x4 = aom_sub_pixel_variance4x4_ssse3;
+ aom_sub_pixel_variance4x8 = aom_sub_pixel_variance4x8_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance4x8 = aom_sub_pixel_variance4x8_ssse3;
+ aom_sub_pixel_variance64x32 = aom_sub_pixel_variance64x32_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance64x32 = aom_sub_pixel_variance64x32_ssse3;
+ aom_sub_pixel_variance64x64 = aom_sub_pixel_variance64x64_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance64x64 = aom_sub_pixel_variance64x64_ssse3;
+ if (flags & HAS_AVX2) aom_sub_pixel_variance64x64 = aom_sub_pixel_variance64x64_avx2;
+ aom_sub_pixel_variance8x16 = aom_sub_pixel_variance8x16_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance8x16 = aom_sub_pixel_variance8x16_ssse3;
+ aom_sub_pixel_variance8x4 = aom_sub_pixel_variance8x4_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance8x4 = aom_sub_pixel_variance8x4_ssse3;
+ aom_sub_pixel_variance8x8 = aom_sub_pixel_variance8x8_sse2;
+ if (flags & HAS_SSSE3) aom_sub_pixel_variance8x8 = aom_sub_pixel_variance8x8_ssse3;
+ aom_v_predictor_32x16 = aom_v_predictor_32x16_sse2;
+ if (flags & HAS_AVX2) aom_v_predictor_32x16 = aom_v_predictor_32x16_avx2;
+ aom_v_predictor_32x32 = aom_v_predictor_32x32_sse2;
+ if (flags & HAS_AVX2) aom_v_predictor_32x32 = aom_v_predictor_32x32_avx2;
+ aom_variance16x16 = aom_variance16x16_sse2;
+ if (flags & HAS_AVX2) aom_variance16x16 = aom_variance16x16_avx2;
+ aom_variance32x16 = aom_variance32x16_sse2;
+ if (flags & HAS_AVX2) aom_variance32x16 = aom_variance32x16_avx2;
+ aom_variance32x32 = aom_variance32x32_sse2;
+ if (flags & HAS_AVX2) aom_variance32x32 = aom_variance32x32_avx2;
+ aom_variance64x32 = aom_variance64x32_sse2;
+ if (flags & HAS_AVX2) aom_variance64x32 = aom_variance64x32_avx2;
+ aom_variance64x64 = aom_variance64x64_sse2;
+ if (flags & HAS_AVX2) aom_variance64x64 = aom_variance64x64_avx2;
+}
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif
diff --git a/media/libaom/config/win/mingw64/aom_scale_rtcd.h b/media/libaom/config/win/mingw64/aom_scale_rtcd.h
new file mode 100644
index 000000000000..62f079065dc9
--- /dev/null
+++ b/media/libaom/config/win/mingw64/aom_scale_rtcd.h
@@ -0,0 +1,78 @@
+#ifndef AOM_SCALE_RTCD_H_
+#define AOM_SCALE_RTCD_H_
+
+#ifdef RTCD_C
+#define RTCD_EXTERN
+#else
+#define RTCD_EXTERN extern
+#endif
+
+struct yv12_buffer_config;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf);
+#define aom_extend_frame_borders aom_extend_frame_borders_c
+
+void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf);
+#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c
+
+void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf);
+#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c
+
+void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
+#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c
+
+void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
+#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c
+
+void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
+#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c
+
+void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
+#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c
+
+void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
+#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c
+
+void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
+#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c
+
+void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width);
+#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c
+
+void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
+#define aom_yv12_copy_frame aom_yv12_copy_frame_c
+
+void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
+#define aom_yv12_copy_u aom_yv12_copy_u_c
+
+void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc);
+#define aom_yv12_copy_v aom_yv12_copy_v_c
+
+void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
+#define aom_yv12_copy_y aom_yv12_copy_y_c
+
+void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf);
+#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c
+
+void aom_scale_rtcd(void);
+
+#ifdef RTCD_C
+#include "aom_ports/x86.h"
+static void setup_rtcd_internal(void)
+{
+ int flags = x86_simd_caps();
+
+ (void)flags;
+
+}
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif
diff --git a/media/libaom/config/win/mingw64/av1_rtcd.h b/media/libaom/config/win/mingw64/av1_rtcd.h
new file mode 100644
index 000000000000..66c0349aa9b1
--- /dev/null
+++ b/media/libaom/config/win/mingw64/av1_rtcd.h
@@ -0,0 +1,590 @@
+#ifndef AOM_RTCD_H_
+#define AOM_RTCD_H_
+
+#ifdef RTCD_C
+#define RTCD_EXTERN
+#else
+#define RTCD_EXTERN extern
+#endif
+
+/*
+ * AV1
+ */
+
+#include "aom/aom_integer.h"
+#include "aom_dsp/txfm_common.h"
+#include "av1/common/common.h"
+#include "av1/common/enums.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/filter.h"
+#include "av1/common/convolve.h"
+#include "av1/common/av1_txfm.h"
+#include "av1/common/odintrin.h"
+
+struct macroblockd;
+
+/* Encoder forward decls */
+struct macroblock;
+struct txfm_param;
+struct aom_variance_vtable;
+struct search_site_config;
+struct mv;
+union int_mv;
+struct yv12_buffer_config;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void apply_selfguided_restoration_c(uint8_t *dat, int width, int height, int stride, int eps, int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf);
+void apply_selfguided_restoration_sse4_1(uint8_t *dat, int width, int height, int stride, int eps, int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf);
+RTCD_EXTERN void (*apply_selfguided_restoration)(uint8_t *dat, int width, int height, int stride, int eps, int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf);
+
+void apply_selfguided_restoration_highbd_c(uint16_t *dat, int width, int height, int stride, int bit_depth, int eps, int *xqd, uint16_t *dst, int dst_stride, int32_t *tmpbuf);
+void apply_selfguided_restoration_highbd_sse4_1(uint16_t *dat, int width, int height, int stride, int bit_depth, int eps, int *xqd, uint16_t *dst, int dst_stride, int32_t *tmpbuf);
+RTCD_EXTERN void (*apply_selfguided_restoration_highbd)(uint16_t *dat, int width, int height, int stride, int bit_depth, int eps, int *xqd, uint16_t *dst, int dst_stride, int32_t *tmpbuf);
+
+int64_t av1_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
+int64_t av1_block_error_avx2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
+RTCD_EXTERN int64_t (*av1_block_error)(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
+
+void av1_convolve_2d_c(const uint8_t *src, int src_stride, CONV_BUF_TYPE *dst, int dst_stride, int w, int h, InterpFilterParams *filter_params_x, InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
+void av1_convolve_2d_sse2(const uint8_t *src, int src_stride, CONV_BUF_TYPE *dst, int dst_stride, int w, int h, InterpFilterParams *filter_params_x, InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params);
+#define av1_convolve_2d av1_convolve_2d_sse2
+
+void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, CONV_BUF_TYPE *dst, int dst_stride, int w, int h, InterpFilterParams *filter_params_x, InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_q4, const int y_step_qn, ConvolveParams *conv_params);
+void av1_convolve_2d_scale_sse4_1(const uint8_t *src, int src_stride, CONV_BUF_TYPE *dst, int dst_stride, int w, int h, InterpFilterParams *filter_params_x, InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_q4, const int y_step_qn, ConvolveParams *conv_params);
+RTCD_EXTERN void (*av1_convolve_2d_scale)(const uint8_t *src, int src_stride, CONV_BUF_TYPE *dst, int dst_stride, int w, int h, InterpFilterParams *filter_params_x, InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_q4, const int y_step_qn, ConvolveParams *conv_params);
+
+void av1_convolve_horiz_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
+void av1_convolve_horiz_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
+RTCD_EXTERN void (*av1_convolve_horiz)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
+
+void av1_convolve_rounding_c(const int32_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, int bits);
+void av1_convolve_rounding_avx2(const int32_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, int bits);
+RTCD_EXTERN void (*av1_convolve_rounding)(const int32_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, int bits);
+
+void av1_convolve_vert_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
+void av1_convolve_vert_ssse3(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
+RTCD_EXTERN void (*av1_convolve_vert)(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, ConvolveParams *conv_params);
+
+int av1_diamond_search_sad_c(struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv);
+#define av1_diamond_search_sad av1_diamond_search_sad_c
+
+void av1_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht16x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht16x16_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+RTCD_EXTERN void (*av1_fht16x16)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+
+void av1_fht16x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht16x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht16x32 av1_fht16x32_sse2
+
+void av1_fht16x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht16x4 av1_fht16x4_c
+
+void av1_fht16x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht16x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht16x8 av1_fht16x8_sse2
+
+void av1_fht32x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht32x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht32x16 av1_fht32x16_sse2
+
+void av1_fht32x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht32x32_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht32x32_avx2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+RTCD_EXTERN void (*av1_fht32x32)(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+
+void av1_fht32x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht32x8 av1_fht32x8_c
+
+void av1_fht4x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht4x16 av1_fht4x16_c
+
+void av1_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht4x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht4x4 av1_fht4x4_sse2
+
+void av1_fht4x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht4x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht4x8 av1_fht4x8_sse2
+
+void av1_fht8x16_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht8x16_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht8x16 av1_fht8x16_sse2
+
+void av1_fht8x32_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht8x32 av1_fht8x32_c
+
+void av1_fht8x4_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht8x4_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht8x4 av1_fht8x4_sse2
+
+void av1_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+void av1_fht8x8_sse2(const int16_t *input, tran_low_t *output, int stride, struct txfm_param *param);
+#define av1_fht8x8 av1_fht8x8_sse2
+
+void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength);
+void av1_filter_intra_edge_sse4_1(uint8_t *p, int sz, int strength);
+RTCD_EXTERN void (*av1_filter_intra_edge)(uint8_t *p, int sz, int strength);
+
+void av1_filter_intra_edge_high_c(uint16_t *p, int sz, int strength);
+void av1_filter_intra_edge_high_sse4_1(uint16_t *p, int sz, int strength);
+RTCD_EXTERN void (*av1_filter_intra_edge_high)(uint16_t *p, int sz, int strength);
+
+int av1_full_range_search_c(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv);
+#define av1_full_range_search av1_full_range_search_c
+
+int av1_full_search_sad_c(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
+int av1_full_search_sadx3(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
+int av1_full_search_sadx8(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
+RTCD_EXTERN int (*av1_full_search_sad)(const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct aom_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv);
+
+void av1_fwd_idtx_c(const int16_t *src_diff, tran_low_t *coeff, int stride, int bsx, int bsy, TX_TYPE tx_type);
+#define av1_fwd_idtx av1_fwd_idtx_c
+
+void av1_fwd_txfm2d_16x16_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+void av1_fwd_txfm2d_16x16_sse4_1(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+RTCD_EXTERN void (*av1_fwd_txfm2d_16x16)(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+
+void av1_fwd_txfm2d_16x32_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c
+
+void av1_fwd_txfm2d_16x8_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c
+
+void av1_fwd_txfm2d_32x16_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c
+
+void av1_fwd_txfm2d_32x32_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+void av1_fwd_txfm2d_32x32_sse4_1(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+RTCD_EXTERN void (*av1_fwd_txfm2d_32x32)(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+
+void av1_fwd_txfm2d_4x4_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+void av1_fwd_txfm2d_4x4_sse4_1(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+RTCD_EXTERN void (*av1_fwd_txfm2d_4x4)(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+
+void av1_fwd_txfm2d_4x8_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c
+
+void av1_fwd_txfm2d_8x16_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c
+
+void av1_fwd_txfm2d_8x4_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c
+
+void av1_fwd_txfm2d_8x8_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+void av1_fwd_txfm2d_8x8_sse4_1(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+RTCD_EXTERN void (*av1_fwd_txfm2d_8x8)(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd);
+
+void av1_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
+#define av1_fwht4x4 av1_fwht4x4_c
+
+int64_t av1_highbd_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz, int bd);
+int64_t av1_highbd_block_error_sse2(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz, int bd);
+#define av1_highbd_block_error av1_highbd_block_error_sse2
+
+void av1_highbd_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void av1_highbd_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define av1_highbd_convolve8 av1_highbd_convolve8_sse2
+
+void av1_highbd_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void av1_highbd_convolve8_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define av1_highbd_convolve8_avg av1_highbd_convolve8_avg_sse2
+
+void av1_highbd_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void av1_highbd_convolve8_avg_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define av1_highbd_convolve8_avg_horiz av1_highbd_convolve8_avg_horiz_sse2
+
+void av1_highbd_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void av1_highbd_convolve8_avg_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define av1_highbd_convolve8_avg_vert av1_highbd_convolve8_avg_vert_sse2
+
+void av1_highbd_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void av1_highbd_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_sse2
+
+void av1_highbd_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+void av1_highbd_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_sse2
+
+void av1_highbd_convolve_2d_c(const uint16_t *src, int src_stride, CONV_BUF_TYPE *dst, int dst_stride, int w, int h, InterpFilterParams *filter_params_x, InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
+void av1_highbd_convolve_2d_ssse3(const uint16_t *src, int src_stride, CONV_BUF_TYPE *dst, int dst_stride, int w, int h, InterpFilterParams *filter_params_x, InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
+RTCD_EXTERN void (*av1_highbd_convolve_2d)(const uint16_t *src, int src_stride, CONV_BUF_TYPE *dst, int dst_stride, int w, int h, InterpFilterParams *filter_params_x, InterpFilterParams *filter_params_y, const int subpel_x_q4, const int subpel_y_q4, ConvolveParams *conv_params, int bd);
+
+void av1_highbd_convolve_2d_scale_c(const uint16_t *src, int src_stride, CONV_BUF_TYPE *dst, int dst_stride, int w, int h, InterpFilterParams *filter_params_x, InterpFilterParams *filter_params_y, const int subpel_x_q4, const int x_step_qn, const int subpel_y_q4, const int y_step_qn, ConvolveParams *conv_params, int bd);
+void av1_highbd_convolve_2d_scale_sse4_1(const uint16_t *src, int src_stride, CONV_BUF_TYPE *dst, int dst_stride, int w, int h, InterpFilterParams *filter_params_x, InterpFilterParams *filter_params_y, const int subpel_x_q4, const int x_step_qn, const int subpel_y_q4, const int y_step_qn, ConvolveParams *conv_params, int bd);
+RTCD_EXTERN void (*av1_highbd_convolve_2d_scale)(const uint16_t *src, int src_stride, CONV_BUF_TYPE *dst, int dst_stride, int w, int h, InterpFilterParams *filter_params_x, InterpFilterParams *filter_params_y, const int subpel_x_q4, const int x_step_qn, const int subpel_y_q4, const int y_step_qn, ConvolveParams *conv_params, int bd);
+
+void av1_highbd_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c
+
+void av1_highbd_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps);
+#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c
+
+void av1_highbd_convolve_horiz_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
+void av1_highbd_convolve_horiz_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
+RTCD_EXTERN void (*av1_highbd_convolve_horiz)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
+
+void av1_highbd_convolve_init_c(void);
+void av1_highbd_convolve_init_sse4_1(void);
+RTCD_EXTERN void (*av1_highbd_convolve_init)(void);
+
+void av1_highbd_convolve_rounding_c(const int32_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, int bits, int bd);
+void av1_highbd_convolve_rounding_avx2(const int32_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, int bits, int bd);
+RTCD_EXTERN void (*av1_highbd_convolve_rounding)(const int32_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, int bits, int bd);
+
+void av1_highbd_convolve_vert_c(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
+void av1_highbd_convolve_vert_sse4_1(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
+RTCD_EXTERN void (*av1_highbd_convolve_vert)(const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams fp, const int subpel_x_q4, int x_step_q4, int avg, int bd);
+
+void av1_highbd_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
+#define av1_highbd_fwht4x4 av1_highbd_fwht4x4_c
+
+void av1_highbd_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
+#define av1_highbd_iht16x16_256_add av1_highbd_iht16x16_256_add_c
+
+void av1_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht16x32_512_add av1_highbd_iht16x32_512_add_c
+
+void av1_highbd_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht16x4_64_add av1_highbd_iht16x4_64_add_c
+
+void av1_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht16x8_128_add av1_highbd_iht16x8_128_add_c
+
+void av1_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht32x16_512_add av1_highbd_iht32x16_512_add_c
+
+void av1_highbd_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht32x8_256_add av1_highbd_iht32x8_256_add_c
+
+void av1_highbd_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht4x16_64_add av1_highbd_iht4x16_64_add_c
+
+void av1_highbd_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht4x4_16_add av1_highbd_iht4x4_16_add_c
+
+void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht4x8_32_add av1_highbd_iht4x8_32_add_c
+
+void av1_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht8x16_128_add av1_highbd_iht8x16_128_add_c
+
+void av1_highbd_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht8x32_256_add av1_highbd_iht8x32_256_add_c
+
+void av1_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht8x4_32_add av1_highbd_iht8x4_32_add_c
+
+void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_highbd_iht8x8_64_add av1_highbd_iht8x8_64_add_c
+
+void av1_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
+void av1_highbd_quantize_fp_sse4_1(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
+void av1_highbd_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
+RTCD_EXTERN void (*av1_highbd_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, int log_scale);
+
+void av1_highbd_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
+#define av1_highbd_temporal_filter_apply av1_highbd_temporal_filter_apply_c
+
+void av1_highbd_warp_affine_c(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
+void av1_highbd_warp_affine_ssse3(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
+RTCD_EXTERN void (*av1_highbd_warp_affine)(const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
+
+void av1_highpass_filter_c(uint8_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int r, int eps);
+void av1_highpass_filter_sse4_1(uint8_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int r, int eps);
+RTCD_EXTERN void (*av1_highpass_filter)(uint8_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int r, int eps);
+
+void av1_highpass_filter_highbd_c(uint16_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int r, int eps);
+void av1_highpass_filter_highbd_sse4_1(uint16_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int r, int eps);
+RTCD_EXTERN void (*av1_highpass_filter_highbd)(uint16_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int r, int eps);
+
+void av1_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
+void av1_iht16x16_256_add_sse2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
+void av1_iht16x16_256_add_avx2(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
+RTCD_EXTERN void (*av1_iht16x16_256_add)(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
+
+void av1_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+void av1_iht16x32_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht16x32_512_add av1_iht16x32_512_add_sse2
+
+void av1_iht16x4_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht16x4_64_add av1_iht16x4_64_add_c
+
+void av1_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+void av1_iht16x8_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht16x8_128_add av1_iht16x8_128_add_sse2
+
+void av1_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+void av1_iht32x16_512_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht32x16_512_add av1_iht32x16_512_add_sse2
+
+void av1_iht32x32_1024_add_c(const tran_low_t *input, uint8_t *output, int pitch, const struct txfm_param *param);
+#define av1_iht32x32_1024_add av1_iht32x32_1024_add_c
+
+void av1_iht32x8_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht32x8_256_add av1_iht32x8_256_add_c
+
+void av1_iht4x16_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht4x16_64_add av1_iht4x16_64_add_c
+
+void av1_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+void av1_iht4x4_16_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht4x4_16_add av1_iht4x4_16_add_sse2
+
+void av1_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+void av1_iht4x8_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht4x8_32_add av1_iht4x8_32_add_sse2
+
+void av1_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+void av1_iht8x16_128_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht8x16_128_add av1_iht8x16_128_add_sse2
+
+void av1_iht8x32_256_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht8x32_256_add av1_iht8x32_256_add_c
+
+void av1_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+void av1_iht8x4_32_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht8x4_32_add av1_iht8x4_32_add_sse2
+
+void av1_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+void av1_iht8x8_64_add_sse2(const tran_low_t *input, uint8_t *dest, int dest_stride, const struct txfm_param *param);
+#define av1_iht8x8_64_add av1_iht8x8_64_add_sse2
+
+void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+void av1_inv_txfm2d_add_16x16_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+RTCD_EXTERN void (*av1_inv_txfm2d_add_16x16)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+
+void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c
+
+void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c
+
+void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c
+
+void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+void av1_inv_txfm2d_add_32x32_avx2(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+RTCD_EXTERN void (*av1_inv_txfm2d_add_32x32)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+
+void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+void av1_inv_txfm2d_add_4x4_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+RTCD_EXTERN void (*av1_inv_txfm2d_add_4x4)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+
+void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c
+
+void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c
+
+void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c
+
+void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+void av1_inv_txfm2d_add_8x8_sse4_1(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+RTCD_EXTERN void (*av1_inv_txfm2d_add_8x8)(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd);
+
+void av1_lowbd_convolve_init_c(void);
+void av1_lowbd_convolve_init_ssse3(void);
+RTCD_EXTERN void (*av1_lowbd_convolve_init)(void);
+
+void av1_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t * qm_ptr, const qm_val_t * iqm_ptr, int log_scale);
+#define av1_quantize_b av1_quantize_b_c
+
+void av1_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void av1_quantize_fp_sse2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void av1_quantize_fp_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*av1_quantize_fp)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void av1_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+void av1_quantize_fp_32x32_avx2(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+RTCD_EXTERN void (*av1_quantize_fp_32x32)(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
+
+void av1_selfguided_restoration_c(uint8_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int r, int eps);
+void av1_selfguided_restoration_sse4_1(uint8_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int r, int eps);
+RTCD_EXTERN void (*av1_selfguided_restoration)(uint8_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int r, int eps);
+
+void av1_selfguided_restoration_highbd_c(uint16_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int bit_depth, int r, int eps);
+void av1_selfguided_restoration_highbd_sse4_1(uint16_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int bit_depth, int r, int eps);
+RTCD_EXTERN void (*av1_selfguided_restoration_highbd)(uint16_t *dgd, int width, int height, int stride, int32_t *dst, int dst_stride, int bit_depth, int r, int eps);
+
+void av1_temporal_filter_apply_c(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
+void av1_temporal_filter_apply_sse2(uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count);
+#define av1_temporal_filter_apply av1_temporal_filter_apply_sse2
+
+void av1_upsample_intra_edge_c(uint8_t *p, int sz);
+void av1_upsample_intra_edge_sse4_1(uint8_t *p, int sz);
+RTCD_EXTERN void (*av1_upsample_intra_edge)(uint8_t *p, int sz);
+
+void av1_upsample_intra_edge_high_c(uint16_t *p, int sz, int bd);
+void av1_upsample_intra_edge_high_sse4_1(uint16_t *p, int sz, int bd);
+RTCD_EXTERN void (*av1_upsample_intra_edge_high)(uint16_t *p, int sz, int bd);
+
+void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
+void av1_warp_affine_sse2(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
+void av1_warp_affine_ssse3(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
+RTCD_EXTERN void (*av1_warp_affine)(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta);
+
+void av1_wedge_compute_delta_squares_c(int16_t *d, const int16_t *a, const int16_t *b, int N);
+void av1_wedge_compute_delta_squares_sse2(int16_t *d, const int16_t *a, const int16_t *b, int N);
+#define av1_wedge_compute_delta_squares av1_wedge_compute_delta_squares_sse2
+
+int av1_wedge_sign_from_residuals_c(const int16_t *ds, const uint8_t *m, int N, int64_t limit);
+int av1_wedge_sign_from_residuals_sse2(const int16_t *ds, const uint8_t *m, int N, int64_t limit);
+#define av1_wedge_sign_from_residuals av1_wedge_sign_from_residuals_sse2
+
+uint64_t av1_wedge_sse_from_residuals_c(const int16_t *r1, const int16_t *d, const uint8_t *m, int N);
+uint64_t av1_wedge_sse_from_residuals_sse2(const int16_t *r1, const int16_t *d, const uint8_t *m, int N);
+#define av1_wedge_sse_from_residuals av1_wedge_sse_from_residuals_sse2
+
+void cdef_filter_block_c(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max);
+void cdef_filter_block_sse2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max);
+void cdef_filter_block_ssse3(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max);
+void cdef_filter_block_sse4_1(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max);
+void cdef_filter_block_avx2(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max);
+RTCD_EXTERN void (*cdef_filter_block)(uint8_t *dst8, uint16_t *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int bsize, int max);
+
+int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
+int cdef_find_dir_sse2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
+int cdef_find_dir_ssse3(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
+int cdef_find_dir_sse4_1(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
+int cdef_find_dir_avx2(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
+RTCD_EXTERN int (*cdef_find_dir)(const uint16_t *img, int stride, int32_t *var, int coeff_shift);
+
+double compute_cross_correlation_c(unsigned char *im1, int stride1, int x1, int y1, unsigned char *im2, int stride2, int x2, int y2);
+double compute_cross_correlation_sse4_1(unsigned char *im1, int stride1, int x1, int y1, unsigned char *im2, int stride2, int x2, int y2);
+RTCD_EXTERN double (*compute_cross_correlation)(unsigned char *im1, int stride1, int x1, int y1, unsigned char *im2, int stride2, int x2, int y2);
+
+void copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
+void copy_rect8_16bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
+void copy_rect8_16bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
+void copy_rect8_16bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
+void copy_rect8_16bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
+RTCD_EXTERN void (*copy_rect8_16bit_to_16bit)(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int v, int h);
+
+void copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
+void copy_rect8_8bit_to_16bit_sse2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
+void copy_rect8_8bit_to_16bit_ssse3(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
+void copy_rect8_8bit_to_16bit_sse4_1(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
+void copy_rect8_8bit_to_16bit_avx2(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
+RTCD_EXTERN void (*copy_rect8_8bit_to_16bit)(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int v, int h);
+
+void aom_rtcd(void);
+
+#ifdef RTCD_C
+#include "aom_ports/x86.h"
+static void setup_rtcd_internal(void)
+{
+ int flags = x86_simd_caps();
+
+ (void)flags;
+
+ apply_selfguided_restoration = apply_selfguided_restoration_c;
+ if (flags & HAS_SSE4_1) apply_selfguided_restoration = apply_selfguided_restoration_sse4_1;
+ apply_selfguided_restoration_highbd = apply_selfguided_restoration_highbd_c;
+ if (flags & HAS_SSE4_1) apply_selfguided_restoration_highbd = apply_selfguided_restoration_highbd_sse4_1;
+ av1_block_error = av1_block_error_c;
+ if (flags & HAS_AVX2) av1_block_error = av1_block_error_avx2;
+ av1_convolve_2d_scale = av1_convolve_2d_scale_c;
+ if (flags & HAS_SSE4_1) av1_convolve_2d_scale = av1_convolve_2d_scale_sse4_1;
+ av1_convolve_horiz = av1_convolve_horiz_c;
+ if (flags & HAS_SSSE3) av1_convolve_horiz = av1_convolve_horiz_ssse3;
+ av1_convolve_rounding = av1_convolve_rounding_c;
+ if (flags & HAS_AVX2) av1_convolve_rounding = av1_convolve_rounding_avx2;
+ av1_convolve_vert = av1_convolve_vert_c;
+ if (flags & HAS_SSSE3) av1_convolve_vert = av1_convolve_vert_ssse3;
+ av1_fht16x16 = av1_fht16x16_sse2;
+ if (flags & HAS_AVX2) av1_fht16x16 = av1_fht16x16_avx2;
+ av1_fht32x32 = av1_fht32x32_sse2;
+ if (flags & HAS_AVX2) av1_fht32x32 = av1_fht32x32_avx2;
+ av1_filter_intra_edge = av1_filter_intra_edge_c;
+ if (flags & HAS_SSE4_1) av1_filter_intra_edge = av1_filter_intra_edge_sse4_1;
+ av1_filter_intra_edge_high = av1_filter_intra_edge_high_c;
+ if (flags & HAS_SSE4_1) av1_filter_intra_edge_high = av1_filter_intra_edge_high_sse4_1;
+ av1_full_search_sad = av1_full_search_sad_c;
+ if (flags & HAS_SSE3) av1_full_search_sad = av1_full_search_sadx3;
+ if (flags & HAS_SSE4_1) av1_full_search_sad = av1_full_search_sadx8;
+ av1_fwd_txfm2d_16x16 = av1_fwd_txfm2d_16x16_c;
+ if (flags & HAS_SSE4_1) av1_fwd_txfm2d_16x16 = av1_fwd_txfm2d_16x16_sse4_1;
+ av1_fwd_txfm2d_32x32 = av1_fwd_txfm2d_32x32_c;
+ if (flags & HAS_SSE4_1) av1_fwd_txfm2d_32x32 = av1_fwd_txfm2d_32x32_sse4_1;
+ av1_fwd_txfm2d_4x4 = av1_fwd_txfm2d_4x4_c;
+ if (flags & HAS_SSE4_1) av1_fwd_txfm2d_4x4 = av1_fwd_txfm2d_4x4_sse4_1;
+ av1_fwd_txfm2d_8x8 = av1_fwd_txfm2d_8x8_c;
+ if (flags & HAS_SSE4_1) av1_fwd_txfm2d_8x8 = av1_fwd_txfm2d_8x8_sse4_1;
+ av1_highbd_convolve_2d = av1_highbd_convolve_2d_c;
+ if (flags & HAS_SSSE3) av1_highbd_convolve_2d = av1_highbd_convolve_2d_ssse3;
+ av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_c;
+ if (flags & HAS_SSE4_1) av1_highbd_convolve_2d_scale = av1_highbd_convolve_2d_scale_sse4_1;
+ av1_highbd_convolve_horiz = av1_highbd_convolve_horiz_c;
+ if (flags & HAS_SSE4_1) av1_highbd_convolve_horiz = av1_highbd_convolve_horiz_sse4_1;
+ av1_highbd_convolve_init = av1_highbd_convolve_init_c;
+ if (flags & HAS_SSE4_1) av1_highbd_convolve_init = av1_highbd_convolve_init_sse4_1;
+ av1_highbd_convolve_rounding = av1_highbd_convolve_rounding_c;
+ if (flags & HAS_AVX2) av1_highbd_convolve_rounding = av1_highbd_convolve_rounding_avx2;
+ av1_highbd_convolve_vert = av1_highbd_convolve_vert_c;
+ if (flags & HAS_SSE4_1) av1_highbd_convolve_vert = av1_highbd_convolve_vert_sse4_1;
+ av1_highbd_quantize_fp = av1_highbd_quantize_fp_c;
+ if (flags & HAS_SSE4_1) av1_highbd_quantize_fp = av1_highbd_quantize_fp_sse4_1;
+ if (flags & HAS_AVX2) av1_highbd_quantize_fp = av1_highbd_quantize_fp_avx2;
+ av1_highbd_warp_affine = av1_highbd_warp_affine_c;
+ if (flags & HAS_SSSE3) av1_highbd_warp_affine = av1_highbd_warp_affine_ssse3;
+ av1_highpass_filter = av1_highpass_filter_c;
+ if (flags & HAS_SSE4_1) av1_highpass_filter = av1_highpass_filter_sse4_1;
+ av1_highpass_filter_highbd = av1_highpass_filter_highbd_c;
+ if (flags & HAS_SSE4_1) av1_highpass_filter_highbd = av1_highpass_filter_highbd_sse4_1;
+ av1_iht16x16_256_add = av1_iht16x16_256_add_sse2;
+ if (flags & HAS_AVX2) av1_iht16x16_256_add = av1_iht16x16_256_add_avx2;
+ av1_inv_txfm2d_add_16x16 = av1_inv_txfm2d_add_16x16_c;
+ if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_16x16 = av1_inv_txfm2d_add_16x16_sse4_1;
+ av1_inv_txfm2d_add_32x32 = av1_inv_txfm2d_add_32x32_c;
+ if (flags & HAS_AVX2) av1_inv_txfm2d_add_32x32 = av1_inv_txfm2d_add_32x32_avx2;
+ av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_c;
+ if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_4x4 = av1_inv_txfm2d_add_4x4_sse4_1;
+ av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_c;
+ if (flags & HAS_SSE4_1) av1_inv_txfm2d_add_8x8 = av1_inv_txfm2d_add_8x8_sse4_1;
+ av1_lowbd_convolve_init = av1_lowbd_convolve_init_c;
+ if (flags & HAS_SSSE3) av1_lowbd_convolve_init = av1_lowbd_convolve_init_ssse3;
+ av1_quantize_fp = av1_quantize_fp_sse2;
+ if (flags & HAS_AVX2) av1_quantize_fp = av1_quantize_fp_avx2;
+ av1_quantize_fp_32x32 = av1_quantize_fp_32x32_c;
+ if (flags & HAS_AVX2) av1_quantize_fp_32x32 = av1_quantize_fp_32x32_avx2;
+ av1_selfguided_restoration = av1_selfguided_restoration_c;
+ if (flags & HAS_SSE4_1) av1_selfguided_restoration = av1_selfguided_restoration_sse4_1;
+ av1_selfguided_restoration_highbd = av1_selfguided_restoration_highbd_c;
+ if (flags & HAS_SSE4_1) av1_selfguided_restoration_highbd = av1_selfguided_restoration_highbd_sse4_1;
+ av1_upsample_intra_edge = av1_upsample_intra_edge_c;
+ if (flags & HAS_SSE4_1) av1_upsample_intra_edge = av1_upsample_intra_edge_sse4_1;
+ av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_c;
+ if (flags & HAS_SSE4_1) av1_upsample_intra_edge_high = av1_upsample_intra_edge_high_sse4_1;
+ av1_warp_affine = av1_warp_affine_sse2;
+ if (flags & HAS_SSSE3) av1_warp_affine = av1_warp_affine_ssse3;
+ cdef_filter_block = cdef_filter_block_sse2;
+ if (flags & HAS_SSSE3) cdef_filter_block = cdef_filter_block_ssse3;
+ if (flags & HAS_SSE4_1) cdef_filter_block = cdef_filter_block_sse4_1;
+ if (flags & HAS_AVX2) cdef_filter_block = cdef_filter_block_avx2;
+ cdef_find_dir = cdef_find_dir_sse2;
+ if (flags & HAS_SSSE3) cdef_find_dir = cdef_find_dir_ssse3;
+ if (flags & HAS_SSE4_1) cdef_find_dir = cdef_find_dir_sse4_1;
+ if (flags & HAS_AVX2) cdef_find_dir = cdef_find_dir_avx2;
+ compute_cross_correlation = compute_cross_correlation_c;
+ if (flags & HAS_SSE4_1) compute_cross_correlation = compute_cross_correlation_sse4_1;
+ copy_rect8_16bit_to_16bit = copy_rect8_16bit_to_16bit_sse2;
+ if (flags & HAS_SSSE3) copy_rect8_16bit_to_16bit = copy_rect8_16bit_to_16bit_ssse3;
+ if (flags & HAS_SSE4_1) copy_rect8_16bit_to_16bit = copy_rect8_16bit_to_16bit_sse4_1;
+ if (flags & HAS_AVX2) copy_rect8_16bit_to_16bit = copy_rect8_16bit_to_16bit_avx2;
+ copy_rect8_8bit_to_16bit = copy_rect8_8bit_to_16bit_sse2;
+ if (flags & HAS_SSSE3) copy_rect8_8bit_to_16bit = copy_rect8_8bit_to_16bit_ssse3;
+ if (flags & HAS_SSE4_1) copy_rect8_8bit_to_16bit = copy_rect8_8bit_to_16bit_sse4_1;
+ if (flags & HAS_AVX2) copy_rect8_8bit_to_16bit = copy_rect8_8bit_to_16bit_avx2;
+}
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif
diff --git a/media/libaom/generate_sources_mozbuild.sh b/media/libaom/generate_sources_mozbuild.sh
old mode 100755
new mode 100644
index adf0cace6022..ef50a9503ba8
--- a/media/libaom/generate_sources_mozbuild.sh
+++ b/media/libaom/generate_sources_mozbuild.sh
@@ -199,6 +199,7 @@ gen_config_files mac/x64 "--target=x86_64-darwin9-gcc ${all_platforms} ${x86_pla
gen_config_files win/x64 "--target=x86_64-win64-vs14 ${all_platforms} ${x86_platforms}"
gen_config_files win/ia32 "--target=x86-win32-vs14 ${all_platforms} ${x86_platforms}"
gen_config_files win/mingw32 "--target=x86-win32-gcc ${all_platforms} ${x86_platforms}"
+gen_config_files win/mingw64 "--target=x86_64-win32-gcc ${all_platforms} ${x86_platforms}"
gen_config_files linux/arm "--target=armv7-linux-gcc ${all_platforms} ${arm_platforms}"
@@ -206,7 +207,9 @@ gen_config_files generic "--target=generic-gnu ${all_platforms}"
# AOM doesn't know if mingw32 has winpthreads or not, and doesn't try to detect it.
sed -i 's/HAVE_PTHREAD_H equ 0/HAVE_PTHREAD_H equ 1/' $BASE_DIR/$LIBAOM_CONFIG_DIR/win/mingw32/aom_config.asm
+sed -i 's/HAVE_PTHREAD_H equ 0/HAVE_PTHREAD_H equ 1/' $BASE_DIR/$LIBAOM_CONFIG_DIR/win/mingw64/aom_config.asm
sed -i 's/HAVE_PTHREAD_H 0/HAVE_PTHREAD_H 1/' $BASE_DIR/$LIBAOM_CONFIG_DIR/win/mingw32/aom_config.h
+sed -i 's/HAVE_PTHREAD_H 0/HAVE_PTHREAD_H 1/' $BASE_DIR/$LIBAOM_CONFIG_DIR/win/mingw64/aom_config.h
echo "Remove temporary directory."
@@ -225,6 +228,7 @@ gen_rtcd_header mac/x64 x86_64
gen_rtcd_header win/x64 x86_64
gen_rtcd_header win/ia32 x86
gen_rtcd_header win/mingw32 x86
+gen_rtcd_header win/mingw64 x86_64
gen_rtcd_header linux/arm armv7
diff --git a/media/libaom/moz.build b/media/libaom/moz.build
index ccade2204231..6f64762d4121 100644
--- a/media/libaom/moz.build
+++ b/media/libaom/moz.build
@@ -15,9 +15,14 @@ if CONFIG['CPU_ARCH'] == 'x86_64':
SOURCES += files['X64_SOURCES']
USE_YASM = True
if CONFIG['OS_TARGET'] == 'WINNT':
- ASFLAGS += [ '-I%s/media/libaom/config/win/x64/' % TOPSRCDIR ]
- LOCAL_INCLUDES += [ '/media/libaom/config/win/x64/' ]
- EXPORTS.aom += [ 'config/win/x64/aom_config.h' ]
+ if CONFIG['CC_TYPE'] == 'gcc':
+ ASFLAGS += [ '-I%s/media/libaom/config/win/mingw64/' % TOPSRCDIR ]
+ LOCAL_INCLUDES += [ '/media/libaom/config/win/mingw64/' ]
+ EXPORTS.aom += [ 'config/win/mingw64/aom_config.h' ]
+ else:
+ ASFLAGS += [ '-I%s/media/libaom/config/win/x64/' % TOPSRCDIR ]
+ LOCAL_INCLUDES += [ '/media/libaom/config/win/x64/' ]
+ EXPORTS.aom += [ 'config/win/x64/aom_config.h' ]
elif CONFIG['OS_TARGET'] == 'Darwin':
ASFLAGS += [ '-I%s/media/libaom/config/mac/x64/' % TOPSRCDIR ]
LOCAL_INCLUDES += [ '/media/libaom/config/mac/x64/' ]
1
0

[tor-browser/tor-browser-60.0.1esr-8.0-1] Include <cstring> for memcmp in certverifier/Buffer.cpp
by gk@torproject.org 14 Jun '18
by gk@torproject.org 14 Jun '18
14 Jun '18
commit e65019d6dc6da89219673a9b688092c727ff07a4
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Tue Jun 12 14:58:48 2018 -0400
Include <cstring> for memcmp in certverifier/Buffer.cpp
---
security/certverifier/Buffer.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/security/certverifier/Buffer.cpp b/security/certverifier/Buffer.cpp
index a36bfeabc13f..407d45a41253 100644
--- a/security/certverifier/Buffer.cpp
+++ b/security/certverifier/Buffer.cpp
@@ -5,6 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "Buffer.h"
+#include <cstring>
namespace mozilla {
1
0

[tor-browser/tor-browser-60.0.1esr-8.0-1] Bug 1448748 Disable a bunch of optimized stuff to fix the MinGW x64 Build
by gk@torproject.org 14 Jun '18
by gk@torproject.org 14 Jun '18
14 Jun '18
commit bf1450d9a5dc8d1bd0ee217acb61b7e488333102
Author: Tom Ritter <tom(a)mozilla.com>
Date: Fri Jun 8 13:11:49 2018 -0500
Bug 1448748 Disable a bunch of optimized stuff to fix the MinGW x64 Build
---
security/nss/lib/freebl/freebl.gyp | 6 ------
security/nss/lib/freebl/freebl_base.gypi | 5 +++++
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/security/nss/lib/freebl/freebl.gyp b/security/nss/lib/freebl/freebl.gyp
index fae56f709e86..e4cf2606e050 100644
--- a/security/nss/lib/freebl/freebl.gyp
+++ b/security/nss/lib/freebl/freebl.gyp
@@ -274,12 +274,6 @@
[ 'cc_use_gnu_ld==1 and OS=="win" and target_arch=="x64"', {
'defines': [
'MP_IS_LITTLE_ENDIAN',
- 'NSS_BEVAND_ARCFOUR',
- 'MPI_AMD64',
- 'MP_ASSEMBLY_MULTIPLY',
- 'NSS_USE_COMBA',
- 'USE_HW_AES',
- 'INTEL_GCM',
],
}],
[ 'OS!="win"', {
diff --git a/security/nss/lib/freebl/freebl_base.gypi b/security/nss/lib/freebl/freebl_base.gypi
index ebd1018d8155..63d186fe6e2f 100644
--- a/security/nss/lib/freebl/freebl_base.gypi
+++ b/security/nss/lib/freebl/freebl_base.gypi
@@ -122,6 +122,11 @@
'intel-gcm-x86-masm.asm',
],
}],
+ [ 'cc_use_gnu_ld==1', {
+ # mingw
+ 'sources': [
+ ],
+ }],
[ 'cc_is_clang!=1', {
# MSVC
'sources': [
1
0