Roll src/third_party/libvpx/source/libvpx/ 57f7c6f19..759d1de9d (56 commits)

https://chromium.googlesource.com/webm/libvpx.git/+log/57f7c6f19144..759d1de9d0d2

$ git log 57f7c6f19..759d1de9d --date=short --no-merges --format='%ad %ae %s'
2019-01-08 jianj vp8 dec: Add flag to bring up threads.
2019-01-07 johannkoenig vp8 idct dequant: resolve missing declarations
2019-01-07 johannkoenig vp8 overlaps: resolve missing declaration
2019-01-07 johannkoenig vp9_get_blockiness: resolve missing declaration
2019-01-07 johannkoenig vp8 blend: resolve missing declarations
2019-01-07 johannkoenig vp8_copy32xn: resolve missing declaration
2019-01-07 johannkoenig arm neon: resolve missing declarations
2019-01-07 johannkoenig vpx_filter: resolve missing declarations
2019-01-07 johannkoenig vpx_clear_system_state: resolve missing declaration
2019-01-07 johannkoenig vp9 intra pred test: resolve -Wuninitialized warning
2019-01-07 johannkoenig vp8 multi dimensional search: resolve missing declarations
2019-01-04 kyslov Fix OOB memory access on fuzzed data
2019-01-07 johannkoenig fix vp9 fdct_quant
2019-01-03 urvang VP9 firstpass: Bugfix when mi_col_start/end is odd
2018-12-31 angiebird Increase memory size in non-greedy-mv
2018-12-22 angiebird Build pyramid motion field
2019-01-02 jianj vp9: psnr diff thres for single vs multi threading.
2018-12-21 yunqingwang Adaptively choose block sizes in temporal filtering
2018-12-22 jzern test-data: add missing test data entries
2018-12-22 jzern Revert "Add Tile-SB-Row based Multi-threading in Decoder"
(...)

Created with:
  roll-dep src/third_party/libvpx/source/libvpx

BUG=webm:1573

Change-Id: I6488543cc2773fb02a2f8ba508d50f246789237d
Reviewed-on: https://chromium-review.googlesource.com/c/1400959
Reviewed-by: Tom Finegan <tomfinegan@chromium.org>
Commit-Queue: Johann Koenig <johannkoenig@google.com>
Cr-Commit-Position: refs/heads/master@{#622119}
diff --git a/DEPS b/DEPS
index 7c4e0df..21b91cd 100644
--- a/DEPS
+++ b/DEPS
@@ -930,7 +930,7 @@
   },
 
   'src/third_party/libvpx/source/libvpx':
-    Var('chromium_git') + '/webm/libvpx.git' + '@' +  '57f7c6f19144786c57d5cfc8e878765bd9944baf',
+    Var('chromium_git') + '/webm/libvpx.git' + '@' +  '759d1de9d0d22bab78bc4946998af79ff8b2044d',
 
   'src/third_party/libwebm/source':
     Var('chromium_git') + '/webm/libwebm.git' + '@' + 'e4931ebc0a816458c18a6734e91a4d1b5acd5c56',
diff --git a/third_party/libvpx/README.chromium b/third_party/libvpx/README.chromium
index 605c45d..2828fbc 100644
--- a/third_party/libvpx/README.chromium
+++ b/third_party/libvpx/README.chromium
@@ -5,9 +5,9 @@
 License File: source/libvpx/LICENSE
 Security Critical: yes
 
-Date: Tuesday December 18 2018
-Branch: master
-Commit: 57f7c6f19144786c57d5cfc8e878765bd9944baf
+Date: Thursday January 10 2019
+Branch: northernshoveler
+Commit: 759d1de9d0d22bab78bc4946998af79ff8b2044d
 
 Description:
 Contains the sources used to compile libvpx binaries used by Google Chrome and
diff --git a/third_party/libvpx/libvpx_srcs.gni b/third_party/libvpx/libvpx_srcs.gni
index 67453749..2013209 100644
--- a/third_party/libvpx/libvpx_srcs.gni
+++ b/third_party/libvpx/libvpx_srcs.gni
@@ -336,7 +336,6 @@
   "//third_party/libvpx/source/libvpx/vpx_dsp/x86/quantize_ssse3.h",
   "//third_party/libvpx/source/libvpx/vpx_dsp/x86/transpose_sse2.h",
   "//third_party/libvpx/source/libvpx/vpx_dsp/x86/txfm_common_sse2.h",
-  "//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_asm_stubs.c",
   "//third_party/libvpx/source/libvpx/vpx_mem/include/vpx_mem_intrnl.h",
   "//third_party/libvpx/source/libvpx/vpx_mem/vpx_mem.c",
   "//third_party/libvpx/source/libvpx/vpx_mem/vpx_mem.h",
@@ -813,7 +812,6 @@
   "//third_party/libvpx/source/libvpx/vpx_dsp/x86/quantize_ssse3.h",
   "//third_party/libvpx/source/libvpx/vpx_dsp/x86/transpose_sse2.h",
   "//third_party/libvpx/source/libvpx/vpx_dsp/x86/txfm_common_sse2.h",
-  "//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_asm_stubs.c",
   "//third_party/libvpx/source/libvpx/vpx_mem/include/vpx_mem_intrnl.h",
   "//third_party/libvpx/source/libvpx/vpx_mem/vpx_mem.c",
   "//third_party/libvpx/source/libvpx/vpx_mem/vpx_mem.h",
@@ -1313,8 +1311,6 @@
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/dequant_idct_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/dequantizeb_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_blk_neon.c",
-  "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_dequant_0_2x_neon.c",
-  "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_dequant_full_2x_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/iwalsh_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c",
@@ -2101,8 +2097,6 @@
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/dequant_idct_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/dequantizeb_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_blk_neon.c",
-  "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_dequant_0_2x_neon.c",
-  "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_dequant_full_2x_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/iwalsh_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c",
@@ -2160,8 +2154,6 @@
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/dequant_idct_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/dequantizeb_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_blk_neon.c",
-  "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_dequant_0_2x_neon.c",
-  "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_dequant_full_2x_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/iwalsh_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c",
@@ -2568,8 +2560,6 @@
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/dequant_idct_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/dequantizeb_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_blk_neon.c",
-  "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_dequant_0_2x_neon.c",
-  "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_dequant_full_2x_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/iwalsh_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c",
@@ -3007,8 +2997,6 @@
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/dequant_idct_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/dequantizeb_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_blk_neon.c",
-  "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_dequant_0_2x_neon.c",
-  "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/idct_dequant_full_2x_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/iwalsh_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c",
   "//third_party/libvpx/source/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c",
diff --git a/third_party/libvpx/source/config/ios/arm-neon/vp8_rtcd.h b/third_party/libvpx/source/config/ios/arm-neon/vp8_rtcd.h
index 8f2d3e5..c4bb41b 100644
--- a/third_party/libvpx/source/config/ios/arm-neon/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/ios/arm-neon/vp8_rtcd.h
@@ -116,6 +116,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/ios/arm64/vp8_rtcd.h b/third_party/libvpx/source/config/ios/arm64/vp8_rtcd.h
index 8f2d3e5..c4bb41b 100644
--- a/third_party/libvpx/source/config/ios/arm64/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/ios/arm64/vp8_rtcd.h
@@ -116,6 +116,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/linux/arm-neon-cpu-detect/vp8_rtcd.h b/third_party/libvpx/source/config/linux/arm-neon-cpu-detect/vp8_rtcd.h
index aa7a2070..80d71bb 100644
--- a/third_party/libvpx/source/config/linux/arm-neon-cpu-detect/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/linux/arm-neon-cpu-detect/vp8_rtcd.h
@@ -136,6 +136,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/linux/arm-neon/vp8_rtcd.h b/third_party/libvpx/source/config/linux/arm-neon/vp8_rtcd.h
index 8f2d3e5..c4bb41b 100644
--- a/third_party/libvpx/source/config/linux/arm-neon/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/linux/arm-neon/vp8_rtcd.h
@@ -116,6 +116,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/linux/arm/vp8_rtcd.h b/third_party/libvpx/source/config/linux/arm/vp8_rtcd.h
index 5ec67483..e95dec5 100644
--- a/third_party/libvpx/source/config/linux/arm/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/linux/arm/vp8_rtcd.h
@@ -92,6 +92,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/linux/arm64/vp8_rtcd.h b/third_party/libvpx/source/config/linux/arm64/vp8_rtcd.h
index 8f2d3e5..c4bb41b 100644
--- a/third_party/libvpx/source/config/linux/arm64/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/linux/arm64/vp8_rtcd.h
@@ -116,6 +116,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/linux/chromeos-arm-neon/vp8_rtcd.h b/third_party/libvpx/source/config/linux/chromeos-arm-neon/vp8_rtcd.h
index 8f2d3e5..c4bb41b 100644
--- a/third_party/libvpx/source/config/linux/chromeos-arm-neon/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/linux/chromeos-arm-neon/vp8_rtcd.h
@@ -116,6 +116,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/linux/chromeos-arm-neon/vp9_rtcd.h b/third_party/libvpx/source/config/linux/chromeos-arm-neon/vp9_rtcd.h
index a88b5f0..684bd98 100644
--- a/third_party/libvpx/source/config/linux/chromeos-arm-neon/vp9_rtcd.h
+++ b/third_party/libvpx/source/config/linux/chromeos-arm-neon/vp9_rtcd.h
@@ -256,7 +256,8 @@
                                         unsigned int block_width,
                                         unsigned int block_height,
                                         int strength,
-                                        int filter_weight,
+                                        int* blk_fw,
+                                        int use_32x32,
                                         uint32_t* accumulator,
                                         uint16_t* count);
 #define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
diff --git a/third_party/libvpx/source/config/linux/chromeos-arm64/vp8_rtcd.h b/third_party/libvpx/source/config/linux/chromeos-arm64/vp8_rtcd.h
index 8f2d3e5..c4bb41b 100644
--- a/third_party/libvpx/source/config/linux/chromeos-arm64/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/linux/chromeos-arm64/vp8_rtcd.h
@@ -116,6 +116,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/linux/chromeos-arm64/vp9_rtcd.h b/third_party/libvpx/source/config/linux/chromeos-arm64/vp9_rtcd.h
index a88b5f0..684bd98 100644
--- a/third_party/libvpx/source/config/linux/chromeos-arm64/vp9_rtcd.h
+++ b/third_party/libvpx/source/config/linux/chromeos-arm64/vp9_rtcd.h
@@ -256,7 +256,8 @@
                                         unsigned int block_width,
                                         unsigned int block_height,
                                         int strength,
-                                        int filter_weight,
+                                        int* blk_fw,
+                                        int use_32x32,
                                         uint32_t* accumulator,
                                         uint16_t* count);
 #define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
diff --git a/third_party/libvpx/source/config/linux/generic/vp8_rtcd.h b/third_party/libvpx/source/config/linux/generic/vp8_rtcd.h
index 6e6147d3..aa475b5 100644
--- a/third_party/libvpx/source/config/linux/generic/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/linux/generic/vp8_rtcd.h
@@ -92,6 +92,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/linux/generic/vp9_rtcd.h b/third_party/libvpx/source/config/linux/generic/vp9_rtcd.h
index 5ee904c..25555a7 100644
--- a/third_party/libvpx/source/config/linux/generic/vp9_rtcd.h
+++ b/third_party/libvpx/source/config/linux/generic/vp9_rtcd.h
@@ -219,7 +219,8 @@
                                         unsigned int block_width,
                                         unsigned int block_height,
                                         int strength,
-                                        int filter_weight,
+                                        int* blk_fw,
+                                        int use_32x32,
                                         uint32_t* accumulator,
                                         uint16_t* count);
 #define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
diff --git a/third_party/libvpx/source/config/linux/ia32/vp9_rtcd.h b/third_party/libvpx/source/config/linux/ia32/vp9_rtcd.h
index 603bd31..d5c1c519 100644
--- a/third_party/libvpx/source/config/linux/ia32/vp9_rtcd.h
+++ b/third_party/libvpx/source/config/linux/ia32/vp9_rtcd.h
@@ -123,6 +123,19 @@
                          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* round_ptr,
+                            const int16_t* quant_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,
@@ -345,7 +358,8 @@
                                         unsigned int block_width,
                                         unsigned int block_height,
                                         int strength,
-                                        int filter_weight,
+                                        int* blk_fw,
+                                        int use_32x32,
                                         uint32_t* accumulator,
                                         uint16_t* count);
 #define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
@@ -470,7 +484,7 @@
   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_c;
+  vp9_fdct8x8_quant = vp9_fdct8x8_quant_sse2;
   if (flags & HAS_SSSE3)
     vp9_fdct8x8_quant = vp9_fdct8x8_quant_ssse3;
   vp9_highbd_iht16x16_256_add = vp9_highbd_iht16x16_256_add_c;
diff --git a/third_party/libvpx/source/config/linux/ia32/vpx_dsp_rtcd.h b/third_party/libvpx/source/config/linux/ia32/vpx_dsp_rtcd.h
index a607e24..472c624d 100644
--- a/third_party/libvpx/source/config/linux/ia32/vpx_dsp_rtcd.h
+++ b/third_party/libvpx/source/config/linux/ia32/vpx_dsp_rtcd.h
@@ -1018,7 +1018,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_c
+void vpx_highbd_10_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_sse2
 
 void vpx_highbd_10_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1026,7 +1032,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_c
+void vpx_highbd_10_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_sse2
 
 unsigned int vpx_highbd_10_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -1669,7 +1681,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_c
+void vpx_highbd_12_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_sse2
 
 void vpx_highbd_12_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1677,7 +1695,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_c
+void vpx_highbd_12_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_sse2
 
 unsigned int vpx_highbd_12_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -2320,7 +2344,13 @@
                                 int ref_stride,
                                 unsigned int* sse,
                                 int* sum);
-#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_c
+void vpx_highbd_8_get16x16var_sse2(const uint8_t* src_ptr,
+                                   int src_stride,
+                                   const uint8_t* ref_ptr,
+                                   int ref_stride,
+                                   unsigned int* sse,
+                                   int* sum);
+#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_sse2
 
 void vpx_highbd_8_get8x8var_c(const uint8_t* src_ptr,
                               int src_stride,
@@ -2328,7 +2358,13 @@
                               int ref_stride,
                               unsigned int* sse,
                               int* sum);
-#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_c
+void vpx_highbd_8_get8x8var_sse2(const uint8_t* src_ptr,
+                                 int src_stride,
+                                 const uint8_t* ref_ptr,
+                                 int ref_stride,
+                                 unsigned int* sse,
+                                 int* sum);
+#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_sse2
 
 unsigned int vpx_highbd_8_mse16x16_c(const uint8_t* src_ptr,
                                      int src_stride,
diff --git a/third_party/libvpx/source/config/linux/mips64el/vp8_rtcd.h b/third_party/libvpx/source/config/linux/mips64el/vp8_rtcd.h
index 6e6147d3..aa475b5 100644
--- a/third_party/libvpx/source/config/linux/mips64el/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/linux/mips64el/vp8_rtcd.h
@@ -92,6 +92,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/linux/mipsel/vp8_rtcd.h b/third_party/libvpx/source/config/linux/mipsel/vp8_rtcd.h
index 6e6147d3..aa475b5 100644
--- a/third_party/libvpx/source/config/linux/mipsel/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/linux/mipsel/vp8_rtcd.h
@@ -92,6 +92,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/linux/x64/vp9_rtcd.h b/third_party/libvpx/source/config/linux/x64/vp9_rtcd.h
index 28787a8..7d8c367 100644
--- a/third_party/libvpx/source/config/linux/x64/vp9_rtcd.h
+++ b/third_party/libvpx/source/config/linux/x64/vp9_rtcd.h
@@ -123,6 +123,19 @@
                          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* round_ptr,
+                            const int16_t* quant_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,
@@ -345,7 +358,8 @@
                                         unsigned int block_width,
                                         unsigned int block_height,
                                         int strength,
-                                        int filter_weight,
+                                        int* blk_fw,
+                                        int use_32x32,
                                         uint32_t* accumulator,
                                         uint16_t* count);
 #define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
@@ -502,7 +516,7 @@
   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_c;
+  vp9_fdct8x8_quant = vp9_fdct8x8_quant_sse2;
   if (flags & HAS_SSSE3)
     vp9_fdct8x8_quant = vp9_fdct8x8_quant_ssse3;
   vp9_highbd_iht16x16_256_add = vp9_highbd_iht16x16_256_add_c;
diff --git a/third_party/libvpx/source/config/linux/x64/vpx_dsp_rtcd.h b/third_party/libvpx/source/config/linux/x64/vpx_dsp_rtcd.h
index 7d9e8b7..7021eaa 100644
--- a/third_party/libvpx/source/config/linux/x64/vpx_dsp_rtcd.h
+++ b/third_party/libvpx/source/config/linux/x64/vpx_dsp_rtcd.h
@@ -1023,7 +1023,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_c
+void vpx_highbd_10_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_sse2
 
 void vpx_highbd_10_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1031,7 +1037,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_c
+void vpx_highbd_10_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_sse2
 
 unsigned int vpx_highbd_10_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -1674,7 +1686,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_c
+void vpx_highbd_12_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_sse2
 
 void vpx_highbd_12_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1682,7 +1700,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_c
+void vpx_highbd_12_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_sse2
 
 unsigned int vpx_highbd_12_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -2325,7 +2349,13 @@
                                 int ref_stride,
                                 unsigned int* sse,
                                 int* sum);
-#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_c
+void vpx_highbd_8_get16x16var_sse2(const uint8_t* src_ptr,
+                                   int src_stride,
+                                   const uint8_t* ref_ptr,
+                                   int ref_stride,
+                                   unsigned int* sse,
+                                   int* sum);
+#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_sse2
 
 void vpx_highbd_8_get8x8var_c(const uint8_t* src_ptr,
                               int src_stride,
@@ -2333,7 +2363,13 @@
                               int ref_stride,
                               unsigned int* sse,
                               int* sum);
-#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_c
+void vpx_highbd_8_get8x8var_sse2(const uint8_t* src_ptr,
+                                 int src_stride,
+                                 const uint8_t* ref_ptr,
+                                 int ref_stride,
+                                 unsigned int* sse,
+                                 int* sum);
+#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_sse2
 
 unsigned int vpx_highbd_8_mse16x16_c(const uint8_t* src_ptr,
                                      int src_stride,
diff --git a/third_party/libvpx/source/config/mac/ia32/vp9_rtcd.h b/third_party/libvpx/source/config/mac/ia32/vp9_rtcd.h
index 603bd31..d5c1c519 100644
--- a/third_party/libvpx/source/config/mac/ia32/vp9_rtcd.h
+++ b/third_party/libvpx/source/config/mac/ia32/vp9_rtcd.h
@@ -123,6 +123,19 @@
                          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* round_ptr,
+                            const int16_t* quant_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,
@@ -345,7 +358,8 @@
                                         unsigned int block_width,
                                         unsigned int block_height,
                                         int strength,
-                                        int filter_weight,
+                                        int* blk_fw,
+                                        int use_32x32,
                                         uint32_t* accumulator,
                                         uint16_t* count);
 #define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
@@ -470,7 +484,7 @@
   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_c;
+  vp9_fdct8x8_quant = vp9_fdct8x8_quant_sse2;
   if (flags & HAS_SSSE3)
     vp9_fdct8x8_quant = vp9_fdct8x8_quant_ssse3;
   vp9_highbd_iht16x16_256_add = vp9_highbd_iht16x16_256_add_c;
diff --git a/third_party/libvpx/source/config/mac/ia32/vpx_dsp_rtcd.h b/third_party/libvpx/source/config/mac/ia32/vpx_dsp_rtcd.h
index a607e24..472c624d 100644
--- a/third_party/libvpx/source/config/mac/ia32/vpx_dsp_rtcd.h
+++ b/third_party/libvpx/source/config/mac/ia32/vpx_dsp_rtcd.h
@@ -1018,7 +1018,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_c
+void vpx_highbd_10_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_sse2
 
 void vpx_highbd_10_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1026,7 +1032,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_c
+void vpx_highbd_10_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_sse2
 
 unsigned int vpx_highbd_10_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -1669,7 +1681,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_c
+void vpx_highbd_12_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_sse2
 
 void vpx_highbd_12_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1677,7 +1695,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_c
+void vpx_highbd_12_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_sse2
 
 unsigned int vpx_highbd_12_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -2320,7 +2344,13 @@
                                 int ref_stride,
                                 unsigned int* sse,
                                 int* sum);
-#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_c
+void vpx_highbd_8_get16x16var_sse2(const uint8_t* src_ptr,
+                                   int src_stride,
+                                   const uint8_t* ref_ptr,
+                                   int ref_stride,
+                                   unsigned int* sse,
+                                   int* sum);
+#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_sse2
 
 void vpx_highbd_8_get8x8var_c(const uint8_t* src_ptr,
                               int src_stride,
@@ -2328,7 +2358,13 @@
                               int ref_stride,
                               unsigned int* sse,
                               int* sum);
-#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_c
+void vpx_highbd_8_get8x8var_sse2(const uint8_t* src_ptr,
+                                 int src_stride,
+                                 const uint8_t* ref_ptr,
+                                 int ref_stride,
+                                 unsigned int* sse,
+                                 int* sum);
+#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_sse2
 
 unsigned int vpx_highbd_8_mse16x16_c(const uint8_t* src_ptr,
                                      int src_stride,
diff --git a/third_party/libvpx/source/config/mac/x64/vp9_rtcd.h b/third_party/libvpx/source/config/mac/x64/vp9_rtcd.h
index 28787a8..7d8c367 100644
--- a/third_party/libvpx/source/config/mac/x64/vp9_rtcd.h
+++ b/third_party/libvpx/source/config/mac/x64/vp9_rtcd.h
@@ -123,6 +123,19 @@
                          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* round_ptr,
+                            const int16_t* quant_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,
@@ -345,7 +358,8 @@
                                         unsigned int block_width,
                                         unsigned int block_height,
                                         int strength,
-                                        int filter_weight,
+                                        int* blk_fw,
+                                        int use_32x32,
                                         uint32_t* accumulator,
                                         uint16_t* count);
 #define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
@@ -502,7 +516,7 @@
   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_c;
+  vp9_fdct8x8_quant = vp9_fdct8x8_quant_sse2;
   if (flags & HAS_SSSE3)
     vp9_fdct8x8_quant = vp9_fdct8x8_quant_ssse3;
   vp9_highbd_iht16x16_256_add = vp9_highbd_iht16x16_256_add_c;
diff --git a/third_party/libvpx/source/config/mac/x64/vpx_dsp_rtcd.h b/third_party/libvpx/source/config/mac/x64/vpx_dsp_rtcd.h
index 7d9e8b7..7021eaa 100644
--- a/third_party/libvpx/source/config/mac/x64/vpx_dsp_rtcd.h
+++ b/third_party/libvpx/source/config/mac/x64/vpx_dsp_rtcd.h
@@ -1023,7 +1023,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_c
+void vpx_highbd_10_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_sse2
 
 void vpx_highbd_10_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1031,7 +1037,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_c
+void vpx_highbd_10_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_sse2
 
 unsigned int vpx_highbd_10_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -1674,7 +1686,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_c
+void vpx_highbd_12_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_sse2
 
 void vpx_highbd_12_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1682,7 +1700,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_c
+void vpx_highbd_12_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_sse2
 
 unsigned int vpx_highbd_12_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -2325,7 +2349,13 @@
                                 int ref_stride,
                                 unsigned int* sse,
                                 int* sum);
-#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_c
+void vpx_highbd_8_get16x16var_sse2(const uint8_t* src_ptr,
+                                   int src_stride,
+                                   const uint8_t* ref_ptr,
+                                   int ref_stride,
+                                   unsigned int* sse,
+                                   int* sum);
+#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_sse2
 
 void vpx_highbd_8_get8x8var_c(const uint8_t* src_ptr,
                               int src_stride,
@@ -2333,7 +2363,13 @@
                               int ref_stride,
                               unsigned int* sse,
                               int* sum);
-#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_c
+void vpx_highbd_8_get8x8var_sse2(const uint8_t* src_ptr,
+                                 int src_stride,
+                                 const uint8_t* ref_ptr,
+                                 int ref_stride,
+                                 unsigned int* sse,
+                                 int* sum);
+#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_sse2
 
 unsigned int vpx_highbd_8_mse16x16_c(const uint8_t* src_ptr,
                                      int src_stride,
diff --git a/third_party/libvpx/source/config/nacl/vp8_rtcd.h b/third_party/libvpx/source/config/nacl/vp8_rtcd.h
index 6e6147d3..aa475b5 100644
--- a/third_party/libvpx/source/config/nacl/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/nacl/vp8_rtcd.h
@@ -92,6 +92,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/nacl/vp9_rtcd.h b/third_party/libvpx/source/config/nacl/vp9_rtcd.h
index 5ee904c..25555a7 100644
--- a/third_party/libvpx/source/config/nacl/vp9_rtcd.h
+++ b/third_party/libvpx/source/config/nacl/vp9_rtcd.h
@@ -219,7 +219,8 @@
                                         unsigned int block_width,
                                         unsigned int block_height,
                                         int strength,
-                                        int filter_weight,
+                                        int* blk_fw,
+                                        int use_32x32,
                                         uint32_t* accumulator,
                                         uint16_t* count);
 #define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
diff --git a/third_party/libvpx/source/config/vpx_version.h b/third_party/libvpx/source/config/vpx_version.h
index 64c2c16..a193f45 100644
--- a/third_party/libvpx/source/config/vpx_version.h
+++ b/third_party/libvpx/source/config/vpx_version.h
@@ -2,7 +2,7 @@
 #define VERSION_MAJOR  1
 #define VERSION_MINOR  7
 #define VERSION_PATCH  0
-#define VERSION_EXTRA  "1534-g57f7c6f19"
+#define VERSION_EXTRA "1636-g759d1de9d"
 #define VERSION_PACKED ((VERSION_MAJOR<<16)|(VERSION_MINOR<<8)|(VERSION_PATCH))
-#define VERSION_STRING_NOSP "v1.7.0-1534-g57f7c6f19"
-#define VERSION_STRING      " v1.7.0-1534-g57f7c6f19"
+#define VERSION_STRING_NOSP "v1.7.0-1636-g759d1de9d"
+#define VERSION_STRING " v1.7.0-1636-g759d1de9d"
diff --git a/third_party/libvpx/source/config/win/arm64/vp8_rtcd.h b/third_party/libvpx/source/config/win/arm64/vp8_rtcd.h
index 8f2d3e5..c4bb41b 100644
--- a/third_party/libvpx/source/config/win/arm64/vp8_rtcd.h
+++ b/third_party/libvpx/source/config/win/arm64/vp8_rtcd.h
@@ -116,6 +116,13 @@
 int vp8_block_error_c(short* coeff, short* dqcoeff);
 #define vp8_block_error vp8_block_error_c
 
+void vp8_copy32xn_c(const unsigned char* src_ptr,
+                    int src_stride,
+                    unsigned char* dst_ptr,
+                    int dst_stride,
+                    int height);
+#define vp8_copy32xn vp8_copy32xn_c
+
 void vp8_copy_mem16x16_c(unsigned char* src,
                          int src_stride,
                          unsigned char* dst,
diff --git a/third_party/libvpx/source/config/win/arm64/vp9_rtcd.h b/third_party/libvpx/source/config/win/arm64/vp9_rtcd.h
index a88b5f0..684bd98 100644
--- a/third_party/libvpx/source/config/win/arm64/vp9_rtcd.h
+++ b/third_party/libvpx/source/config/win/arm64/vp9_rtcd.h
@@ -256,7 +256,8 @@
                                         unsigned int block_width,
                                         unsigned int block_height,
                                         int strength,
-                                        int filter_weight,
+                                        int* blk_fw,
+                                        int use_32x32,
                                         uint32_t* accumulator,
                                         uint16_t* count);
 #define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
diff --git a/third_party/libvpx/source/config/win/ia32/vp9_rtcd.h b/third_party/libvpx/source/config/win/ia32/vp9_rtcd.h
index 603bd31..d5c1c519 100644
--- a/third_party/libvpx/source/config/win/ia32/vp9_rtcd.h
+++ b/third_party/libvpx/source/config/win/ia32/vp9_rtcd.h
@@ -123,6 +123,19 @@
                          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* round_ptr,
+                            const int16_t* quant_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,
@@ -345,7 +358,8 @@
                                         unsigned int block_width,
                                         unsigned int block_height,
                                         int strength,
-                                        int filter_weight,
+                                        int* blk_fw,
+                                        int use_32x32,
                                         uint32_t* accumulator,
                                         uint16_t* count);
 #define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
@@ -470,7 +484,7 @@
   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_c;
+  vp9_fdct8x8_quant = vp9_fdct8x8_quant_sse2;
   if (flags & HAS_SSSE3)
     vp9_fdct8x8_quant = vp9_fdct8x8_quant_ssse3;
   vp9_highbd_iht16x16_256_add = vp9_highbd_iht16x16_256_add_c;
diff --git a/third_party/libvpx/source/config/win/ia32/vpx_dsp_rtcd.h b/third_party/libvpx/source/config/win/ia32/vpx_dsp_rtcd.h
index a607e24..472c624d 100644
--- a/third_party/libvpx/source/config/win/ia32/vpx_dsp_rtcd.h
+++ b/third_party/libvpx/source/config/win/ia32/vpx_dsp_rtcd.h
@@ -1018,7 +1018,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_c
+void vpx_highbd_10_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_sse2
 
 void vpx_highbd_10_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1026,7 +1032,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_c
+void vpx_highbd_10_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_sse2
 
 unsigned int vpx_highbd_10_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -1669,7 +1681,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_c
+void vpx_highbd_12_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_sse2
 
 void vpx_highbd_12_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1677,7 +1695,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_c
+void vpx_highbd_12_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_sse2
 
 unsigned int vpx_highbd_12_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -2320,7 +2344,13 @@
                                 int ref_stride,
                                 unsigned int* sse,
                                 int* sum);
-#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_c
+void vpx_highbd_8_get16x16var_sse2(const uint8_t* src_ptr,
+                                   int src_stride,
+                                   const uint8_t* ref_ptr,
+                                   int ref_stride,
+                                   unsigned int* sse,
+                                   int* sum);
+#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_sse2
 
 void vpx_highbd_8_get8x8var_c(const uint8_t* src_ptr,
                               int src_stride,
@@ -2328,7 +2358,13 @@
                               int ref_stride,
                               unsigned int* sse,
                               int* sum);
-#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_c
+void vpx_highbd_8_get8x8var_sse2(const uint8_t* src_ptr,
+                                 int src_stride,
+                                 const uint8_t* ref_ptr,
+                                 int ref_stride,
+                                 unsigned int* sse,
+                                 int* sum);
+#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_sse2
 
 unsigned int vpx_highbd_8_mse16x16_c(const uint8_t* src_ptr,
                                      int src_stride,
diff --git a/third_party/libvpx/source/config/win/x64/vp9_rtcd.h b/third_party/libvpx/source/config/win/x64/vp9_rtcd.h
index 28787a8..7d8c367 100644
--- a/third_party/libvpx/source/config/win/x64/vp9_rtcd.h
+++ b/third_party/libvpx/source/config/win/x64/vp9_rtcd.h
@@ -123,6 +123,19 @@
                          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* round_ptr,
+                            const int16_t* quant_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,
@@ -345,7 +358,8 @@
                                         unsigned int block_width,
                                         unsigned int block_height,
                                         int strength,
-                                        int filter_weight,
+                                        int* blk_fw,
+                                        int use_32x32,
                                         uint32_t* accumulator,
                                         uint16_t* count);
 #define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c
@@ -502,7 +516,7 @@
   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_c;
+  vp9_fdct8x8_quant = vp9_fdct8x8_quant_sse2;
   if (flags & HAS_SSSE3)
     vp9_fdct8x8_quant = vp9_fdct8x8_quant_ssse3;
   vp9_highbd_iht16x16_256_add = vp9_highbd_iht16x16_256_add_c;
diff --git a/third_party/libvpx/source/config/win/x64/vpx_dsp_rtcd.h b/third_party/libvpx/source/config/win/x64/vpx_dsp_rtcd.h
index 7d9e8b7..7021eaa 100644
--- a/third_party/libvpx/source/config/win/x64/vpx_dsp_rtcd.h
+++ b/third_party/libvpx/source/config/win/x64/vpx_dsp_rtcd.h
@@ -1023,7 +1023,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_c
+void vpx_highbd_10_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_sse2
 
 void vpx_highbd_10_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1031,7 +1037,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_c
+void vpx_highbd_10_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_sse2
 
 unsigned int vpx_highbd_10_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -1674,7 +1686,13 @@
                                  int ref_stride,
                                  unsigned int* sse,
                                  int* sum);
-#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_c
+void vpx_highbd_12_get16x16var_sse2(const uint8_t* src_ptr,
+                                    int src_stride,
+                                    const uint8_t* ref_ptr,
+                                    int ref_stride,
+                                    unsigned int* sse,
+                                    int* sum);
+#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_sse2
 
 void vpx_highbd_12_get8x8var_c(const uint8_t* src_ptr,
                                int src_stride,
@@ -1682,7 +1700,13 @@
                                int ref_stride,
                                unsigned int* sse,
                                int* sum);
-#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_c
+void vpx_highbd_12_get8x8var_sse2(const uint8_t* src_ptr,
+                                  int src_stride,
+                                  const uint8_t* ref_ptr,
+                                  int ref_stride,
+                                  unsigned int* sse,
+                                  int* sum);
+#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_sse2
 
 unsigned int vpx_highbd_12_mse16x16_c(const uint8_t* src_ptr,
                                       int src_stride,
@@ -2325,7 +2349,13 @@
                                 int ref_stride,
                                 unsigned int* sse,
                                 int* sum);
-#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_c
+void vpx_highbd_8_get16x16var_sse2(const uint8_t* src_ptr,
+                                   int src_stride,
+                                   const uint8_t* ref_ptr,
+                                   int ref_stride,
+                                   unsigned int* sse,
+                                   int* sum);
+#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_sse2
 
 void vpx_highbd_8_get8x8var_c(const uint8_t* src_ptr,
                               int src_stride,
@@ -2333,7 +2363,13 @@
                               int ref_stride,
                               unsigned int* sse,
                               int* sum);
-#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_c
+void vpx_highbd_8_get8x8var_sse2(const uint8_t* src_ptr,
+                                 int src_stride,
+                                 const uint8_t* ref_ptr,
+                                 int ref_stride,
+                                 unsigned int* sse,
+                                 int* sum);
+#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_sse2
 
 unsigned int vpx_highbd_8_mse16x16_c(const uint8_t* src_ptr,
                                      int src_stride,