diff --git a/.gitignore b/.gitignore
index 8c57982..f6bf5a9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,8 +45,8 @@
 /ivfdec.dox
 /ivfenc
 /ivfenc.dox
-/libvpx.so*
-/libvpx.ver
+/libaom.so*
+/libaom.ver
 /samples.dox
 /test_intra_pred_speed
 /test_libvpx
diff --git a/README b/README
index 0f95a8f..fc71b77 100644
--- a/README
+++ b/README
@@ -33,13 +33,13 @@
 
     $ mkdir build
     $ cd build
-    $ ../libvpx/configure <options>
+    $ ../libaom/configure <options>
     $ make
 
   3. Configuration options
   The 'configure' script supports a number of options. The --help option can be
   used to get a list of supported options:
-    $ ../libvpx/configure --help
+    $ ../libaom/configure --help
 
   4. Cross development
   For cross development, the most notable option is the --target option. The
@@ -108,7 +108,7 @@
   toolchain, the following command could be used (note, POSIX SH syntax, adapt
   to your shell as necessary):
 
-    $ CROSS=mipsel-linux-uclibc- ../libvpx/configure
+    $ CROSS=mipsel-linux-uclibc- ../libaom/configure
 
   In addition, the executables to be invoked can be overridden by specifying the
   environment variables: CC, AR, LD, AS, STRIP, NM. Additional flags can be
@@ -125,7 +125,7 @@
   LIBVPX_TEST_DATA_PATH environment variable can be used.
 
   $ ./configure --enable-unit-tests
-  $ LIBVPX_TEST_DATA_PATH=../libvpx-test-data make testdata
+  $ LIBVPX_TEST_DATA_PATH=../-test-data make testdata
 
 CODE STYLE:
   The coding style used by this project is enforced with clang-format using the
diff --git a/vpx/exports_com b/aom/exports_com
similarity index 100%
rename from vpx/exports_com
rename to aom/exports_com
diff --git a/vpx/exports_dec b/aom/exports_dec
similarity index 100%
rename from vpx/exports_dec
rename to aom/exports_dec
diff --git a/vpx/exports_enc b/aom/exports_enc
similarity index 100%
rename from vpx/exports_enc
rename to aom/exports_enc
diff --git a/vpx/internal/vpx_codec_internal.h b/aom/internal/vpx_codec_internal.h
similarity index 98%
rename from vpx/internal/vpx_codec_internal.h
rename to aom/internal/vpx_codec_internal.h
index 6a253a5..4ac77b7 100644
--- a/vpx/internal/vpx_codec_internal.h
+++ b/aom/internal/vpx_codec_internal.h
@@ -219,10 +219,10 @@
 
 /*!\brief Pass in external frame buffers for the decoder to use.
  *
- * Registers functions to be called when libvpx needs a frame buffer
- * to decode the current frame and a function to be called when libvpx does
+ * Registers functions to be called when libaom needs a frame buffer
+ * to decode the current frame and a function to be called when libaom does
  * not internally reference the frame buffer. This set function must
- * be called before the first call to decode or libvpx will assume the
+ * be called before the first call to decode or libaom will assume the
  * default behavior of allocating frame buffers internally.
  *
  * \param[in] ctx          Pointer to this instance's context
@@ -231,7 +231,7 @@
  * \param[in] cb_priv      Callback's private data
  *
  * \retval #VPX_CODEC_OK
- *     External frame buffers will be used by libvpx.
+ *     External frame buffers will be used by libaom.
  * \retval #VPX_CODEC_INVALID_PARAM
  *     One or more of the callbacks were NULL.
  * \retval #VPX_CODEC_ERROR
diff --git a/vpx/src/vpx_codec.c b/aom/src/vpx_codec.c
similarity index 97%
rename from vpx/src/vpx_codec.c
rename to aom/src/vpx_codec.c
index f222b9e..7bdc870 100644
--- a/vpx/src/vpx_codec.c
+++ b/aom/src/vpx_codec.c
@@ -14,8 +14,8 @@
  */
 #include <stdarg.h>
 #include <stdlib.h>
-#include "vpx/vpx_integer.h"
-#include "vpx/internal/vpx_codec_internal.h"
+#include "aom/vpx_integer.h"
+#include "aom/internal/vpx_codec_internal.h"
 #include "vpx_version.h"
 
 #define SAVE_STATUS(ctx, var) (ctx ? (ctx->err = var) : var)
diff --git a/vpx/src/vpx_decoder.c b/aom/src/vpx_decoder.c
similarity index 98%
rename from vpx/src/vpx_decoder.c
rename to aom/src/vpx_decoder.c
index fc1c2bc..97709d1 100644
--- a/vpx/src/vpx_decoder.c
+++ b/aom/src/vpx_decoder.c
@@ -13,7 +13,7 @@
  *
  */
 #include <string.h>
-#include "vpx/internal/vpx_codec_internal.h"
+#include "aom/internal/vpx_codec_internal.h"
 
 #define SAVE_STATUS(ctx, var) (ctx ? (ctx->err = var) : var)
 
diff --git a/vpx/src/vpx_encoder.c b/aom/src/vpx_encoder.c
similarity index 99%
rename from vpx/src/vpx_encoder.c
rename to aom/src/vpx_encoder.c
index 4390cf7..f3689e3 100644
--- a/vpx/src/vpx_encoder.c
+++ b/aom/src/vpx_encoder.c
@@ -15,7 +15,7 @@
 #include <limits.h>
 #include <string.h>
 #include "vpx_config.h"
-#include "vpx/internal/vpx_codec_internal.h"
+#include "aom/internal/vpx_codec_internal.h"
 
 #define SAVE_STATUS(ctx, var) (ctx ? (ctx->err = var) : var)
 
@@ -171,7 +171,7 @@
 /* On X86, disable the x87 unit's internal 80 bit precision for better
  * consistency with the SSE unit's 64 bit precision.
  */
-#include "vpx_ports/x86.h"
+#include "aom_ports/x86.h"
 #define FLOATING_POINT_INIT() \
   do {                        \
     unsigned short x87_orig_mode = x87_set_double_precision();
diff --git a/vpx/src/vpx_image.c b/aom/src/vpx_image.c
similarity index 98%
rename from vpx/src/vpx_image.c
rename to aom/src/vpx_image.c
index dba439c..0970b06 100644
--- a/vpx/src/vpx_image.c
+++ b/aom/src/vpx_image.c
@@ -11,9 +11,9 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx/vpx_image.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom/vpx_image.h"
+#include "aom/vpx_integer.h"
+#include "aom_mem/vpx_mem.h"
 
 static vpx_image_t *img_alloc_helper(vpx_image_t *img, vpx_img_fmt_t fmt,
                                      unsigned int d_w, unsigned int d_h,
diff --git a/vpx/vp8.h b/aom/vp8.h
similarity index 100%
rename from vpx/vp8.h
rename to aom/vp8.h
diff --git a/vpx/vp8cx.h b/aom/vp8cx.h
similarity index 100%
rename from vpx/vp8cx.h
rename to aom/vp8cx.h
diff --git a/vpx/vp8dx.h b/aom/vp8dx.h
similarity index 100%
rename from vpx/vp8dx.h
rename to aom/vp8dx.h
diff --git a/vpx/vpx_codec.h b/aom/vpx_codec.h
similarity index 100%
rename from vpx/vpx_codec.h
rename to aom/vpx_codec.h
diff --git a/vpx/vpx_codec.mk b/aom/vpx_codec.mk
similarity index 100%
rename from vpx/vpx_codec.mk
rename to aom/vpx_codec.mk
diff --git a/vpx/vpx_decoder.h b/aom/vpx_decoder.h
similarity index 98%
rename from vpx/vpx_decoder.h
rename to aom/vpx_decoder.h
index 3d8dd6c..2fb3be1 100644
--- a/vpx/vpx_decoder.h
+++ b/aom/vpx_decoder.h
@@ -328,10 +328,10 @@
 
 /*!\brief Pass in external frame buffers for the decoder to use.
  *
- * Registers functions to be called when libvpx needs a frame buffer
- * to decode the current frame and a function to be called when libvpx does
+ * Registers functions to be called when libaom needs a frame buffer
+ * to decode the current frame and a function to be called when libaom does
  * not internally reference the frame buffer. This set function must
- * be called before the first call to decode or libvpx will assume the
+ * be called before the first call to decode or libaom will assume the
  * default behavior of allocating frame buffers internally.
  *
  * \param[in] ctx          Pointer to this instance's context
@@ -340,7 +340,7 @@
  * \param[in] cb_priv      Callback's private data
  *
  * \retval #VPX_CODEC_OK
- *     External frame buffers will be used by libvpx.
+ *     External frame buffers will be used by libaom.
  * \retval #VPX_CODEC_INVALID_PARAM
  *     One or more of the callbacks were NULL.
  * \retval #VPX_CODEC_ERROR
diff --git a/vpx/vpx_encoder.h b/aom/vpx_encoder.h
similarity index 100%
rename from vpx/vpx_encoder.h
rename to aom/vpx_encoder.h
diff --git a/vpx/vpx_frame_buffer.h b/aom/vpx_frame_buffer.h
similarity index 97%
rename from vpx/vpx_frame_buffer.h
rename to aom/vpx_frame_buffer.h
index 8adbe25..86945f7 100644
--- a/vpx/vpx_frame_buffer.h
+++ b/aom/vpx_frame_buffer.h
@@ -21,7 +21,7 @@
 
 #include "./vpx_integer.h"
 
-/*!\brief The maximum number of work buffers used by libvpx.
+/*!\brief The maximum number of work buffers used by libaom.
  *  Support maximum 4 threads to decode video in parallel.
  *  Each thread will use one work buffer.
  * TODO(hkuang): Add support to set number of worker threads dynamically.
diff --git a/vpx/vpx_image.h b/aom/vpx_image.h
similarity index 100%
rename from vpx/vpx_image.h
rename to aom/vpx_image.h
diff --git a/vpx/vpx_integer.h b/aom/vpx_integer.h
similarity index 100%
rename from vpx/vpx_integer.h
rename to aom/vpx_integer.h
diff --git a/vpx_dsp/add_noise.c b/aom_dsp/add_noise.c
similarity index 96%
rename from vpx_dsp/add_noise.c
rename to aom_dsp/add_noise.c
index 80b1af9..826d935 100644
--- a/vpx_dsp/add_noise.c
+++ b/aom_dsp/add_noise.c
@@ -14,8 +14,8 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
 
 void vpx_plane_add_noise_c(uint8_t *start, char *noise, char blackclamp[16],
                            char whiteclamp[16], char bothclamp[16],
diff --git a/vpx_dsp/arm/avg_neon.c b/aom_dsp/arm/avg_neon.c
similarity index 99%
rename from vpx_dsp/arm/avg_neon.c
rename to aom_dsp/arm/avg_neon.c
index 001517d..ff9cbb9 100644
--- a/vpx_dsp/arm/avg_neon.c
+++ b/aom_dsp/arm/avg_neon.c
@@ -14,7 +14,7 @@
 #include "./vpx_dsp_rtcd.h"
 #include "./vpx_config.h"
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 static INLINE unsigned int horizontal_add_u16x8(const uint16x8_t v_16x8) {
   const uint32x4_t a = vpaddlq_u16(v_16x8);
diff --git a/vpx_dsp/arm/bilinear_filter_media.asm b/aom_dsp/arm/bilinear_filter_media.asm
similarity index 100%
rename from vpx_dsp/arm/bilinear_filter_media.asm
rename to aom_dsp/arm/bilinear_filter_media.asm
diff --git a/vpx_dsp/arm/fwd_txfm_neon.c b/aom_dsp/arm/fwd_txfm_neon.c
similarity index 99%
rename from vpx_dsp/arm/fwd_txfm_neon.c
rename to aom_dsp/arm/fwd_txfm_neon.c
index 7cb2ba9..4763cdb 100644
--- a/vpx_dsp/arm/fwd_txfm_neon.c
+++ b/aom_dsp/arm/fwd_txfm_neon.c
@@ -11,7 +11,7 @@
 #include <arm_neon.h>
 
 #include "./vpx_config.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/txfm_common.h"
 
 void vpx_fdct8x8_neon(const int16_t *input, int16_t *final_output, int stride) {
   int i;
diff --git a/vpx_dsp/arm/hadamard_neon.c b/aom_dsp/arm/hadamard_neon.c
similarity index 100%
rename from vpx_dsp/arm/hadamard_neon.c
rename to aom_dsp/arm/hadamard_neon.c
diff --git a/vpx_dsp/arm/idct16x16_1_add_neon.asm b/aom_dsp/arm/idct16x16_1_add_neon.asm
similarity index 100%
rename from vpx_dsp/arm/idct16x16_1_add_neon.asm
rename to aom_dsp/arm/idct16x16_1_add_neon.asm
diff --git a/vpx_dsp/arm/idct16x16_1_add_neon.c b/aom_dsp/arm/idct16x16_1_add_neon.c
similarity index 97%
rename from vpx_dsp/arm/idct16x16_1_add_neon.c
rename to aom_dsp/arm/idct16x16_1_add_neon.c
index 466b408..a37e53c 100644
--- a/vpx_dsp/arm/idct16x16_1_add_neon.c
+++ b/aom_dsp/arm/idct16x16_1_add_neon.c
@@ -10,8 +10,8 @@
 
 #include <arm_neon.h>
 
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/inv_txfm.h"
+#include "aom_ports/mem.h"
 
 void vpx_idct16x16_1_add_neon(int16_t *input, uint8_t *dest, int dest_stride) {
   uint8x8_t d2u8, d3u8, d30u8, d31u8;
diff --git a/vpx_dsp/arm/idct16x16_add_neon.asm b/aom_dsp/arm/idct16x16_add_neon.asm
similarity index 100%
rename from vpx_dsp/arm/idct16x16_add_neon.asm
rename to aom_dsp/arm/idct16x16_add_neon.asm
diff --git a/vpx_dsp/arm/idct16x16_add_neon.c b/aom_dsp/arm/idct16x16_add_neon.c
similarity index 99%
rename from vpx_dsp/arm/idct16x16_add_neon.c
rename to aom_dsp/arm/idct16x16_add_neon.c
index 6c03aff..2bb92c6 100644
--- a/vpx_dsp/arm/idct16x16_add_neon.c
+++ b/aom_dsp/arm/idct16x16_add_neon.c
@@ -11,7 +11,7 @@
 #include <arm_neon.h>
 
 #include "./vpx_config.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/txfm_common.h"
 
 static INLINE void TRANSPOSE8X8(int16x8_t *q8s16, int16x8_t *q9s16,
                                 int16x8_t *q10s16, int16x8_t *q11s16,
diff --git a/vpx_dsp/arm/idct16x16_neon.c b/aom_dsp/arm/idct16x16_neon.c
similarity index 99%
rename from vpx_dsp/arm/idct16x16_neon.c
rename to aom_dsp/arm/idct16x16_neon.c
index ecc263d..e205056 100644
--- a/vpx_dsp/arm/idct16x16_neon.c
+++ b/aom_dsp/arm/idct16x16_neon.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 void vpx_idct16x16_256_add_neon_pass1(const int16_t *input, int16_t *output,
                                       int output_stride);
diff --git a/vpx_dsp/arm/idct32x32_1_add_neon.asm b/aom_dsp/arm/idct32x32_1_add_neon.asm
similarity index 100%
rename from vpx_dsp/arm/idct32x32_1_add_neon.asm
rename to aom_dsp/arm/idct32x32_1_add_neon.asm
diff --git a/vpx_dsp/arm/idct32x32_1_add_neon.c b/aom_dsp/arm/idct32x32_1_add_neon.c
similarity index 98%
rename from vpx_dsp/arm/idct32x32_1_add_neon.c
rename to aom_dsp/arm/idct32x32_1_add_neon.c
index dab7d09..35bfc66 100644
--- a/vpx_dsp/arm/idct32x32_1_add_neon.c
+++ b/aom_dsp/arm/idct32x32_1_add_neon.c
@@ -12,8 +12,8 @@
 
 #include "./vpx_config.h"
 
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/inv_txfm.h"
+#include "aom_ports/mem.h"
 
 static INLINE void LD_16x8(uint8_t *d, int d_stride, uint8x16_t *q8u8,
                            uint8x16_t *q9u8, uint8x16_t *q10u8,
diff --git a/vpx_dsp/arm/idct32x32_add_neon.asm b/aom_dsp/arm/idct32x32_add_neon.asm
similarity index 100%
rename from vpx_dsp/arm/idct32x32_add_neon.asm
rename to aom_dsp/arm/idct32x32_add_neon.asm
diff --git a/vpx_dsp/arm/idct32x32_add_neon.c b/aom_dsp/arm/idct32x32_add_neon.c
similarity index 99%
rename from vpx_dsp/arm/idct32x32_add_neon.c
rename to aom_dsp/arm/idct32x32_add_neon.c
index 88b3d01..644155c 100644
--- a/vpx_dsp/arm/idct32x32_add_neon.c
+++ b/aom_dsp/arm/idct32x32_add_neon.c
@@ -11,7 +11,7 @@
 #include <arm_neon.h>
 
 #include "./vpx_config.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/txfm_common.h"
 
 #define LOAD_FROM_TRANSPOSED(prev, first, second) \
   q14s16 = vld1q_s16(trans_buf + first * 8);      \
diff --git a/vpx_dsp/arm/idct4x4_1_add_neon.asm b/aom_dsp/arm/idct4x4_1_add_neon.asm
similarity index 100%
rename from vpx_dsp/arm/idct4x4_1_add_neon.asm
rename to aom_dsp/arm/idct4x4_1_add_neon.asm
diff --git a/vpx_dsp/arm/idct4x4_1_add_neon.c b/aom_dsp/arm/idct4x4_1_add_neon.c
similarity index 95%
rename from vpx_dsp/arm/idct4x4_1_add_neon.c
rename to aom_dsp/arm/idct4x4_1_add_neon.c
index 9f999e9..0a2e827 100644
--- a/vpx_dsp/arm/idct4x4_1_add_neon.c
+++ b/aom_dsp/arm/idct4x4_1_add_neon.c
@@ -10,8 +10,8 @@
 
 #include <arm_neon.h>
 
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/inv_txfm.h"
+#include "aom_ports/mem.h"
 
 void vpx_idct4x4_1_add_neon(int16_t *input, uint8_t *dest, int dest_stride) {
   uint8x8_t d6u8;
diff --git a/vpx_dsp/arm/idct4x4_add_neon.asm b/aom_dsp/arm/idct4x4_add_neon.asm
similarity index 100%
rename from vpx_dsp/arm/idct4x4_add_neon.asm
rename to aom_dsp/arm/idct4x4_add_neon.asm
diff --git a/vpx_dsp/arm/idct4x4_add_neon.c b/aom_dsp/arm/idct4x4_add_neon.c
similarity index 100%
rename from vpx_dsp/arm/idct4x4_add_neon.c
rename to aom_dsp/arm/idct4x4_add_neon.c
diff --git a/vpx_dsp/arm/idct8x8_1_add_neon.asm b/aom_dsp/arm/idct8x8_1_add_neon.asm
similarity index 100%
rename from vpx_dsp/arm/idct8x8_1_add_neon.asm
rename to aom_dsp/arm/idct8x8_1_add_neon.asm
diff --git a/vpx_dsp/arm/idct8x8_1_add_neon.c b/aom_dsp/arm/idct8x8_1_add_neon.c
similarity index 96%
rename from vpx_dsp/arm/idct8x8_1_add_neon.c
rename to aom_dsp/arm/idct8x8_1_add_neon.c
index e3db0b8..bda5998 100644
--- a/vpx_dsp/arm/idct8x8_1_add_neon.c
+++ b/aom_dsp/arm/idct8x8_1_add_neon.c
@@ -10,8 +10,8 @@
 
 #include <arm_neon.h>
 
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/inv_txfm.h"
+#include "aom_ports/mem.h"
 
 void vpx_idct8x8_1_add_neon(int16_t *input, uint8_t *dest, int dest_stride) {
   uint8x8_t d2u8, d3u8, d30u8, d31u8;
diff --git a/vpx_dsp/arm/idct8x8_add_neon.asm b/aom_dsp/arm/idct8x8_add_neon.asm
similarity index 100%
rename from vpx_dsp/arm/idct8x8_add_neon.asm
rename to aom_dsp/arm/idct8x8_add_neon.asm
diff --git a/vpx_dsp/arm/idct8x8_add_neon.c b/aom_dsp/arm/idct8x8_add_neon.c
similarity index 99%
rename from vpx_dsp/arm/idct8x8_add_neon.c
rename to aom_dsp/arm/idct8x8_add_neon.c
index f1c2711..124c317 100644
--- a/vpx_dsp/arm/idct8x8_add_neon.c
+++ b/aom_dsp/arm/idct8x8_add_neon.c
@@ -11,7 +11,7 @@
 #include <arm_neon.h>
 
 #include "./vpx_config.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/txfm_common.h"
 
 static INLINE void TRANSPOSE8X8(int16x8_t *q8s16, int16x8_t *q9s16,
                                 int16x8_t *q10s16, int16x8_t *q11s16,
diff --git a/vpx_dsp/arm/intrapred_neon.c b/aom_dsp/arm/intrapred_neon.c
similarity index 99%
rename from vpx_dsp/arm/intrapred_neon.c
rename to aom_dsp/arm/intrapred_neon.c
index 32dd1ba..3166a4e 100644
--- a/vpx_dsp/arm/intrapred_neon.c
+++ b/aom_dsp/arm/intrapred_neon.c
@@ -12,7 +12,7 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 //------------------------------------------------------------------------------
 // DC 4x4
diff --git a/vpx_dsp/arm/intrapred_neon_asm.asm b/aom_dsp/arm/intrapred_neon_asm.asm
similarity index 100%
rename from vpx_dsp/arm/intrapred_neon_asm.asm
rename to aom_dsp/arm/intrapred_neon_asm.asm
diff --git a/vpx_dsp/arm/loopfilter_16_neon.asm b/aom_dsp/arm/loopfilter_16_neon.asm
similarity index 100%
rename from vpx_dsp/arm/loopfilter_16_neon.asm
rename to aom_dsp/arm/loopfilter_16_neon.asm
diff --git a/vpx_dsp/arm/loopfilter_16_neon.c b/aom_dsp/arm/loopfilter_16_neon.c
similarity index 99%
rename from vpx_dsp/arm/loopfilter_16_neon.c
rename to aom_dsp/arm/loopfilter_16_neon.c
index 9607bb2..70087f9 100644
--- a/vpx_dsp/arm/loopfilter_16_neon.c
+++ b/aom_dsp/arm/loopfilter_16_neon.c
@@ -12,7 +12,7 @@
 
 #include "./vpx_dsp_rtcd.h"
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 static INLINE void loop_filter_neon_16(uint8x16_t qblimit,  // blimit
                                        uint8x16_t qlimit,   // limit
diff --git a/vpx_dsp/arm/loopfilter_4_neon.asm b/aom_dsp/arm/loopfilter_4_neon.asm
similarity index 100%
rename from vpx_dsp/arm/loopfilter_4_neon.asm
rename to aom_dsp/arm/loopfilter_4_neon.asm
diff --git a/vpx_dsp/arm/loopfilter_4_neon.c b/aom_dsp/arm/loopfilter_4_neon.c
similarity index 100%
rename from vpx_dsp/arm/loopfilter_4_neon.c
rename to aom_dsp/arm/loopfilter_4_neon.c
diff --git a/vpx_dsp/arm/loopfilter_8_neon.asm b/aom_dsp/arm/loopfilter_8_neon.asm
similarity index 100%
rename from vpx_dsp/arm/loopfilter_8_neon.asm
rename to aom_dsp/arm/loopfilter_8_neon.asm
diff --git a/vpx_dsp/arm/loopfilter_8_neon.c b/aom_dsp/arm/loopfilter_8_neon.c
similarity index 100%
rename from vpx_dsp/arm/loopfilter_8_neon.c
rename to aom_dsp/arm/loopfilter_8_neon.c
diff --git a/vpx_dsp/arm/loopfilter_mb_neon.asm b/aom_dsp/arm/loopfilter_mb_neon.asm
similarity index 100%
rename from vpx_dsp/arm/loopfilter_mb_neon.asm
rename to aom_dsp/arm/loopfilter_mb_neon.asm
diff --git a/vpx_dsp/arm/loopfilter_neon.c b/aom_dsp/arm/loopfilter_neon.c
similarity index 98%
rename from vpx_dsp/arm/loopfilter_neon.c
rename to aom_dsp/arm/loopfilter_neon.c
index 9129b5d..04c163a 100644
--- a/vpx_dsp/arm/loopfilter_neon.c
+++ b/aom_dsp/arm/loopfilter_neon.c
@@ -12,7 +12,7 @@
 
 #include "./vpx_dsp_rtcd.h"
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 void vpx_lpf_vertical_4_dual_neon(uint8_t *s, int p, const uint8_t *blimit0,
                                   const uint8_t *limit0, const uint8_t *thresh0,
diff --git a/vpx_dsp/arm/sad4d_neon.c b/aom_dsp/arm/sad4d_neon.c
similarity index 99%
rename from vpx_dsp/arm/sad4d_neon.c
rename to aom_dsp/arm/sad4d_neon.c
index dc20398..11f13be 100644
--- a/vpx_dsp/arm/sad4d_neon.c
+++ b/aom_dsp/arm/sad4d_neon.c
@@ -12,7 +12,7 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 static INLINE unsigned int horizontal_long_add_16x8(const uint16x8_t vec_lo,
                                                     const uint16x8_t vec_hi) {
diff --git a/vpx_dsp/arm/sad_media.asm b/aom_dsp/arm/sad_media.asm
similarity index 100%
rename from vpx_dsp/arm/sad_media.asm
rename to aom_dsp/arm/sad_media.asm
diff --git a/vpx_dsp/arm/sad_neon.c b/aom_dsp/arm/sad_neon.c
similarity index 99%
rename from vpx_dsp/arm/sad_neon.c
rename to aom_dsp/arm/sad_neon.c
index ff32287..19fa109 100644
--- a/vpx_dsp/arm/sad_neon.c
+++ b/aom_dsp/arm/sad_neon.c
@@ -12,7 +12,7 @@
 
 #include "./vpx_config.h"
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 unsigned int vpx_sad8x16_neon(unsigned char *src_ptr, int src_stride,
                               unsigned char *ref_ptr, int ref_stride) {
diff --git a/vpx_dsp/arm/save_reg_neon.asm b/aom_dsp/arm/save_reg_neon.asm
similarity index 100%
rename from vpx_dsp/arm/save_reg_neon.asm
rename to aom_dsp/arm/save_reg_neon.asm
diff --git a/vpx_dsp/arm/subpel_variance_media.c b/aom_dsp/arm/subpel_variance_media.c
similarity index 98%
rename from vpx_dsp/arm/subpel_variance_media.c
rename to aom_dsp/arm/subpel_variance_media.c
index ab53361..69b1b33 100644
--- a/vpx_dsp/arm/subpel_variance_media.c
+++ b/aom_dsp/arm/subpel_variance_media.c
@@ -10,8 +10,8 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_MEDIA
 static const int16_t bilinear_filters_media[8][2] = { { 128, 0 }, { 112, 16 },
diff --git a/vpx_dsp/arm/subpel_variance_neon.c b/aom_dsp/arm/subpel_variance_neon.c
similarity index 98%
rename from vpx_dsp/arm/subpel_variance_neon.c
rename to aom_dsp/arm/subpel_variance_neon.c
index f044e11..caa3f4a 100644
--- a/vpx_dsp/arm/subpel_variance_neon.c
+++ b/aom_dsp/arm/subpel_variance_neon.c
@@ -12,10 +12,10 @@
 #include "./vpx_dsp_rtcd.h"
 #include "./vpx_config.h"
 
-#include "vpx_ports/mem.h"
-#include "vpx/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom/vpx_integer.h"
 
-#include "vpx_dsp/variance.h"
+#include "aom_dsp/variance.h"
 
 static const uint8_t bilinear_filters[8][2] = {
   { 128, 0 }, { 112, 16 }, { 96, 32 }, { 80, 48 },
diff --git a/vpx_dsp/arm/subtract_neon.c b/aom_dsp/arm/subtract_neon.c
similarity index 98%
rename from vpx_dsp/arm/subtract_neon.c
rename to aom_dsp/arm/subtract_neon.c
index ce81fb6..ab7157c 100644
--- a/vpx_dsp/arm/subtract_neon.c
+++ b/aom_dsp/arm/subtract_neon.c
@@ -11,7 +11,7 @@
 #include <arm_neon.h>
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 void vpx_subtract_block_neon(int rows, int cols, int16_t *diff,
                              ptrdiff_t diff_stride, const uint8_t *src,
diff --git a/vpx_dsp/arm/variance_halfpixvar16x16_h_media.asm b/aom_dsp/arm/variance_halfpixvar16x16_h_media.asm
similarity index 100%
rename from vpx_dsp/arm/variance_halfpixvar16x16_h_media.asm
rename to aom_dsp/arm/variance_halfpixvar16x16_h_media.asm
diff --git a/vpx_dsp/arm/variance_halfpixvar16x16_hv_media.asm b/aom_dsp/arm/variance_halfpixvar16x16_hv_media.asm
similarity index 100%
rename from vpx_dsp/arm/variance_halfpixvar16x16_hv_media.asm
rename to aom_dsp/arm/variance_halfpixvar16x16_hv_media.asm
diff --git a/vpx_dsp/arm/variance_halfpixvar16x16_v_media.asm b/aom_dsp/arm/variance_halfpixvar16x16_v_media.asm
similarity index 100%
rename from vpx_dsp/arm/variance_halfpixvar16x16_v_media.asm
rename to aom_dsp/arm/variance_halfpixvar16x16_v_media.asm
diff --git a/vpx_dsp/arm/variance_media.asm b/aom_dsp/arm/variance_media.asm
similarity index 100%
rename from vpx_dsp/arm/variance_media.asm
rename to aom_dsp/arm/variance_media.asm
diff --git a/vpx_dsp/arm/variance_neon.c b/aom_dsp/arm/variance_neon.c
similarity index 99%
rename from vpx_dsp/arm/variance_neon.c
rename to aom_dsp/arm/variance_neon.c
index f469afc..fcf6e45 100644
--- a/vpx_dsp/arm/variance_neon.c
+++ b/aom_dsp/arm/variance_neon.c
@@ -13,8 +13,8 @@
 #include "./vpx_dsp_rtcd.h"
 #include "./vpx_config.h"
 
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
 
 static INLINE int horizontal_add_s16x8(const int16x8_t v_16x8) {
   const int32x4_t a = vpaddlq_s16(v_16x8);
diff --git a/vpx_dsp/arm/vpx_convolve8_avg_neon.c b/aom_dsp/arm/vpx_convolve8_avg_neon.c
similarity index 99%
rename from vpx_dsp/arm/vpx_convolve8_avg_neon.c
rename to aom_dsp/arm/vpx_convolve8_avg_neon.c
index 69cb284..c6b1831 100644
--- a/vpx_dsp/arm/vpx_convolve8_avg_neon.c
+++ b/aom_dsp/arm/vpx_convolve8_avg_neon.c
@@ -13,8 +13,8 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
 
 static INLINE int32x4_t MULTIPLY_BY_Q0(int16x4_t dsrc0, int16x4_t dsrc1,
                                        int16x4_t dsrc2, int16x4_t dsrc3,
diff --git a/vpx_dsp/arm/vpx_convolve8_avg_neon_asm.asm b/aom_dsp/arm/vpx_convolve8_avg_neon_asm.asm
similarity index 100%
rename from vpx_dsp/arm/vpx_convolve8_avg_neon_asm.asm
rename to aom_dsp/arm/vpx_convolve8_avg_neon_asm.asm
diff --git a/vpx_dsp/arm/vpx_convolve8_neon.c b/aom_dsp/arm/vpx_convolve8_neon.c
similarity index 99%
rename from vpx_dsp/arm/vpx_convolve8_neon.c
rename to aom_dsp/arm/vpx_convolve8_neon.c
index 5145256..b84be93 100644
--- a/vpx_dsp/arm/vpx_convolve8_neon.c
+++ b/aom_dsp/arm/vpx_convolve8_neon.c
@@ -13,8 +13,8 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
 
 static INLINE int32x4_t MULTIPLY_BY_Q0(int16x4_t dsrc0, int16x4_t dsrc1,
                                        int16x4_t dsrc2, int16x4_t dsrc3,
diff --git a/vpx_dsp/arm/vpx_convolve8_neon_asm.asm b/aom_dsp/arm/vpx_convolve8_neon_asm.asm
similarity index 100%
rename from vpx_dsp/arm/vpx_convolve8_neon_asm.asm
rename to aom_dsp/arm/vpx_convolve8_neon_asm.asm
diff --git a/vpx_dsp/arm/vpx_convolve_avg_neon.c b/aom_dsp/arm/vpx_convolve_avg_neon.c
similarity index 98%
rename from vpx_dsp/arm/vpx_convolve_avg_neon.c
rename to aom_dsp/arm/vpx_convolve_avg_neon.c
index abc2511..a04d384 100644
--- a/vpx_dsp/arm/vpx_convolve_avg_neon.c
+++ b/aom_dsp/arm/vpx_convolve_avg_neon.c
@@ -11,7 +11,7 @@
 #include <arm_neon.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 void vpx_convolve_avg_neon(const uint8_t *src,    // r0
                            ptrdiff_t src_stride,  // r1
diff --git a/vpx_dsp/arm/vpx_convolve_avg_neon_asm.asm b/aom_dsp/arm/vpx_convolve_avg_neon_asm.asm
similarity index 100%
rename from vpx_dsp/arm/vpx_convolve_avg_neon_asm.asm
rename to aom_dsp/arm/vpx_convolve_avg_neon_asm.asm
diff --git a/vpx_dsp/arm/vpx_convolve_copy_neon.c b/aom_dsp/arm/vpx_convolve_copy_neon.c
similarity index 98%
rename from vpx_dsp/arm/vpx_convolve_copy_neon.c
rename to aom_dsp/arm/vpx_convolve_copy_neon.c
index fec189e..8000eb7 100644
--- a/vpx_dsp/arm/vpx_convolve_copy_neon.c
+++ b/aom_dsp/arm/vpx_convolve_copy_neon.c
@@ -11,7 +11,7 @@
 #include <arm_neon.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 void vpx_convolve_copy_neon(const uint8_t *src,    // r0
                             ptrdiff_t src_stride,  // r1
diff --git a/vpx_dsp/arm/vpx_convolve_copy_neon_asm.asm b/aom_dsp/arm/vpx_convolve_copy_neon_asm.asm
similarity index 100%
rename from vpx_dsp/arm/vpx_convolve_copy_neon_asm.asm
rename to aom_dsp/arm/vpx_convolve_copy_neon_asm.asm
diff --git a/vpx_dsp/arm/vpx_convolve_neon.c b/aom_dsp/arm/vpx_convolve_neon.c
similarity index 97%
rename from vpx_dsp/arm/vpx_convolve_neon.c
rename to aom_dsp/arm/vpx_convolve_neon.c
index c2d5895..297b64b 100644
--- a/vpx_dsp/arm/vpx_convolve_neon.c
+++ b/aom_dsp/arm/vpx_convolve_neon.c
@@ -11,8 +11,8 @@
 #include <assert.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
 
 void vpx_convolve8_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst,
                         ptrdiff_t dst_stride, const int16_t *filter_x,
diff --git a/vpx_dsp/avg.c b/aom_dsp/avg.c
similarity index 99%
rename from vpx_dsp/avg.c
rename to aom_dsp/avg.c
index b0c5e98..d3e4578 100644
--- a/vpx_dsp/avg.c
+++ b/aom_dsp/avg.c
@@ -10,7 +10,7 @@
 #include <stdlib.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
 unsigned int vpx_avg_8x8_c(const uint8_t *src, int stride) {
   int i, j;
diff --git a/vpx_dsp/bitreader.c b/aom_dsp/bitreader.c
similarity index 93%
rename from vpx_dsp/bitreader.c
rename to aom_dsp/bitreader.c
index 90cbbba..0942005 100644
--- a/vpx_dsp/bitreader.c
+++ b/aom_dsp/bitreader.c
@@ -11,12 +11,12 @@
 
 #include "./vpx_config.h"
 
-#include "vpx_dsp/bitreader.h"
-#include "vpx_dsp/prob.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_util/endian_inl.h"
+#include "aom_dsp/bitreader.h"
+#include "aom_dsp/prob.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_util/endian_inl.h"
 
 int vpx_reader_init(vpx_reader *r, const uint8_t *buffer, size_t size,
                     vpx_decrypt_cb decrypt_cb, void *decrypt_state) {
diff --git a/vpx_dsp/bitreader.h b/aom_dsp/bitreader.h
similarity index 96%
rename from vpx_dsp/bitreader.h
rename to aom_dsp/bitreader.h
index 1012454..d211511 100644
--- a/vpx_dsp/bitreader.h
+++ b/aom_dsp/bitreader.h
@@ -21,11 +21,11 @@
 #include <stdio.h>
 #endif  // CONFIG_BITSTREAM_DEBUG
 
-#include "vpx_ports/mem.h"
-#include "vpx/vp8dx.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/prob.h"
-#include "vpx_util/debug_util.h"
+#include "aom_ports/mem.h"
+#include "aom/vp8dx.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/prob.h"
+#include "aom_util/debug_util.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/bitreader_buffer.c b/aom_dsp/bitreader_buffer.c
similarity index 100%
rename from vpx_dsp/bitreader_buffer.c
rename to aom_dsp/bitreader_buffer.c
diff --git a/vpx_dsp/bitreader_buffer.h b/aom_dsp/bitreader_buffer.h
similarity index 97%
rename from vpx_dsp/bitreader_buffer.h
rename to aom_dsp/bitreader_buffer.h
index 8a48a95..5e557ea 100644
--- a/vpx_dsp/bitreader_buffer.h
+++ b/aom_dsp/bitreader_buffer.h
@@ -13,7 +13,7 @@
 
 #include <limits.h>
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/bitwriter.c b/aom_dsp/bitwriter.c
similarity index 100%
rename from vpx_dsp/bitwriter.c
rename to aom_dsp/bitwriter.c
diff --git a/vpx_dsp/bitwriter.h b/aom_dsp/bitwriter.h
similarity index 95%
rename from vpx_dsp/bitwriter.h
rename to aom_dsp/bitwriter.h
index 5e952a8..5b3634a 100644
--- a/vpx_dsp/bitwriter.h
+++ b/aom_dsp/bitwriter.h
@@ -11,9 +11,9 @@
 #ifndef VPX_DSP_BITWRITER_H_
 #define VPX_DSP_BITWRITER_H_
 
-#include "vpx_ports/mem.h"
-#include "vpx_dsp/prob.h"
-#include "vpx_util/debug_util.h"
+#include "aom_ports/mem.h"
+#include "aom_dsp/prob.h"
+#include "aom_util/debug_util.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/bitwriter_buffer.c b/aom_dsp/bitwriter_buffer.c
similarity index 100%
rename from vpx_dsp/bitwriter_buffer.c
rename to aom_dsp/bitwriter_buffer.c
diff --git a/vpx_dsp/bitwriter_buffer.h b/aom_dsp/bitwriter_buffer.h
similarity index 96%
rename from vpx_dsp/bitwriter_buffer.h
rename to aom_dsp/bitwriter_buffer.h
index a123a2f..2406abd 100644
--- a/vpx_dsp/bitwriter_buffer.h
+++ b/aom_dsp/bitwriter_buffer.h
@@ -11,7 +11,7 @@
 #ifndef VPX_DSP_BITWRITER_BUFFER_H_
 #define VPX_DSP_BITWRITER_BUFFER_H_
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/blend.h b/aom_dsp/blend.h
similarity index 97%
rename from vpx_dsp/blend.h
rename to aom_dsp/blend.h
index 2ceb4c7..e43149d 100644
--- a/vpx_dsp/blend.h
+++ b/aom_dsp/blend.h
@@ -11,7 +11,7 @@
 #ifndef VPX_DSP_BLEND_H_
 #define VPX_DSP_BLEND_H_
 
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
 // Various blending functions and macros.
 // See also the vpx_blend_* functions in vpx_dsp_rtcd.h
diff --git a/vpx_dsp/blend_a64_hmask.c b/aom_dsp/blend_a64_hmask.c
similarity index 94%
rename from vpx_dsp/blend_a64_hmask.c
rename to aom_dsp/blend_a64_hmask.c
index 46d73ff..cce5d88 100644
--- a/vpx_dsp/blend_a64_hmask.c
+++ b/aom_dsp/blend_a64_hmask.c
@@ -10,10 +10,10 @@
 
 #include <assert.h>
 
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/blend.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/blend.h"
 
 #include "./vpx_dsp_rtcd.h"
 
diff --git a/vpx_dsp/blend_a64_mask.c b/aom_dsp/blend_a64_mask.c
similarity index 96%
rename from vpx_dsp/blend_a64_mask.c
rename to aom_dsp/blend_a64_mask.c
index eee544c..939e729 100644
--- a/vpx_dsp/blend_a64_mask.c
+++ b/aom_dsp/blend_a64_mask.c
@@ -10,15 +10,15 @@
 
 #include <assert.h>
 
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-#include "vpx_dsp/blend.h"
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom_dsp/blend.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 #include "./vpx_dsp_rtcd.h"
 
 // Blending with alpha mask. Mask values come from the range [0, 64],
-// as described for VPX_BLEND_A64 in vpx_dsp/blned.h. src0 or src1 can
+// as described for VPX_BLEND_A64 in aom_dsp/blned.h. src0 or src1 can
 // be the same as dst, or dst can be different from both sources.
 
 void vpx_blend_a64_mask_c(uint8_t *dst, uint32_t dst_stride,
diff --git a/vpx_dsp/blend_a64_vmask.c b/aom_dsp/blend_a64_vmask.c
similarity index 94%
rename from vpx_dsp/blend_a64_vmask.c
rename to aom_dsp/blend_a64_vmask.c
index 4a2ced7..b22dcd1 100644
--- a/vpx_dsp/blend_a64_vmask.c
+++ b/aom_dsp/blend_a64_vmask.c
@@ -10,10 +10,10 @@
 
 #include <assert.h>
 
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/blend.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/blend.h"
 
 #include "./vpx_dsp_rtcd.h"
 
diff --git a/vpx_dsp/deblock.c b/aom_dsp/deblock.c
similarity index 99%
rename from vpx_dsp/deblock.c
rename to aom_dsp/deblock.c
index 589b124..66995c1 100644
--- a/vpx_dsp/deblock.c
+++ b/aom_dsp/deblock.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 #include <stdlib.h>
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 const int16_t vpx_rv[] = {
   8,  5,  2,  2,  8,  12, 4,  9,  8,  3,  0,  3,  9,  0,  0,  0,  8,  3,  14,
diff --git a/vpx_dsp/fastssim.c b/aom_dsp/fastssim.c
similarity index 99%
rename from vpx_dsp/fastssim.c
rename to aom_dsp/fastssim.c
index 4d5eb5a..1bdec95 100644
--- a/vpx_dsp/fastssim.c
+++ b/aom_dsp/fastssim.c
@@ -16,8 +16,8 @@
 #include <string.h>
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/ssim.h"
-#include "vpx_ports/system_state.h"
+#include "aom_dsp/ssim.h"
+#include "aom_ports/system_state.h"
 
 typedef struct fs_level fs_level;
 typedef struct fs_ctx fs_ctx;
diff --git a/vpx_dsp/fwd_txfm.c b/aom_dsp/fwd_txfm.c
similarity index 99%
rename from vpx_dsp/fwd_txfm.c
rename to aom_dsp/fwd_txfm.c
index 4e7d405..aecaa93 100644
--- a/vpx_dsp/fwd_txfm.c
+++ b/aom_dsp/fwd_txfm.c
@@ -9,7 +9,7 @@
  */
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/fwd_txfm.h"
+#include "aom_dsp/fwd_txfm.h"
 
 void vpx_fdct4x4_c(const int16_t *input, tran_low_t *output, int stride) {
   // The 2D transform is done with two passes which are actually pretty
@@ -744,7 +744,7 @@
     for (j = 0; j < 32; ++j)
       // TODO(cd): see quality impact of only doing
       //           output[j * 32 + i] = (temp_out[j] + 1) >> 2;
-      //           PS: also change code in vpx_dsp/x86/vpx_dct_sse2.c
+      //           PS: also change code in aom_dsp/x86/vpx_dct_sse2.c
       output[j * 32 + i] = (temp_out[j] + 1 + (temp_out[j] > 0)) >> 2;
   }
 
diff --git a/vpx_dsp/fwd_txfm.h b/aom_dsp/fwd_txfm.h
similarity index 96%
rename from vpx_dsp/fwd_txfm.h
rename to aom_dsp/fwd_txfm.h
index 29e139c..b874dd4 100644
--- a/vpx_dsp/fwd_txfm.h
+++ b/aom_dsp/fwd_txfm.h
@@ -11,7 +11,7 @@
 #ifndef VPX_DSP_FWD_TXFM_H_
 #define VPX_DSP_FWD_TXFM_H_
 
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/txfm_common.h"
 
 static INLINE tran_high_t fdct_round_shift(tran_high_t input) {
   tran_high_t rv = ROUND_POWER_OF_TWO(input, DCT_CONST_BITS);
diff --git a/vpx_dsp/intrapred.c b/aom_dsp/intrapred.c
similarity index 99%
rename from vpx_dsp/intrapred.c
rename to aom_dsp/intrapred.c
index 4179e0f..b57ba71 100644
--- a/vpx_dsp/intrapred.c
+++ b/aom_dsp/intrapred.c
@@ -11,8 +11,8 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
 
 #define DST(x, y) dst[(x) + (y)*stride]
 #define AVG3(a, b, c) (((a) + 2 * (b) + (c) + 2) >> 2)
diff --git a/vpx_dsp/inv_txfm.c b/aom_dsp/inv_txfm.c
similarity index 99%
rename from vpx_dsp/inv_txfm.c
rename to aom_dsp/inv_txfm.c
index d5be32e..6f92bee 100644
--- a/vpx_dsp/inv_txfm.c
+++ b/aom_dsp/inv_txfm.c
@@ -12,7 +12,7 @@
 #include <string.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/inv_txfm.h"
+#include "aom_dsp/inv_txfm.h"
 
 void vpx_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride) {
   /* 4-point reversible, orthonormal inverse Walsh-Hadamard in 3.5 adds,
diff --git a/vpx_dsp/inv_txfm.h b/aom_dsp/inv_txfm.h
similarity index 98%
rename from vpx_dsp/inv_txfm.h
rename to aom_dsp/inv_txfm.h
index 0f31a79..6865eaf 100644
--- a/vpx_dsp/inv_txfm.h
+++ b/aom_dsp/inv_txfm.h
@@ -14,8 +14,8 @@
 #include <assert.h>
 
 #include "./vpx_config.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_ports/mem.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/loopfilter.c b/aom_dsp/loopfilter.c
similarity index 99%
rename from vpx_dsp/loopfilter.c
rename to aom_dsp/loopfilter.c
index 40f02b4..53d028c 100644
--- a/vpx_dsp/loopfilter.c
+++ b/aom_dsp/loopfilter.c
@@ -12,8 +12,8 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
 
 static INLINE int8_t signed_char_clamp(int t) {
   return (int8_t)clamp(t, -128, 127);
diff --git a/vpx_dsp/mips/add_noise_msa.c b/aom_dsp/mips/add_noise_msa.c
similarity index 100%
rename from vpx_dsp/mips/add_noise_msa.c
rename to aom_dsp/mips/add_noise_msa.c
diff --git a/vpx_dsp/mips/avg_msa.c b/aom_dsp/mips/avg_msa.c
similarity index 97%
rename from vpx_dsp/mips/avg_msa.c
rename to aom_dsp/mips/avg_msa.c
index 52a24ed..5896708 100644
--- a/vpx_dsp/mips/avg_msa.c
+++ b/aom_dsp/mips/avg_msa.c
@@ -9,7 +9,7 @@
  */
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/macros_msa.h"
 
 uint32_t vpx_avg_8x8_msa(const uint8_t *src, int32_t src_stride) {
   uint32_t sum_out;
diff --git a/vpx_dsp/mips/common_dspr2.c b/aom_dsp/mips/common_dspr2.c
similarity index 95%
rename from vpx_dsp/mips/common_dspr2.c
rename to aom_dsp/mips/common_dspr2.c
index b22f084..268bbcd 100644
--- a/vpx_dsp/mips/common_dspr2.c
+++ b/aom_dsp/mips/common_dspr2.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/common_dspr2.h"
+#include "aom_dsp/mips/common_dspr2.h"
 
 #if HAVE_DSPR2
 uint8_t vpx_ff_cropTbl_a[256 + 2 * CROP_WIDTH];
diff --git a/vpx_dsp/mips/common_dspr2.h b/aom_dsp/mips/common_dspr2.h
similarity index 93%
rename from vpx_dsp/mips/common_dspr2.h
rename to aom_dsp/mips/common_dspr2.h
index 0a42f5c..1da490a 100644
--- a/vpx_dsp/mips/common_dspr2.h
+++ b/aom_dsp/mips/common_dspr2.h
@@ -13,7 +13,7 @@
 
 #include <assert.h>
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -21,7 +21,7 @@
 #if HAVE_DSPR2
 #define CROP_WIDTH 512
 
-extern uint8_t *vpx_ff_cropTbl;  // From "vpx_dsp/mips/intrapred4_dspr2.c"
+extern uint8_t *vpx_ff_cropTbl;  // From "aom_dsp/mips/intrapred4_dspr2.c"
 
 static INLINE void prefetch_load(const unsigned char *src) {
   __asm__ __volatile__("pref   0,  0(%[src])   \n\t" : : [src] "r"(src));
diff --git a/vpx_dsp/mips/convolve2_avg_dspr2.c b/aom_dsp/mips/convolve2_avg_dspr2.c
similarity index 98%
rename from vpx_dsp/mips/convolve2_avg_dspr2.c
rename to aom_dsp/mips/convolve2_avg_dspr2.c
index ae88edd..b73eba2 100644
--- a/vpx_dsp/mips/convolve2_avg_dspr2.c
+++ b/aom_dsp/mips/convolve2_avg_dspr2.c
@@ -12,10 +12,10 @@
 #include <stdio.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/convolve_common_dspr2.h"
-#include "vpx_dsp/vpx_convolve.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/mips/convolve_common_dspr2.h"
+#include "aom_dsp/vpx_convolve.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 static void convolve_bi_avg_vert_4_dspr2(const uint8_t *src, int32_t src_stride,
diff --git a/vpx_dsp/mips/convolve2_avg_horiz_dspr2.c b/aom_dsp/mips/convolve2_avg_horiz_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/convolve2_avg_horiz_dspr2.c
rename to aom_dsp/mips/convolve2_avg_horiz_dspr2.c
index e944207..765c902 100644
--- a/vpx_dsp/mips/convolve2_avg_horiz_dspr2.c
+++ b/aom_dsp/mips/convolve2_avg_horiz_dspr2.c
@@ -12,10 +12,10 @@
 #include <stdio.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/convolve_common_dspr2.h"
-#include "vpx_dsp/vpx_convolve.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/mips/convolve_common_dspr2.h"
+#include "aom_dsp/vpx_convolve.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 static void convolve_bi_avg_horiz_4_dspr2(const uint8_t *src,
diff --git a/vpx_dsp/mips/convolve2_dspr2.c b/aom_dsp/mips/convolve2_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/convolve2_dspr2.c
rename to aom_dsp/mips/convolve2_dspr2.c
index e355ba3..78ee6e0 100644
--- a/vpx_dsp/mips/convolve2_dspr2.c
+++ b/aom_dsp/mips/convolve2_dspr2.c
@@ -12,10 +12,10 @@
 #include <stdio.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/convolve_common_dspr2.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/mips/convolve_common_dspr2.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_filter.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 static void convolve_bi_horiz_4_transposed_dspr2(
diff --git a/vpx_dsp/mips/convolve2_horiz_dspr2.c b/aom_dsp/mips/convolve2_horiz_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/convolve2_horiz_dspr2.c
rename to aom_dsp/mips/convolve2_horiz_dspr2.c
index 5cc06b5..0d6ebea 100644
--- a/vpx_dsp/mips/convolve2_horiz_dspr2.c
+++ b/aom_dsp/mips/convolve2_horiz_dspr2.c
@@ -12,10 +12,10 @@
 #include <stdio.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/convolve_common_dspr2.h"
-#include "vpx_dsp/vpx_convolve.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/mips/convolve_common_dspr2.h"
+#include "aom_dsp/vpx_convolve.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 static void convolve_bi_horiz_4_dspr2(const uint8_t *src, int32_t src_stride,
diff --git a/vpx_dsp/mips/convolve2_vert_dspr2.c b/aom_dsp/mips/convolve2_vert_dspr2.c
similarity index 98%
rename from vpx_dsp/mips/convolve2_vert_dspr2.c
rename to aom_dsp/mips/convolve2_vert_dspr2.c
index eb1975e..a9d0cbf 100644
--- a/vpx_dsp/mips/convolve2_vert_dspr2.c
+++ b/aom_dsp/mips/convolve2_vert_dspr2.c
@@ -12,10 +12,10 @@
 #include <stdio.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/convolve_common_dspr2.h"
-#include "vpx_dsp/vpx_convolve.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/mips/convolve_common_dspr2.h"
+#include "aom_dsp/vpx_convolve.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 static void convolve_bi_vert_4_dspr2(const uint8_t *src, int32_t src_stride,
diff --git a/vpx_dsp/mips/convolve8_avg_dspr2.c b/aom_dsp/mips/convolve8_avg_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/convolve8_avg_dspr2.c
rename to aom_dsp/mips/convolve8_avg_dspr2.c
index 3181229..8baf33a 100644
--- a/vpx_dsp/mips/convolve8_avg_dspr2.c
+++ b/aom_dsp/mips/convolve8_avg_dspr2.c
@@ -12,10 +12,10 @@
 #include <stdio.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/convolve_common_dspr2.h"
-#include "vpx_dsp/vpx_convolve.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/mips/convolve_common_dspr2.h"
+#include "aom_dsp/vpx_convolve.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 static void convolve_avg_vert_4_dspr2(const uint8_t *src, int32_t src_stride,
diff --git a/vpx_dsp/mips/convolve8_avg_horiz_dspr2.c b/aom_dsp/mips/convolve8_avg_horiz_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/convolve8_avg_horiz_dspr2.c
rename to aom_dsp/mips/convolve8_avg_horiz_dspr2.c
index 9a9bab2..d732d2e 100644
--- a/vpx_dsp/mips/convolve8_avg_horiz_dspr2.c
+++ b/aom_dsp/mips/convolve8_avg_horiz_dspr2.c
@@ -12,10 +12,10 @@
 #include <stdio.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/convolve_common_dspr2.h"
-#include "vpx_dsp/vpx_convolve.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/mips/convolve_common_dspr2.h"
+#include "aom_dsp/vpx_convolve.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 static void convolve_avg_horiz_4_dspr2(const uint8_t *src, int32_t src_stride,
diff --git a/vpx_dsp/mips/convolve8_dspr2.c b/aom_dsp/mips/convolve8_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/convolve8_dspr2.c
rename to aom_dsp/mips/convolve8_dspr2.c
index 789ec8d..09a9083 100644
--- a/vpx_dsp/mips/convolve8_dspr2.c
+++ b/aom_dsp/mips/convolve8_dspr2.c
@@ -12,10 +12,10 @@
 #include <stdio.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/convolve_common_dspr2.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/mips/convolve_common_dspr2.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_filter.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 static void convolve_horiz_4_transposed_dspr2(const uint8_t *src,
diff --git a/vpx_dsp/mips/convolve8_horiz_dspr2.c b/aom_dsp/mips/convolve8_horiz_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/convolve8_horiz_dspr2.c
rename to aom_dsp/mips/convolve8_horiz_dspr2.c
index 196a0a2..66692be 100644
--- a/vpx_dsp/mips/convolve8_horiz_dspr2.c
+++ b/aom_dsp/mips/convolve8_horiz_dspr2.c
@@ -12,10 +12,10 @@
 #include <stdio.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/convolve_common_dspr2.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/mips/convolve_common_dspr2.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_filter.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 static void convolve_horiz_4_dspr2(const uint8_t *src, int32_t src_stride,
diff --git a/vpx_dsp/mips/convolve8_vert_dspr2.c b/aom_dsp/mips/convolve8_vert_dspr2.c
similarity index 98%
rename from vpx_dsp/mips/convolve8_vert_dspr2.c
rename to aom_dsp/mips/convolve8_vert_dspr2.c
index ad107d5..1594f10 100644
--- a/vpx_dsp/mips/convolve8_vert_dspr2.c
+++ b/aom_dsp/mips/convolve8_vert_dspr2.c
@@ -12,10 +12,10 @@
 #include <stdio.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/convolve_common_dspr2.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/mips/convolve_common_dspr2.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_filter.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 static void convolve_vert_4_dspr2(const uint8_t *src, int32_t src_stride,
diff --git a/vpx_dsp/mips/convolve_common_dspr2.h b/aom_dsp/mips/convolve_common_dspr2.h
similarity index 96%
rename from vpx_dsp/mips/convolve_common_dspr2.h
rename to aom_dsp/mips/convolve_common_dspr2.h
index 4eee3bd..b650019 100644
--- a/vpx_dsp/mips/convolve_common_dspr2.h
+++ b/aom_dsp/mips/convolve_common_dspr2.h
@@ -14,8 +14,8 @@
 #include <assert.h>
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/mips/common_dspr2.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/mips/common_dspr2.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/mips/deblock_msa.c b/aom_dsp/mips/deblock_msa.c
similarity index 100%
rename from vpx_dsp/mips/deblock_msa.c
rename to aom_dsp/mips/deblock_msa.c
diff --git a/vpx_dsp/mips/fwd_dct32x32_msa.c b/aom_dsp/mips/fwd_dct32x32_msa.c
similarity index 99%
rename from vpx_dsp/mips/fwd_dct32x32_msa.c
rename to aom_dsp/mips/fwd_dct32x32_msa.c
index e41a904..9dcde12 100644
--- a/vpx_dsp/mips/fwd_dct32x32_msa.c
+++ b/aom_dsp/mips/fwd_dct32x32_msa.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/fwd_txfm_msa.h"
+#include "aom_dsp/mips/fwd_txfm_msa.h"
 
 static void fdct8x32_1d_column_load_butterfly(const int16_t *input,
                                               int32_t src_stride,
diff --git a/vpx_dsp/mips/fwd_txfm_msa.c b/aom_dsp/mips/fwd_txfm_msa.c
similarity index 99%
rename from vpx_dsp/mips/fwd_txfm_msa.c
rename to aom_dsp/mips/fwd_txfm_msa.c
index cb3d628..c95c1d0 100644
--- a/vpx_dsp/mips/fwd_txfm_msa.c
+++ b/aom_dsp/mips/fwd_txfm_msa.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/fwd_txfm_msa.h"
+#include "aom_dsp/mips/fwd_txfm_msa.h"
 
 void fdct8x16_1d_column(const int16_t *input, int16_t *tmp_ptr,
                         int32_t src_stride) {
diff --git a/vpx_dsp/mips/fwd_txfm_msa.h b/aom_dsp/mips/fwd_txfm_msa.h
similarity index 99%
rename from vpx_dsp/mips/fwd_txfm_msa.h
rename to aom_dsp/mips/fwd_txfm_msa.h
index 6458dec..0911c3e 100644
--- a/vpx_dsp/mips/fwd_txfm_msa.h
+++ b/aom_dsp/mips/fwd_txfm_msa.h
@@ -11,8 +11,8 @@
 #ifndef VPX_DSP_MIPS_FWD_TXFM_MSA_H_
 #define VPX_DSP_MIPS_FWD_TXFM_MSA_H_
 
-#include "vpx_dsp/mips/txfm_macros_msa.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/mips/txfm_macros_msa.h"
+#include "aom_dsp/txfm_common.h"
 
 #define LD_HADD(psrc, stride)                                                  \
   ({                                                                           \
diff --git a/vpx_dsp/mips/idct16x16_msa.c b/aom_dsp/mips/idct16x16_msa.c
similarity index 99%
rename from vpx_dsp/mips/idct16x16_msa.c
rename to aom_dsp/mips/idct16x16_msa.c
index 1cbeb35..977d794 100644
--- a/vpx_dsp/mips/idct16x16_msa.c
+++ b/aom_dsp/mips/idct16x16_msa.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/inv_txfm_msa.h"
+#include "aom_dsp/mips/inv_txfm_msa.h"
 
 void vpx_idct16_1d_rows_msa(const int16_t *input, int16_t *output) {
   v8i16 loc0, loc1, loc2, loc3;
diff --git a/vpx_dsp/mips/idct32x32_msa.c b/aom_dsp/mips/idct32x32_msa.c
similarity index 99%
rename from vpx_dsp/mips/idct32x32_msa.c
rename to aom_dsp/mips/idct32x32_msa.c
index ed5cef18..e090c62 100644
--- a/vpx_dsp/mips/idct32x32_msa.c
+++ b/aom_dsp/mips/idct32x32_msa.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/inv_txfm_msa.h"
+#include "aom_dsp/mips/inv_txfm_msa.h"
 
 static void idct32x8_row_transpose_store(const int16_t *input,
                                          int16_t *tmp_buf) {
diff --git a/vpx_dsp/mips/idct4x4_msa.c b/aom_dsp/mips/idct4x4_msa.c
similarity index 98%
rename from vpx_dsp/mips/idct4x4_msa.c
rename to aom_dsp/mips/idct4x4_msa.c
index 50e8248..956b5f5 100644
--- a/vpx_dsp/mips/idct4x4_msa.c
+++ b/aom_dsp/mips/idct4x4_msa.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/inv_txfm_msa.h"
+#include "aom_dsp/mips/inv_txfm_msa.h"
 
 void vpx_iwht4x4_16_add_msa(const int16_t *input, uint8_t *dst,
                             int32_t dst_stride) {
diff --git a/vpx_dsp/mips/idct8x8_msa.c b/aom_dsp/mips/idct8x8_msa.c
similarity index 98%
rename from vpx_dsp/mips/idct8x8_msa.c
rename to aom_dsp/mips/idct8x8_msa.c
index c06330b..420433f 100644
--- a/vpx_dsp/mips/idct8x8_msa.c
+++ b/aom_dsp/mips/idct8x8_msa.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/inv_txfm_msa.h"
+#include "aom_dsp/mips/inv_txfm_msa.h"
 
 void vpx_idct8x8_64_add_msa(const int16_t *input, uint8_t *dst,
                             int32_t dst_stride) {
diff --git a/vpx_dsp/mips/intrapred16_dspr2.c b/aom_dsp/mips/intrapred16_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/intrapred16_dspr2.c
rename to aom_dsp/mips/intrapred16_dspr2.c
index 3e29d0a..b9bb55c 100644
--- a/vpx_dsp/mips/intrapred16_dspr2.c
+++ b/aom_dsp/mips/intrapred16_dspr2.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/common_dspr2.h"
+#include "aom_dsp/mips/common_dspr2.h"
 
 #if HAVE_DSPR2
 void vpx_h_predictor_16x16_dspr2(uint8_t *dst, ptrdiff_t stride,
diff --git a/vpx_dsp/mips/intrapred4_dspr2.c b/aom_dsp/mips/intrapred4_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/intrapred4_dspr2.c
rename to aom_dsp/mips/intrapred4_dspr2.c
index 9f51d50..4494bc8 100644
--- a/vpx_dsp/mips/intrapred4_dspr2.c
+++ b/aom_dsp/mips/intrapred4_dspr2.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/common_dspr2.h"
+#include "aom_dsp/mips/common_dspr2.h"
 
 #if HAVE_DSPR2
 void vpx_h_predictor_4x4_dspr2(uint8_t *dst, ptrdiff_t stride,
diff --git a/vpx_dsp/mips/intrapred8_dspr2.c b/aom_dsp/mips/intrapred8_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/intrapred8_dspr2.c
rename to aom_dsp/mips/intrapred8_dspr2.c
index eac79d5..f85209b 100644
--- a/vpx_dsp/mips/intrapred8_dspr2.c
+++ b/aom_dsp/mips/intrapred8_dspr2.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/common_dspr2.h"
+#include "aom_dsp/mips/common_dspr2.h"
 
 #if HAVE_DSPR2
 void vpx_h_predictor_8x8_dspr2(uint8_t *dst, ptrdiff_t stride,
diff --git a/vpx_dsp/mips/intrapred_msa.c b/aom_dsp/mips/intrapred_msa.c
similarity index 99%
rename from vpx_dsp/mips/intrapred_msa.c
rename to aom_dsp/mips/intrapred_msa.c
index b5ee943..17dd57b 100644
--- a/vpx_dsp/mips/intrapred_msa.c
+++ b/aom_dsp/mips/intrapred_msa.c
@@ -9,7 +9,7 @@
  */
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/macros_msa.h"
 
 #define IPRED_SUBS_UH2_UH(in0, in1, out0, out1) \
   {                                             \
diff --git a/vpx_dsp/mips/inv_txfm_dspr2.h b/aom_dsp/mips/inv_txfm_dspr2.h
similarity index 97%
rename from vpx_dsp/mips/inv_txfm_dspr2.h
rename to aom_dsp/mips/inv_txfm_dspr2.h
index edd54ae..5c9a020 100644
--- a/vpx_dsp/mips/inv_txfm_dspr2.h
+++ b/aom_dsp/mips/inv_txfm_dspr2.h
@@ -14,9 +14,9 @@
 #include <assert.h>
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_dsp/mips/common_dspr2.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/inv_txfm.h"
+#include "aom_dsp/mips/common_dspr2.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/mips/inv_txfm_msa.h b/aom_dsp/mips/inv_txfm_msa.h
similarity index 99%
rename from vpx_dsp/mips/inv_txfm_msa.h
rename to aom_dsp/mips/inv_txfm_msa.h
index ee94782..14d38b8 100644
--- a/vpx_dsp/mips/inv_txfm_msa.h
+++ b/aom_dsp/mips/inv_txfm_msa.h
@@ -11,9 +11,9 @@
 #ifndef VPX_DSP_MIPS_INV_TXFM_MSA_H_
 #define VPX_DSP_MIPS_INV_TXFM_MSA_H_
 
-#include "vpx_dsp/mips/macros_msa.h"
-#include "vpx_dsp/mips/txfm_macros_msa.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/txfm_macros_msa.h"
+#include "aom_dsp/txfm_common.h"
 
 #define VPX_ADST8(in0, in1, in2, in3, in4, in5, in6, in7, out0, out1, out2,  \
                   out3, out4, out5, out6, out7)                              \
diff --git a/vpx_dsp/mips/itrans16_dspr2.c b/aom_dsp/mips/itrans16_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/itrans16_dspr2.c
rename to aom_dsp/mips/itrans16_dspr2.c
index 0ec0c20..8d184cb 100644
--- a/vpx_dsp/mips/itrans16_dspr2.c
+++ b/aom_dsp/mips/itrans16_dspr2.c
@@ -10,8 +10,8 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/inv_txfm_dspr2.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/mips/inv_txfm_dspr2.h"
+#include "aom_dsp/txfm_common.h"
 
 #if HAVE_DSPR2
 void idct16_rows_dspr2(const int16_t *input, int16_t *output,
diff --git a/vpx_dsp/mips/itrans32_cols_dspr2.c b/aom_dsp/mips/itrans32_cols_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/itrans32_cols_dspr2.c
rename to aom_dsp/mips/itrans32_cols_dspr2.c
index ce25d55..7997131 100644
--- a/vpx_dsp/mips/itrans32_cols_dspr2.c
+++ b/aom_dsp/mips/itrans32_cols_dspr2.c
@@ -9,8 +9,8 @@
  */
 
 #include "./vpx_config.h"
-#include "vpx_dsp/mips/inv_txfm_dspr2.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/mips/inv_txfm_dspr2.h"
+#include "aom_dsp/txfm_common.h"
 
 #if HAVE_DSPR2
 void vpx_idct32_cols_add_blk_dspr2(int16_t *input, uint8_t *dest,
diff --git a/vpx_dsp/mips/itrans32_dspr2.c b/aom_dsp/mips/itrans32_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/itrans32_dspr2.c
rename to aom_dsp/mips/itrans32_dspr2.c
index d71c5ff..74248b3 100644
--- a/vpx_dsp/mips/itrans32_dspr2.c
+++ b/aom_dsp/mips/itrans32_dspr2.c
@@ -12,8 +12,8 @@
 #include <stdio.h>
 
 #include "./vpx_config.h"
-#include "vpx_dsp/mips/inv_txfm_dspr2.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/mips/inv_txfm_dspr2.h"
+#include "aom_dsp/txfm_common.h"
 
 #if HAVE_DSPR2
 static void idct32_rows_dspr2(const int16_t *input, int16_t *output,
diff --git a/vpx_dsp/mips/itrans4_dspr2.c b/aom_dsp/mips/itrans4_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/itrans4_dspr2.c
rename to aom_dsp/mips/itrans4_dspr2.c
index 516ea80..d6ea667 100644
--- a/vpx_dsp/mips/itrans4_dspr2.c
+++ b/aom_dsp/mips/itrans4_dspr2.c
@@ -10,8 +10,8 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/inv_txfm_dspr2.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/mips/inv_txfm_dspr2.h"
+#include "aom_dsp/txfm_common.h"
 
 #if HAVE_DSPR2
 void vpx_idct4_rows_dspr2(const int16_t *input, int16_t *output) {
diff --git a/vpx_dsp/mips/itrans8_dspr2.c b/aom_dsp/mips/itrans8_dspr2.c
similarity index 99%
rename from vpx_dsp/mips/itrans8_dspr2.c
rename to aom_dsp/mips/itrans8_dspr2.c
index 08a6c78..4cee3d0 100644
--- a/vpx_dsp/mips/itrans8_dspr2.c
+++ b/aom_dsp/mips/itrans8_dspr2.c
@@ -10,8 +10,8 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/inv_txfm_dspr2.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/mips/inv_txfm_dspr2.h"
+#include "aom_dsp/txfm_common.h"
 
 #if HAVE_DSPR2
 void idct8_rows_dspr2(const int16_t *input, int16_t *output, uint32_t no_rows) {
diff --git a/vpx_dsp/mips/loopfilter_16_msa.c b/aom_dsp/mips/loopfilter_16_msa.c
similarity index 99%
rename from vpx_dsp/mips/loopfilter_16_msa.c
rename to aom_dsp/mips/loopfilter_16_msa.c
index 4aad863..ff7dc05 100644
--- a/vpx_dsp/mips/loopfilter_16_msa.c
+++ b/aom_dsp/mips/loopfilter_16_msa.c
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_ports/mem.h"
-#include "vpx_dsp/mips/loopfilter_msa.h"
+#include "aom_ports/mem.h"
+#include "aom_dsp/mips/loopfilter_msa.h"
 
 int32_t vpx_hz_lpf_t4_and_t8_16w(uint8_t *src, int32_t pitch, uint8_t *filter48,
                                  const uint8_t *b_limit_ptr,
diff --git a/vpx_dsp/mips/loopfilter_4_msa.c b/aom_dsp/mips/loopfilter_4_msa.c
similarity index 98%
rename from vpx_dsp/mips/loopfilter_4_msa.c
rename to aom_dsp/mips/loopfilter_4_msa.c
index fe216c2..9411d96 100644
--- a/vpx_dsp/mips/loopfilter_4_msa.c
+++ b/aom_dsp/mips/loopfilter_4_msa.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/loopfilter_msa.h"
+#include "aom_dsp/mips/loopfilter_msa.h"
 
 void vpx_lpf_horizontal_4_msa(uint8_t *src, int32_t pitch,
                               const uint8_t *b_limit_ptr,
diff --git a/vpx_dsp/mips/loopfilter_8_msa.c b/aom_dsp/mips/loopfilter_8_msa.c
similarity index 99%
rename from vpx_dsp/mips/loopfilter_8_msa.c
rename to aom_dsp/mips/loopfilter_8_msa.c
index af0d628..4f745da 100644
--- a/vpx_dsp/mips/loopfilter_8_msa.c
+++ b/aom_dsp/mips/loopfilter_8_msa.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/loopfilter_msa.h"
+#include "aom_dsp/mips/loopfilter_msa.h"
 
 void vpx_lpf_horizontal_8_msa(uint8_t *src, int32_t pitch,
                               const uint8_t *b_limit_ptr,
diff --git a/vpx_dsp/mips/loopfilter_filters_dspr2.c b/aom_dsp/mips/loopfilter_filters_dspr2.c
similarity index 97%
rename from vpx_dsp/mips/loopfilter_filters_dspr2.c
rename to aom_dsp/mips/loopfilter_filters_dspr2.c
index f174367..dc59838 100644
--- a/vpx_dsp/mips/loopfilter_filters_dspr2.c
+++ b/aom_dsp/mips/loopfilter_filters_dspr2.c
@@ -11,12 +11,12 @@
 #include <stdlib.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/mips/common_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_filters_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_macros_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_masks_dspr2.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/mips/common_dspr2.h"
+#include "aom_dsp/mips/loopfilter_filters_dspr2.h"
+#include "aom_dsp/mips/loopfilter_macros_dspr2.h"
+#include "aom_dsp/mips/loopfilter_masks_dspr2.h"
+#include "aom_mem/vpx_mem.h"
 
 #if HAVE_DSPR2
 void vpx_lpf_horizontal_4_dspr2(unsigned char *s, int pitch,
diff --git a/vpx_dsp/mips/loopfilter_filters_dspr2.h b/aom_dsp/mips/loopfilter_filters_dspr2.h
similarity index 99%
rename from vpx_dsp/mips/loopfilter_filters_dspr2.h
rename to aom_dsp/mips/loopfilter_filters_dspr2.h
index 11f286d..919618c 100644
--- a/vpx_dsp/mips/loopfilter_filters_dspr2.h
+++ b/aom_dsp/mips/loopfilter_filters_dspr2.h
@@ -14,9 +14,9 @@
 #include <stdlib.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/mips/loopfilter_macros_dspr2.h b/aom_dsp/mips/loopfilter_macros_dspr2.h
similarity index 99%
rename from vpx_dsp/mips/loopfilter_macros_dspr2.h
rename to aom_dsp/mips/loopfilter_macros_dspr2.h
index 769371d..3928263 100644
--- a/vpx_dsp/mips/loopfilter_macros_dspr2.h
+++ b/aom_dsp/mips/loopfilter_macros_dspr2.h
@@ -14,8 +14,8 @@
 #include <stdlib.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_mem/vpx_mem.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/mips/loopfilter_masks_dspr2.h b/aom_dsp/mips/loopfilter_masks_dspr2.h
similarity index 99%
rename from vpx_dsp/mips/loopfilter_masks_dspr2.h
rename to aom_dsp/mips/loopfilter_masks_dspr2.h
index 0a0cf57..986db05 100644
--- a/vpx_dsp/mips/loopfilter_masks_dspr2.h
+++ b/aom_dsp/mips/loopfilter_masks_dspr2.h
@@ -14,8 +14,8 @@
 #include <stdlib.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_mem/vpx_mem.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/mips/loopfilter_mb_dspr2.c b/aom_dsp/mips/loopfilter_mb_dspr2.c
similarity index 98%
rename from vpx_dsp/mips/loopfilter_mb_dspr2.c
rename to aom_dsp/mips/loopfilter_mb_dspr2.c
index e424792..ea30e16 100644
--- a/vpx_dsp/mips/loopfilter_mb_dspr2.c
+++ b/aom_dsp/mips/loopfilter_mb_dspr2.c
@@ -11,12 +11,12 @@
 #include <stdlib.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/mips/common_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_filters_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_macros_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_masks_dspr2.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/mips/common_dspr2.h"
+#include "aom_dsp/mips/loopfilter_filters_dspr2.h"
+#include "aom_dsp/mips/loopfilter_macros_dspr2.h"
+#include "aom_dsp/mips/loopfilter_masks_dspr2.h"
+#include "aom_mem/vpx_mem.h"
 
 #if HAVE_DSPR2
 void vpx_lpf_horizontal_8_dspr2(unsigned char *s, int pitch,
diff --git a/vpx_dsp/mips/loopfilter_mb_horiz_dspr2.c b/aom_dsp/mips/loopfilter_mb_horiz_dspr2.c
similarity index 98%
rename from vpx_dsp/mips/loopfilter_mb_horiz_dspr2.c
rename to aom_dsp/mips/loopfilter_mb_horiz_dspr2.c
index 6325762..82a44c5 100644
--- a/vpx_dsp/mips/loopfilter_mb_horiz_dspr2.c
+++ b/aom_dsp/mips/loopfilter_mb_horiz_dspr2.c
@@ -11,12 +11,12 @@
 #include <stdlib.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/mips/common_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_filters_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_macros_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_masks_dspr2.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/mips/common_dspr2.h"
+#include "aom_dsp/mips/loopfilter_filters_dspr2.h"
+#include "aom_dsp/mips/loopfilter_macros_dspr2.h"
+#include "aom_dsp/mips/loopfilter_masks_dspr2.h"
+#include "aom_mem/vpx_mem.h"
 
 #if HAVE_DSPR2
 static void mb_lpf_horizontal_edge(unsigned char *s, int pitch,
diff --git a/vpx_dsp/mips/loopfilter_mb_vert_dspr2.c b/aom_dsp/mips/loopfilter_mb_vert_dspr2.c
similarity index 98%
rename from vpx_dsp/mips/loopfilter_mb_vert_dspr2.c
rename to aom_dsp/mips/loopfilter_mb_vert_dspr2.c
index 96e8d88..22d7261 100644
--- a/vpx_dsp/mips/loopfilter_mb_vert_dspr2.c
+++ b/aom_dsp/mips/loopfilter_mb_vert_dspr2.c
@@ -11,12 +11,12 @@
 #include <stdlib.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/mips/common_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_filters_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_macros_dspr2.h"
-#include "vpx_dsp/mips/loopfilter_masks_dspr2.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/mips/common_dspr2.h"
+#include "aom_dsp/mips/loopfilter_filters_dspr2.h"
+#include "aom_dsp/mips/loopfilter_macros_dspr2.h"
+#include "aom_dsp/mips/loopfilter_masks_dspr2.h"
+#include "aom_mem/vpx_mem.h"
 
 #if HAVE_DSPR2
 void vpx_lpf_vertical_16_dspr2(uint8_t *s, int pitch, const uint8_t *blimit,
diff --git a/vpx_dsp/mips/loopfilter_msa.h b/aom_dsp/mips/loopfilter_msa.h
similarity index 99%
rename from vpx_dsp/mips/loopfilter_msa.h
rename to aom_dsp/mips/loopfilter_msa.h
index d3c2bd4..d977f34 100644
--- a/vpx_dsp/mips/loopfilter_msa.h
+++ b/aom_dsp/mips/loopfilter_msa.h
@@ -11,7 +11,7 @@
 #ifndef VPX_DSP_LOOPFILTER_MSA_H_
 #define VPX_DSP_LOOPFILTER_MSA_H_
 
-#include "vpx_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/macros_msa.h"
 
 #define VPX_LPF_FILTER4_8W(p1_in, p0_in, q0_in, q1_in, mask_in, hev_in, \
                            p1_out, p0_out, q0_out, q1_out)              \
diff --git a/vpx_dsp/mips/macros_msa.h b/aom_dsp/mips/macros_msa.h
similarity index 99%
rename from vpx_dsp/mips/macros_msa.h
rename to aom_dsp/mips/macros_msa.h
index f498fbe..f21b895 100644
--- a/vpx_dsp/mips/macros_msa.h
+++ b/aom_dsp/mips/macros_msa.h
@@ -14,7 +14,7 @@
 #include <msa.h>
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #define LD_B(RTYPE, psrc) *((const RTYPE *)(psrc))
 #define LD_UB(...) LD_B(v16u8, __VA_ARGS__)
diff --git a/vpx_dsp/mips/sad_msa.c b/aom_dsp/mips/sad_msa.c
similarity index 99%
rename from vpx_dsp/mips/sad_msa.c
rename to aom_dsp/mips/sad_msa.c
index 6455814..30123d6 100644
--- a/vpx_dsp/mips/sad_msa.c
+++ b/aom_dsp/mips/sad_msa.c
@@ -9,7 +9,7 @@
  */
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/macros_msa.h"
 
 #define SAD_INSVE_W4(RTYPE, in0, in1, in2, in3, out)       \
   {                                                        \
diff --git a/vpx_dsp/mips/sub_pixel_variance_msa.c b/aom_dsp/mips/sub_pixel_variance_msa.c
similarity index 99%
rename from vpx_dsp/mips/sub_pixel_variance_msa.c
rename to aom_dsp/mips/sub_pixel_variance_msa.c
index 313e06f..4352ff5 100644
--- a/vpx_dsp/mips/sub_pixel_variance_msa.c
+++ b/aom_dsp/mips/sub_pixel_variance_msa.c
@@ -9,9 +9,9 @@
  */
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/mem.h"
-#include "vpx_dsp/mips/macros_msa.h"
-#include "vpx_dsp/variance.h"
+#include "aom_ports/mem.h"
+#include "aom_dsp/mips/macros_msa.h"
+#include "aom_dsp/variance.h"
 
 static const uint8_t bilinear_filters_msa[8][2] = {
   { 128, 0 }, { 112, 16 }, { 96, 32 }, { 80, 48 },
diff --git a/vpx_dsp/mips/subtract_msa.c b/aom_dsp/mips/subtract_msa.c
similarity index 99%
rename from vpx_dsp/mips/subtract_msa.c
rename to aom_dsp/mips/subtract_msa.c
index 391a7eb..04cb922 100644
--- a/vpx_dsp/mips/subtract_msa.c
+++ b/aom_dsp/mips/subtract_msa.c
@@ -9,7 +9,7 @@
  */
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/macros_msa.h"
 
 static void sub_blk_4x4_msa(const uint8_t *src_ptr, int32_t src_stride,
                             const uint8_t *pred_ptr, int32_t pred_stride,
diff --git a/vpx_dsp/mips/txfm_macros_msa.h b/aom_dsp/mips/txfm_macros_msa.h
similarity index 99%
rename from vpx_dsp/mips/txfm_macros_msa.h
rename to aom_dsp/mips/txfm_macros_msa.h
index da100f6..a7da24e 100644
--- a/vpx_dsp/mips/txfm_macros_msa.h
+++ b/aom_dsp/mips/txfm_macros_msa.h
@@ -11,7 +11,7 @@
 #ifndef VPX_DSP_MIPS_TXFM_MACROS_MIPS_MSA_H_
 #define VPX_DSP_MIPS_TXFM_MACROS_MIPS_MSA_H_
 
-#include "vpx_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/macros_msa.h"
 
 #define DOTP_CONST_PAIR(reg0, reg1, cnst0, cnst1, out0, out1) \
   {                                                           \
diff --git a/vpx_dsp/mips/variance_msa.c b/aom_dsp/mips/variance_msa.c
similarity index 99%
rename from vpx_dsp/mips/variance_msa.c
rename to aom_dsp/mips/variance_msa.c
index 085990e..767dcf0 100644
--- a/vpx_dsp/mips/variance_msa.c
+++ b/aom_dsp/mips/variance_msa.c
@@ -9,7 +9,7 @@
  */
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/macros_msa.h"
 
 #define CALC_MSE_B(src, ref, var)                                   \
   {                                                                 \
diff --git a/vpx_dsp/mips/vpx_convolve8_avg_horiz_msa.c b/aom_dsp/mips/vpx_convolve8_avg_horiz_msa.c
similarity index 99%
rename from vpx_dsp/mips/vpx_convolve8_avg_horiz_msa.c
rename to aom_dsp/mips/vpx_convolve8_avg_horiz_msa.c
index ad2af28..300656c 100644
--- a/vpx_dsp/mips/vpx_convolve8_avg_horiz_msa.c
+++ b/aom_dsp/mips/vpx_convolve8_avg_horiz_msa.c
@@ -10,7 +10,7 @@
 
 #include <assert.h>
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/vpx_convolve_msa.h"
+#include "aom_dsp/mips/vpx_convolve_msa.h"
 
 static void common_hz_8t_and_aver_dst_4x4_msa(const uint8_t *src,
                                               int32_t src_stride, uint8_t *dst,
diff --git a/vpx_dsp/mips/vpx_convolve8_avg_msa.c b/aom_dsp/mips/vpx_convolve8_avg_msa.c
similarity index 99%
rename from vpx_dsp/mips/vpx_convolve8_avg_msa.c
rename to aom_dsp/mips/vpx_convolve8_avg_msa.c
index 1cfa632..8037661 100644
--- a/vpx_dsp/mips/vpx_convolve8_avg_msa.c
+++ b/aom_dsp/mips/vpx_convolve8_avg_msa.c
@@ -10,7 +10,7 @@
 
 #include <assert.h>
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/vpx_convolve_msa.h"
+#include "aom_dsp/mips/vpx_convolve_msa.h"
 
 static void common_hv_8ht_8vt_and_aver_dst_4w_msa(
     const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride,
diff --git a/vpx_dsp/mips/vpx_convolve8_avg_vert_msa.c b/aom_dsp/mips/vpx_convolve8_avg_vert_msa.c
similarity index 99%
rename from vpx_dsp/mips/vpx_convolve8_avg_vert_msa.c
rename to aom_dsp/mips/vpx_convolve8_avg_vert_msa.c
index 146ce3b..b3c9b6b 100644
--- a/vpx_dsp/mips/vpx_convolve8_avg_vert_msa.c
+++ b/aom_dsp/mips/vpx_convolve8_avg_vert_msa.c
@@ -10,7 +10,7 @@
 
 #include <assert.h>
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/vpx_convolve_msa.h"
+#include "aom_dsp/mips/vpx_convolve_msa.h"
 
 static void common_vt_8t_and_aver_dst_4w_msa(const uint8_t *src,
                                              int32_t src_stride, uint8_t *dst,
diff --git a/vpx_dsp/mips/vpx_convolve8_horiz_msa.c b/aom_dsp/mips/vpx_convolve8_horiz_msa.c
similarity index 99%
rename from vpx_dsp/mips/vpx_convolve8_horiz_msa.c
rename to aom_dsp/mips/vpx_convolve8_horiz_msa.c
index 9e8bf7b..256abd5 100644
--- a/vpx_dsp/mips/vpx_convolve8_horiz_msa.c
+++ b/aom_dsp/mips/vpx_convolve8_horiz_msa.c
@@ -10,7 +10,7 @@
 
 #include <assert.h>
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/vpx_convolve_msa.h"
+#include "aom_dsp/mips/vpx_convolve_msa.h"
 
 static void common_hz_8t_4x4_msa(const uint8_t *src, int32_t src_stride,
                                  uint8_t *dst, int32_t dst_stride,
diff --git a/vpx_dsp/mips/vpx_convolve8_msa.c b/aom_dsp/mips/vpx_convolve8_msa.c
similarity index 99%
rename from vpx_dsp/mips/vpx_convolve8_msa.c
rename to aom_dsp/mips/vpx_convolve8_msa.c
index b16ec57..81d4f14 100644
--- a/vpx_dsp/mips/vpx_convolve8_msa.c
+++ b/aom_dsp/mips/vpx_convolve8_msa.c
@@ -10,7 +10,7 @@
 
 #include <assert.h>
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/vpx_convolve_msa.h"
+#include "aom_dsp/mips/vpx_convolve_msa.h"
 
 const uint8_t mc_filt_mask_arr[16 * 3] = {
   /* 8 width cases */
diff --git a/vpx_dsp/mips/vpx_convolve8_vert_msa.c b/aom_dsp/mips/vpx_convolve8_vert_msa.c
similarity index 99%
rename from vpx_dsp/mips/vpx_convolve8_vert_msa.c
rename to aom_dsp/mips/vpx_convolve8_vert_msa.c
index 4106822..0404575 100644
--- a/vpx_dsp/mips/vpx_convolve8_vert_msa.c
+++ b/aom_dsp/mips/vpx_convolve8_vert_msa.c
@@ -10,7 +10,7 @@
 
 #include <assert.h>
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/mips/vpx_convolve_msa.h"
+#include "aom_dsp/mips/vpx_convolve_msa.h"
 
 static void common_vt_8t_4w_msa(const uint8_t *src, int32_t src_stride,
                                 uint8_t *dst, int32_t dst_stride,
diff --git a/vpx_dsp/mips/vpx_convolve_avg_msa.c b/aom_dsp/mips/vpx_convolve_avg_msa.c
similarity index 99%
rename from vpx_dsp/mips/vpx_convolve_avg_msa.c
rename to aom_dsp/mips/vpx_convolve_avg_msa.c
index 45399ba..313223b 100644
--- a/vpx_dsp/mips/vpx_convolve_avg_msa.c
+++ b/aom_dsp/mips/vpx_convolve_avg_msa.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/macros_msa.h"
 
 static void avg_width4_msa(const uint8_t *src, int32_t src_stride, uint8_t *dst,
                            int32_t dst_stride, int32_t height) {
diff --git a/vpx_dsp/mips/vpx_convolve_copy_msa.c b/aom_dsp/mips/vpx_convolve_copy_msa.c
similarity index 99%
rename from vpx_dsp/mips/vpx_convolve_copy_msa.c
rename to aom_dsp/mips/vpx_convolve_copy_msa.c
index c3d87a4..520a706 100644
--- a/vpx_dsp/mips/vpx_convolve_copy_msa.c
+++ b/aom_dsp/mips/vpx_convolve_copy_msa.c
@@ -9,7 +9,7 @@
  */
 
 #include <string.h>
-#include "vpx_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/macros_msa.h"
 
 static void copy_width8_msa(const uint8_t *src, int32_t src_stride,
                             uint8_t *dst, int32_t dst_stride, int32_t height) {
diff --git a/vpx_dsp/mips/vpx_convolve_msa.h b/aom_dsp/mips/vpx_convolve_msa.h
similarity index 98%
rename from vpx_dsp/mips/vpx_convolve_msa.h
rename to aom_dsp/mips/vpx_convolve_msa.h
index 198c21e..6b48879 100644
--- a/vpx_dsp/mips/vpx_convolve_msa.h
+++ b/aom_dsp/mips/vpx_convolve_msa.h
@@ -11,8 +11,8 @@
 #ifndef VPX_DSP_MIPS_VPX_CONVOLVE_MSA_H_
 #define VPX_DSP_MIPS_VPX_CONVOLVE_MSA_H_
 
-#include "vpx_dsp/mips/macros_msa.h"
-#include "vpx_dsp/vpx_filter.h"
+#include "aom_dsp/mips/macros_msa.h"
+#include "aom_dsp/vpx_filter.h"
 
 extern const uint8_t mc_filt_mask_arr[16 * 3];
 
diff --git a/vpx_dsp/postproc.h b/aom_dsp/postproc.h
similarity index 100%
rename from vpx_dsp/postproc.h
rename to aom_dsp/postproc.h
diff --git a/vpx_dsp/prob.c b/aom_dsp/prob.c
similarity index 100%
rename from vpx_dsp/prob.c
rename to aom_dsp/prob.c
diff --git a/vpx_dsp/prob.h b/aom_dsp/prob.h
similarity index 98%
rename from vpx_dsp/prob.h
rename to aom_dsp/prob.h
index 148116e..3de6463 100644
--- a/vpx_dsp/prob.h
+++ b/aom_dsp/prob.h
@@ -14,7 +14,7 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_common.h"
 
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/psnr.c b/aom_dsp/psnr.c
similarity index 99%
rename from vpx_dsp/psnr.c
rename to aom_dsp/psnr.c
index 65997c7..f237ca4 100644
--- a/vpx_dsp/psnr.c
+++ b/aom_dsp/psnr.c
@@ -11,8 +11,8 @@
 #include <math.h>
 #include <assert.h>
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/psnr.h"
-#include "vpx_scale/yv12config.h"
+#include "aom_dsp/psnr.h"
+#include "aom_scale/yv12config.h"
 
 double vpx_sse_to_psnr(double samples, double peak, double sse) {
   if (sse > 0.0) {
diff --git a/vpx_dsp/psnr.h b/aom_dsp/psnr.h
similarity index 98%
rename from vpx_dsp/psnr.h
rename to aom_dsp/psnr.h
index fe97782..ba70407 100644
--- a/vpx_dsp/psnr.h
+++ b/aom_dsp/psnr.h
@@ -11,7 +11,7 @@
 #ifndef VPX_DSP_PSNR_H_
 #define VPX_DSP_PSNR_H_
 
-#include "vpx_scale/yv12config.h"
+#include "aom_scale/yv12config.h"
 
 #define MAX_PSNR 100.0
 
diff --git a/vpx_dsp/psnrhvs.c b/aom_dsp/psnrhvs.c
similarity index 98%
rename from vpx_dsp/psnrhvs.c
rename to aom_dsp/psnrhvs.c
index b391015..333ff63 100644
--- a/vpx_dsp/psnrhvs.c
+++ b/aom_dsp/psnrhvs.c
@@ -17,9 +17,9 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/ssim.h"
-#include "vpx_ports/system_state.h"
-#include "vpx_dsp/psnr.h"
+#include "aom_dsp/ssim.h"
+#include "aom_ports/system_state.h"
+#include "aom_dsp/psnr.h"
 
 #if !defined(M_PI)
 #define M_PI (3.141592653589793238462643)
diff --git a/vpx_dsp/quantize.c b/aom_dsp/quantize.c
similarity index 99%
rename from vpx_dsp/quantize.c
rename to aom_dsp/quantize.c
index 78a7c2b..c901aa0 100644
--- a/vpx_dsp/quantize.c
+++ b/aom_dsp/quantize.c
@@ -9,8 +9,8 @@
  */
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/quantize.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom_dsp/quantize.h"
+#include "aom_mem/vpx_mem.h"
 
 #if CONFIG_AOM_QM
 void vpx_quantize_dc(const tran_low_t *coeff_ptr, int n_coeffs, int skip_block,
diff --git a/vpx_dsp/quantize.h b/aom_dsp/quantize.h
similarity index 98%
rename from vpx_dsp/quantize.h
rename to aom_dsp/quantize.h
index 81f5566..b994d9a 100644
--- a/vpx_dsp/quantize.h
+++ b/aom_dsp/quantize.h
@@ -12,7 +12,7 @@
 #define VPX_DSP_QUANTIZE_H_
 
 #include "./vpx_config.h"
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/sad.c b/aom_dsp/sad.c
similarity index 99%
rename from vpx_dsp/sad.c
rename to aom_dsp/sad.c
index 7306e8f..8bbf83f 100644
--- a/vpx_dsp/sad.c
+++ b/aom_dsp/sad.c
@@ -13,8 +13,8 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
 
 /* Sum the difference between every corresponding element of the buffers. */
 static INLINE unsigned int sad(const uint8_t *a, int a_stride, const uint8_t *b,
diff --git a/vpx_dsp/ssim.c b/aom_dsp/ssim.c
similarity index 99%
rename from vpx_dsp/ssim.c
rename to aom_dsp/ssim.c
index 7a29bd2..c111ead 100644
--- a/vpx_dsp/ssim.c
+++ b/aom_dsp/ssim.c
@@ -11,9 +11,9 @@
 #include <assert.h>
 #include <math.h>
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/ssim.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/system_state.h"
+#include "aom_dsp/ssim.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/system_state.h"
 
 void vpx_ssim_parms_16x16_c(const uint8_t *s, int sp, const uint8_t *r, int rp,
                             uint32_t *sum_s, uint32_t *sum_r,
diff --git a/vpx_dsp/ssim.h b/aom_dsp/ssim.h
similarity index 98%
rename from vpx_dsp/ssim.h
rename to aom_dsp/ssim.h
index 4f2bb1d..0127d3f 100644
--- a/vpx_dsp/ssim.h
+++ b/aom_dsp/ssim.h
@@ -18,7 +18,7 @@
 #endif
 
 #include "./vpx_config.h"
-#include "vpx_scale/yv12config.h"
+#include "aom_scale/yv12config.h"
 
 // metrics used for calculating ssim, ssim2, dssim, and ssimc
 typedef struct {
diff --git a/vpx_dsp/subtract.c b/aom_dsp/subtract.c
similarity index 96%
rename from vpx_dsp/subtract.c
rename to aom_dsp/subtract.c
index 95e7071..5d048ed 100644
--- a/vpx_dsp/subtract.c
+++ b/aom_dsp/subtract.c
@@ -13,8 +13,8 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
 
 void vpx_subtract_block_c(int rows, int cols, int16_t *diff,
                           ptrdiff_t diff_stride, const uint8_t *src,
diff --git a/vpx_dsp/sum_squares.c b/aom_dsp/sum_squares.c
similarity index 100%
rename from vpx_dsp/sum_squares.c
rename to aom_dsp/sum_squares.c
diff --git a/vpx_dsp/txfm_common.h b/aom_dsp/txfm_common.h
similarity index 98%
rename from vpx_dsp/txfm_common.h
rename to aom_dsp/txfm_common.h
index 3559b91..38fe2b7 100644
--- a/vpx_dsp/txfm_common.h
+++ b/aom_dsp/txfm_common.h
@@ -11,7 +11,7 @@
 #ifndef VPX_DSP_TXFM_COMMON_H_
 #define VPX_DSP_TXFM_COMMON_H_
 
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 // Constants and Macros used by all idct/dct functions
 #define DCT_CONST_BITS 14
diff --git a/vpx_dsp/variance.c b/aom_dsp/variance.c
similarity index 99%
rename from vpx_dsp/variance.c
rename to aom_dsp/variance.c
index 79b6760..5df2aa5 100644
--- a/vpx_dsp/variance.c
+++ b/aom_dsp/variance.c
@@ -12,11 +12,11 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx_ports/mem.h"
-#include "vpx/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom/vpx_integer.h"
 
-#include "vpx_dsp/variance.h"
-#include "vpx_dsp/vpx_filter.h"
+#include "aom_dsp/variance.h"
+#include "aom_dsp/vpx_filter.h"
 
 uint32_t vpx_get4x4sse_cs_c(const uint8_t *a, int a_stride, const uint8_t *b,
                             int b_stride) {
diff --git a/vpx_dsp/variance.h b/aom_dsp/variance.h
similarity index 99%
rename from vpx_dsp/variance.h
rename to aom_dsp/variance.h
index 18b62db..088e09c 100644
--- a/vpx_dsp/variance.h
+++ b/aom_dsp/variance.h
@@ -13,7 +13,7 @@
 
 #include "./vpx_config.h"
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/vpx_convolve.c b/aom_dsp/vpx_convolve.c
similarity index 99%
rename from vpx_dsp/vpx_convolve.c
rename to aom_dsp/vpx_convolve.c
index 20d8364..370ad77 100644
--- a/vpx_dsp/vpx_convolve.c
+++ b/aom_dsp/vpx_convolve.c
@@ -13,11 +13,11 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_convolve.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/vpx_convolve.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_filter.h"
+#include "aom_ports/mem.h"
 
 static void convolve_horiz(const uint8_t *src, ptrdiff_t src_stride,
                            uint8_t *dst, ptrdiff_t dst_stride,
diff --git a/vpx_dsp/vpx_convolve.h b/aom_dsp/vpx_convolve.h
similarity index 98%
rename from vpx_dsp/vpx_convolve.h
rename to aom_dsp/vpx_convolve.h
index 1da2c1f..20bef23 100644
--- a/vpx_dsp/vpx_convolve.h
+++ b/aom_dsp/vpx_convolve.h
@@ -11,7 +11,7 @@
 #define VPX_DSP_VPX_CONVOLVE_H_
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/vpx_dsp.mk b/aom_dsp/vpx_dsp.mk
similarity index 99%
rename from vpx_dsp/vpx_dsp.mk
rename to aom_dsp/vpx_dsp.mk
index 983506d..c8933dd 100644
--- a/vpx_dsp/vpx_dsp.mk
+++ b/aom_dsp/vpx_dsp.mk
@@ -366,4 +366,4 @@
 DSP_SRCS-yes += vpx_dsp_rtcd.c
 DSP_SRCS-yes += vpx_dsp_rtcd_defs.pl
 
-$(eval $(call rtcd_h_template,vpx_dsp_rtcd,vpx_dsp/vpx_dsp_rtcd_defs.pl))
+$(eval $(call rtcd_h_template,vpx_dsp_rtcd,aom_dsp/vpx_dsp_rtcd_defs.pl))
diff --git a/vpx_dsp/vpx_dsp_common.h b/aom_dsp/vpx_dsp_common.h
similarity index 97%
rename from vpx_dsp/vpx_dsp_common.h
rename to aom_dsp/vpx_dsp_common.h
index b41c7d2..8f911dd 100644
--- a/vpx_dsp/vpx_dsp_common.h
+++ b/aom_dsp/vpx_dsp_common.h
@@ -12,8 +12,8 @@
 #define VPX_DSP_VPX_DSP_COMMON_H_
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/vpx_dsp_rtcd.c b/aom_dsp/vpx_dsp_rtcd.c
similarity index 94%
rename from vpx_dsp/vpx_dsp_rtcd.c
rename to aom_dsp/vpx_dsp_rtcd.c
index 030c456..3cd0cc1 100644
--- a/vpx_dsp/vpx_dsp_rtcd.c
+++ b/aom_dsp/vpx_dsp_rtcd.c
@@ -10,6 +10,6 @@
 #include "./vpx_config.h"
 #define RTCD_C
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/vpx_once.h"
+#include "aom_ports/vpx_once.h"
 
 void vpx_dsp_rtcd() { once(setup_rtcd_internal); }
diff --git a/vpx_dsp/vpx_dsp_rtcd_defs.pl b/aom_dsp/vpx_dsp_rtcd_defs.pl
similarity index 99%
rename from vpx_dsp/vpx_dsp_rtcd_defs.pl
rename to aom_dsp/vpx_dsp_rtcd_defs.pl
index 1030c4d..509fba6 100644
--- a/vpx_dsp/vpx_dsp_rtcd_defs.pl
+++ b/aom_dsp/vpx_dsp_rtcd_defs.pl
@@ -4,8 +4,8 @@
  * DSP
  */
 
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 EOF
 }
diff --git a/vpx_dsp/vpx_filter.h b/aom_dsp/vpx_filter.h
similarity index 97%
rename from vpx_dsp/vpx_filter.h
rename to aom_dsp/vpx_filter.h
index 157daea..d977bd3 100644
--- a/vpx_dsp/vpx_filter.h
+++ b/aom_dsp/vpx_filter.h
@@ -11,7 +11,7 @@
 #ifndef VPX_DSP_VPX_FILTER_H_
 #define VPX_DSP_VPX_FILTER_H_
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_dsp/x86/add_noise_sse2.asm b/aom_dsp/x86/add_noise_sse2.asm
similarity index 96%
rename from vpx_dsp/x86/add_noise_sse2.asm
rename to aom_dsp/x86/add_noise_sse2.asm
index ff61b19..a86ca72 100644
--- a/vpx_dsp/x86/add_noise_sse2.asm
+++ b/aom_dsp/x86/add_noise_sse2.asm
@@ -9,7 +9,7 @@
 ;
 
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 ;void vpx_plane_add_noise_sse2(unsigned char *start, unsigned char *noise,
 ;                              unsigned char blackclamp[16],
@@ -36,7 +36,7 @@
     movdqu  xmm5, [rdx]
 
 .addnoise_loop:
-    call sym(LIBVPX_RAND) WRT_PLT
+    call sym(LIBAOM_RAND) WRT_PLT
     mov     rcx, arg(1) ;noise
     and     rax, 0xff
     add     rcx, rax
diff --git a/vpx_dsp/x86/avg_intrin_sse2.c b/aom_dsp/x86/avg_intrin_sse2.c
similarity index 99%
rename from vpx_dsp/x86/avg_intrin_sse2.c
rename to aom_dsp/x86/avg_intrin_sse2.c
index 9eafc6c..c778f09 100644
--- a/vpx_dsp/x86/avg_intrin_sse2.c
+++ b/aom_dsp/x86/avg_intrin_sse2.c
@@ -10,10 +10,10 @@
 
 #include <emmintrin.h>
 
-#include "vpx_dsp/x86/synonyms.h"
+#include "aom_dsp/x86/synonyms.h"
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
 void vpx_minmax_8x8_sse2(const uint8_t *s, int p, const uint8_t *d, int dp,
                          int *min, int *max) {
diff --git a/vpx_dsp/x86/avg_ssse3_x86_64.asm b/aom_dsp/x86/avg_ssse3_x86_64.asm
similarity index 100%
rename from vpx_dsp/x86/avg_ssse3_x86_64.asm
rename to aom_dsp/x86/avg_ssse3_x86_64.asm
diff --git a/vpx_dsp/x86/blend_a64_hmask_sse4.c b/aom_dsp/x86/blend_a64_hmask_sse4.c
similarity index 97%
rename from vpx_dsp/x86/blend_a64_hmask_sse4.c
rename to aom_dsp/x86/blend_a64_hmask_sse4.c
index 8923234..1e452e5 100644
--- a/vpx_dsp/x86/blend_a64_hmask_sse4.c
+++ b/aom_dsp/x86/blend_a64_hmask_sse4.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #include "./vpx_dsp_rtcd.h"
 
diff --git a/vpx_dsp/x86/blend_a64_mask_sse4.c b/aom_dsp/x86/blend_a64_mask_sse4.c
similarity index 99%
rename from vpx_dsp/x86/blend_a64_mask_sse4.c
rename to aom_dsp/x86/blend_a64_mask_sse4.c
index a5c6de5..2384556 100644
--- a/vpx_dsp/x86/blend_a64_mask_sse4.c
+++ b/aom_dsp/x86/blend_a64_mask_sse4.c
@@ -12,13 +12,13 @@
 
 #include <assert.h>
 
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/blend.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/blend.h"
 
-#include "vpx_dsp/x86/synonyms.h"
-#include "vpx_dsp/x86/blend_sse4.h"
+#include "aom_dsp/x86/synonyms.h"
+#include "aom_dsp/x86/blend_sse4.h"
 
 #include "./vpx_dsp_rtcd.h"
 
diff --git a/vpx_dsp/x86/blend_a64_vmask_sse4.c b/aom_dsp/x86/blend_a64_vmask_sse4.c
similarity index 97%
rename from vpx_dsp/x86/blend_a64_vmask_sse4.c
rename to aom_dsp/x86/blend_a64_vmask_sse4.c
index e7fe1bb..0108d02 100644
--- a/vpx_dsp/x86/blend_a64_vmask_sse4.c
+++ b/aom_dsp/x86/blend_a64_vmask_sse4.c
@@ -12,13 +12,13 @@
 
 #include <assert.h>
 
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/blend.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/blend.h"
 
-#include "vpx_dsp/x86/synonyms.h"
-#include "vpx_dsp/x86/blend_sse4.h"
+#include "aom_dsp/x86/synonyms.h"
+#include "aom_dsp/x86/blend_sse4.h"
 
 #include "./vpx_dsp_rtcd.h"
 
diff --git a/vpx_dsp/x86/blend_sse4.h b/aom_dsp/x86/blend_sse4.h
similarity index 98%
rename from vpx_dsp/x86/blend_sse4.h
rename to aom_dsp/x86/blend_sse4.h
index e3b0319..068518c 100644
--- a/vpx_dsp/x86/blend_sse4.h
+++ b/aom_dsp/x86/blend_sse4.h
@@ -11,8 +11,8 @@
 #ifndef VPX_DSP_X86_BLEND_SSE4_H_
 #define VPX_DSP_X86_BLEND_SSE4_H_
 
-#include "vpx_dsp/blend.h"
-#include "vpx_dsp/x86/synonyms.h"
+#include "aom_dsp/blend.h"
+#include "aom_dsp/x86/synonyms.h"
 
 //////////////////////////////////////////////////////////////////////////////
 // Common kernels
diff --git a/vpx_dsp/x86/convolve.h b/aom_dsp/x86/convolve.h
similarity index 99%
rename from vpx_dsp/x86/convolve.h
rename to aom_dsp/x86/convolve.h
index ae1089e..9f1f10f 100644
--- a/vpx_dsp/x86/convolve.h
+++ b/aom_dsp/x86/convolve.h
@@ -13,9 +13,9 @@
 #include <assert.h>
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-#include "vpx_dsp/vpx_convolve.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom_dsp/vpx_convolve.h"
 
 typedef void filter8_1dfunction(const uint8_t *src_ptr, ptrdiff_t src_pitch,
                                 uint8_t *output_ptr, ptrdiff_t out_pitch,
diff --git a/vpx_dsp/x86/deblock_sse2.asm b/aom_dsp/x86/deblock_sse2.asm
similarity index 99%
rename from vpx_dsp/x86/deblock_sse2.asm
rename to aom_dsp/x86/deblock_sse2.asm
index 6df360d..c3d23a3 100644
--- a/vpx_dsp/x86/deblock_sse2.asm
+++ b/aom_dsp/x86/deblock_sse2.asm
@@ -9,7 +9,7 @@
 ;
 
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 ;macro in deblock functions
 %macro FIRST_2_ROWS 0
diff --git a/vpx_dsp/x86/fwd_dct32x32_impl_avx2.h b/aom_dsp/x86/fwd_dct32x32_impl_avx2.h
similarity index 99%
rename from vpx_dsp/x86/fwd_dct32x32_impl_avx2.h
rename to aom_dsp/x86/fwd_dct32x32_impl_avx2.h
index 39d3a3f..1d129bf 100644
--- a/vpx_dsp/x86/fwd_dct32x32_impl_avx2.h
+++ b/aom_dsp/x86/fwd_dct32x32_impl_avx2.h
@@ -11,7 +11,7 @@
 #include <immintrin.h>  // AVX2
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/txfm_common.h"
+#include "aom_dsp/txfm_common.h"
 
 #define pair256_set_epi16(a, b)                                            \
   _mm256_set_epi16((int16_t)(b), (int16_t)(a), (int16_t)(b), (int16_t)(a), \
diff --git a/vpx_dsp/x86/fwd_dct32x32_impl_sse2.h b/aom_dsp/x86/fwd_dct32x32_impl_sse2.h
similarity index 99%
copy from vpx_dsp/x86/fwd_dct32x32_impl_sse2.h
copy to aom_dsp/x86/fwd_dct32x32_impl_sse2.h
index 3744333..04e3e37 100644
--- a/vpx_dsp/x86/fwd_dct32x32_impl_sse2.h
+++ b/aom_dsp/x86/fwd_dct32x32_impl_sse2.h
@@ -10,9 +10,9 @@
 
 #include <emmintrin.h>  // SSE2
 
-#include "vpx_dsp/fwd_txfm.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
+#include "aom_dsp/fwd_txfm.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_dsp/x86/txfm_common_sse2.h"
 
 // TODO(jingning) The high bit-depth version needs re-work for performance.
 // The current SSE2 implementation also causes cross reference to the static
diff --git a/vpx_dsp/x86/fwd_txfm_avx2.c b/aom_dsp/x86/fwd_txfm_avx2.c
similarity index 86%
rename from vpx_dsp/x86/fwd_txfm_avx2.c
rename to aom_dsp/x86/fwd_txfm_avx2.c
index 21f11f0..325a5e9 100644
--- a/vpx_dsp/x86/fwd_txfm_avx2.c
+++ b/aom_dsp/x86/fwd_txfm_avx2.c
@@ -12,12 +12,12 @@
 
 #define FDCT32x32_2D_AVX2 vpx_fdct32x32_rd_avx2
 #define FDCT32x32_HIGH_PRECISION 0
-#include "vpx_dsp/x86/fwd_dct32x32_impl_avx2.h"
+#include "aom_dsp/x86/fwd_dct32x32_impl_avx2.h"
 #undef FDCT32x32_2D_AVX2
 #undef FDCT32x32_HIGH_PRECISION
 
 #define FDCT32x32_2D_AVX2 vpx_fdct32x32_avx2
 #define FDCT32x32_HIGH_PRECISION 1
-#include "vpx_dsp/x86/fwd_dct32x32_impl_avx2.h"  // NOLINT
+#include "aom_dsp/x86/fwd_dct32x32_impl_avx2.h"  // NOLINT
 #undef FDCT32x32_2D_AVX2
 #undef FDCT32x32_HIGH_PRECISION
diff --git a/vpx_dsp/x86/fwd_txfm_impl_sse2.h b/aom_dsp/x86/fwd_txfm_impl_sse2.h
similarity index 99%
rename from vpx_dsp/x86/fwd_txfm_impl_sse2.h
rename to aom_dsp/x86/fwd_txfm_impl_sse2.h
index 743e55e..8b57fab 100644
--- a/vpx_dsp/x86/fwd_txfm_impl_sse2.h
+++ b/aom_dsp/x86/fwd_txfm_impl_sse2.h
@@ -11,10 +11,10 @@
 #include <emmintrin.h>  // SSE2
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_dsp/x86/fwd_txfm_sse2.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_dsp/x86/fwd_txfm_sse2.h"
+#include "aom_dsp/x86/txfm_common_sse2.h"
+#include "aom_ports/mem.h"
 
 // TODO(jingning) The high bit-depth functions need rework for performance.
 // After we properly fix the high bit-depth function implementations, this
diff --git a/vpx_dsp/x86/fwd_txfm_sse2.c b/aom_dsp/x86/fwd_txfm_sse2.c
similarity index 95%
rename from vpx_dsp/x86/fwd_txfm_sse2.c
rename to aom_dsp/x86/fwd_txfm_sse2.c
index e14b991..d5b2f0d 100644
--- a/vpx_dsp/x86/fwd_txfm_sse2.c
+++ b/aom_dsp/x86/fwd_txfm_sse2.c
@@ -12,8 +12,8 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/x86/fwd_txfm_sse2.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/x86/fwd_txfm_sse2.h"
 
 void vpx_fdct4x4_1_sse2(const int16_t *input, tran_low_t *output, int stride) {
   __m128i in0, in1;
@@ -229,20 +229,20 @@
 #define FDCT4x4_2D vpx_fdct4x4_sse2
 #define FDCT8x8_2D vpx_fdct8x8_sse2
 #define FDCT16x16_2D vpx_fdct16x16_sse2
-#include "vpx_dsp/x86/fwd_txfm_impl_sse2.h"
+#include "aom_dsp/x86/fwd_txfm_impl_sse2.h"
 #undef FDCT4x4_2D
 #undef FDCT8x8_2D
 #undef FDCT16x16_2D
 
 #define FDCT32x32_2D vpx_fdct32x32_rd_sse2
 #define FDCT32x32_HIGH_PRECISION 0
-#include "vpx_dsp/x86/fwd_dct32x32_impl_sse2.h"
+#include "aom_dsp/x86/fwd_dct32x32_impl_sse2.h"
 #undef FDCT32x32_2D
 #undef FDCT32x32_HIGH_PRECISION
 
 #define FDCT32x32_2D vpx_fdct32x32_sse2
 #define FDCT32x32_HIGH_PRECISION 1
-#include "vpx_dsp/x86/fwd_dct32x32_impl_sse2.h"  // NOLINT
+#include "aom_dsp/x86/fwd_dct32x32_impl_sse2.h"  // NOLINT
 #undef FDCT32x32_2D
 #undef FDCT32x32_HIGH_PRECISION
 #undef DCT_HIGH_BIT_DEPTH
@@ -252,20 +252,20 @@
 #define FDCT4x4_2D vpx_highbd_fdct4x4_sse2
 #define FDCT8x8_2D vpx_highbd_fdct8x8_sse2
 #define FDCT16x16_2D vpx_highbd_fdct16x16_sse2
-#include "vpx_dsp/x86/fwd_txfm_impl_sse2.h"  // NOLINT
+#include "aom_dsp/x86/fwd_txfm_impl_sse2.h"  // NOLINT
 #undef FDCT4x4_2D
 #undef FDCT8x8_2D
 #undef FDCT16x16_2D
 
 #define FDCT32x32_2D vpx_highbd_fdct32x32_rd_sse2
 #define FDCT32x32_HIGH_PRECISION 0
-#include "vpx_dsp/x86/fwd_dct32x32_impl_sse2.h"  // NOLINT
+#include "aom_dsp/x86/fwd_dct32x32_impl_sse2.h"  // NOLINT
 #undef FDCT32x32_2D
 #undef FDCT32x32_HIGH_PRECISION
 
 #define FDCT32x32_2D vpx_highbd_fdct32x32_sse2
 #define FDCT32x32_HIGH_PRECISION 1
-#include "vpx_dsp/x86/fwd_dct32x32_impl_sse2.h"  // NOLINT
+#include "aom_dsp/x86/fwd_dct32x32_impl_sse2.h"  // NOLINT
 #undef FDCT32x32_2D
 #undef FDCT32x32_HIGH_PRECISION
 #undef DCT_HIGH_BIT_DEPTH
diff --git a/vpx_dsp/x86/fwd_txfm_sse2.h b/aom_dsp/x86/fwd_txfm_sse2.h
similarity index 100%
rename from vpx_dsp/x86/fwd_txfm_sse2.h
rename to aom_dsp/x86/fwd_txfm_sse2.h
diff --git a/vpx_dsp/x86/fwd_txfm_ssse3_x86_64.asm b/aom_dsp/x86/fwd_txfm_ssse3_x86_64.asm
similarity index 100%
rename from vpx_dsp/x86/fwd_txfm_ssse3_x86_64.asm
rename to aom_dsp/x86/fwd_txfm_ssse3_x86_64.asm
diff --git a/vpx_dsp/x86/halfpix_variance_impl_sse2.asm b/aom_dsp/x86/halfpix_variance_impl_sse2.asm
similarity index 99%
rename from vpx_dsp/x86/halfpix_variance_impl_sse2.asm
rename to aom_dsp/x86/halfpix_variance_impl_sse2.asm
index cc26bb6..b91d1dc 100644
--- a/vpx_dsp/x86/halfpix_variance_impl_sse2.asm
+++ b/aom_dsp/x86/halfpix_variance_impl_sse2.asm
@@ -8,7 +8,7 @@
 ;  be found in the AUTHORS file in the root of the source tree.
 ;
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 ;void vpx_half_horiz_vert_variance16x_h_sse2(unsigned char *ref,
 ;                                            int ref_stride,
diff --git a/vpx_dsp/x86/halfpix_variance_sse2.c b/aom_dsp/x86/halfpix_variance_sse2.c
similarity index 98%
rename from vpx_dsp/x86/halfpix_variance_sse2.c
rename to aom_dsp/x86/halfpix_variance_sse2.c
index b5c3f5f..8d26b75 100644
--- a/vpx_dsp/x86/halfpix_variance_sse2.c
+++ b/aom_dsp/x86/halfpix_variance_sse2.c
@@ -12,7 +12,7 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 void vpx_half_horiz_vert_variance16x_h_sse2(const unsigned char *ref,
                                             int ref_stride,
diff --git a/vpx_dsp/x86/highbd_intrapred_sse2.asm b/aom_dsp/x86/highbd_intrapred_sse2.asm
similarity index 100%
rename from vpx_dsp/x86/highbd_intrapred_sse2.asm
rename to aom_dsp/x86/highbd_intrapred_sse2.asm
diff --git a/vpx_dsp/x86/highbd_loopfilter_sse2.c b/aom_dsp/x86/highbd_loopfilter_sse2.c
similarity index 99%
rename from vpx_dsp/x86/highbd_loopfilter_sse2.c
rename to aom_dsp/x86/highbd_loopfilter_sse2.c
index 7d66411..15b8283 100644
--- a/vpx_dsp/x86/highbd_loopfilter_sse2.c
+++ b/aom_dsp/x86/highbd_loopfilter_sse2.c
@@ -11,8 +11,8 @@
 #include <emmintrin.h>  // SSE2
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/emmintrin_compat.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/emmintrin_compat.h"
 
 static INLINE __m128i signed_char_clamp_bd_sse2(__m128i value, int bd) {
   __m128i ubounded;
diff --git a/vpx_dsp/x86/highbd_quantize_intrin_sse2.c b/aom_dsp/x86/highbd_quantize_intrin_sse2.c
similarity index 98%
rename from vpx_dsp/x86/highbd_quantize_intrin_sse2.c
rename to aom_dsp/x86/highbd_quantize_intrin_sse2.c
index dad00df..ecde8c2 100644
--- a/vpx_dsp/x86/highbd_quantize_intrin_sse2.c
+++ b/aom_dsp/x86/highbd_quantize_intrin_sse2.c
@@ -11,9 +11,9 @@
 #include <emmintrin.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
 #if CONFIG_VP9_HIGHBITDEPTH
 void vpx_highbd_quantize_b_sse2(const tran_low_t *coeff_ptr, intptr_t count,
diff --git a/vpx_dsp/x86/highbd_sad4d_sse2.asm b/aom_dsp/x86/highbd_sad4d_sse2.asm
similarity index 100%
rename from vpx_dsp/x86/highbd_sad4d_sse2.asm
rename to aom_dsp/x86/highbd_sad4d_sse2.asm
diff --git a/vpx_dsp/x86/highbd_sad_sse2.asm b/aom_dsp/x86/highbd_sad_sse2.asm
similarity index 100%
rename from vpx_dsp/x86/highbd_sad_sse2.asm
rename to aom_dsp/x86/highbd_sad_sse2.asm
diff --git a/vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm b/aom_dsp/x86/highbd_subpel_variance_impl_sse2.asm
similarity index 100%
rename from vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm
rename to aom_dsp/x86/highbd_subpel_variance_impl_sse2.asm
diff --git a/vpx_dsp/x86/highbd_subtract_sse2.c b/aom_dsp/x86/highbd_subtract_sse2.c
similarity index 100%
rename from vpx_dsp/x86/highbd_subtract_sse2.c
rename to aom_dsp/x86/highbd_subtract_sse2.c
diff --git a/vpx_dsp/x86/highbd_variance_impl_sse2.asm b/aom_dsp/x86/highbd_variance_impl_sse2.asm
similarity index 99%
rename from vpx_dsp/x86/highbd_variance_impl_sse2.asm
rename to aom_dsp/x86/highbd_variance_impl_sse2.asm
index 923418a..1bf3abb 100644
--- a/vpx_dsp/x86/highbd_variance_impl_sse2.asm
+++ b/aom_dsp/x86/highbd_variance_impl_sse2.asm
@@ -9,7 +9,7 @@
 ;
 
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 ;unsigned int vpx_highbd_calc16x16var_sse2
 ;(
diff --git a/vpx_dsp/x86/highbd_variance_sse2.c b/aom_dsp/x86/highbd_variance_sse2.c
similarity index 99%
rename from vpx_dsp/x86/highbd_variance_sse2.c
rename to aom_dsp/x86/highbd_variance_sse2.c
index 76e8816..90ef4d4 100644
--- a/vpx_dsp/x86/highbd_variance_sse2.c
+++ b/aom_dsp/x86/highbd_variance_sse2.c
@@ -13,7 +13,7 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
 typedef uint32_t (*high_variance_fn_t)(const uint16_t *src, int src_stride,
                                        const uint16_t *ref, int ref_stride,
diff --git a/vpx_dsp/x86/highbd_variance_sse4.c b/aom_dsp/x86/highbd_variance_sse4.c
similarity index 98%
rename from vpx_dsp/x86/highbd_variance_sse4.c
rename to aom_dsp/x86/highbd_variance_sse4.c
index d1d2146..fb4bd8b 100644
--- a/vpx_dsp/x86/highbd_variance_sse4.c
+++ b/aom_dsp/x86/highbd_variance_sse4.c
@@ -13,8 +13,8 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx_dsp/variance.h"
-#include "vpx_dsp/vpx_filter.h"
+#include "aom_dsp/variance.h"
+#include "aom_dsp/vpx_filter.h"
 
 static INLINE void variance4x4_64_sse4_1(const uint8_t *a8, int a_stride,
                                          const uint8_t *b8, int b_stride,
diff --git a/vpx_dsp/x86/intrapred_sse2.asm b/aom_dsp/x86/intrapred_sse2.asm
similarity index 100%
rename from vpx_dsp/x86/intrapred_sse2.asm
rename to aom_dsp/x86/intrapred_sse2.asm
diff --git a/vpx_dsp/x86/intrapred_ssse3.asm b/aom_dsp/x86/intrapred_ssse3.asm
similarity index 100%
rename from vpx_dsp/x86/intrapred_ssse3.asm
rename to aom_dsp/x86/intrapred_ssse3.asm
diff --git a/vpx_dsp/x86/inv_txfm_sse2.c b/aom_dsp/x86/inv_txfm_sse2.c
similarity index 99%
rename from vpx_dsp/x86/inv_txfm_sse2.c
rename to aom_dsp/x86/inv_txfm_sse2.c
index a6fc116..97ae44b 100644
--- a/vpx_dsp/x86/inv_txfm_sse2.c
+++ b/aom_dsp/x86/inv_txfm_sse2.c
@@ -9,8 +9,8 @@
  */
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/x86/inv_txfm_sse2.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
+#include "aom_dsp/x86/inv_txfm_sse2.h"
+#include "aom_dsp/x86/txfm_common_sse2.h"
 
 #define RECON_AND_STORE4X4(dest, in_x)                    \
   {                                                       \
diff --git a/vpx_dsp/x86/inv_txfm_sse2.h b/aom_dsp/x86/inv_txfm_sse2.h
similarity index 98%
rename from vpx_dsp/x86/inv_txfm_sse2.h
rename to aom_dsp/x86/inv_txfm_sse2.h
index d762a04..d7841bb 100644
--- a/vpx_dsp/x86/inv_txfm_sse2.h
+++ b/aom_dsp/x86/inv_txfm_sse2.h
@@ -13,9 +13,9 @@
 
 #include <emmintrin.h>  // SSE2
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/inv_txfm.h"
+#include "aom_dsp/x86/txfm_common_sse2.h"
 
 // perform 8x8 transpose
 static INLINE void array_transpose_8x8(__m128i *in, __m128i *res) {
diff --git a/vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm b/aom_dsp/x86/inv_txfm_ssse3_x86_64.asm
similarity index 100%
rename from vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm
rename to aom_dsp/x86/inv_txfm_ssse3_x86_64.asm
diff --git a/vpx_dsp/x86/inv_wht_sse2.asm b/aom_dsp/x86/inv_wht_sse2.asm
similarity index 100%
rename from vpx_dsp/x86/inv_wht_sse2.asm
rename to aom_dsp/x86/inv_wht_sse2.asm
diff --git a/vpx_dsp/x86/loopfilter_avx2.c b/aom_dsp/x86/loopfilter_avx2.c
similarity index 99%
rename from vpx_dsp/x86/loopfilter_avx2.c
rename to aom_dsp/x86/loopfilter_avx2.c
index 85923b4..f444c5d 100644
--- a/vpx_dsp/x86/loopfilter_avx2.c
+++ b/aom_dsp/x86/loopfilter_avx2.c
@@ -11,7 +11,7 @@
 #include <immintrin.h> /* AVX2 */
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
 void vpx_lpf_horizontal_edge_8_avx2(unsigned char *s, int p,
                                     const unsigned char *_blimit,
diff --git a/vpx_dsp/x86/loopfilter_sse2.c b/aom_dsp/x86/loopfilter_sse2.c
similarity index 99%
rename from vpx_dsp/x86/loopfilter_sse2.c
rename to aom_dsp/x86/loopfilter_sse2.c
index e13334a..aaa42f3 100644
--- a/vpx_dsp/x86/loopfilter_sse2.c
+++ b/aom_dsp/x86/loopfilter_sse2.c
@@ -11,8 +11,8 @@
 #include <emmintrin.h>  // SSE2
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/emmintrin_compat.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/emmintrin_compat.h"
 
 static INLINE __m128i abs_diff(__m128i a, __m128i b) {
   return _mm_or_si128(_mm_subs_epu8(a, b), _mm_subs_epu8(b, a));
diff --git a/vpx_dsp/x86/masked_sad_intrin_ssse3.c b/aom_dsp/x86/masked_sad_intrin_ssse3.c
similarity index 99%
rename from vpx_dsp/x86/masked_sad_intrin_ssse3.c
rename to aom_dsp/x86/masked_sad_intrin_ssse3.c
index e07ff5f..cf1fd76 100644
--- a/vpx_dsp/x86/masked_sad_intrin_ssse3.c
+++ b/aom_dsp/x86/masked_sad_intrin_ssse3.c
@@ -12,9 +12,9 @@
 #include <emmintrin.h>
 #include <tmmintrin.h>
 
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 static INLINE __m128i width8_load_2rows(const uint8_t *ptr, int stride) {
   __m128i temp1 = _mm_loadl_epi64((const __m128i *)ptr);
diff --git a/vpx_dsp/x86/masked_variance_intrin_ssse3.c b/aom_dsp/x86/masked_variance_intrin_ssse3.c
similarity index 99%
rename from vpx_dsp/x86/masked_variance_intrin_ssse3.c
rename to aom_dsp/x86/masked_variance_intrin_ssse3.c
index ae08422..c18f870 100644
--- a/vpx_dsp/x86/masked_variance_intrin_ssse3.c
+++ b/aom_dsp/x86/masked_variance_intrin_ssse3.c
@@ -14,9 +14,9 @@
 #include <tmmintrin.h>
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-#include "vpx_dsp/vpx_filter.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom_dsp/vpx_filter.h"
 
 // Half pixel shift
 #define HALF_PIXEL_OFFSET (BIL_SUBPEL_SHIFTS / 2)
diff --git a/vpx_dsp/x86/obmc_sad_sse4.c b/aom_dsp/x86/obmc_sad_sse4.c
similarity index 98%
rename from vpx_dsp/x86/obmc_sad_sse4.c
rename to aom_dsp/x86/obmc_sad_sse4.c
index 8a1581c..b4c839b 100644
--- a/vpx_dsp/x86/obmc_sad_sse4.c
+++ b/aom_dsp/x86/obmc_sad_sse4.c
@@ -12,11 +12,11 @@
 #include <immintrin.h>
 
 #include "./vpx_config.h"
-#include "vpx_ports/mem.h"
-#include "vpx/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom/vpx_integer.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/x86/synonyms.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/x86/synonyms.h"
 
 ////////////////////////////////////////////////////////////////////////////////
 // 8 bit
diff --git a/vpx_dsp/x86/obmc_variance_sse4.c b/aom_dsp/x86/obmc_variance_sse4.c
similarity index 98%
rename from vpx_dsp/x86/obmc_variance_sse4.c
rename to aom_dsp/x86/obmc_variance_sse4.c
index 616db27..71c3c7e 100644
--- a/vpx_dsp/x86/obmc_variance_sse4.c
+++ b/aom_dsp/x86/obmc_variance_sse4.c
@@ -12,12 +12,12 @@
 #include <immintrin.h>
 
 #include "./vpx_config.h"
-#include "vpx_ports/mem.h"
-#include "vpx/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom/vpx_integer.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/x86/synonyms.h"
-#include "vpx_dsp/vpx_filter.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/x86/synonyms.h"
+#include "aom_dsp/vpx_filter.h"
 
 ////////////////////////////////////////////////////////////////////////////////
 // 8 bit
diff --git a/vpx_dsp/x86/quantize_avx_x86_64.asm b/aom_dsp/x86/quantize_avx_x86_64.asm
similarity index 100%
rename from vpx_dsp/x86/quantize_avx_x86_64.asm
rename to aom_dsp/x86/quantize_avx_x86_64.asm
diff --git a/vpx_dsp/x86/quantize_sse2.c b/aom_dsp/x86/quantize_sse2.c
similarity index 99%
rename from vpx_dsp/x86/quantize_sse2.c
rename to aom_dsp/x86/quantize_sse2.c
index 2c7e431..c6ff06d 100644
--- a/vpx_dsp/x86/quantize_sse2.c
+++ b/aom_dsp/x86/quantize_sse2.c
@@ -12,7 +12,7 @@
 #include <xmmintrin.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 static INLINE __m128i load_coefficients(const tran_low_t *coeff_ptr) {
 #if CONFIG_VP9_HIGHBITDEPTH
diff --git a/vpx_dsp/x86/quantize_ssse3_x86_64.asm b/aom_dsp/x86/quantize_ssse3_x86_64.asm
similarity index 100%
rename from vpx_dsp/x86/quantize_ssse3_x86_64.asm
rename to aom_dsp/x86/quantize_ssse3_x86_64.asm
diff --git a/vpx_dsp/x86/sad4d_avx2.c b/aom_dsp/x86/sad4d_avx2.c
similarity index 99%
rename from vpx_dsp/x86/sad4d_avx2.c
rename to aom_dsp/x86/sad4d_avx2.c
index 962b8fb..585d473 100644
--- a/vpx_dsp/x86/sad4d_avx2.c
+++ b/aom_dsp/x86/sad4d_avx2.c
@@ -9,7 +9,7 @@
  */
 #include <immintrin.h>  // AVX2
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 void vpx_sad32x32x4d_avx2(const uint8_t *src, int src_stride,
                           const uint8_t *const ref[4], int ref_stride,
diff --git a/vpx_dsp/x86/sad4d_sse2.asm b/aom_dsp/x86/sad4d_sse2.asm
similarity index 100%
rename from vpx_dsp/x86/sad4d_sse2.asm
rename to aom_dsp/x86/sad4d_sse2.asm
diff --git a/vpx_dsp/x86/sad_avx2.c b/aom_dsp/x86/sad_avx2.c
similarity index 99%
rename from vpx_dsp/x86/sad_avx2.c
rename to aom_dsp/x86/sad_avx2.c
index d944134..c66ab7c 100644
--- a/vpx_dsp/x86/sad_avx2.c
+++ b/aom_dsp/x86/sad_avx2.c
@@ -9,7 +9,7 @@
  */
 #include <immintrin.h>
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
 #define FSAD64_H(h)                                                           \
   unsigned int vpx_sad64x##h##_avx2(const uint8_t *src_ptr, int src_stride,   \
diff --git a/vpx_dsp/x86/sad_sse2.asm b/aom_dsp/x86/sad_sse2.asm
similarity index 100%
rename from vpx_dsp/x86/sad_sse2.asm
rename to aom_dsp/x86/sad_sse2.asm
diff --git a/vpx_dsp/x86/sad_sse3.asm b/aom_dsp/x86/sad_sse3.asm
similarity index 98%
rename from vpx_dsp/x86/sad_sse3.asm
rename to aom_dsp/x86/sad_sse3.asm
index 18279bd..4665fb9 100644
--- a/vpx_dsp/x86/sad_sse3.asm
+++ b/aom_dsp/x86/sad_sse3.asm
@@ -8,7 +8,7 @@
 ;  be found in the AUTHORS file in the root of the source tree.
 ;
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 %macro STACK_FRAME_CREATE_X3 0
 %if ABI_IS_32BIT
@@ -32,7 +32,7 @@
     movsxd      rax,        dword ptr arg(1)    ; src_stride
     movsxd      rdx,        dword ptr arg(3)    ; ref_stride
 %else
-  %if LIBVPX_YASM_WIN64
+  %if LIBAOM_YASM_WIN64
     SAVE_XMM 7, u
     %define     src_ptr     rcx
     %define     src_stride  rdx
@@ -72,7 +72,7 @@
     pop         rsi
     pop         rbp
 %else
-  %if LIBVPX_YASM_WIN64
+  %if LIBAOM_YASM_WIN64
     RESTORE_XMM
   %endif
 %endif
diff --git a/vpx_dsp/x86/sad_sse4.asm b/aom_dsp/x86/sad_sse4.asm
similarity index 99%
rename from vpx_dsp/x86/sad_sse4.asm
rename to aom_dsp/x86/sad_sse4.asm
index bc67447..07e28b4 100644
--- a/vpx_dsp/x86/sad_sse4.asm
+++ b/aom_dsp/x86/sad_sse4.asm
@@ -9,7 +9,7 @@
 ;
 
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 %macro PROCESS_16X2X8 1
 %if %1
diff --git a/vpx_dsp/x86/sad_ssse3.asm b/aom_dsp/x86/sad_ssse3.asm
similarity index 99%
rename from vpx_dsp/x86/sad_ssse3.asm
rename to aom_dsp/x86/sad_ssse3.asm
index 49f204f..8315f97 100644
--- a/vpx_dsp/x86/sad_ssse3.asm
+++ b/aom_dsp/x86/sad_ssse3.asm
@@ -9,7 +9,7 @@
 ;
 
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 %macro PROCESS_16X2X3 1
 %if %1
diff --git a/vpx_dsp/x86/ssim_opt_x86_64.asm b/aom_dsp/x86/ssim_opt_x86_64.asm
similarity index 99%
rename from vpx_dsp/x86/ssim_opt_x86_64.asm
rename to aom_dsp/x86/ssim_opt_x86_64.asm
index 6d58321..fc49c30 100644
--- a/vpx_dsp/x86/ssim_opt_x86_64.asm
+++ b/aom_dsp/x86/ssim_opt_x86_64.asm
@@ -8,7 +8,7 @@
 ;  be found in the AUTHORS file in the root of the source tree.
 ;
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 ; tabulate_ssim - sums sum_s,sum_r,sum_sq_s,sum_sq_r, sum_sxr
 %macro TABULATE_SSIM 0
diff --git a/vpx_dsp/x86/subpel_variance_sse2.asm b/aom_dsp/x86/subpel_variance_sse2.asm
similarity index 100%
rename from vpx_dsp/x86/subpel_variance_sse2.asm
rename to aom_dsp/x86/subpel_variance_sse2.asm
diff --git a/vpx_dsp/x86/subtract_sse2.asm b/aom_dsp/x86/subtract_sse2.asm
similarity index 100%
rename from vpx_dsp/x86/subtract_sse2.asm
rename to aom_dsp/x86/subtract_sse2.asm
diff --git a/vpx_dsp/x86/sum_squares_sse2.c b/aom_dsp/x86/sum_squares_sse2.c
similarity index 99%
rename from vpx_dsp/x86/sum_squares_sse2.c
rename to aom_dsp/x86/sum_squares_sse2.c
index 3d24716..958493c 100644
--- a/vpx_dsp/x86/sum_squares_sse2.c
+++ b/aom_dsp/x86/sum_squares_sse2.c
@@ -12,7 +12,7 @@
 #include <emmintrin.h>
 #include <stdio.h>
 
-#include "vpx_dsp/x86/synonyms.h"
+#include "aom_dsp/x86/synonyms.h"
 
 #include "./vpx_dsp_rtcd.h"
 
diff --git a/vpx_dsp/x86/synonyms.h b/aom_dsp/x86/synonyms.h
similarity index 98%
rename from vpx_dsp/x86/synonyms.h
rename to aom_dsp/x86/synonyms.h
index fb4b942..e815f7e 100644
--- a/vpx_dsp/x86/synonyms.h
+++ b/aom_dsp/x86/synonyms.h
@@ -14,7 +14,7 @@
 #include <immintrin.h>
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 /**
  * Various reusable shorthands for x86 SIMD intrinsics.
diff --git a/vpx_dsp/x86/txfm_common_sse2.h b/aom_dsp/x86/txfm_common_sse2.h
similarity index 97%
rename from vpx_dsp/x86/txfm_common_sse2.h
rename to aom_dsp/x86/txfm_common_sse2.h
index e148f5c..aed7d4e 100644
--- a/vpx_dsp/x86/txfm_common_sse2.h
+++ b/aom_dsp/x86/txfm_common_sse2.h
@@ -12,7 +12,7 @@
 #define VPX_DSP_X86_TXFM_COMMON_SSE2_H_
 
 #include <emmintrin.h>
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #define pair_set_epi16(a, b)                                            \
   _mm_set_epi16((int16_t)(b), (int16_t)(a), (int16_t)(b), (int16_t)(a), \
diff --git a/vpx_dsp/x86/variance_avx2.c b/aom_dsp/x86/variance_avx2.c
similarity index 100%
rename from vpx_dsp/x86/variance_avx2.c
rename to aom_dsp/x86/variance_avx2.c
diff --git a/vpx_dsp/x86/variance_impl_avx2.c b/aom_dsp/x86/variance_impl_avx2.c
similarity index 99%
rename from vpx_dsp/x86/variance_impl_avx2.c
rename to aom_dsp/x86/variance_impl_avx2.c
index f26eda3..3166025 100644
--- a/vpx_dsp/x86/variance_impl_avx2.c
+++ b/aom_dsp/x86/variance_impl_avx2.c
@@ -11,7 +11,7 @@
 #include <immintrin.h>  // AVX2
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
 /* clang-format off */
 DECLARE_ALIGNED(32, static const uint8_t, bilinear_filters_avx2[512]) = {
diff --git a/vpx_dsp/x86/variance_sse2.c b/aom_dsp/x86/variance_sse2.c
similarity index 99%
rename from vpx_dsp/x86/variance_sse2.c
rename to aom_dsp/x86/variance_sse2.c
index e40eed7..0788850 100644
--- a/vpx_dsp/x86/variance_sse2.c
+++ b/aom_dsp/x86/variance_sse2.c
@@ -13,7 +13,7 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
 typedef void (*getNxMvar_fn_t)(const unsigned char *src, int src_stride,
                                const unsigned char *ref, int ref_stride,
diff --git a/vpx_dsp/x86/vpx_asm_stubs.c b/aom_dsp/x86/vpx_asm_stubs.c
similarity index 99%
rename from vpx_dsp/x86/vpx_asm_stubs.c
rename to aom_dsp/x86/vpx_asm_stubs.c
index 727d9d1..be56a69 100644
--- a/vpx_dsp/x86/vpx_asm_stubs.c
+++ b/aom_dsp/x86/vpx_asm_stubs.c
@@ -10,7 +10,7 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/x86/convolve.h"
+#include "aom_dsp/x86/convolve.h"
 
 #if HAVE_SSE2
 filter8_1dfunction vpx_filter_block1d16_v8_sse2;
diff --git a/vpx_dsp/x86/vpx_convolve_copy_sse2.asm b/aom_dsp/x86/vpx_convolve_copy_sse2.asm
similarity index 100%
rename from vpx_dsp/x86/vpx_convolve_copy_sse2.asm
rename to aom_dsp/x86/vpx_convolve_copy_sse2.asm
diff --git a/vpx_dsp/x86/vpx_high_subpixel_8t_sse2.asm b/aom_dsp/x86/vpx_high_subpixel_8t_sse2.asm
similarity index 99%
rename from vpx_dsp/x86/vpx_high_subpixel_8t_sse2.asm
rename to aom_dsp/x86/vpx_high_subpixel_8t_sse2.asm
index bfc816f..f02845e 100644
--- a/vpx_dsp/x86/vpx_high_subpixel_8t_sse2.asm
+++ b/aom_dsp/x86/vpx_high_subpixel_8t_sse2.asm
@@ -9,7 +9,7 @@
 ;
 
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 ;Note: tap3 and tap4 have to be applied and added after other taps to avoid
 ;overflow.
diff --git a/vpx_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm b/aom_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm
similarity index 99%
rename from vpx_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm
rename to aom_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm
index 72f2ff7..eacedc5 100644
--- a/vpx_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm
+++ b/aom_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm
@@ -8,7 +8,7 @@
 ;  be found in the AUTHORS file in the root of the source tree.
 ;
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 %macro HIGH_GET_PARAM_4 0
     mov         rdx, arg(5)                 ;filter ptr
diff --git a/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c b/aom_dsp/x86/vpx_subpixel_8t_intrin_avx2.c
similarity index 99%
rename from vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c
rename to aom_dsp/x86/vpx_subpixel_8t_intrin_avx2.c
index 6d53b87..2453bca 100644
--- a/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c
+++ b/aom_dsp/x86/vpx_subpixel_8t_intrin_avx2.c
@@ -11,8 +11,8 @@
 #include <immintrin.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/x86/convolve.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/x86/convolve.h"
+#include "aom_ports/mem.h"
 
 // filters for 16_h8 and 16_v8
 DECLARE_ALIGNED(32, static const uint8_t, filt1_global_avx2[32]) = {
diff --git a/vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c b/aom_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c
similarity index 99%
rename from vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c
rename to aom_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c
index 36af4dd..bd472ff 100644
--- a/vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c
+++ b/aom_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c
@@ -11,11 +11,11 @@
 #include <tmmintrin.h>
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_dsp/x86/convolve.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/emmintrin_compat.h"
+#include "aom_dsp/vpx_filter.h"
+#include "aom_dsp/x86/convolve.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/emmintrin_compat.h"
 
 // filters only for the 4_h8 convolution
 DECLARE_ALIGNED(16, static const uint8_t, filt1_4_h8[16]) = {
diff --git a/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm b/aom_dsp/x86/vpx_subpixel_8t_sse2.asm
similarity index 99%
rename from vpx_dsp/x86/vpx_subpixel_8t_sse2.asm
rename to aom_dsp/x86/vpx_subpixel_8t_sse2.asm
index 08f3d6a..b197150 100644
--- a/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm
+++ b/aom_dsp/x86/vpx_subpixel_8t_sse2.asm
@@ -9,7 +9,7 @@
 ;
 
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 ;Note: tap3 and tap4 have to be applied and added after other taps to avoid
 ;overflow.
diff --git a/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm b/aom_dsp/x86/vpx_subpixel_8t_ssse3.asm
similarity index 100%
rename from vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm
rename to aom_dsp/x86/vpx_subpixel_8t_ssse3.asm
diff --git a/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm b/aom_dsp/x86/vpx_subpixel_bilinear_sse2.asm
similarity index 99%
rename from vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm
rename to aom_dsp/x86/vpx_subpixel_bilinear_sse2.asm
index a378dd0..7de58ff 100644
--- a/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm
+++ b/aom_dsp/x86/vpx_subpixel_bilinear_sse2.asm
@@ -8,7 +8,7 @@
 ;  be found in the AUTHORS file in the root of the source tree.
 ;
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 %macro GET_PARAM_4 0
     mov         rdx, arg(5)                 ;filter ptr
diff --git a/vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm b/aom_dsp/x86/vpx_subpixel_bilinear_ssse3.asm
similarity index 99%
rename from vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm
rename to aom_dsp/x86/vpx_subpixel_bilinear_ssse3.asm
index 538b212..318c7c4 100644
--- a/vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm
+++ b/aom_dsp/x86/vpx_subpixel_bilinear_ssse3.asm
@@ -8,7 +8,7 @@
 ;  be found in the AUTHORS file in the root of the source tree.
 ;
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 %macro GET_PARAM_4 0
     mov         rdx, arg(5)                 ;filter ptr
diff --git a/vpx_mem/include/vpx_mem_intrnl.h b/aom_mem/include/vpx_mem_intrnl.h
similarity index 100%
rename from vpx_mem/include/vpx_mem_intrnl.h
rename to aom_mem/include/vpx_mem_intrnl.h
diff --git a/vpx_mem/vpx_mem.c b/aom_mem/vpx_mem.c
similarity index 98%
rename from vpx_mem/vpx_mem.c
rename to aom_mem/vpx_mem.c
index cfced2f..e8aaf6d 100644
--- a/vpx_mem/vpx_mem.c
+++ b/aom_mem/vpx_mem.c
@@ -13,7 +13,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include "include/vpx_mem_intrnl.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 void *vpx_memalign(size_t align, size_t size) {
   void *addr, *x = NULL;
diff --git a/vpx_mem/vpx_mem.h b/aom_mem/vpx_mem.h
similarity index 100%
rename from vpx_mem/vpx_mem.h
rename to aom_mem/vpx_mem.h
diff --git a/vpx_mem/vpx_mem.mk b/aom_mem/vpx_mem.mk
similarity index 100%
rename from vpx_mem/vpx_mem.mk
rename to aom_mem/vpx_mem.mk
diff --git a/vpx_ports/arm.h b/aom_ports/arm.h
similarity index 100%
rename from vpx_ports/arm.h
rename to aom_ports/arm.h
diff --git a/vpx_ports/arm_cpudetect.c b/aom_ports/arm_cpudetect.c
similarity index 99%
rename from vpx_ports/arm_cpudetect.c
rename to aom_ports/arm_cpudetect.c
index e446702..fe98662 100644
--- a/vpx_ports/arm_cpudetect.c
+++ b/aom_ports/arm_cpudetect.c
@@ -10,7 +10,7 @@
 
 #include <stdlib.h>
 #include <string.h>
-#include "vpx_ports/arm.h"
+#include "aom_ports/arm.h"
 #include "./vpx_config.h"
 
 #ifdef WINAPI_FAMILY
diff --git a/vpx_ports/bitops.h b/aom_ports/bitops.h
similarity index 98%
rename from vpx_ports/bitops.h
rename to aom_ports/bitops.h
index 0ed7189..3c76547 100644
--- a/vpx_ports/bitops.h
+++ b/aom_ports/bitops.h
@@ -13,7 +13,7 @@
 
 #include <assert.h>
 
-#include "vpx_ports/msvc.h"
+#include "aom_ports/msvc.h"
 
 #ifdef _MSC_VER
 #if defined(_M_X64) || defined(_M_IX86)
diff --git a/vpx_ports/config.h b/aom_ports/config.h
similarity index 100%
rename from vpx_ports/config.h
rename to aom_ports/config.h
diff --git a/vpx_ports/emmintrin_compat.h b/aom_ports/emmintrin_compat.h
similarity index 100%
rename from vpx_ports/emmintrin_compat.h
rename to aom_ports/emmintrin_compat.h
diff --git a/vpx_ports/emms.asm b/aom_ports/emms.asm
similarity index 92%
rename from vpx_ports/emms.asm
rename to aom_ports/emms.asm
index db8da28..e26ec9a 100644
--- a/vpx_ports/emms.asm
+++ b/aom_ports/emms.asm
@@ -9,7 +9,7 @@
 ;
 
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 section .text
 global sym(vpx_reset_mmx_state) PRIVATE
@@ -18,7 +18,7 @@
     ret
 
 
-%if LIBVPX_YASM_WIN64
+%if LIBAOM_YASM_WIN64
 global sym(vpx_winx64_fldcw) PRIVATE
 sym(vpx_winx64_fldcw):
     sub   rsp, 8
diff --git a/vpx_ports/mem.h b/aom_ports/mem.h
similarity index 98%
rename from vpx_ports/mem.h
rename to aom_ports/mem.h
index 76390f2..34b7455 100644
--- a/vpx_ports/mem.h
+++ b/aom_ports/mem.h
@@ -12,7 +12,7 @@
 #define VPX_PORTS_MEM_H_
 
 #include "vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #if (defined(__GNUC__) && __GNUC__) || defined(__SUNPRO_C)
 #define DECLARE_ALIGNED(n, typ, val) typ val __attribute__((aligned(n)))
diff --git a/vpx_ports/mem_ops.h b/aom_ports/mem_ops.h
similarity index 100%
rename from vpx_ports/mem_ops.h
rename to aom_ports/mem_ops.h
diff --git a/vpx_ports/mem_ops_aligned.h b/aom_ports/mem_ops_aligned.h
similarity index 99%
rename from vpx_ports/mem_ops_aligned.h
rename to aom_ports/mem_ops_aligned.h
index ccac391..d352992 100644
--- a/vpx_ports/mem_ops_aligned.h
+++ b/aom_ports/mem_ops_aligned.h
@@ -11,7 +11,7 @@
 #ifndef VPX_PORTS_MEM_OPS_ALIGNED_H_
 #define VPX_PORTS_MEM_OPS_ALIGNED_H_
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 /* \file
  * \brief Provides portable memory access primitives for operating on aligned
diff --git a/vpx_ports/msvc.h b/aom_ports/msvc.h
similarity index 100%
rename from vpx_ports/msvc.h
rename to aom_ports/msvc.h
diff --git a/vpx_ports/system_state.h b/aom_ports/system_state.h
similarity index 100%
rename from vpx_ports/system_state.h
rename to aom_ports/system_state.h
diff --git a/vpx_ports/vpx_once.h b/aom_ports/vpx_once.h
similarity index 100%
rename from vpx_ports/vpx_once.h
rename to aom_ports/vpx_once.h
diff --git a/vpx_ports/vpx_ports.mk b/aom_ports/vpx_ports.mk
similarity index 100%
rename from vpx_ports/vpx_ports.mk
rename to aom_ports/vpx_ports.mk
diff --git a/vpx_ports/vpx_timer.h b/aom_ports/vpx_timer.h
similarity index 98%
rename from vpx_ports/vpx_timer.h
rename to aom_ports/vpx_timer.h
index 4aae30e..6d145da 100644
--- a/vpx_ports/vpx_timer.h
+++ b/aom_ports/vpx_timer.h
@@ -13,7 +13,7 @@
 
 #include "./vpx_config.h"
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #if CONFIG_OS_SUPPORT
 
diff --git a/vpx_ports/x86.h b/aom_ports/x86.h
similarity index 99%
rename from vpx_ports/x86.h
rename to aom_ports/x86.h
index a28807b..3b8ba10 100644
--- a/vpx_ports/x86.h
+++ b/aom_ports/x86.h
@@ -17,7 +17,7 @@
 #endif
 
 #include "vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpx_ports/x86_abi_support.asm b/aom_ports/x86_abi_support.asm
similarity index 96%
rename from vpx_ports/x86_abi_support.asm
rename to aom_ports/x86_abi_support.asm
index d5f7ecc..a2281a9 100644
--- a/vpx_ports/x86_abi_support.asm
+++ b/aom_ports/x86_abi_support.asm
@@ -78,15 +78,15 @@
 %endif
 
 
-; LIBVPX_YASM_WIN64
-; Set LIBVPX_YASM_WIN64 if output is Windows 64bit so the code will work if x64
+; LIBAOM_YASM_WIN64
+; Set LIBAOM_YASM_WIN64 if output is Windows 64bit so the code will work if x64
 ; or win64 is defined on the Yasm command line.
 %ifidn __OUTPUT_FORMAT__,win64
-%define LIBVPX_YASM_WIN64 1
+%define LIBAOM_YASM_WIN64 1
 %elifidn __OUTPUT_FORMAT__,x64
-%define LIBVPX_YASM_WIN64 1
+%define LIBAOM_YASM_WIN64 1
 %else
-%define LIBVPX_YASM_WIN64 0
+%define LIBAOM_YASM_WIN64 0
 %endif
 
 ; sym()
@@ -101,7 +101,7 @@
 %define sym(x) x
 %elifidn __OUTPUT_FORMAT__,elfx32
 %define sym(x) x
-%elif LIBVPX_YASM_WIN64
+%elif LIBAOM_YASM_WIN64
 %define sym(x) x
 %else
 %define sym(x) _ %+ x
@@ -125,7 +125,7 @@
     %define PRIVATE :hidden
   %elifidn __OUTPUT_FORMAT__,elfx32
     %define PRIVATE :hidden
-  %elif LIBVPX_YASM_WIN64
+  %elif LIBAOM_YASM_WIN64
     %define PRIVATE
   %else
     %define PRIVATE :private_extern
@@ -142,7 +142,7 @@
 %else
   ; 64 bit ABI passes arguments in registers. This is a workaround to get up
   ; and running quickly. Relies on SHADOW_ARGS_TO_STACK
-  %if LIBVPX_YASM_WIN64
+  %if LIBAOM_YASM_WIN64
     %define arg(x) [rbp+16+8*x]
   %else
     %define arg(x) [rbp-8-8*x]
@@ -266,7 +266,7 @@
   %endm
   %define UNSHADOW_ARGS
 %else
-%if LIBVPX_YASM_WIN64
+%if LIBAOM_YASM_WIN64
   %macro SHADOW_ARGS_TO_STACK 1 ; argc
     %if %1 > 0
         mov arg(0),rcx
@@ -322,7 +322,7 @@
 ; Win64 ABI requires 16 byte stack alignment, but then pushes an 8 byte return
 ; value. Typically we follow this up with 'push rbp' - re-aligning the stack -
 ; but in some cases this is not done and unaligned movs must be used.
-%if LIBVPX_YASM_WIN64
+%if LIBAOM_YASM_WIN64
 %macro SAVE_XMM 1-2 a
   %if %1 < 6
     %error Only xmm registers 6-15 must be preserved
diff --git a/vpx_scale/generic/gen_scalers.c b/aom_scale/generic/gen_scalers.c
similarity index 98%
rename from vpx_scale/generic/gen_scalers.c
rename to aom_scale/generic/gen_scalers.c
index 5d4dcfc..c4cf255 100644
--- a/vpx_scale/generic/gen_scalers.c
+++ b/aom_scale/generic/gen_scalers.c
@@ -9,8 +9,8 @@
  */
 
 #include "./vpx_scale_rtcd.h"
-#include "vpx_scale/vpx_scale.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom_scale/vpx_scale.h"
+#include "aom_mem/vpx_mem.h"
 /****************************************************************************
 *  Imports
 ****************************************************************************/
diff --git a/vpx_scale/generic/vpx_scale.c b/aom_scale/generic/vpx_scale.c
similarity index 99%
rename from vpx_scale/generic/vpx_scale.c
rename to aom_scale/generic/vpx_scale.c
index dee6a9d..5bf5835 100644
--- a/vpx_scale/generic/vpx_scale.c
+++ b/aom_scale/generic/vpx_scale.c
@@ -20,9 +20,9 @@
 *  Header Files
 ****************************************************************************/
 #include "./vpx_scale_rtcd.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_scale/vpx_scale.h"
-#include "vpx_scale/yv12config.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_scale/vpx_scale.h"
+#include "aom_scale/yv12config.h"
 
 typedef struct {
   int expanded_frame_width;
diff --git a/vpx_scale/generic/yv12config.c b/aom_scale/generic/yv12config.c
similarity index 98%
rename from vpx_scale/generic/yv12config.c
rename to aom_scale/generic/yv12config.c
index 13fbd28..a2ee28e 100644
--- a/vpx_scale/generic/yv12config.c
+++ b/aom_scale/generic/yv12config.c
@@ -10,9 +10,9 @@
 
 #include <assert.h>
 
-#include "vpx_scale/yv12config.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_scale/yv12config.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
 /****************************************************************************
 *  Exports
diff --git a/vpx_scale/generic/yv12extend.c b/aom_scale/generic/yv12extend.c
similarity index 98%
rename from vpx_scale/generic/yv12extend.c
rename to aom_scale/generic/yv12extend.c
index f172699..fec6ec4 100644
--- a/vpx_scale/generic/yv12extend.c
+++ b/aom_scale/generic/yv12extend.c
@@ -11,10 +11,10 @@
 #include <assert.h>
 #include "./vpx_config.h"
 #include "./vpx_scale_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_scale/yv12config.h"
+#include "aom/vpx_integer.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
+#include "aom_scale/yv12config.h"
 
 static void extend_plane(uint8_t *const src, int src_stride, int width,
                          int height, int extend_top, int extend_left,
@@ -234,7 +234,7 @@
   uint8_t *dst = dst_ybc->y_buffer;
 
 #if 0
-  /* These assertions are valid in the codec, but the libvpx-tester uses
+  /* These assertions are valid in the codec, but the libaom-tester uses
    * this code slightly differently.
    */
   assert(src_ybc->y_width == dst_ybc->y_width);
diff --git a/vpx_scale/mips/dspr2/yv12extend_dspr2.c b/aom_scale/mips/dspr2/yv12extend_dspr2.c
similarity index 97%
rename from vpx_scale/mips/dspr2/yv12extend_dspr2.c
rename to aom_scale/mips/dspr2/yv12extend_dspr2.c
index 8a76c60..27a2605 100644
--- a/vpx_scale/mips/dspr2/yv12extend_dspr2.c
+++ b/aom_scale/mips/dspr2/yv12extend_dspr2.c
@@ -11,9 +11,9 @@
 #include <assert.h>
 
 #include "./vpx_config.h"
-#include "vpx_scale/yv12config.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_scale/vpx_scale.h"
+#include "aom_scale/yv12config.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_scale/vpx_scale.h"
 
 #if HAVE_DSPR2
 static void extend_plane(uint8_t *const src, int src_stride, int width,
diff --git a/vpx_scale/vpx_scale.h b/aom_scale/vpx_scale.h
similarity index 95%
rename from vpx_scale/vpx_scale.h
rename to aom_scale/vpx_scale.h
index 478a483..19bb09e 100644
--- a/vpx_scale/vpx_scale.h
+++ b/aom_scale/vpx_scale.h
@@ -11,7 +11,7 @@
 #ifndef VPX_SCALE_VPX_SCALE_H_
 #define VPX_SCALE_VPX_SCALE_H_
 
-#include "vpx_scale/yv12config.h"
+#include "aom_scale/yv12config.h"
 
 extern void vpx_scale_frame(YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst,
                             unsigned char *temp_area, unsigned char temp_height,
diff --git a/vpx_scale/vpx_scale.mk b/aom_scale/vpx_scale.mk
similarity index 88%
rename from vpx_scale/vpx_scale.mk
rename to aom_scale/vpx_scale.mk
index a49abf3..2ae0d84 100644
--- a/vpx_scale/vpx_scale.mk
+++ b/aom_scale/vpx_scale.mk
@@ -13,4 +13,4 @@
 
 SCALE_SRCS-no += $(SCALE_SRCS_REMOVE-yes)
 
-$(eval $(call rtcd_h_template,vpx_scale_rtcd,vpx_scale/vpx_scale_rtcd.pl))
+$(eval $(call rtcd_h_template,vpx_scale_rtcd,aom_scale/vpx_scale_rtcd.pl))
diff --git a/vpx_scale/vpx_scale_rtcd.c b/aom_scale/vpx_scale_rtcd.c
similarity index 94%
rename from vpx_scale/vpx_scale_rtcd.c
rename to aom_scale/vpx_scale_rtcd.c
index dc4d959..ed32e12 100644
--- a/vpx_scale/vpx_scale_rtcd.c
+++ b/aom_scale/vpx_scale_rtcd.c
@@ -10,6 +10,6 @@
 #include "./vpx_config.h"
 #define RTCD_C
 #include "./vpx_scale_rtcd.h"
-#include "vpx_ports/vpx_once.h"
+#include "aom_ports/vpx_once.h"
 
 void vpx_scale_rtcd() { once(setup_rtcd_internal); }
diff --git a/vpx_scale/vpx_scale_rtcd.pl b/aom_scale/vpx_scale_rtcd.pl
similarity index 100%
rename from vpx_scale/vpx_scale_rtcd.pl
rename to aom_scale/vpx_scale_rtcd.pl
diff --git a/vpx_scale/yv12config.h b/aom_scale/yv12config.h
similarity index 89%
rename from vpx_scale/yv12config.h
rename to aom_scale/yv12config.h
index d581db9..cd7822a 100644
--- a/vpx_scale/yv12config.h
+++ b/aom_scale/yv12config.h
@@ -16,9 +16,9 @@
 #endif
 
 #include "./vpx_config.h"
-#include "vpx/vpx_codec.h"
-#include "vpx/vpx_frame_buffer.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_codec.h"
+#include "aom/vpx_frame_buffer.h"
+#include "aom/vpx_integer.h"
 
 #define VP8BORDERINPIXELS 32
 #if CONFIG_EXT_PARTITION
@@ -79,9 +79,9 @@
 
 // Updates the yv12 buffer config with the frame buffer. |byte_alignment| must
 // be a power of 2, from 32 to 1024. 0 sets legacy alignment. If cb is not
-// NULL, then libvpx is using the frame buffer callbacks to handle memory.
-// If cb is not NULL, libvpx will call cb with minimum size in bytes needed
-// to decode the current frame. If cb is NULL, libvpx will allocate memory
+// NULL, then libaom is using the frame buffer callbacks to handle memory.
+// If cb is not NULL, libaom will call cb with minimum size in bytes needed
+// to decode the current frame. If cb is NULL, libaom will allocate memory
 // internally to decode the current frame. Returns 0 on success. Returns < 0
 // on failure.
 int vpx_realloc_frame_buffer(YV12_BUFFER_CONFIG *ybf, int width, int height,
diff --git a/vpx_util/debug_util.c b/aom_util/debug_util.c
similarity index 97%
rename from vpx_util/debug_util.c
rename to aom_util/debug_util.c
index c05a333..5fe88db 100644
--- a/vpx_util/debug_util.c
+++ b/aom_util/debug_util.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_util/debug_util.h"
+#include "aom_util/debug_util.h"
 #include <assert.h>
 #include <stdio.h>
 #if CONFIG_BITSTREAM_DEBUG
diff --git a/vpx_util/debug_util.h b/aom_util/debug_util.h
similarity index 100%
rename from vpx_util/debug_util.h
rename to aom_util/debug_util.h
diff --git a/vpx_util/endian_inl.h b/aom_util/endian_inl.h
similarity index 98%
rename from vpx_util/endian_inl.h
rename to aom_util/endian_inl.h
index dc38774..36b8138 100644
--- a/vpx_util/endian_inl.h
+++ b/aom_util/endian_inl.h
@@ -14,7 +14,7 @@
 
 #include <stdlib.h>
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #if defined(__GNUC__)
 #define LOCAL_GCC_VERSION ((__GNUC__ << 8) | __GNUC_MINOR__)
diff --git a/vpx_util/vpx_thread.c b/aom_util/vpx_thread.c
similarity index 99%
rename from vpx_util/vpx_thread.c
rename to aom_util/vpx_thread.c
index 04c5fb6..01930b6 100644
--- a/vpx_util/vpx_thread.c
+++ b/aom_util/vpx_thread.c
@@ -15,7 +15,7 @@
 #include <assert.h>
 #include <string.h>  // for memset()
 #include "./vpx_thread.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom_mem/vpx_mem.h"
 
 #if CONFIG_MULTITHREAD
 
diff --git a/vpx_util/vpx_thread.h b/aom_util/vpx_thread.h
similarity index 100%
rename from vpx_util/vpx_thread.h
rename to aom_util/vpx_thread.h
diff --git a/vpx_util/vpx_util.mk b/aom_util/vpx_util.mk
similarity index 100%
rename from vpx_util/vpx_util.mk
rename to aom_util/vpx_util.mk
diff --git a/args.c b/args.c
index 51c0fb9..fb23c88 100644
--- a/args.c
+++ b/args.c
@@ -13,7 +13,7 @@
 #include <limits.h>
 #include "args.h"
 
-#include "vpx_ports/msvc.h"
+#include "aom_ports/msvc.h"
 
 #if defined(__GNUC__) && __GNUC__
 extern void die(const char *fmt, ...) __attribute__((noreturn));
diff --git a/vp10/common/alloccommon.c b/av1/common/alloccommon.c
similarity index 96%
rename from vp10/common/alloccommon.c
rename to av1/common/alloccommon.c
index 2706dad..b6ff12a 100644
--- a/vp10/common/alloccommon.c
+++ b/av1/common/alloccommon.c
@@ -9,13 +9,13 @@
  */
 
 #include "./vpx_config.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom_mem/vpx_mem.h"
 
-#include "vp10/common/alloccommon.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/entropymv.h"
-#include "vp10/common/onyxc_int.h"
+#include "av1/common/alloccommon.h"
+#include "av1/common/blockd.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/entropymv.h"
+#include "av1/common/onyxc_int.h"
 
 void vp10_set_mb_mi(VP10_COMMON *cm, int width, int height) {
   const int aligned_width = ALIGN_POWER_OF_TWO(width, MI_SIZE_LOG2);
diff --git a/vp10/common/alloccommon.h b/av1/common/alloccommon.h
similarity index 100%
rename from vp10/common/alloccommon.h
rename to av1/common/alloccommon.h
diff --git a/vp10/common/ans.h b/av1/common/ans.h
similarity index 98%
rename from vp10/common/ans.h
rename to av1/common/ans.h
index a7a74fc..c974ada 100644
--- a/vp10/common/ans.h
+++ b/av1/common/ans.h
@@ -15,13 +15,13 @@
 
 #include <assert.h>
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/prob.h"
-#include "vpx_ports/mem_ops.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/prob.h"
+#include "aom_ports/mem_ops.h"
 
 #define ANS_DIVIDE_BY_MULTIPLY 1
 #if ANS_DIVIDE_BY_MULTIPLY
-#include "vp10/common/divide.h"
+#include "av1/common/divide.h"
 #define ANS_DIVREM(quotient, remainder, dividend, divisor) \
   do {                                                     \
     quotient = fastdiv(dividend, divisor);                 \
diff --git a/vp10/common/arm/neon/iht4x4_add_neon.c b/av1/common/arm/neon/iht4x4_add_neon.c
similarity index 99%
rename from vp10/common/arm/neon/iht4x4_add_neon.c
rename to av1/common/arm/neon/iht4x4_add_neon.c
index d074bc9..600e66b 100644
--- a/vp10/common/arm/neon/iht4x4_add_neon.c
+++ b/av1/common/arm/neon/iht4x4_add_neon.c
@@ -13,7 +13,7 @@
 
 #include "./vp10_rtcd.h"
 #include "./vpx_config.h"
-#include "vp10/common/common.h"
+#include "av1/common/common.h"
 
 static int16_t sinpi_1_9 = 0x14a3;
 static int16_t sinpi_2_9 = 0x26c9;
diff --git a/vp10/common/arm/neon/iht8x8_add_neon.c b/av1/common/arm/neon/iht8x8_add_neon.c
similarity index 99%
rename from vp10/common/arm/neon/iht8x8_add_neon.c
rename to av1/common/arm/neon/iht8x8_add_neon.c
index 7e1c83f..ff5578d 100644
--- a/vp10/common/arm/neon/iht8x8_add_neon.c
+++ b/av1/common/arm/neon/iht8x8_add_neon.c
@@ -13,7 +13,7 @@
 
 #include "./vp10_rtcd.h"
 #include "./vpx_config.h"
-#include "vp10/common/common.h"
+#include "av1/common/common.h"
 
 static int16_t cospi_2_64 = 16305;
 static int16_t cospi_4_64 = 16069;
diff --git a/vp10/common/blockd.c b/av1/common/blockd.c
similarity index 98%
rename from vp10/common/blockd.c
rename to av1/common/blockd.c
index 91cc2ed..ee95271 100644
--- a/vp10/common/blockd.c
+++ b/av1/common/blockd.c
@@ -10,9 +10,9 @@
 
 #include <math.h>
 
-#include "vpx_ports/system_state.h"
+#include "aom_ports/system_state.h"
 
-#include "vp10/common/blockd.h"
+#include "av1/common/blockd.h"
 
 PREDICTION_MODE vp10_left_block_mode(const MODE_INFO *cur_mi,
                                      const MODE_INFO *left_mi, int b) {
diff --git a/vp10/common/blockd.h b/av1/common/blockd.h
similarity index 98%
rename from vp10/common/blockd.h
rename to av1/common/blockd.h
index 3c0fdef..4dcc1f0 100644
--- a/vp10/common/blockd.h
+++ b/av1/common/blockd.h
@@ -13,18 +13,18 @@
 
 #include "./vpx_config.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
-#include "vpx_scale/yv12config.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
+#include "aom_scale/yv12config.h"
 
-#include "vp10/common/common_data.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/entropy.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/mv.h"
-#include "vp10/common/scale.h"
-#include "vp10/common/seg_common.h"
-#include "vp10/common/tile_common.h"
+#include "av1/common/common_data.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/entropy.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/mv.h"
+#include "av1/common/scale.h"
+#include "av1/common/seg_common.h"
+#include "av1/common/tile_common.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/clpf.c b/av1/common/clpf.c
similarity index 98%
rename from vp10/common/clpf.c
rename to av1/common/clpf.c
index 5a6ed70..bba40cb 100644
--- a/vp10/common/clpf.c
+++ b/av1/common/clpf.c
@@ -3,7 +3,7 @@
 (Replace with proper AOM header)
 */
 
-#include "vp10/common/clpf.h"
+#include "av1/common/clpf.h"
 
 // Apply the filter on a single block
 static void clpf_block(const uint8_t *src, uint8_t *dst, int sstride,
diff --git a/vp10/common/clpf.h b/av1/common/clpf.h
similarity index 93%
rename from vp10/common/clpf.h
rename to av1/common/clpf.h
index 1776a3d..5b9d55b 100644
--- a/vp10/common/clpf.h
+++ b/av1/common/clpf.h
@@ -6,7 +6,7 @@
 #ifndef VP10_COMMON_CLPF_H_
 #define VP10_COMMON_CLPF_H_
 
-#include "vp10/common/reconinter.h"
+#include "av1/common/reconinter.h"
 
 // Configuration
 #define CLPF_ALLOW_PIXEL_PARALLELISM \
diff --git a/vp10/common/common.h b/av1/common/common.h
similarity index 95%
rename from vp10/common/common.h
rename to av1/common/common.h
index 41dc1af..4e30034 100644
--- a/vp10/common/common.h
+++ b/av1/common/common.h
@@ -16,10 +16,10 @@
 #include <assert.h>
 
 #include "./vpx_config.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/bitops.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/bitops.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/common_data.h b/av1/common/common_data.h
similarity index 99%
rename from vp10/common/common_data.h
rename to av1/common/common_data.h
index 666aa75..4348f08 100644
--- a/vp10/common/common_data.h
+++ b/av1/common/common_data.h
@@ -11,9 +11,9 @@
 #ifndef VP10_COMMON_COMMON_DATA_H_
 #define VP10_COMMON_COMMON_DATA_H_
 
-#include "vp10/common/enums.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "av1/common/enums.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/debugmodes.c b/av1/common/debugmodes.c
similarity index 97%
rename from vp10/common/debugmodes.c
rename to av1/common/debugmodes.c
index 18bbbec..6c958a8 100644
--- a/vp10/common/debugmodes.c
+++ b/av1/common/debugmodes.c
@@ -10,8 +10,8 @@
 
 #include <stdio.h>
 
-#include "vp10/common/blockd.h"
-#include "vp10/common/onyxc_int.h"
+#include "av1/common/blockd.h"
+#include "av1/common/onyxc_int.h"
 
 static void log_frame_info(VP10_COMMON *cm, const char *str, FILE *f) {
   fprintf(f, "%s", str);
diff --git a/vp10/common/dering.c b/av1/common/dering.c
similarity index 96%
rename from vp10/common/dering.c
rename to av1/common/dering.c
index 47f07f7..7c116a2 100644
--- a/vp10/common/dering.c
+++ b/av1/common/dering.c
@@ -12,11 +12,11 @@
 #include <math.h>
 
 #include "./vpx_scale_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vp10/common/dering.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/od_dering.h"
+#include "aom/vpx_integer.h"
+#include "av1/common/dering.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/od_dering.h"
 
 int compute_level_from_index(int global_level, int gi) {
   static const int dering_gains[DERING_REFINEMENT_LEVELS] = { 0, 11, 16, 22 };
diff --git a/vp10/common/dering.h b/av1/common/dering.h
similarity index 85%
rename from vp10/common/dering.h
rename to av1/common/dering.h
index 706804b..de59c86 100644
--- a/vp10/common/dering.h
+++ b/av1/common/dering.h
@@ -1,11 +1,11 @@
 #ifndef VP10_COMMON_DERING_H_
 #define VP10_COMMON_DERING_H_
 
-#include "vp10/common/od_dering.h"
-#include "vp10/common/onyxc_int.h"
-#include "vpx/vpx_integer.h"
+#include "av1/common/od_dering.h"
+#include "av1/common/onyxc_int.h"
+#include "aom/vpx_integer.h"
 #include "./vpx_config.h"
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/divide.c b/av1/common/divide.c
similarity index 99%
rename from vp10/common/divide.c
rename to av1/common/divide.c
index 2fa95a1..f0c6730 100644
--- a/vp10/common/divide.c
+++ b/av1/common/divide.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/common/divide.h"
+#include "av1/common/divide.h"
 
 /* Constants for divide by multiply for small divisors generated with:
 void init_fastdiv() {
diff --git a/vp10/common/divide.h b/av1/common/divide.h
similarity index 97%
rename from vp10/common/divide.h
rename to av1/common/divide.h
index 2f3c35c..7de6c91 100644
--- a/vp10/common/divide.h
+++ b/av1/common/divide.h
@@ -16,7 +16,7 @@
 #include <limits.h>
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/entropy.c b/av1/common/entropy.c
similarity index 99%
rename from vp10/common/entropy.c
rename to av1/common/entropy.c
index 2b84e08..be96c42 100644
--- a/vp10/common/entropy.c
+++ b/av1/common/entropy.c
@@ -8,12 +8,12 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/common/entropy.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/entropymode.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx/vpx_integer.h"
+#include "av1/common/entropy.h"
+#include "av1/common/blockd.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/entropymode.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom/vpx_integer.h"
 
 // Unconstrained Node Tree
 /* clang-format off */
diff --git a/vp10/common/entropy.h b/av1/common/entropy.h
similarity index 98%
rename from vp10/common/entropy.h
rename to av1/common/entropy.h
index c90c9c8..b0afd46 100644
--- a/vp10/common/entropy.h
+++ b/av1/common/entropy.h
@@ -11,14 +11,14 @@
 #ifndef VP10_COMMON_ENTROPY_H_
 #define VP10_COMMON_ENTROPY_H_
 
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/prob.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/prob.h"
 
 #if CONFIG_ANS
-#include "vp10/common/ans.h"
+#include "av1/common/ans.h"
 #endif  // CONFIG_ANS
-#include "vp10/common/common.h"
-#include "vp10/common/enums.h"
+#include "av1/common/common.h"
+#include "av1/common/enums.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/entropymode.c b/av1/common/entropymode.c
similarity index 99%
rename from vp10/common/entropymode.c
rename to av1/common/entropymode.c
index 9379122..98e26e7 100644
--- a/vp10/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -8,11 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_mem/vpx_mem.h"
+#include "aom_mem/vpx_mem.h"
 
-#include "vp10/common/reconinter.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/seg_common.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/seg_common.h"
 
 const vpx_prob vp10_kf_y_mode_prob[INTRA_MODES][INTRA_MODES][INTRA_MODES - 1] =
     { {
diff --git a/vp10/common/entropymode.h b/av1/common/entropymode.h
similarity index 98%
rename from vp10/common/entropymode.h
rename to av1/common/entropymode.h
index addb493..4616aa2 100644
--- a/vp10/common/entropymode.h
+++ b/av1/common/entropymode.h
@@ -11,11 +11,11 @@
 #ifndef VP10_COMMON_ENTROPYMODE_H_
 #define VP10_COMMON_ENTROPYMODE_H_
 
-#include "vp10/common/entropy.h"
-#include "vp10/common/entropymv.h"
-#include "vp10/common/filter.h"
-#include "vp10/common/seg_common.h"
-#include "vpx_dsp/vpx_filter.h"
+#include "av1/common/entropy.h"
+#include "av1/common/entropymv.h"
+#include "av1/common/filter.h"
+#include "av1/common/seg_common.h"
+#include "aom_dsp/vpx_filter.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/entropymv.c b/av1/common/entropymv.c
similarity index 99%
rename from vp10/common/entropymv.c
rename to av1/common/entropymv.c
index 3fa4329..f3dba3f 100644
--- a/vp10/common/entropymv.c
+++ b/av1/common/entropymv.c
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/entropymv.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/entropymv.h"
 
 // Integer pel reference mv threshold for use of high-precision 1/8 mv
 #define COMPANDED_MVREF_THRESH 8
diff --git a/vp10/common/entropymv.h b/av1/common/entropymv.h
similarity index 98%
rename from vp10/common/entropymv.h
rename to av1/common/entropymv.h
index 93eb50c..c809a67 100644
--- a/vp10/common/entropymv.h
+++ b/av1/common/entropymv.h
@@ -13,9 +13,9 @@
 
 #include "./vpx_config.h"
 
-#include "vpx_dsp/prob.h"
+#include "aom_dsp/prob.h"
 
-#include "vp10/common/mv.h"
+#include "av1/common/mv.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/enums.h b/av1/common/enums.h
similarity index 99%
rename from vp10/common/enums.h
rename to av1/common/enums.h
index 05cb423..8cdec8e 100644
--- a/vp10/common/enums.h
+++ b/av1/common/enums.h
@@ -12,7 +12,7 @@
 #define VP10_COMMON_ENUMS_H_
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/filter.c b/av1/common/filter.c
similarity index 99%
rename from vp10/common/filter.c
rename to av1/common/filter.c
index b2d8aeb..46eca5d 100644
--- a/vp10/common/filter.c
+++ b/av1/common/filter.c
@@ -10,7 +10,7 @@
 
 #include <assert.h>
 
-#include "vp10/common/filter.h"
+#include "av1/common/filter.h"
 
 DECLARE_ALIGNED(256, static const InterpKernel,
                 bilinear_filters[SUBPEL_SHIFTS]) = {
diff --git a/vp10/common/filter.h b/av1/common/filter.h
similarity index 97%
rename from vp10/common/filter.h
rename to av1/common/filter.h
index 5f9a6d9..39fad23 100644
--- a/vp10/common/filter.h
+++ b/av1/common/filter.h
@@ -12,9 +12,9 @@
 #define VP10_COMMON_FILTER_H_
 
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/vpx_filter.h"
+#include "aom_ports/mem.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/frame_buffers.c b/av1/common/frame_buffers.c
similarity index 97%
rename from vp10/common/frame_buffers.c
rename to av1/common/frame_buffers.c
index 564fa9c..5c736a9 100644
--- a/vp10/common/frame_buffers.c
+++ b/av1/common/frame_buffers.c
@@ -10,8 +10,8 @@
 
 #include <assert.h>
 
-#include "vp10/common/frame_buffers.h"
-#include "vpx_mem/vpx_mem.h"
+#include "av1/common/frame_buffers.h"
+#include "aom_mem/vpx_mem.h"
 
 int vp10_alloc_internal_frame_buffers(InternalFrameBufferList *list) {
   assert(list != NULL);
diff --git a/vp10/common/frame_buffers.h b/av1/common/frame_buffers.h
similarity index 88%
rename from vp10/common/frame_buffers.h
rename to av1/common/frame_buffers.h
index fa6a2e2..6667132 100644
--- a/vp10/common/frame_buffers.h
+++ b/av1/common/frame_buffers.h
@@ -11,8 +11,8 @@
 #ifndef VP10_COMMON_FRAME_BUFFERS_H_
 #define VP10_COMMON_FRAME_BUFFERS_H_
 
-#include "vpx/vpx_frame_buffer.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_frame_buffer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -35,14 +35,14 @@
 // Free any data allocated to the frame buffers.
 void vp10_free_internal_frame_buffers(InternalFrameBufferList *list);
 
-// Callback used by libvpx to request an external frame buffer. |cb_priv|
+// Callback used by libaom to request an external frame buffer. |cb_priv|
 // Callback private data, which points to an InternalFrameBufferList.
 // |min_size| is the minimum size in bytes needed to decode the next frame.
 // |fb| pointer to the frame buffer.
 int vp10_get_frame_buffer(void *cb_priv, size_t min_size,
                           vpx_codec_frame_buffer_t *fb);
 
-// Callback used by libvpx when there are no references to the frame buffer.
+// Callback used by libaom when there are no references to the frame buffer.
 // |cb_priv| is not used. |fb| pointer to the frame buffer.
 int vp10_release_frame_buffer(void *cb_priv, vpx_codec_frame_buffer_t *fb);
 
diff --git a/vp10/common/idct.c b/av1/common/idct.c
similarity index 99%
rename from vp10/common/idct.c
rename to av1/common/idct.c
index 8ff4036..83b44d5 100644
--- a/vp10/common/idct.c
+++ b/av1/common/idct.c
@@ -12,12 +12,12 @@
 
 #include "./vp10_rtcd.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/enums.h"
-#include "vp10/common/idct.h"
-#include "vp10/common/vp10_inv_txfm2d_cfg.h"
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/blockd.h"
+#include "av1/common/enums.h"
+#include "av1/common/idct.h"
+#include "av1/common/vp10_inv_txfm2d_cfg.h"
+#include "aom_dsp/inv_txfm.h"
+#include "aom_ports/mem.h"
 
 int get_tx_scale(const MACROBLOCKD *const xd, const TX_TYPE tx_type,
                  const TX_SIZE tx_size) {
diff --git a/vp10/common/idct.h b/av1/common/idct.h
similarity index 95%
rename from vp10/common/idct.h
rename to av1/common/idct.h
index 144bfe5..9b3be62 100644
--- a/vp10/common/idct.h
+++ b/av1/common/idct.h
@@ -14,12 +14,12 @@
 #include <assert.h>
 
 #include "./vpx_config.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/common.h"
-#include "vp10/common/enums.h"
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/blockd.h"
+#include "av1/common/common.h"
+#include "av1/common/enums.h"
+#include "aom_dsp/inv_txfm.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_ports/mem.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/intra_filters.h b/av1/common/intra_filters.h
similarity index 100%
rename from vp10/common/intra_filters.h
rename to av1/common/intra_filters.h
diff --git a/vp10/common/loopfilter.c b/av1/common/loopfilter.c
similarity index 99%
rename from vp10/common/loopfilter.c
rename to av1/common/loopfilter.c
index eaa0e7e..e4636a5 100644
--- a/vp10/common/loopfilter.c
+++ b/av1/common/loopfilter.c
@@ -12,15 +12,15 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vp10/common/loopfilter.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/restoration.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/loopfilter.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/restoration.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
-#include "vp10/common/seg_common.h"
+#include "av1/common/seg_common.h"
 
 // 64 bit masks for left transform size. Each 1 represents a position where
 // we should apply a loop filter across the left border of an 8x8 block
diff --git a/vp10/common/loopfilter.h b/av1/common/loopfilter.h
similarity index 97%
rename from vp10/common/loopfilter.h
rename to av1/common/loopfilter.h
index 9716566..b85ed04 100644
--- a/vp10/common/loopfilter.h
+++ b/av1/common/loopfilter.h
@@ -11,12 +11,12 @@
 #ifndef VP10_COMMON_LOOPFILTER_H_
 #define VP10_COMMON_LOOPFILTER_H_
 
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 #include "./vpx_config.h"
 
-#include "vp10/common/blockd.h"
-#include "vp10/common/restoration.h"
-#include "vp10/common/seg_common.h"
+#include "av1/common/blockd.h"
+#include "av1/common/restoration.h"
+#include "av1/common/seg_common.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/mips/dspr2/itrans16_dspr2.c b/av1/common/mips/dspr2/itrans16_dspr2.c
similarity index 93%
rename from vp10/common/mips/dspr2/itrans16_dspr2.c
rename to av1/common/mips/dspr2/itrans16_dspr2.c
index 0fcae87..c0b9b2a 100644
--- a/vp10/common/mips/dspr2/itrans16_dspr2.c
+++ b/av1/common/mips/dspr2/itrans16_dspr2.c
@@ -13,12 +13,12 @@
 
 #include "./vpx_config.h"
 #include "./vp10_rtcd.h"
-#include "vp10/common/common.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/idct.h"
-#include "vpx_dsp/mips/inv_txfm_dspr2.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/common.h"
+#include "av1/common/blockd.h"
+#include "av1/common/idct.h"
+#include "aom_dsp/mips/inv_txfm_dspr2.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 void vp10_iht16x16_256_add_dspr2(const int16_t *input, uint8_t *dest, int pitch,
diff --git a/vp10/common/mips/dspr2/itrans4_dspr2.c b/av1/common/mips/dspr2/itrans4_dspr2.c
similarity index 92%
rename from vp10/common/mips/dspr2/itrans4_dspr2.c
rename to av1/common/mips/dspr2/itrans4_dspr2.c
index 9d10d5e..dcb28c9 100644
--- a/vp10/common/mips/dspr2/itrans4_dspr2.c
+++ b/av1/common/mips/dspr2/itrans4_dspr2.c
@@ -13,12 +13,12 @@
 
 #include "./vpx_config.h"
 #include "./vp10_rtcd.h"
-#include "vp10/common/common.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/idct.h"
-#include "vpx_dsp/mips/inv_txfm_dspr2.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/common.h"
+#include "av1/common/blockd.h"
+#include "av1/common/idct.h"
+#include "aom_dsp/mips/inv_txfm_dspr2.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 void vp10_iht4x4_16_add_dspr2(const int16_t *input, uint8_t *dest,
diff --git a/vp10/common/mips/dspr2/itrans8_dspr2.c b/av1/common/mips/dspr2/itrans8_dspr2.c
similarity index 93%
rename from vp10/common/mips/dspr2/itrans8_dspr2.c
rename to av1/common/mips/dspr2/itrans8_dspr2.c
index 3ebf8ce..761d6f0 100644
--- a/vp10/common/mips/dspr2/itrans8_dspr2.c
+++ b/av1/common/mips/dspr2/itrans8_dspr2.c
@@ -13,11 +13,11 @@
 
 #include "./vpx_config.h"
 #include "./vp10_rtcd.h"
-#include "vp10/common/common.h"
-#include "vp10/common/blockd.h"
-#include "vpx_dsp/mips/inv_txfm_dspr2.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/common.h"
+#include "av1/common/blockd.h"
+#include "aom_dsp/mips/inv_txfm_dspr2.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_ports/mem.h"
 
 #if HAVE_DSPR2
 void vp10_iht8x8_64_add_dspr2(const int16_t *input, uint8_t *dest,
diff --git a/vp10/common/mips/msa/idct16x16_msa.c b/av1/common/mips/msa/idct16x16_msa.c
similarity index 96%
rename from vp10/common/mips/msa/idct16x16_msa.c
rename to av1/common/mips/msa/idct16x16_msa.c
index c73ef37..baa3a97 100644
--- a/vp10/common/mips/msa/idct16x16_msa.c
+++ b/av1/common/mips/msa/idct16x16_msa.c
@@ -10,8 +10,8 @@
 
 #include <assert.h>
 
-#include "vp10/common/enums.h"
-#include "vpx_dsp/mips/inv_txfm_msa.h"
+#include "av1/common/enums.h"
+#include "aom_dsp/mips/inv_txfm_msa.h"
 
 void vp10_iht16x16_256_add_msa(const int16_t *input, uint8_t *dst,
                                int32_t dst_stride, int32_t tx_type) {
diff --git a/vp10/common/mips/msa/idct4x4_msa.c b/av1/common/mips/msa/idct4x4_msa.c
similarity index 96%
rename from vp10/common/mips/msa/idct4x4_msa.c
rename to av1/common/mips/msa/idct4x4_msa.c
index ea4091b..0620df7 100644
--- a/vp10/common/mips/msa/idct4x4_msa.c
+++ b/av1/common/mips/msa/idct4x4_msa.c
@@ -10,8 +10,8 @@
 
 #include <assert.h>
 
-#include "vp10/common/enums.h"
-#include "vpx_dsp/mips/inv_txfm_msa.h"
+#include "av1/common/enums.h"
+#include "aom_dsp/mips/inv_txfm_msa.h"
 
 void vp10_iht4x4_16_add_msa(const int16_t *input, uint8_t *dst,
                             int32_t dst_stride, int32_t tx_type) {
diff --git a/vp10/common/mips/msa/idct8x8_msa.c b/av1/common/mips/msa/idct8x8_msa.c
similarity index 97%
rename from vp10/common/mips/msa/idct8x8_msa.c
rename to av1/common/mips/msa/idct8x8_msa.c
index c62e82d..5c62c4a 100644
--- a/vp10/common/mips/msa/idct8x8_msa.c
+++ b/av1/common/mips/msa/idct8x8_msa.c
@@ -10,8 +10,8 @@
 
 #include <assert.h>
 
-#include "vp10/common/enums.h"
-#include "vpx_dsp/mips/inv_txfm_msa.h"
+#include "av1/common/enums.h"
+#include "aom_dsp/mips/inv_txfm_msa.h"
 
 void vp10_iht8x8_64_add_msa(const int16_t *input, uint8_t *dst,
                             int32_t dst_stride, int32_t tx_type) {
diff --git a/vp10/common/mv.h b/av1/common/mv.h
similarity index 97%
rename from vp10/common/mv.h
rename to av1/common/mv.h
index e379c31..dba3336 100644
--- a/vp10/common/mv.h
+++ b/av1/common/mv.h
@@ -11,10 +11,10 @@
 #ifndef VP10_COMMON_MV_H_
 #define VP10_COMMON_MV_H_
 
-#include "vp10/common/common.h"
-#include "vpx_dsp/vpx_filter.h"
+#include "av1/common/common.h"
+#include "aom_dsp/vpx_filter.h"
 #if CONFIG_GLOBAL_MOTION
-#include "vp10/common/warped_motion.h"
+#include "av1/common/warped_motion.h"
 #endif  // CONFIG_GLOBAL_MOTION
 
 #ifdef __cplusplus
diff --git a/vp10/common/mvref_common.c b/av1/common/mvref_common.c
similarity index 99%
rename from vp10/common/mvref_common.c
rename to av1/common/mvref_common.c
index c5f5c08..836b065 100644
--- a/vp10/common/mvref_common.c
+++ b/av1/common/mvref_common.c
@@ -9,7 +9,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/common/mvref_common.h"
+#include "av1/common/mvref_common.h"
 
 #if CONFIG_REF_MV
 
diff --git a/vp10/common/mvref_common.h b/av1/common/mvref_common.h
similarity index 99%
rename from vp10/common/mvref_common.h
rename to av1/common/mvref_common.h
index 4b25dc7..babd4f0 100644
--- a/vp10/common/mvref_common.h
+++ b/av1/common/mvref_common.h
@@ -10,8 +10,8 @@
 #ifndef VP10_COMMON_MVREF_COMMON_H_
 #define VP10_COMMON_MVREF_COMMON_H_
 
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/blockd.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/blockd.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/od_dering.c b/av1/common/od_dering.c
similarity index 100%
rename from vp10/common/od_dering.c
rename to av1/common/od_dering.c
diff --git a/vp10/common/od_dering.h b/av1/common/od_dering.h
similarity index 100%
rename from vp10/common/od_dering.h
rename to av1/common/od_dering.h
diff --git a/vp10/common/odintrin.c b/av1/common/odintrin.c
similarity index 99%
rename from vp10/common/odintrin.c
rename to av1/common/odintrin.c
index 2024880..b5bbaa6 100644
--- a/vp10/common/odintrin.c
+++ b/av1/common/odintrin.c
@@ -22,7 +22,7 @@
 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/
 
-#include "vp10/common/odintrin.h"
+#include "av1/common/odintrin.h"
 
 /*Constants for use with OD_DIVU_SMALL().
   See \cite{Rob05} for details on computing these constants.
diff --git a/vp10/common/odintrin.h b/av1/common/odintrin.h
similarity index 92%
rename from vp10/common/odintrin.h
rename to av1/common/odintrin.h
index b33be69..87b1a36 100644
--- a/vp10/common/odintrin.h
+++ b/av1/common/odintrin.h
@@ -1,10 +1,10 @@
 #ifndef VP10_COMMON_ODINTRIN_H_
 #define VP10_COMMON_ODINTRIN_H_
 
-#include "vp10/common/enums.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/bitops.h"
+#include "av1/common/enums.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/bitops.h"
 
 /*Smallest blocks are 4x4*/
 #define OD_LOG_BSIZE0 (2)
diff --git a/vp10/common/onyxc_int.h b/av1/common/onyxc_int.h
similarity index 97%
rename from vp10/common/onyxc_int.h
rename to av1/common/onyxc_int.h
index cbbce93..55a8112 100644
--- a/vp10/common/onyxc_int.h
+++ b/av1/common/onyxc_int.h
@@ -12,19 +12,19 @@
 #define VP10_COMMON_ONYXC_INT_H_
 
 #include "./vpx_config.h"
-#include "vpx/internal/vpx_codec_internal.h"
-#include "vpx_util/vpx_thread.h"
+#include "aom/internal/vpx_codec_internal.h"
+#include "aom_util/vpx_thread.h"
 #include "./vp10_rtcd.h"
-#include "vp10/common/alloccommon.h"
-#include "vp10/common/loopfilter.h"
-#include "vp10/common/entropymv.h"
-#include "vp10/common/entropy.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/mv.h"
-#include "vp10/common/frame_buffers.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/tile_common.h"
-#include "vp10/common/restoration.h"
+#include "av1/common/alloccommon.h"
+#include "av1/common/loopfilter.h"
+#include "av1/common/entropymv.h"
+#include "av1/common/entropy.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/mv.h"
+#include "av1/common/frame_buffers.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/tile_common.h"
+#include "av1/common/restoration.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/pred_common.c b/av1/common/pred_common.c
similarity index 99%
rename from vp10/common/pred_common.c
rename to av1/common/pred_common.c
index 27819b9..0e1045e 100644
--- a/vp10/common/pred_common.c
+++ b/av1/common/pred_common.c
@@ -9,10 +9,10 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/common/common.h"
-#include "vp10/common/pred_common.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/seg_common.h"
+#include "av1/common/common.h"
+#include "av1/common/pred_common.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/seg_common.h"
 
 // Returns a context number for the given MB prediction signal
 #if CONFIG_DUAL_FILTER
diff --git a/vp10/common/pred_common.h b/av1/common/pred_common.h
similarity index 98%
rename from vp10/common/pred_common.h
rename to av1/common/pred_common.h
index 63537b7..9a3e3f1 100644
--- a/vp10/common/pred_common.h
+++ b/av1/common/pred_common.h
@@ -11,9 +11,9 @@
 #ifndef VP10_COMMON_PRED_COMMON_H_
 #define VP10_COMMON_PRED_COMMON_H_
 
-#include "vp10/common/blockd.h"
-#include "vp10/common/onyxc_int.h"
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "av1/common/blockd.h"
+#include "av1/common/onyxc_int.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/quant_common.c b/av1/common/quant_common.c
similarity index 99%
rename from vp10/common/quant_common.c
rename to av1/common/quant_common.c
index 148a43e..79d8fb8 100644
--- a/vp10/common/quant_common.c
+++ b/av1/common/quant_common.c
@@ -8,12 +8,12 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/common/common.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/entropy.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/seg_common.h"
-#include "vp10/common/blockd.h"
+#include "av1/common/common.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/entropy.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/seg_common.h"
+#include "av1/common/blockd.h"
 
 #if CONFIG_AOM_QM
 static void make_qmatrices(qm_val_t *wmatrix[NUM_QM_LEVELS][2][2][TX_SIZES],
diff --git a/vp10/common/quant_common.h b/av1/common/quant_common.h
similarity index 96%
rename from vp10/common/quant_common.h
rename to av1/common/quant_common.h
index 869dd17..6ceed49 100644
--- a/vp10/common/quant_common.h
+++ b/av1/common/quant_common.h
@@ -11,9 +11,9 @@
 #ifndef VP10_COMMON_QUANT_COMMON_H_
 #define VP10_COMMON_QUANT_COMMON_H_
 
-#include "vpx/vpx_codec.h"
-#include "vp10/common/seg_common.h"
-#include "vp10/common/enums.h"
+#include "aom/vpx_codec.h"
+#include "av1/common/seg_common.h"
+#include "av1/common/enums.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/reconinter.c b/av1/common/reconinter.c
similarity index 99%
rename from vp10/common/reconinter.c
rename to av1/common/reconinter.c
index ef9d7e2..0c3b93a 100644
--- a/vp10/common/reconinter.c
+++ b/av1/common/reconinter.c
@@ -14,17 +14,17 @@
 #include "./vpx_dsp_rtcd.h"
 #include "./vpx_config.h"
 
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/blend.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/blend.h"
 
-#include "vp10/common/blockd.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/reconintra.h"
+#include "av1/common/blockd.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/reconintra.h"
 #if CONFIG_OBMC
-#include "vp10/common/onyxc_int.h"
+#include "av1/common/onyxc_int.h"
 #endif  // CONFIG_OBMC
 #if CONFIG_GLOBAL_MOTION
-#include "vp10/common/warped_motion.h"
+#include "av1/common/warped_motion.h"
 #endif  // CONFIG_GLOBAL_MOTION
 
 #if CONFIG_EXT_INTER
diff --git a/vp10/common/reconinter.h b/av1/common/reconinter.h
similarity index 99%
rename from vp10/common/reconinter.h
rename to av1/common/reconinter.h
index 5afad4e..092926d 100644
--- a/vp10/common/reconinter.h
+++ b/av1/common/reconinter.h
@@ -11,10 +11,10 @@
 #ifndef VP10_COMMON_RECONINTER_H_
 #define VP10_COMMON_RECONINTER_H_
 
-#include "vp10/common/filter.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/vp10_convolve.h"
-#include "vpx/vpx_integer.h"
+#include "av1/common/filter.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/vp10_convolve.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/reconintra.c b/av1/common/reconintra.c
similarity index 99%
rename from vp10/common/reconintra.c
rename to av1/common/reconintra.c
index c728221..801f61e 100644
--- a/vp10/common/reconintra.c
+++ b/av1/common/reconintra.c
@@ -13,19 +13,19 @@
 #include "./vp10_rtcd.h"
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/system_state.h"
+#include "aom_ports/system_state.h"
 
 #if CONFIG_VP9_HIGHBITDEPTH
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_dsp_common.h"
 #endif  // CONFIG_VP9_HIGHBITDEPTH
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/vpx_once.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/vpx_once.h"
 #if CONFIG_EXT_INTRA
-#include "vp10/common/intra_filters.h"
+#include "av1/common/intra_filters.h"
 #endif
-#include "vp10/common/reconintra.h"
-#include "vp10/common/onyxc_int.h"
+#include "av1/common/reconintra.h"
+#include "av1/common/onyxc_int.h"
 
 enum {
   NEED_LEFT = 1 << 1,
diff --git a/vp10/common/reconintra.h b/av1/common/reconintra.h
similarity index 94%
rename from vp10/common/reconintra.h
rename to av1/common/reconintra.h
index 671e5c5..d20b5a4 100644
--- a/vp10/common/reconintra.h
+++ b/av1/common/reconintra.h
@@ -11,8 +11,8 @@
 #ifndef VP10_COMMON_RECONINTRA_H_
 #define VP10_COMMON_RECONINTRA_H_
 
-#include "vpx/vpx_integer.h"
-#include "vp10/common/blockd.h"
+#include "aom/vpx_integer.h"
+#include "av1/common/blockd.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/restoration.c b/av1/common/restoration.c
similarity index 99%
rename from vp10/common/restoration.c
rename to av1/common/restoration.c
index 98978f8..4d4c9fc 100644
--- a/vp10/common/restoration.c
+++ b/av1/common/restoration.c
@@ -12,11 +12,11 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/restoration.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/restoration.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
 #define BILATERAL_PARAM_PRECISION 16
 #define BILATERAL_AMP_RANGE 256
diff --git a/vp10/common/restoration.h b/av1/common/restoration.h
similarity index 98%
rename from vp10/common/restoration.h
rename to av1/common/restoration.h
index 5ad04f9..c1e937a 100644
--- a/vp10/common/restoration.h
+++ b/av1/common/restoration.h
@@ -11,10 +11,10 @@
 #ifndef VP10_COMMON_RESTORATION_H_
 #define VP10_COMMON_RESTORATION_H_
 
+#include "aom_ports/mem.h"
 #include "./vpx_config.h"
-#include "vpx_ports/mem.h"
 
-#include "vp10/common/blockd.h"
+#include "av1/common/blockd.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/scale.c b/av1/common/scale.c
similarity index 98%
rename from vp10/common/scale.c
rename to av1/common/scale.c
index fc2235d..6bd3b74 100644
--- a/vp10/common/scale.c
+++ b/av1/common/scale.c
@@ -9,9 +9,9 @@
  */
 
 #include "./vpx_dsp_rtcd.h"
-#include "vp10/common/filter.h"
-#include "vp10/common/scale.h"
-#include "vpx_dsp/vpx_filter.h"
+#include "av1/common/filter.h"
+#include "av1/common/scale.h"
+#include "aom_dsp/vpx_filter.h"
 
 static INLINE int scaled_x(int val, const struct scale_factors *sf) {
   return (int)((int64_t)val * sf->x_scale_fp >> REF_SCALE_SHIFT);
diff --git a/vp10/common/scale.h b/av1/common/scale.h
similarity index 97%
rename from vp10/common/scale.h
rename to av1/common/scale.h
index a06dd4d..bb02601 100644
--- a/vp10/common/scale.h
+++ b/av1/common/scale.h
@@ -11,8 +11,8 @@
 #ifndef VP10_COMMON_SCALE_H_
 #define VP10_COMMON_SCALE_H_
 
-#include "vp10/common/mv.h"
-#include "vpx_dsp/vpx_convolve.h"
+#include "av1/common/mv.h"
+#include "aom_dsp/vpx_convolve.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/scan.c b/av1/common/scan.c
similarity index 99%
rename from vp10/common/scan.c
rename to av1/common/scan.c
index fbeffc7..dbc36eb 100644
--- a/vp10/common/scan.c
+++ b/av1/common/scan.c
@@ -10,7 +10,7 @@
 
 #include <assert.h>
 
-#include "vp10/common/scan.h"
+#include "av1/common/scan.h"
 
 DECLARE_ALIGNED(16, static const int16_t, default_scan_4x4[16]) = {
   0, 4, 1, 5, 8, 2, 12, 9, 3, 6, 13, 10, 7, 14, 11, 15,
diff --git a/vp10/common/scan.h b/av1/common/scan.h
similarity index 94%
rename from vp10/common/scan.h
rename to av1/common/scan.h
index 32329ba..d2d9f35 100644
--- a/vp10/common/scan.h
+++ b/av1/common/scan.h
@@ -11,11 +11,11 @@
 #ifndef VP10_COMMON_SCAN_H_
 #define VP10_COMMON_SCAN_H_
 
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
 
-#include "vp10/common/enums.h"
-#include "vp10/common/blockd.h"
+#include "av1/common/enums.h"
+#include "av1/common/blockd.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/seg_common.c b/av1/common/seg_common.c
similarity index 93%
rename from vp10/common/seg_common.c
rename to av1/common/seg_common.c
index 7e5dcc2..f131c7b 100644
--- a/vp10/common/seg_common.c
+++ b/av1/common/seg_common.c
@@ -10,10 +10,10 @@
 
 #include <assert.h>
 
-#include "vp10/common/blockd.h"
-#include "vp10/common/loopfilter.h"
-#include "vp10/common/seg_common.h"
-#include "vp10/common/quant_common.h"
+#include "av1/common/blockd.h"
+#include "av1/common/loopfilter.h"
+#include "av1/common/seg_common.h"
+#include "av1/common/quant_common.h"
 
 static const int seg_feature_data_signed[SEG_LVL_MAX] = { 1, 1, 0, 0 };
 
diff --git a/vp10/common/seg_common.h b/av1/common/seg_common.h
similarity index 98%
rename from vp10/common/seg_common.h
rename to av1/common/seg_common.h
index 4f8b80e..7a8fa8f 100644
--- a/vp10/common/seg_common.h
+++ b/av1/common/seg_common.h
@@ -11,7 +11,7 @@
 #ifndef VP10_COMMON_SEG_COMMON_H_
 #define VP10_COMMON_SEG_COMMON_H_
 
-#include "vpx_dsp/prob.h"
+#include "aom_dsp/prob.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/thread_common.c b/av1/common/thread_common.c
similarity index 97%
rename from vp10/common/thread_common.c
rename to av1/common/thread_common.c
index 947c269..ba91a46 100644
--- a/vp10/common/thread_common.c
+++ b/av1/common/thread_common.c
@@ -9,12 +9,12 @@
  */
 
 #include "./vpx_config.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/thread_common.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/loopfilter.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/thread_common.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/loopfilter.h"
 
 #if CONFIG_MULTITHREAD
 static INLINE void mutex_lock(pthread_mutex_t *const mutex) {
diff --git a/vp10/common/thread_common.h b/av1/common/thread_common.h
similarity index 96%
rename from vp10/common/thread_common.h
rename to av1/common/thread_common.h
index 9c623ef..3df9557 100644
--- a/vp10/common/thread_common.h
+++ b/av1/common/thread_common.h
@@ -11,8 +11,8 @@
 #ifndef VP10_COMMON_LOOPFILTER_THREAD_H_
 #define VP10_COMMON_LOOPFILTER_THREAD_H_
 #include "./vpx_config.h"
-#include "vp10/common/loopfilter.h"
-#include "vpx_util/vpx_thread.h"
+#include "av1/common/loopfilter.h"
+#include "aom_util/vpx_thread.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/tile_common.c b/av1/common/tile_common.c
similarity index 94%
rename from vp10/common/tile_common.c
rename to av1/common/tile_common.c
index c478fd2..e79734e 100644
--- a/vp10/common/tile_common.c
+++ b/av1/common/tile_common.c
@@ -8,9 +8,9 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/common/tile_common.h"
-#include "vp10/common/onyxc_int.h"
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "av1/common/tile_common.h"
+#include "av1/common/onyxc_int.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 void vp10_tile_set_row(TileInfo *tile, const VP10_COMMON *cm, int row) {
   tile->mi_row_start = row * cm->tile_height;
diff --git a/vp10/common/tile_common.h b/av1/common/tile_common.h
similarity index 100%
rename from vp10/common/tile_common.h
rename to av1/common/tile_common.h
diff --git a/vp10/common/vp10_convolve.c b/av1/common/vp10_convolve.c
similarity index 98%
rename from vp10/common/vp10_convolve.c
rename to av1/common/vp10_convolve.c
index 6b29025..b62bae5 100644
--- a/vp10/common/vp10_convolve.c
+++ b/av1/common/vp10_convolve.c
@@ -2,10 +2,10 @@
 #include <string.h>
 
 #include "./vp10_rtcd.h"
-#include "vp10/common/vp10_convolve.h"
-#include "vp10/common/filter.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/vp10_convolve.h"
+#include "av1/common/filter.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
 
 #define MAX_BLOCK_WIDTH (MAX_SB_SIZE)
 #define MAX_BLOCK_HEIGHT (MAX_SB_SIZE)
diff --git a/vp10/common/vp10_convolve.h b/av1/common/vp10_convolve.h
similarity index 96%
rename from vp10/common/vp10_convolve.h
rename to av1/common/vp10_convolve.h
index a15da19..9343402 100644
--- a/vp10/common/vp10_convolve.h
+++ b/av1/common/vp10_convolve.h
@@ -1,6 +1,6 @@
 #ifndef VP10_COMMON_VP10_CONVOLVE_H_
 #define VP10_COMMON_VP10_CONVOLVE_H_
-#include "vp10/common/filter.h"
+#include "av1/common/filter.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/vp10_fwd_txfm.c b/av1/common/vp10_fwd_txfm.c
similarity index 99%
rename from vp10/common/vp10_fwd_txfm.c
rename to av1/common/vp10_fwd_txfm.c
index ddcf10e..eb1c018 100644
--- a/vp10/common/vp10_fwd_txfm.c
+++ b/av1/common/vp10_fwd_txfm.c
@@ -9,7 +9,7 @@
  */
 
 #include "./vp10_rtcd.h"
-#include "vp10/common/vp10_fwd_txfm.h"
+#include "av1/common/vp10_fwd_txfm.h"
 
 void vp10_fdct4x4_c(const int16_t *input, tran_low_t *output, int stride) {
   // The 2D transform is done with two passes which are actually pretty
diff --git a/vp10/common/vp10_fwd_txfm.h b/av1/common/vp10_fwd_txfm.h
similarity index 90%
rename from vp10/common/vp10_fwd_txfm.h
rename to av1/common/vp10_fwd_txfm.h
index 46dbf3d..a0481d3 100644
--- a/vp10/common/vp10_fwd_txfm.h
+++ b/av1/common/vp10_fwd_txfm.h
@@ -11,8 +11,8 @@
 #ifndef VP10_COMMON_VP10_FWD_TXFM_H_
 #define VP10_COMMON_VP10_FWD_TXFM_H_
 
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_dsp/fwd_txfm.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_dsp/fwd_txfm.h"
 
 void vp10_fdct32(const tran_high_t *input, tran_high_t *output, int round);
 #endif  // VP10_COMMON_VP10_FWD_TXFM_H_
diff --git a/vp10/common/vp10_fwd_txfm1d.c b/av1/common/vp10_fwd_txfm1d.c
similarity index 99%
rename from vp10/common/vp10_fwd_txfm1d.c
rename to av1/common/vp10_fwd_txfm1d.c
index 2447429..6dff077 100644
--- a/vp10/common/vp10_fwd_txfm1d.c
+++ b/av1/common/vp10_fwd_txfm1d.c
@@ -9,7 +9,7 @@
  */
 
 #include <stdlib.h>
-#include "vp10/common/vp10_fwd_txfm1d.h"
+#include "av1/common/vp10_fwd_txfm1d.h"
 #if CONFIG_COEFFICIENT_RANGE_CHECKING
 #define range_check(stage, input, buf, size, bit)                         \
   {                                                                       \
diff --git a/vp10/common/vp10_fwd_txfm1d.h b/av1/common/vp10_fwd_txfm1d.h
similarity index 97%
rename from vp10/common/vp10_fwd_txfm1d.h
rename to av1/common/vp10_fwd_txfm1d.h
index d06e305..ab9d2ee 100644
--- a/vp10/common/vp10_fwd_txfm1d.h
+++ b/av1/common/vp10_fwd_txfm1d.h
@@ -11,7 +11,7 @@
 #ifndef VP10_FWD_TXFM1D_H_
 #define VP10_FWD_TXFM1D_H_
 
-#include "vp10/common/vp10_txfm.h"
+#include "av1/common/vp10_txfm.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/vp10_fwd_txfm2d.c b/av1/common/vp10_fwd_txfm2d.c
similarity index 97%
rename from vp10/common/vp10_fwd_txfm2d.c
rename to av1/common/vp10_fwd_txfm2d.c
index 77922ad..85c6b68 100644
--- a/vp10/common/vp10_fwd_txfm2d.c
+++ b/av1/common/vp10_fwd_txfm2d.c
@@ -11,10 +11,10 @@
 #include <assert.h>
 
 #include "./vp10_rtcd.h"
-#include "vp10/common/enums.h"
-#include "vp10/common/vp10_fwd_txfm1d.h"
-#include "vp10/common/vp10_fwd_txfm2d_cfg.h"
-#include "vp10/common/vp10_txfm.h"
+#include "av1/common/enums.h"
+#include "av1/common/vp10_fwd_txfm1d.h"
+#include "av1/common/vp10_fwd_txfm2d_cfg.h"
+#include "av1/common/vp10_txfm.h"
 
 static INLINE TxfmFunc fwd_txfm_type_to_func(TXFM_TYPE txfm_type) {
   switch (txfm_type) {
diff --git a/vp10/common/vp10_fwd_txfm2d_cfg.h b/av1/common/vp10_fwd_txfm2d_cfg.h
similarity index 99%
rename from vp10/common/vp10_fwd_txfm2d_cfg.h
rename to av1/common/vp10_fwd_txfm2d_cfg.h
index f069adf..f780b87 100644
--- a/vp10/common/vp10_fwd_txfm2d_cfg.h
+++ b/av1/common/vp10_fwd_txfm2d_cfg.h
@@ -10,8 +10,8 @@
 
 #ifndef VP10_FWD_TXFM2D_CFG_H_
 #define VP10_FWD_TXFM2D_CFG_H_
-#include "vp10/common/enums.h"
-#include "vp10/common/vp10_fwd_txfm1d.h"
+#include "av1/common/enums.h"
+#include "av1/common/vp10_fwd_txfm1d.h"
 //  ---------------- config fwd_dct_dct_4 ----------------
 static const int8_t fwd_shift_dct_dct_4[3] = { 2, 0, 0 };
 static const int8_t fwd_stage_range_col_dct_dct_4[4] = { 15, 16, 17, 17 };
diff --git a/vp10/common/vp10_inv_txfm.c b/av1/common/vp10_inv_txfm.c
similarity index 99%
rename from vp10/common/vp10_inv_txfm.c
rename to av1/common/vp10_inv_txfm.c
index f3bcf8b..a74de09 100644
--- a/vp10/common/vp10_inv_txfm.c
+++ b/av1/common/vp10_inv_txfm.c
@@ -13,7 +13,7 @@
 #include <string.h>
 
 #include "./vp10_rtcd.h"
-#include "vp10/common/vp10_inv_txfm.h"
+#include "av1/common/vp10_inv_txfm.h"
 
 void vp10_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride) {
   /* 4-point reversible, orthonormal inverse Walsh-Hadamard in 3.5 adds,
diff --git a/vp10/common/vp10_inv_txfm.h b/av1/common/vp10_inv_txfm.h
similarity index 97%
rename from vp10/common/vp10_inv_txfm.h
rename to av1/common/vp10_inv_txfm.h
index f2c42ac..b53db48 100644
--- a/vp10/common/vp10_inv_txfm.h
+++ b/av1/common/vp10_inv_txfm.h
@@ -14,9 +14,9 @@
 #include <assert.h>
 
 #include "./vpx_config.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_dsp/inv_txfm.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_dsp/inv_txfm.h"
+#include "aom_ports/mem.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/vp10_inv_txfm1d.c b/av1/common/vp10_inv_txfm1d.c
similarity index 99%
rename from vp10/common/vp10_inv_txfm1d.c
rename to av1/common/vp10_inv_txfm1d.c
index b22bb79..76fb623 100644
--- a/vp10/common/vp10_inv_txfm1d.c
+++ b/av1/common/vp10_inv_txfm1d.c
@@ -9,7 +9,7 @@
  */
 
 #include <stdlib.h>
-#include "vp10/common/vp10_inv_txfm1d.h"
+#include "av1/common/vp10_inv_txfm1d.h"
 #if CONFIG_COEFFICIENT_RANGE_CHECKING
 #define range_check(stage, input, buf, size, bit)                         \
   {                                                                       \
diff --git a/vp10/common/vp10_inv_txfm1d.h b/av1/common/vp10_inv_txfm1d.h
similarity index 97%
rename from vp10/common/vp10_inv_txfm1d.h
rename to av1/common/vp10_inv_txfm1d.h
index fd547a6..21b80bf 100644
--- a/vp10/common/vp10_inv_txfm1d.h
+++ b/av1/common/vp10_inv_txfm1d.h
@@ -11,7 +11,7 @@
 #ifndef VP10_INV_TXFM1D_H_
 #define VP10_INV_TXFM1D_H_
 
-#include "vp10/common/vp10_txfm.h"
+#include "av1/common/vp10_txfm.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/common/vp10_inv_txfm2d.c b/av1/common/vp10_inv_txfm2d.c
similarity index 97%
rename from vp10/common/vp10_inv_txfm2d.c
rename to av1/common/vp10_inv_txfm2d.c
index b364244..60606c9 100644
--- a/vp10/common/vp10_inv_txfm2d.c
+++ b/av1/common/vp10_inv_txfm2d.c
@@ -9,10 +9,10 @@
  */
 
 #include "./vp10_rtcd.h"
-#include "vp10/common/enums.h"
-#include "vp10/common/vp10_txfm.h"
-#include "vp10/common/vp10_inv_txfm1d.h"
-#include "vp10/common/vp10_inv_txfm2d_cfg.h"
+#include "av1/common/enums.h"
+#include "av1/common/vp10_txfm.h"
+#include "av1/common/vp10_inv_txfm1d.h"
+#include "av1/common/vp10_inv_txfm2d_cfg.h"
 
 static INLINE TxfmFunc inv_txfm_type_to_func(TXFM_TYPE txfm_type) {
   switch (txfm_type) {
diff --git a/vp10/common/vp10_inv_txfm2d_cfg.h b/av1/common/vp10_inv_txfm2d_cfg.h
similarity index 99%
rename from vp10/common/vp10_inv_txfm2d_cfg.h
rename to av1/common/vp10_inv_txfm2d_cfg.h
index 195c319..9bfa420 100644
--- a/vp10/common/vp10_inv_txfm2d_cfg.h
+++ b/av1/common/vp10_inv_txfm2d_cfg.h
@@ -10,7 +10,7 @@
 
 #ifndef VP10_INV_TXFM2D_CFG_H_
 #define VP10_INV_TXFM2D_CFG_H_
-#include "vp10/common/vp10_inv_txfm1d.h"
+#include "av1/common/vp10_inv_txfm1d.h"
 //  ---------------- config inv_dct_dct_4 ----------------
 static const int8_t inv_shift_dct_dct_4[2] = { 0, -4 };
 static const int8_t inv_stage_range_col_dct_dct_4[4] = { 18, 18, 17, 17 };
diff --git a/vp10/common/vp10_rtcd.c b/av1/common/vp10_rtcd.c
similarity index 95%
rename from vp10/common/vp10_rtcd.c
rename to av1/common/vp10_rtcd.c
index 0fd8ab0..7fce6b9 100644
--- a/vp10/common/vp10_rtcd.c
+++ b/av1/common/vp10_rtcd.c
@@ -10,7 +10,7 @@
 #include "./vpx_config.h"
 #define RTCD_C
 #include "./vp10_rtcd.h"
-#include "vpx_ports/vpx_once.h"
+#include "aom_ports/vpx_once.h"
 
 void vp10_rtcd() {
   // TODO(JBB): Remove this once, by insuring that both the encoder and
diff --git a/vp10/common/vp10_rtcd_defs.pl b/av1/common/vp10_rtcd_defs.pl
similarity index 99%
rename from vp10/common/vp10_rtcd_defs.pl
rename to av1/common/vp10_rtcd_defs.pl
index cfb56ca..4a16723 100644
--- a/vp10/common/vp10_rtcd_defs.pl
+++ b/av1/common/vp10_rtcd_defs.pl
@@ -4,12 +4,12 @@
  * VP10
  */
 
-#include "vpx/vpx_integer.h"
-#include "vp10/common/common.h"
-#include "vp10/common/enums.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/filter.h"
-#include "vp10/common/vp10_txfm.h"
+#include "aom/vpx_integer.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/vp10_txfm.h"
 
 struct macroblockd;
 
diff --git a/vp10/common/vp10_txfm.h b/av1/common/vp10_txfm.h
similarity index 98%
rename from vp10/common/vp10_txfm.h
rename to av1/common/vp10_txfm.h
index 567e7b8..bfeb3ea 100644
--- a/vp10/common/vp10_txfm.h
+++ b/av1/common/vp10_txfm.h
@@ -14,9 +14,9 @@
 #include <math.h>
 #include <stdio.h>
 
-#include "vp10/common/enums.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "av1/common/enums.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 static const int cos_bit_min = 10;
 static const int cos_bit_max = 16;
diff --git a/vp10/common/warped_motion.c b/av1/common/warped_motion.c
similarity index 99%
rename from vp10/common/warped_motion.c
rename to av1/common/warped_motion.c
index dd9a91e..5f76453 100644
--- a/vp10/common/warped_motion.c
+++ b/av1/common/warped_motion.c
@@ -14,7 +14,7 @@
 #include <math.h>
 #include <assert.h>
 
-#include "vp10/common/warped_motion.h"
+#include "av1/common/warped_motion.h"
 
 static ProjectPointsType get_project_points_type(TransformationType type) {
   switch (type) {
diff --git a/vp10/common/warped_motion.h b/av1/common/warped_motion.h
similarity index 98%
rename from vp10/common/warped_motion.h
rename to av1/common/warped_motion.h
index 1b317f1..a9c57f9 100644
--- a/vp10/common/warped_motion.h
+++ b/av1/common/warped_motion.h
@@ -18,8 +18,8 @@
 #include <assert.h>
 
 #include "./vpx_config.h"
-#include "vpx_ports/mem.h"
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 // Bits of precision used for the model
 #define WARPEDMODEL_PREC_BITS 8
diff --git a/vp10/common/x86/highbd_inv_txfm_sse4.c b/av1/common/x86/highbd_inv_txfm_sse4.c
similarity index 99%
rename from vp10/common/x86/highbd_inv_txfm_sse4.c
rename to av1/common/x86/highbd_inv_txfm_sse4.c
index 92db49b..f3686eb 100644
--- a/vp10/common/x86/highbd_inv_txfm_sse4.c
+++ b/av1/common/x86/highbd_inv_txfm_sse4.c
@@ -13,8 +13,8 @@
 
 #include "./vp10_rtcd.h"
 #include "./vpx_config.h"
-#include "vp10/common/vp10_inv_txfm2d_cfg.h"
-#include "vp10/common/x86/highbd_txfm_utility_sse4.h"
+#include "av1/common/vp10_inv_txfm2d_cfg.h"
+#include "av1/common/x86/highbd_txfm_utility_sse4.h"
 
 static INLINE void load_buffer_4x4(const int32_t *coeff, __m128i *in) {
   in[0] = _mm_load_si128((const __m128i *)(coeff + 0));
diff --git a/vp10/common/x86/highbd_txfm_utility_sse4.h b/av1/common/x86/highbd_txfm_utility_sse4.h
similarity index 100%
rename from vp10/common/x86/highbd_txfm_utility_sse4.h
rename to av1/common/x86/highbd_txfm_utility_sse4.h
diff --git a/vp10/common/x86/idct_intrin_sse2.c b/av1/common/x86/idct_intrin_sse2.c
similarity index 98%
rename from vp10/common/x86/idct_intrin_sse2.c
rename to av1/common/x86/idct_intrin_sse2.c
index fd9f5cf..70bf9bf 100644
--- a/vp10/common/x86/idct_intrin_sse2.c
+++ b/av1/common/x86/idct_intrin_sse2.c
@@ -9,10 +9,10 @@
  */
 
 #include "./vp10_rtcd.h"
-#include "vpx_dsp/x86/inv_txfm_sse2.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
-#include "vpx_ports/mem.h"
-#include "vp10/common/enums.h"
+#include "aom_dsp/x86/inv_txfm_sse2.h"
+#include "aom_dsp/x86/txfm_common_sse2.h"
+#include "aom_ports/mem.h"
+#include "av1/common/enums.h"
 
 #if CONFIG_EXT_TX
 static INLINE void fliplr_4x4(__m128i in[2]) {
diff --git a/vp10/common/x86/reconintra_sse4.c b/av1/common/x86/reconintra_sse4.c
similarity index 99%
rename from vp10/common/x86/reconintra_sse4.c
rename to av1/common/x86/reconintra_sse4.c
index d8ce329..cac34a6 100644
--- a/vp10/common/x86/reconintra_sse4.c
+++ b/av1/common/x86/reconintra_sse4.c
@@ -10,9 +10,9 @@
 #include <smmintrin.h>
 
 #include "./vp10_rtcd.h"
-#include "vpx_ports/mem.h"
-#include "vp10/common/enums.h"
-#include "vp10/common/intra_filters.h"
+#include "aom_ports/mem.h"
+#include "av1/common/enums.h"
+#include "av1/common/intra_filters.h"
 
 static INLINE void AddPixelsSmall(const uint8_t *above, const uint8_t *left,
                                   __m128i *sum) {
diff --git a/vp10/common/x86/vp10_convolve_filters_ssse3.c b/av1/common/x86/vp10_convolve_filters_ssse3.c
similarity index 99%
rename from vp10/common/x86/vp10_convolve_filters_ssse3.c
rename to av1/common/x86/vp10_convolve_filters_ssse3.c
index 7cda988..b842589 100644
--- a/vp10/common/x86/vp10_convolve_filters_ssse3.c
+++ b/av1/common/x86/vp10_convolve_filters_ssse3.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 #include "./vpx_config.h"
-#include "vp10/common/filter.h"
+#include "av1/common/filter.h"
 
 #if CONFIG_EXT_INTERP
 DECLARE_ALIGNED(16, const int8_t,
diff --git a/vp10/common/x86/vp10_convolve_ssse3.c b/av1/common/x86/vp10_convolve_ssse3.c
similarity index 99%
rename from vp10/common/x86/vp10_convolve_ssse3.c
rename to av1/common/x86/vp10_convolve_ssse3.c
index 68cfca7..e891d74 100644
--- a/vp10/common/x86/vp10_convolve_ssse3.c
+++ b/av1/common/x86/vp10_convolve_ssse3.c
@@ -12,7 +12,7 @@
 #include <tmmintrin.h>
 
 #include "./vp10_rtcd.h"
-#include "vp10/common/filter.h"
+#include "av1/common/filter.h"
 
 #define WIDTH_BOUND (16)
 #define HEIGHT_BOUND (16)
diff --git a/vpx_dsp/x86/fwd_dct32x32_impl_sse2.h b/av1/common/x86/vp10_fwd_dct32x32_impl_sse2.h
similarity index 99%
rename from vpx_dsp/x86/fwd_dct32x32_impl_sse2.h
rename to av1/common/x86/vp10_fwd_dct32x32_impl_sse2.h
index 3744333..e7d63fe 100644
--- a/vpx_dsp/x86/fwd_dct32x32_impl_sse2.h
+++ b/av1/common/x86/vp10_fwd_dct32x32_impl_sse2.h
@@ -10,9 +10,10 @@
 
 #include <emmintrin.h>  // SSE2
 
-#include "vpx_dsp/fwd_txfm.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
+#include "./vp10_rtcd.h"
+#include "av1/common/vp10_fwd_txfm.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_dsp/x86/txfm_common_sse2.h"
 
 // TODO(jingning) The high bit-depth version needs re-work for performance.
 // The current SSE2 implementation also causes cross reference to the static
@@ -21,31 +22,31 @@
 #define ADD_EPI16 _mm_adds_epi16
 #define SUB_EPI16 _mm_subs_epi16
 #if FDCT32x32_HIGH_PRECISION
-void vpx_fdct32x32_rows_c(const int16_t *intermediate, tran_low_t *out) {
+void vp10_fdct32x32_rows_c(const int16_t *intermediate, tran_low_t *out) {
   int i, j;
   for (i = 0; i < 32; ++i) {
     tran_high_t temp_in[32], temp_out[32];
     for (j = 0; j < 32; ++j) temp_in[j] = intermediate[j * 32 + i];
-    vpx_fdct32(temp_in, temp_out, 0);
+    vp10_fdct32(temp_in, temp_out, 0);
     for (j = 0; j < 32; ++j)
       out[j + i * 32] =
           (tran_low_t)((temp_out[j] + 1 + (temp_out[j] < 0)) >> 2);
   }
 }
-#define HIGH_FDCT32x32_2D_C vpx_highbd_fdct32x32_c
-#define HIGH_FDCT32x32_2D_ROWS_C vpx_fdct32x32_rows_c
+#define HIGH_FDCT32x32_2D_C vp10_highbd_fdct32x32_c
+#define HIGH_FDCT32x32_2D_ROWS_C vp10_fdct32x32_rows_c
 #else
-void vpx_fdct32x32_rd_rows_c(const int16_t *intermediate, tran_low_t *out) {
+void vp10_fdct32x32_rd_rows_c(const int16_t *intermediate, tran_low_t *out) {
   int i, j;
   for (i = 0; i < 32; ++i) {
     tran_high_t temp_in[32], temp_out[32];
     for (j = 0; j < 32; ++j) temp_in[j] = intermediate[j * 32 + i];
-    vpx_fdct32(temp_in, temp_out, 1);
+    vp10_fdct32(temp_in, temp_out, 1);
     for (j = 0; j < 32; ++j) out[j + i * 32] = (tran_low_t)temp_out[j];
   }
 }
-#define HIGH_FDCT32x32_2D_C vpx_highbd_fdct32x32_rd_c
-#define HIGH_FDCT32x32_2D_ROWS_C vpx_fdct32x32_rd_rows_c
+#define HIGH_FDCT32x32_2D_C vp10_highbd_fdct32x32_rd_c
+#define HIGH_FDCT32x32_2D_ROWS_C vp10_fdct32x32_rd_rows_c
 #endif  // FDCT32x32_HIGH_PRECISION
 #else
 #define ADD_EPI16 _mm_add_epi16
@@ -3145,7 +3146,7 @@
             tr2_6 = _mm_sub_epi16(tr2_6, tr2_6_0);
             tr2_7 = _mm_sub_epi16(tr2_7, tr2_7_0);
             //           ... and here.
-            //           PS: also change code in vp9/encoder/vp9_dct.c
+            //           PS: also change code in av1/encoder/dct.c
             tr2_0 = _mm_add_epi16(tr2_0, kOne);
             tr2_1 = _mm_add_epi16(tr2_1, kOne);
             tr2_2 = _mm_add_epi16(tr2_2, kOne);
diff --git a/vp10/common/x86/vp10_fwd_txfm1d_sse4.c b/av1/common/x86/vp10_fwd_txfm1d_sse4.c
similarity index 99%
rename from vp10/common/x86/vp10_fwd_txfm1d_sse4.c
rename to av1/common/x86/vp10_fwd_txfm1d_sse4.c
index 3e57020..902c9b2 100644
--- a/vp10/common/x86/vp10_fwd_txfm1d_sse4.c
+++ b/av1/common/x86/vp10_fwd_txfm1d_sse4.c
@@ -1,4 +1,4 @@
-#include "vp10/common/x86/vp10_txfm1d_sse4.h"
+#include "av1/common/x86/vp10_txfm1d_sse4.h"
 
 void vp10_fdct4_new_sse4_1(const __m128i *input, __m128i *output,
                            const int8_t *cos_bit, const int8_t *stage_range) {
diff --git a/vp10/common/x86/vp10_fwd_txfm2d_sse4.c b/av1/common/x86/vp10_fwd_txfm2d_sse4.c
similarity index 96%
rename from vp10/common/x86/vp10_fwd_txfm2d_sse4.c
rename to av1/common/x86/vp10_fwd_txfm2d_sse4.c
index 279a351..a59a0c8 100644
--- a/vp10/common/x86/vp10_fwd_txfm2d_sse4.c
+++ b/av1/common/x86/vp10_fwd_txfm2d_sse4.c
@@ -9,9 +9,9 @@
  */
 
 #include "./vp10_rtcd.h"
-#include "vp10/common/enums.h"
-#include "vp10/common/vp10_txfm.h"
-#include "vp10/common/x86/vp10_txfm1d_sse4.h"
+#include "av1/common/enums.h"
+#include "av1/common/vp10_txfm.h"
+#include "av1/common/x86/vp10_txfm1d_sse4.h"
 
 static INLINE void int16_array_with_stride_to_int32_array_without_stride(
     const int16_t *input, int stride, int32_t *output, int txfm1d_size) {
diff --git a/vp10/common/x86/vp10_fwd_txfm_impl_sse2.h b/av1/common/x86/vp10_fwd_txfm_impl_sse2.h
similarity index 99%
rename from vp10/common/x86/vp10_fwd_txfm_impl_sse2.h
rename to av1/common/x86/vp10_fwd_txfm_impl_sse2.h
index b3bcc4a..9bb8abc 100644
--- a/vp10/common/x86/vp10_fwd_txfm_impl_sse2.h
+++ b/av1/common/x86/vp10_fwd_txfm_impl_sse2.h
@@ -11,10 +11,10 @@
 #include <emmintrin.h>  // SSE2
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_dsp/x86/fwd_txfm_sse2.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_dsp/x86/fwd_txfm_sse2.h"
+#include "aom_dsp/x86/txfm_common_sse2.h"
+#include "aom_ports/mem.h"
 
 // TODO(jingning) The high bit-depth functions need rework for performance.
 // After we properly fix the high bit-depth function implementations, this
diff --git a/vp10/common/x86/vp10_fwd_txfm_sse2.c b/av1/common/x86/vp10_fwd_txfm_sse2.c
similarity index 94%
rename from vp10/common/x86/vp10_fwd_txfm_sse2.c
rename to av1/common/x86/vp10_fwd_txfm_sse2.c
index 015e86e..05ec539 100644
--- a/vp10/common/x86/vp10_fwd_txfm_sse2.c
+++ b/av1/common/x86/vp10_fwd_txfm_sse2.c
@@ -12,8 +12,8 @@
 
 #include "./vp10_rtcd.h"
 #include "./vpx_config.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/x86/fwd_txfm_sse2.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/x86/fwd_txfm_sse2.h"
 
 void vp10_fdct4x4_1_sse2(const int16_t *input, tran_low_t *output, int stride) {
   __m128i in0, in1;
@@ -229,20 +229,20 @@
 #define FDCT4x4_2D vp10_fdct4x4_sse2
 #define FDCT8x8_2D vp10_fdct8x8_sse2
 #define FDCT16x16_2D vp10_fdct16x16_sse2
-#include "vp10/common/x86/vp10_fwd_txfm_impl_sse2.h"
+#include "av1/common/x86/vp10_fwd_txfm_impl_sse2.h"
 #undef FDCT4x4_2D
 #undef FDCT8x8_2D
 #undef FDCT16x16_2D
 
 #define FDCT32x32_2D vp10_fdct32x32_rd_sse2
 #define FDCT32x32_HIGH_PRECISION 0
-#include "vp10/common/x86/vp10_fwd_dct32x32_impl_sse2.h"
+#include "av1/common/x86/vp10_fwd_dct32x32_impl_sse2.h"
 #undef FDCT32x32_2D
 #undef FDCT32x32_HIGH_PRECISION
 
 #define FDCT32x32_2D vp10_fdct32x32_sse2
 #define FDCT32x32_HIGH_PRECISION 1
-#include "vp10/common/x86/vp10_fwd_dct32x32_impl_sse2.h"  // NOLINT
+#include "av1/common/x86/vp10_fwd_dct32x32_impl_sse2.h"  // NOLINT
 #undef FDCT32x32_2D
 #undef FDCT32x32_HIGH_PRECISION
 #undef DCT_HIGH_BIT_DEPTH
@@ -252,20 +252,20 @@
 #define FDCT4x4_2D vp10_highbd_fdct4x4_sse2
 #define FDCT8x8_2D vp10_highbd_fdct8x8_sse2
 #define FDCT16x16_2D vp10_highbd_fdct16x16_sse2
-#include "vp10/common/x86/vp10_fwd_txfm_impl_sse2.h"  // NOLINT
+#include "av1/common/x86/vp10_fwd_txfm_impl_sse2.h"  // NOLINT
 #undef FDCT4x4_2D
 #undef FDCT8x8_2D
 #undef FDCT16x16_2D
 
 #define FDCT32x32_2D vp10_highbd_fdct32x32_rd_sse2
 #define FDCT32x32_HIGH_PRECISION 0
-#include "vp10/common/x86/vp10_fwd_dct32x32_impl_sse2.h"  // NOLINT
+#include "av1/common/x86/vp10_fwd_dct32x32_impl_sse2.h"  // NOLINT
 #undef FDCT32x32_2D
 #undef FDCT32x32_HIGH_PRECISION
 
 #define FDCT32x32_2D vp10_highbd_fdct32x32_sse2
 #define FDCT32x32_HIGH_PRECISION 1
-#include "vp10/common/x86/vp10_fwd_dct32x32_impl_sse2.h"  // NOLINT
+#include "av1/common/x86/vp10_fwd_dct32x32_impl_sse2.h"  // NOLINT
 #undef FDCT32x32_2D
 #undef FDCT32x32_HIGH_PRECISION
 #undef DCT_HIGH_BIT_DEPTH
diff --git a/vp10/common/x86/vp10_highbd_convolve_filters_sse4.c b/av1/common/x86/vp10_highbd_convolve_filters_sse4.c
similarity index 99%
rename from vp10/common/x86/vp10_highbd_convolve_filters_sse4.c
rename to av1/common/x86/vp10_highbd_convolve_filters_sse4.c
index ed04345..7f3630c 100644
--- a/vp10/common/x86/vp10_highbd_convolve_filters_sse4.c
+++ b/av1/common/x86/vp10_highbd_convolve_filters_sse4.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 #include "./vpx_config.h"
-#include "vp10/common/filter.h"
+#include "av1/common/filter.h"
 
 #if CONFIG_VP9_HIGHBITDEPTH
 #if CONFIG_EXT_INTERP
diff --git a/vp10/common/x86/vp10_highbd_convolve_sse4.c b/av1/common/x86/vp10_highbd_convolve_sse4.c
similarity index 99%
rename from vp10/common/x86/vp10_highbd_convolve_sse4.c
rename to av1/common/x86/vp10_highbd_convolve_sse4.c
index e8009a8..ea78400 100644
--- a/vp10/common/x86/vp10_highbd_convolve_sse4.c
+++ b/av1/common/x86/vp10_highbd_convolve_sse4.c
@@ -12,7 +12,7 @@
 #include <smmintrin.h>
 
 #include "./vp10_rtcd.h"
-#include "vp10/common/filter.h"
+#include "av1/common/filter.h"
 
 typedef void (*TransposeSave)(const int width, int pixelsNum, uint32_t *src,
                               int src_stride, uint16_t *dst, int dst_stride,
diff --git a/vp10/common/x86/vp10_inv_txfm_sse2.c b/av1/common/x86/vp10_inv_txfm_sse2.c
similarity index 99%
rename from vp10/common/x86/vp10_inv_txfm_sse2.c
rename to av1/common/x86/vp10_inv_txfm_sse2.c
index b731cdf..b09933e 100644
--- a/vp10/common/x86/vp10_inv_txfm_sse2.c
+++ b/av1/common/x86/vp10_inv_txfm_sse2.c
@@ -9,8 +9,8 @@
  */
 
 #include "./vp10_rtcd.h"
-#include "vp10/common/x86/vp10_inv_txfm_sse2.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
+#include "av1/common/x86/vp10_inv_txfm_sse2.h"
+#include "aom_dsp/x86/txfm_common_sse2.h"
 
 #define RECON_AND_STORE4X4(dest, in_x)                    \
   {                                                       \
diff --git a/vp10/common/x86/vp10_inv_txfm_sse2.h b/av1/common/x86/vp10_inv_txfm_sse2.h
similarity index 98%
rename from vp10/common/x86/vp10_inv_txfm_sse2.h
rename to av1/common/x86/vp10_inv_txfm_sse2.h
index 9d8c46b..0839ab9 100644
--- a/vp10/common/x86/vp10_inv_txfm_sse2.h
+++ b/av1/common/x86/vp10_inv_txfm_sse2.h
@@ -13,8 +13,8 @@
 
 #include <emmintrin.h>  // SSE2
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vp10/common/vp10_inv_txfm.h"
+#include "aom/vpx_integer.h"
+#include "av1/common/vp10_inv_txfm.h"
 
 // perform 8x8 transpose
 static INLINE void array_transpose_8x8(__m128i *in, __m128i *res) {
diff --git a/vp10/common/x86/vp10_txfm1d_sse4.h b/av1/common/x86/vp10_txfm1d_sse4.h
similarity index 99%
rename from vp10/common/x86/vp10_txfm1d_sse4.h
rename to av1/common/x86/vp10_txfm1d_sse4.h
index dec72bd..f05a54c 100644
--- a/vp10/common/x86/vp10_txfm1d_sse4.h
+++ b/av1/common/x86/vp10_txfm1d_sse4.h
@@ -2,7 +2,7 @@
 #define VP10_TXMF1D_SSE2_H_
 
 #include <smmintrin.h>
-#include "vp10/common/vp10_txfm.h"
+#include "av1/common/vp10_txfm.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/decoder/bitreader.h b/av1/decoder/bitreader.h
similarity index 91%
rename from vp10/decoder/bitreader.h
rename to av1/decoder/bitreader.h
index baf8f03..75d6aa4 100644
--- a/vp10/decoder/bitreader.h
+++ b/av1/decoder/bitreader.h
@@ -17,8 +17,8 @@
 #include "./vpx_config.h"
 
 #if CONFIG_ANS
-#include "vp10/common/ans.h"
-#include "vpx/vp8dx.h"  // for vp10_decrypt_cb
+#include "av1/common/ans.h"
+#include "aom/vp8dx.h"  // for vp10_decrypt_cb
 #define vp10_reader struct AnsDecoder
 #define vp10_reader_has_error ans_reader_has_error
 #define vp10_read uabs_read
@@ -26,7 +26,7 @@
 #define vp10_read_literal uabs_read_literal
 #define vp10_read_tree uabs_read_tree
 #else
-#include "vpx_dsp/bitreader.h"
+#include "aom_dsp/bitreader.h"
 #define vp10_reader vpx_reader
 #define vp10_reader_has_error vpx_reader_has_error
 #define vp10_read vpx_read
diff --git a/vp10/decoder/decodeframe.c b/av1/decoder/decodeframe.c
similarity index 99%
rename from vp10/decoder/decodeframe.c
rename to av1/decoder/decodeframe.c
index bddfe57..0f90c20 100644
--- a/vp10/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -15,40 +15,41 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 #include "./vpx_scale_rtcd.h"
+#include "./vpx_config.h"
 
-#include "vp10/decoder/bitreader.h"
-#include "vpx_dsp/bitreader_buffer.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/mem_ops.h"
-#include "vpx_scale/vpx_scale.h"
-#include "vpx_util/vpx_thread.h"
+#include "aom_dsp/bitreader_buffer.h"
+#include "av1/decoder/bitreader.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/mem_ops.h"
+#include "aom_scale/vpx_scale.h"
+#include "aom_util/vpx_thread.h"
 
-#include "vp10/common/alloccommon.h"
+#include "av1/common/alloccommon.h"
 #if CONFIG_CLPF
-#include "vp10/common/clpf.h"
+#include "av1/common/clpf.h"
 #endif
-#include "vp10/common/common.h"
+#include "av1/common/common.h"
 #if CONFIG_DERING
-#include "vp10/common/dering.h"
+#include "av1/common/dering.h"
 #endif  // CONFIG_DERING
-#include "vp10/common/entropy.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/idct.h"
-#include "vp10/common/pred_common.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/reconintra.h"
-#include "vp10/common/seg_common.h"
-#include "vp10/common/thread_common.h"
-#include "vp10/common/tile_common.h"
+#include "av1/common/entropy.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/idct.h"
+#include "av1/common/thread_common.h"
+#include "av1/common/pred_common.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/reconintra.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/seg_common.h"
+#include "av1/common/tile_common.h"
 
-#include "vp10/decoder/decodeframe.h"
-#include "vp10/decoder/decodemv.h"
-#include "vp10/decoder/decoder.h"
-#include "vp10/decoder/detokenize.h"
-#include "vp10/decoder/dsubexp.h"
+#include "av1/decoder/decodeframe.h"
+#include "av1/decoder/detokenize.h"
+#include "av1/decoder/decodemv.h"
+#include "av1/decoder/decoder.h"
+#include "av1/decoder/dsubexp.h"
 
 #define MAX_VPX_HEADER_SIZE 80
 
diff --git a/vp10/decoder/decodeframe.h b/av1/decoder/decodeframe.h
similarity index 100%
rename from vp10/decoder/decodeframe.h
rename to av1/decoder/decodeframe.h
diff --git a/vp10/decoder/decodemv.c b/av1/decoder/decodemv.c
similarity index 99%
rename from vp10/decoder/decodemv.c
rename to av1/decoder/decodemv.c
index 983ad81..ef776a0 100644
--- a/vp10/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -10,19 +10,19 @@
 
 #include <assert.h>
 
-#include "vp10/common/common.h"
-#include "vp10/common/entropy.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/entropymv.h"
-#include "vp10/common/mvref_common.h"
-#include "vp10/common/pred_common.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/seg_common.h"
+#include "av1/common/common.h"
+#include "av1/common/entropy.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/entropymv.h"
+#include "av1/common/mvref_common.h"
+#include "av1/common/pred_common.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/seg_common.h"
 
-#include "vp10/decoder/decodemv.h"
-#include "vp10/decoder/decodeframe.h"
+#include "av1/decoder/decodemv.h"
+#include "av1/decoder/decodeframe.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 static INLINE int read_uniform(vp10_reader *r, int n) {
   int l = get_unsigned_bits(n);
diff --git a/vp10/decoder/decodemv.h b/av1/decoder/decodemv.h
similarity index 92%
rename from vp10/decoder/decodemv.h
rename to av1/decoder/decodemv.h
index b99f5a5..59fdd70 100644
--- a/vp10/decoder/decodemv.h
+++ b/av1/decoder/decodemv.h
@@ -11,9 +11,9 @@
 #ifndef VP10_DECODER_DECODEMV_H_
 #define VP10_DECODER_DECODEMV_H_
 
-#include "vp10/decoder/bitreader.h"
+#include "av1/decoder/bitreader.h"
 
-#include "vp10/decoder/decoder.h"
+#include "av1/decoder/decoder.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/decoder/decoder.c b/av1/decoder/decoder.c
similarity index 96%
rename from vp10/decoder/decoder.c
rename to av1/decoder/decoder.c
index 4d13315..4cea36b 100644
--- a/vp10/decoder/decoder.c
+++ b/av1/decoder/decoder.c
@@ -16,23 +16,23 @@
 #include "./vpx_dsp_rtcd.h"
 #include "./vpx_scale_rtcd.h"
 
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/system_state.h"
-#include "vpx_ports/vpx_once.h"
-#include "vpx_ports/vpx_timer.h"
-#include "vpx_scale/vpx_scale.h"
-#include "vpx_util/vpx_thread.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/system_state.h"
+#include "aom_ports/vpx_once.h"
+#include "aom_ports/vpx_timer.h"
+#include "aom_scale/vpx_scale.h"
+#include "aom_util/vpx_thread.h"
 
-#include "vp10/common/alloccommon.h"
-#include "vp10/common/loopfilter.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/reconintra.h"
+#include "av1/common/alloccommon.h"
+#include "av1/common/loopfilter.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/reconintra.h"
 
-#include "vp10/decoder/decodeframe.h"
-#include "vp10/decoder/decoder.h"
-#include "vp10/decoder/detokenize.h"
+#include "av1/decoder/decodeframe.h"
+#include "av1/decoder/decoder.h"
+#include "av1/decoder/detokenize.h"
 
 static void initialize_dec(void) {
   static volatile int init_done = 0;
diff --git a/vp10/decoder/decoder.h b/av1/decoder/decoder.h
similarity index 95%
rename from vp10/decoder/decoder.h
rename to av1/decoder/decoder.h
index 092c4a9..47a5a7b 100644
--- a/vp10/decoder/decoder.h
+++ b/av1/decoder/decoder.h
@@ -13,14 +13,14 @@
 
 #include "./vpx_config.h"
 
-#include "vpx/vpx_codec.h"
-#include "vp10/decoder/bitreader.h"
-#include "vpx_scale/yv12config.h"
-#include "vpx_util/vpx_thread.h"
+#include "aom/vpx_codec.h"
+#include "av1/decoder/bitreader.h"
+#include "aom_scale/yv12config.h"
+#include "aom_util/vpx_thread.h"
 
-#include "vp10/common/thread_common.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/decoder/dthread.h"
+#include "av1/common/thread_common.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/decoder/dthread.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/decoder/detokenize.c b/av1/decoder/detokenize.c
similarity index 98%
rename from vp10/decoder/detokenize.c
rename to av1/decoder/detokenize.c
index b827451..0fba999 100644
--- a/vp10/decoder/detokenize.c
+++ b/av1/decoder/detokenize.c
@@ -8,16 +8,16 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
-#include "vp10/common/ans.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/common.h"
-#include "vp10/common/entropy.h"
-#include "vp10/common/idct.h"
+#include "av1/common/ans.h"
+#include "av1/common/blockd.h"
+#include "av1/common/common.h"
+#include "av1/common/entropy.h"
+#include "av1/common/idct.h"
 
-#include "vp10/decoder/detokenize.h"
+#include "av1/decoder/detokenize.h"
 
 #define EOB_CONTEXT_NODE 0
 #define ZERO_CONTEXT_NODE 1
diff --git a/vp10/decoder/detokenize.h b/av1/decoder/detokenize.h
similarity index 91%
rename from vp10/decoder/detokenize.h
rename to av1/decoder/detokenize.h
index 5e60a4c..279c193 100644
--- a/vp10/decoder/detokenize.h
+++ b/av1/decoder/detokenize.h
@@ -11,9 +11,9 @@
 #ifndef VP10_DECODER_DETOKENIZE_H_
 #define VP10_DECODER_DETOKENIZE_H_
 
-#include "vp10/decoder/decoder.h"
-#include "vp10/common/ans.h"
-#include "vp10/common/scan.h"
+#include "av1/decoder/decoder.h"
+#include "av1/common/ans.h"
+#include "av1/common/scan.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/decoder/dsubexp.c b/av1/decoder/dsubexp.c
similarity index 97%
rename from vp10/decoder/dsubexp.c
rename to av1/decoder/dsubexp.c
index 8310b7a..146a1de 100644
--- a/vp10/decoder/dsubexp.c
+++ b/av1/decoder/dsubexp.c
@@ -10,9 +10,9 @@
 
 #include <assert.h>
 
-#include "vp10/common/entropy.h"
+#include "av1/common/entropy.h"
 
-#include "vp10/decoder/dsubexp.h"
+#include "av1/decoder/dsubexp.h"
 
 static int inv_recenter_nonneg(int v, int m) {
   if (v > 2 * m) return v;
diff --git a/vp10/decoder/dsubexp.h b/av1/decoder/dsubexp.h
similarity index 96%
rename from vp10/decoder/dsubexp.h
rename to av1/decoder/dsubexp.h
index 04aad0c..b8980f7 100644
--- a/vp10/decoder/dsubexp.h
+++ b/av1/decoder/dsubexp.h
@@ -11,7 +11,7 @@
 #ifndef VP10_DECODER_DSUBEXP_H_
 #define VP10_DECODER_DSUBEXP_H_
 
-#include "vp10/decoder/bitreader.h"
+#include "av1/decoder/bitreader.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/decoder/dthread.c b/av1/decoder/dthread.c
similarity index 97%
rename from vp10/decoder/dthread.c
rename to av1/decoder/dthread.c
index 2df3c1c..d9a2ce1 100644
--- a/vp10/decoder/dthread.c
+++ b/av1/decoder/dthread.c
@@ -9,10 +9,10 @@
  */
 
 #include "./vpx_config.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/decoder/dthread.h"
-#include "vp10/decoder/decoder.h"
+#include "aom_mem/vpx_mem.h"
+#include "av1/common/reconinter.h"
+#include "av1/decoder/dthread.h"
+#include "av1/decoder/decoder.h"
 
 // #define DEBUG_THREAD
 
diff --git a/vp10/decoder/dthread.h b/av1/decoder/dthread.h
similarity index 96%
rename from vp10/decoder/dthread.h
rename to av1/decoder/dthread.h
index cb78462..ef548b6 100644
--- a/vp10/decoder/dthread.h
+++ b/av1/decoder/dthread.h
@@ -12,8 +12,8 @@
 #define VP10_DECODER_DTHREAD_H_
 
 #include "./vpx_config.h"
-#include "vpx_util/vpx_thread.h"
-#include "vpx/internal/vpx_codec_internal.h"
+#include "aom_util/vpx_thread.h"
+#include "aom/internal/vpx_codec_internal.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/aq_complexity.c b/av1/encoder/aq_complexity.c
similarity index 95%
rename from vp10/encoder/aq_complexity.c
rename to av1/encoder/aq_complexity.c
index 317b2b3..173556e 100644
--- a/vp10/encoder/aq_complexity.c
+++ b/av1/encoder/aq_complexity.c
@@ -11,13 +11,13 @@
 #include <limits.h>
 #include <math.h>
 
-#include "vp10/encoder/aq_complexity.h"
-#include "vp10/encoder/aq_variance.h"
-#include "vp10/encoder/encodeframe.h"
-#include "vp10/common/seg_common.h"
-#include "vp10/encoder/segmentation.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/system_state.h"
+#include "av1/encoder/aq_complexity.h"
+#include "av1/encoder/aq_variance.h"
+#include "av1/encoder/encodeframe.h"
+#include "av1/common/seg_common.h"
+#include "av1/encoder/segmentation.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/system_state.h"
 
 #define AQ_C_SEGMENTS 5
 #define DEFAULT_AQ2_SEG 3  // Neutral Q segment
diff --git a/vp10/encoder/aq_complexity.h b/av1/encoder/aq_complexity.h
similarity index 96%
rename from vp10/encoder/aq_complexity.h
rename to av1/encoder/aq_complexity.h
index 5ed461b..db85406 100644
--- a/vp10/encoder/aq_complexity.h
+++ b/av1/encoder/aq_complexity.h
@@ -15,7 +15,7 @@
 extern "C" {
 #endif
 
-#include "vp10/common/enums.h"
+#include "av1/common/enums.h"
 
 struct VP10_COMP;
 struct macroblock;
diff --git a/vp10/encoder/aq_cyclicrefresh.c b/av1/encoder/aq_cyclicrefresh.c
similarity index 98%
rename from vp10/encoder/aq_cyclicrefresh.c
rename to av1/encoder/aq_cyclicrefresh.c
index 362a71f..b7897f9 100644
--- a/vp10/encoder/aq_cyclicrefresh.c
+++ b/av1/encoder/aq_cyclicrefresh.c
@@ -11,12 +11,12 @@
 #include <limits.h>
 #include <math.h>
 
-#include "vp10/common/seg_common.h"
-#include "vp10/encoder/aq_cyclicrefresh.h"
-#include "vp10/encoder/ratectrl.h"
-#include "vp10/encoder/segmentation.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/system_state.h"
+#include "av1/common/seg_common.h"
+#include "av1/encoder/aq_cyclicrefresh.h"
+#include "av1/encoder/ratectrl.h"
+#include "av1/encoder/segmentation.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/system_state.h"
 
 struct CYCLIC_REFRESH {
   // Percentage of blocks per frame that are targeted as candidates
diff --git a/vp10/encoder/aq_cyclicrefresh.h b/av1/encoder/aq_cyclicrefresh.h
similarity index 98%
rename from vp10/encoder/aq_cyclicrefresh.h
rename to av1/encoder/aq_cyclicrefresh.h
index 649d714..24491fc 100644
--- a/vp10/encoder/aq_cyclicrefresh.h
+++ b/av1/encoder/aq_cyclicrefresh.h
@@ -11,7 +11,7 @@
 #ifndef VP10_ENCODER_AQ_CYCLICREFRESH_H_
 #define VP10_ENCODER_AQ_CYCLICREFRESH_H_
 
-#include "vp10/common/blockd.h"
+#include "av1/common/blockd.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/aq_variance.c b/av1/encoder/aq_variance.c
similarity index 96%
rename from vp10/encoder/aq_variance.c
rename to av1/encoder/aq_variance.c
index 026da70..2a529a1 100644
--- a/vp10/encoder/aq_variance.c
+++ b/av1/encoder/aq_variance.c
@@ -10,15 +10,15 @@
 
 #include <math.h>
 
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
-#include "vp10/encoder/aq_variance.h"
+#include "av1/encoder/aq_variance.h"
 
-#include "vp10/common/seg_common.h"
-#include "vp10/encoder/ratectrl.h"
-#include "vp10/encoder/rd.h"
-#include "vp10/encoder/segmentation.h"
-#include "vpx_ports/system_state.h"
+#include "av1/common/seg_common.h"
+#include "av1/encoder/ratectrl.h"
+#include "av1/encoder/rd.h"
+#include "av1/encoder/segmentation.h"
+#include "aom_ports/system_state.h"
 
 #define ENERGY_MIN (-4)
 #define ENERGY_MAX (1)
diff --git a/vp10/encoder/aq_variance.h b/av1/encoder/aq_variance.h
similarity index 95%
rename from vp10/encoder/aq_variance.h
rename to av1/encoder/aq_variance.h
index cfb5b86..a30a449 100644
--- a/vp10/encoder/aq_variance.h
+++ b/av1/encoder/aq_variance.h
@@ -11,7 +11,7 @@
 #ifndef VP10_ENCODER_AQ_VARIANCE_H_
 #define VP10_ENCODER_AQ_VARIANCE_H_
 
-#include "vp10/encoder/encoder.h"
+#include "av1/encoder/encoder.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/arm/neon/dct_neon.c b/av1/encoder/arm/neon/dct_neon.c
similarity index 94%
rename from vp10/encoder/arm/neon/dct_neon.c
rename to av1/encoder/arm/neon/dct_neon.c
index 8d066b3..1d77bec 100644
--- a/vp10/encoder/arm/neon/dct_neon.c
+++ b/av1/encoder/arm/neon/dct_neon.c
@@ -14,8 +14,8 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vp10/common/blockd.h"
-#include "vpx_dsp/txfm_common.h"
+#include "av1/common/blockd.h"
+#include "aom_dsp/txfm_common.h"
 
 void vp10_fdct8x8_quant_neon(
     const int16_t *input, int stride, int16_t *coeff_ptr, intptr_t n_coeffs,
diff --git a/vp10/encoder/arm/neon/error_neon.c b/av1/encoder/arm/neon/error_neon.c
similarity index 100%
rename from vp10/encoder/arm/neon/error_neon.c
rename to av1/encoder/arm/neon/error_neon.c
diff --git a/vp10/encoder/arm/neon/quantize_neon.c b/av1/encoder/arm/neon/quantize_neon.c
similarity index 95%
rename from vp10/encoder/arm/neon/quantize_neon.c
rename to av1/encoder/arm/neon/quantize_neon.c
index 7b8e447..db85b4d 100644
--- a/vp10/encoder/arm/neon/quantize_neon.c
+++ b/av1/encoder/arm/neon/quantize_neon.c
@@ -12,14 +12,14 @@
 
 #include <math.h>
 
-#include "vpx_mem/vpx_mem.h"
+#include "aom_mem/vpx_mem.h"
 
-#include "vp10/common/quant_common.h"
-#include "vp10/common/seg_common.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/seg_common.h"
 
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/quantize.h"
-#include "vp10/encoder/rd.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/quantize.h"
+#include "av1/encoder/rd.h"
 
 void vp10_quantize_fp_neon(const int16_t *coeff_ptr, intptr_t count,
                            int skip_block, const int16_t *zbin_ptr,
diff --git a/vp10/encoder/bitstream.c b/av1/encoder/bitstream.c
similarity index 99%
rename from vp10/encoder/bitstream.c
rename to av1/encoder/bitstream.c
index 1a9e760..30699b4 100644
--- a/vp10/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -12,39 +12,39 @@
 #include <limits.h>
 #include <stdio.h>
 
-#include "vpx/vpx_encoder.h"
-#include "vpx_dsp/bitwriter_buffer.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem_ops.h"
-#include "vpx_ports/system_state.h"
-#include "vpx_util/debug_util.h"
+#include "aom/vpx_encoder.h"
+#include "aom_dsp/bitwriter_buffer.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem_ops.h"
+#include "aom_ports/system_state.h"
+#include "aom_util/debug_util.h"
 
 #if CONFIG_CLPF
-#include "vp10/common/clpf.h"
+#include "av1/common/clpf.h"
 #endif
 #if CONFIG_DERING
-#include "vp10/common/dering.h"
+#include "av1/common/dering.h"
 #endif  // CONFIG_DERING
-#include "vp10/common/entropy.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/entropymv.h"
-#include "vp10/common/mvref_common.h"
-#include "vp10/common/pred_common.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/seg_common.h"
-#include "vp10/common/tile_common.h"
+#include "av1/common/entropy.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/entropymv.h"
+#include "av1/common/mvref_common.h"
+#include "av1/common/pred_common.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/seg_common.h"
+#include "av1/common/tile_common.h"
 
 #if CONFIG_ANS
-#include "vp10/encoder/buf_ans.h"
+#include "av1/encoder/buf_ans.h"
 #endif  // CONFIG_ANS
-#include "vp10/encoder/bitstream.h"
-#include "vp10/encoder/cost.h"
-#include "vp10/encoder/encodemv.h"
-#include "vp10/encoder/mcomp.h"
-#include "vp10/encoder/segmentation.h"
-#include "vp10/encoder/subexp.h"
-#include "vp10/encoder/tokenize.h"
+#include "av1/encoder/bitstream.h"
+#include "av1/encoder/cost.h"
+#include "av1/encoder/encodemv.h"
+#include "av1/encoder/mcomp.h"
+#include "av1/encoder/segmentation.h"
+#include "av1/encoder/subexp.h"
+#include "av1/encoder/tokenize.h"
 
 static const struct vp10_token intra_mode_encodings[INTRA_MODES] = {
   { 0, 1 },  { 6, 3 },   { 28, 5 },  { 30, 5 }, { 58, 6 },
diff --git a/vp10/encoder/bitstream.h b/av1/encoder/bitstream.h
similarity index 96%
rename from vp10/encoder/bitstream.h
rename to av1/encoder/bitstream.h
index d6e8895..01d2c8d 100644
--- a/vp10/encoder/bitstream.h
+++ b/av1/encoder/bitstream.h
@@ -15,7 +15,7 @@
 extern "C" {
 #endif
 
-#include "vp10/encoder/encoder.h"
+#include "av1/encoder/encoder.h"
 
 void vp10_pack_bitstream(VP10_COMP *const cpi, uint8_t *dest, size_t *size);
 
diff --git a/vp10/encoder/bitwriter.h b/av1/encoder/bitwriter.h
similarity index 91%
rename from vp10/encoder/bitwriter.h
rename to av1/encoder/bitwriter.h
index f53a132..8cc674b 100644
--- a/vp10/encoder/bitwriter.h
+++ b/av1/encoder/bitwriter.h
@@ -15,17 +15,17 @@
 #define VPX10_ENCODER_BITWRITER_H_
 
 #include "./vpx_config.h"
-#include "vpx_dsp/prob.h"
+#include "aom_dsp/prob.h"
 
 #if CONFIG_ANS
 typedef struct BufAnsCoder BufAnsCoder;
-#include "vp10/encoder/buf_ans.h"
+#include "av1/encoder/buf_ans.h"
 #define vp10_writer BufAnsCoder
 #define vp10_write buf_uabs_write
 #define vp10_write_bit buf_uabs_write_bit
 #define vp10_write_literal buf_uabs_write_literal
 #else
-#include "vpx_dsp/bitwriter.h"
+#include "aom_dsp/bitwriter.h"
 #define vp10_writer vpx_writer
 #define vp10_write vpx_write
 #define vp10_write_bit vpx_write_bit
diff --git a/vp10/encoder/block.h b/av1/encoder/block.h
similarity index 97%
rename from vp10/encoder/block.h
rename to av1/encoder/block.h
index 227fe9e..65bb1e2 100644
--- a/vp10/encoder/block.h
+++ b/av1/encoder/block.h
@@ -11,10 +11,10 @@
 #ifndef VP10_ENCODER_BLOCK_H_
 #define VP10_ENCODER_BLOCK_H_
 
-#include "vp10/common/entropymv.h"
-#include "vp10/common/entropy.h"
+#include "av1/common/entropymv.h"
+#include "av1/common/entropy.h"
 #if CONFIG_REF_MV
-#include "vp10/common/mvref_common.h"
+#include "av1/common/mvref_common.h"
 #endif
 
 #ifdef __cplusplus
diff --git a/vp10/encoder/blockiness.c b/av1/encoder/blockiness.c
similarity index 94%
rename from vp10/encoder/blockiness.c
rename to av1/encoder/blockiness.c
index c57e4ef..97e201a 100644
--- a/vp10/encoder/blockiness.c
+++ b/av1/encoder/blockiness.c
@@ -11,13 +11,13 @@
 #include "./vp10_rtcd.h"
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vp10/common/common.h"
-#include "vp10/common/filter.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_convolve.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/system_state.h"
+#include "av1/common/common.h"
+#include "av1/common/filter.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/vpx_convolve.h"
+#include "aom_dsp/vpx_filter.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/system_state.h"
 
 static int horizontal_filter(const uint8_t *s) {
   return (s[1] - s[-2]) * 2 + (s[-1] - s[0]) * 6;
diff --git a/vp10/encoder/buf_ans.c b/av1/encoder/buf_ans.c
similarity index 89%
rename from vp10/encoder/buf_ans.c
rename to av1/encoder/buf_ans.c
index 31cd227..f87c1e1 100644
--- a/vp10/encoder/buf_ans.c
+++ b/av1/encoder/buf_ans.c
@@ -10,10 +10,10 @@
 
 #include <string.h>
 
-#include "vp10/common/common.h"
-#include "vp10/encoder/buf_ans.h"
-#include "vp10/encoder/encoder.h"
-#include "vpx_mem/vpx_mem.h"
+#include "av1/common/common.h"
+#include "av1/encoder/buf_ans.h"
+#include "av1/encoder/encoder.h"
+#include "aom_mem/vpx_mem.h"
 
 void vp10_buf_ans_alloc(struct BufAnsCoder *c, struct VP10Common *cm,
                         int size_hint) {
diff --git a/vp10/encoder/buf_ans.h b/av1/encoder/buf_ans.h
similarity index 97%
rename from vp10/encoder/buf_ans.h
rename to av1/encoder/buf_ans.h
index 0217777..8a88c32 100644
--- a/vp10/encoder/buf_ans.h
+++ b/av1/encoder/buf_ans.h
@@ -16,8 +16,8 @@
 
 #include <assert.h>
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
-#include "vp10/common/ans.h"
+#include "aom/vpx_integer.h"
+#include "av1/common/ans.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/context_tree.c b/av1/encoder/context_tree.c
similarity index 98%
rename from vp10/encoder/context_tree.c
rename to av1/encoder/context_tree.c
index 394aeab..9346e1c 100644
--- a/vp10/encoder/context_tree.c
+++ b/av1/encoder/context_tree.c
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/encoder/context_tree.h"
-#include "vp10/encoder/encoder.h"
+#include "av1/encoder/context_tree.h"
+#include "av1/encoder/encoder.h"
 
 static const BLOCK_SIZE square[MAX_SB_SIZE_LOG2 - 2] = {
   BLOCK_8X8,     BLOCK_16X16, BLOCK_32X32, BLOCK_64X64,
diff --git a/vp10/encoder/context_tree.h b/av1/encoder/context_tree.h
similarity index 97%
rename from vp10/encoder/context_tree.h
rename to av1/encoder/context_tree.h
index 8721008..18f00bb 100644
--- a/vp10/encoder/context_tree.h
+++ b/av1/encoder/context_tree.h
@@ -11,8 +11,8 @@
 #ifndef VP10_ENCODER_CONTEXT_TREE_H_
 #define VP10_ENCODER_CONTEXT_TREE_H_
 
-#include "vp10/common/blockd.h"
-#include "vp10/encoder/block.h"
+#include "av1/common/blockd.h"
+#include "av1/encoder/block.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/corner_detect.c b/av1/encoder/corner_detect.c
similarity index 100%
rename from vp10/encoder/corner_detect.c
rename to av1/encoder/corner_detect.c
diff --git a/vp10/encoder/corner_detect.h b/av1/encoder/corner_detect.h
similarity index 100%
rename from vp10/encoder/corner_detect.h
rename to av1/encoder/corner_detect.h
diff --git a/vp10/encoder/corner_match.c b/av1/encoder/corner_match.c
similarity index 100%
rename from vp10/encoder/corner_match.c
rename to av1/encoder/corner_match.c
diff --git a/vp10/encoder/corner_match.h b/av1/encoder/corner_match.h
similarity index 100%
rename from vp10/encoder/corner_match.h
rename to av1/encoder/corner_match.h
diff --git a/vp10/encoder/cost.c b/av1/encoder/cost.c
similarity index 98%
rename from vp10/encoder/cost.c
rename to av1/encoder/cost.c
index c09e95c..4542638 100644
--- a/vp10/encoder/cost.c
+++ b/av1/encoder/cost.c
@@ -9,11 +9,11 @@
  */
 #include <assert.h>
 
-#include "vp10/encoder/cost.h"
+#include "av1/encoder/cost.h"
 #if CONFIG_ANS
-#include "vp10/common/ans.h"
+#include "av1/common/ans.h"
 #endif  // CONFIG_ANS
-#include "vp10/common/entropy.h"
+#include "av1/common/entropy.h"
 
 /* round(-log2(i/256.) * (1 << VP10_PROB_COST_SHIFT))
    Begins with a bogus entry for simpler addressing. */
diff --git a/vp10/encoder/cost.h b/av1/encoder/cost.h
similarity index 95%
rename from vp10/encoder/cost.h
rename to av1/encoder/cost.h
index fb71320..5ae2a79 100644
--- a/vp10/encoder/cost.h
+++ b/av1/encoder/cost.h
@@ -11,10 +11,10 @@
 #ifndef VP10_ENCODER_COST_H_
 #define VP10_ENCODER_COST_H_
 
-#include "vpx_dsp/prob.h"
-#include "vpx/vpx_integer.h"
+#include "aom_dsp/prob.h"
+#include "aom/vpx_integer.h"
 #if CONFIG_ANS
-#include "vp10/common/ans.h"
+#include "av1/common/ans.h"
 #endif  // CONFIG_ANS
 
 #ifdef __cplusplus
diff --git a/vp10/encoder/dct.c b/av1/encoder/dct.c
similarity index 99%
rename from vp10/encoder/dct.c
rename to av1/encoder/dct.c
index fa9c7c0..8f7812e 100644
--- a/vp10/encoder/dct.c
+++ b/av1/encoder/dct.c
@@ -14,10 +14,10 @@
 #include "./vp10_rtcd.h"
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/idct.h"
-#include "vpx_dsp/fwd_txfm.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/blockd.h"
+#include "av1/common/idct.h"
+#include "aom_dsp/fwd_txfm.h"
+#include "aom_ports/mem.h"
 
 static INLINE void range_check(const tran_low_t *input, const int size,
                                const int bit) {
diff --git a/vp10/encoder/encodeframe.c b/av1/encoder/encodeframe.c
similarity index 99%
rename from vp10/encoder/encodeframe.c
rename to av1/encoder/encodeframe.c
index e458959..b2635b4 100644
--- a/vp10/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -16,41 +16,41 @@
 #include "./vpx_dsp_rtcd.h"
 #include "./vpx_config.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/vpx_timer.h"
-#include "vpx_ports/system_state.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/vpx_timer.h"
+#include "aom_ports/system_state.h"
 
-#include "vp10/common/common.h"
-#include "vp10/common/entropy.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/idct.h"
-#include "vp10/common/mvref_common.h"
-#include "vp10/common/pred_common.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/reconintra.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/seg_common.h"
-#include "vp10/common/tile_common.h"
+#include "av1/common/common.h"
+#include "av1/common/entropy.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/idct.h"
+#include "av1/common/mvref_common.h"
+#include "av1/common/pred_common.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/reconintra.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/seg_common.h"
+#include "av1/common/tile_common.h"
 
-#include "vp10/encoder/aq_complexity.h"
-#include "vp10/encoder/aq_cyclicrefresh.h"
-#include "vp10/encoder/aq_variance.h"
+#include "av1/encoder/aq_complexity.h"
+#include "av1/encoder/aq_cyclicrefresh.h"
+#include "av1/encoder/aq_variance.h"
 #if CONFIG_SUPERTX
-#include "vp10/encoder/cost.h"
+#include "av1/encoder/cost.h"
 #endif
 #if CONFIG_GLOBAL_MOTION
-#include "vp10/encoder/global_motion.h"
+#include "av1/encoder/global_motion.h"
 #endif
-#include "vp10/encoder/encodeframe.h"
-#include "vp10/encoder/encodemb.h"
-#include "vp10/encoder/encodemv.h"
-#include "vp10/encoder/ethread.h"
-#include "vp10/encoder/extend.h"
-#include "vp10/encoder/rd.h"
-#include "vp10/encoder/rdopt.h"
-#include "vp10/encoder/segmentation.h"
-#include "vp10/encoder/tokenize.h"
+#include "av1/encoder/encodeframe.h"
+#include "av1/encoder/encodemb.h"
+#include "av1/encoder/encodemv.h"
+#include "av1/encoder/ethread.h"
+#include "av1/encoder/extend.h"
+#include "av1/encoder/rd.h"
+#include "av1/encoder/rdopt.h"
+#include "av1/encoder/segmentation.h"
+#include "av1/encoder/tokenize.h"
 
 #if CONFIG_VP9_HIGHBITDEPTH
 #define IF_HBD(...) __VA_ARGS__
diff --git a/vp10/encoder/encodeframe.h b/av1/encoder/encodeframe.h
similarity index 97%
rename from vp10/encoder/encodeframe.h
rename to av1/encoder/encodeframe.h
index f24a572..338cb86 100644
--- a/vp10/encoder/encodeframe.h
+++ b/av1/encoder/encodeframe.h
@@ -11,7 +11,7 @@
 #ifndef VP10_ENCODER_ENCODEFRAME_H_
 #define VP10_ENCODER_ENCODEFRAME_H_
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/encodemb.c b/av1/encoder/encodemb.c
similarity index 98%
rename from vp10/encoder/encodemb.c
rename to av1/encoder/encodemb.c
index a6a4f5d..e72db2d 100644
--- a/vp10/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -12,20 +12,20 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx_dsp/quantize.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/quantize.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
-#include "vp10/common/idct.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/reconintra.h"
-#include "vp10/common/scan.h"
+#include "av1/common/idct.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/reconintra.h"
+#include "av1/common/scan.h"
 
-#include "vp10/encoder/encodemb.h"
-#include "vp10/encoder/hybrid_fwd_txfm.h"
-#include "vp10/encoder/quantize.h"
-#include "vp10/encoder/rd.h"
-#include "vp10/encoder/tokenize.h"
+#include "av1/encoder/encodemb.h"
+#include "av1/encoder/hybrid_fwd_txfm.h"
+#include "av1/encoder/quantize.h"
+#include "av1/encoder/rd.h"
+#include "av1/encoder/tokenize.h"
 
 void vp10_subtract_plane(MACROBLOCK *x, BLOCK_SIZE bsize, int plane) {
   struct macroblock_plane *const p = &x->plane[plane];
diff --git a/vp10/encoder/encodemb.c b/av1/encoder/encodemb.c.orig
similarity index 95%
copy from vp10/encoder/encodemb.c
copy to av1/encoder/encodemb.c.orig
index a6a4f5d..4c94032 100644
--- a/vp10/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c.orig
@@ -12,20 +12,20 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx_dsp/quantize.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/quantize.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
-#include "vp10/common/idct.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/reconintra.h"
-#include "vp10/common/scan.h"
+#include "av1/common/idct.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/reconintra.h"
+#include "av1/common/scan.h"
 
-#include "vp10/encoder/encodemb.h"
-#include "vp10/encoder/hybrid_fwd_txfm.h"
-#include "vp10/encoder/quantize.h"
-#include "vp10/encoder/rd.h"
-#include "vp10/encoder/tokenize.h"
+#include "av1/encoder/encodemb.h"
+#include "av1/encoder/hybrid_fwd_txfm.h"
+#include "av1/encoder/quantize.h"
+#include "av1/encoder/rd.h"
+#include "av1/encoder/tokenize.h"
 
 void vp10_subtract_plane(MACROBLOCK *x, BLOCK_SIZE bsize, int plane) {
   struct macroblock_plane *const p = &x->plane[plane];
@@ -88,12 +88,20 @@
       get_scan(tx_size, tx_type, is_inter_block(&xd->mi[0]->mbmi));
   const int16_t *const scan = so->scan;
   const int16_t *const nb = so->neighbors;
+<<<<<<< HEAD
+  const int shift = get_tx_scale(xd, tx_type, tx_size);
+=======
 #if CONFIG_AOM_QM
   int seg_id = xd->mi[0]->mbmi.segment_id;
   int is_intra = !is_inter_block(&xd->mi[0]->mbmi);
   const qm_val_t *iqmatrix = pd->seg_iqmatrix[seg_id][is_intra][tx_size];
 #endif
-  const int shift = get_tx_scale(xd, tx_type, tx_size);
+#if CONFIG_AOM_QM
+  int seg_id = xd->mi[0]->mbmi.segment_id;
+  int is_intra = !is_inter_block(&xd->mi[0]->mbmi);
+  const qm_val_t *iqmatrix = pd->seg_iqmatrix[seg_id][is_intra][tx_size];
+#endif
+>>>>>>> 10d6f02... Port commits related to clpf and qm experiments
 #if CONFIG_NEW_QUANT
   int dq = get_dq_profile_from_ctx(ctx);
   const dequant_val_type_nuq *dequant_val = pd->dequant_val_nuq[dq];
@@ -208,13 +216,12 @@
                     (vp10_dequant_abscoeff_nuq(abs(x) - 1, dequant_ptr[rc != 0],
                                                dequant_val[band_translate[i]]) <
                      (abs(coeff[rc]) << shift)));
-#else  // CONFIG_NEW_QUANT
+#else   // CONFIG_NEW_QUANT
 #if CONFIG_AOM_QM
         if ((abs(x) * dequant_ptr[rc != 0] * iwt >
              ((abs(coeff[rc]) << shift) << AOM_QM_BITS)) &&
             (abs(x) * dequant_ptr[rc != 0] * iwt <
-             (((abs(coeff[rc]) << shift) + dequant_ptr[rc != 0])
-              << AOM_QM_BITS)))
+             (((abs(coeff[rc]) << shift) + dequant_ptr[rc != 0]) << AOM_QM_BITS)))
 #else
         if ((abs(x) * dequant_ptr[rc != 0] > (abs(coeff[rc]) << shift)) &&
             (abs(x) * dequant_ptr[rc != 0] <
@@ -479,14 +486,17 @@
     if (xform_quant_idx != VP10_XFORM_QUANT_SKIP_QUANT) {
       if (LIKELY(!x->skip_block)) {
         quant_func_list[xform_quant_idx][QUANT_FUNC_HIGHBD](
-            coeff, tx2d_size, p, qcoeff, pd, dqcoeff, eob, scan_order, &qparam
-#if CONFIG_AOM_QM
-            ,
-            qmatrix, iqmatrix
-#endif  // CONFIG_AOM_QM
-            );
+<<<<<<< HEAD
+            coeff, tx2d_size, p, qcoeff, pd, dqcoeff, eob, scan_order, &qparam);
       } else {
         vp10_quantize_skip(tx2d_size, qcoeff, dqcoeff, eob);
+=======
+            coeff, tx2d_size, p, qcoeff, pd, dqcoeff, eob, scan_order, &qparam
+#if CONFIG_AOM_QM
+            , qmatrix, iqmatrix
+#endif  // CONFIG_AOM_QM
+            );
+>>>>>>> 10d6f02... Port commits related to clpf and qm experiments
       }
     }
     return;
@@ -497,14 +507,17 @@
   if (xform_quant_idx != VP10_XFORM_QUANT_SKIP_QUANT) {
     if (LIKELY(!x->skip_block)) {
       quant_func_list[xform_quant_idx][QUANT_FUNC_LOWBD](
-          coeff, tx2d_size, p, qcoeff, pd, dqcoeff, eob, scan_order, &qparam
-#if CONFIG_AOM_QM
-          ,
-          qmatrix, iqmatrix
-#endif  // CONFIG_AOM_QM
-          );
+<<<<<<< HEAD
+          coeff, tx2d_size, p, qcoeff, pd, dqcoeff, eob, scan_order, &qparam);
     } else {
       vp10_quantize_skip(tx2d_size, qcoeff, dqcoeff, eob);
+=======
+          coeff, tx2d_size, p, qcoeff, pd, dqcoeff, eob, scan_order, &qparam
+#if CONFIG_AOM_QM
+            , qmatrix, iqmatrix
+#endif  // CONFIG_AOM_QM
+          );
+>>>>>>> 10d6f02... Port commits related to clpf and qm experiments
     }
   }
 }
@@ -863,7 +876,10 @@
   const struct macroblockd_plane *const pd = &xd->plane[plane];
   const int tx_row = blk_row >> (1 - pd->subsampling_y);
   const int tx_col = blk_col >> (1 - pd->subsampling_x);
-  TX_SIZE plane_tx_size;
+  const TX_SIZE plane_tx_size =
+      plane ? get_uv_tx_size_impl(mbmi->inter_tx_size[tx_row][tx_col], bsize, 0,
+                                  0)
+            : mbmi->inter_tx_size[tx_row][tx_col];
 
   int max_blocks_high = num_4x4_blocks_high_lookup[plane_bsize];
   int max_blocks_wide = num_4x4_blocks_wide_lookup[plane_bsize];
@@ -875,10 +891,6 @@
 
   if (blk_row >= max_blocks_high || blk_col >= max_blocks_wide) return;
 
-  plane_tx_size = plane ? get_uv_tx_size_impl(
-                              mbmi->inter_tx_size[tx_row][tx_col], bsize, 0, 0)
-                        : mbmi->inter_tx_size[tx_row][tx_col];
-
   if (tx_size == plane_tx_size) {
     encode_block(plane, block, blk_row, blk_col, plane_bsize, tx_size, arg);
   } else {
@@ -980,9 +992,6 @@
     int idx, idy;
     int block = 0;
     int step = num_4x4_blocks_txsize_lookup[max_tx_size];
-#if CONFIG_EXT_TX && CONFIG_RECT_TX
-    const TX_SIZE tx_size = plane ? get_uv_tx_size(mbmi, pd) : mbmi->tx_size;
-#endif
     vp10_get_entropy_contexts(bsize, TX_4X4, pd, ctx.ta[plane], ctx.tl[plane]);
 #else
     const struct macroblockd_plane *const pd = &xd->plane[plane];
@@ -994,22 +1003,13 @@
     arg.tl = ctx.tl[plane];
 
 #if CONFIG_VAR_TX
-#if CONFIG_EXT_TX && CONFIG_RECT_TX
-    if (tx_size >= TX_SIZES) {
-      vp10_foreach_transformed_block_in_plane(xd, bsize, plane, encode_block,
-                                              &arg);
-    } else {
-#endif
-      for (idy = 0; idy < mi_height; idy += bh) {
-        for (idx = 0; idx < mi_width; idx += bh) {
-          encode_block_inter(plane, block, idy, idx, plane_bsize, max_tx_size,
-                             &arg);
-          block += step;
-        }
+    for (idy = 0; idy < mi_height; idy += bh) {
+      for (idx = 0; idx < mi_width; idx += bh) {
+        encode_block_inter(plane, block, idy, idx, plane_bsize, max_tx_size,
+                           &arg);
+        block += step;
       }
-#if CONFIG_EXT_TX && CONFIG_RECT_TX
     }
-#endif
 #else
     vp10_foreach_transformed_block_in_plane(xd, bsize, plane, encode_block,
                                             &arg);
diff --git a/vp10/encoder/encodemb.h b/av1/encoder/encodemb.h
similarity index 98%
rename from vp10/encoder/encodemb.h
rename to av1/encoder/encodemb.h
index 974af80..4b88831 100644
--- a/vp10/encoder/encodemb.h
+++ b/av1/encoder/encodemb.h
@@ -12,7 +12,7 @@
 #define VP10_ENCODER_ENCODEMB_H_
 
 #include "./vpx_config.h"
-#include "vp10/encoder/block.h"
+#include "av1/encoder/block.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/encodemv.c b/av1/encoder/encodemv.c
similarity index 98%
rename from vp10/encoder/encodemv.c
rename to av1/encoder/encodemv.c
index 340cb46..78da2b7 100644
--- a/vp10/encoder/encodemv.c
+++ b/av1/encoder/encodemv.c
@@ -10,14 +10,14 @@
 
 #include <math.h>
 
-#include "vp10/common/common.h"
-#include "vp10/common/entropymode.h"
+#include "av1/common/common.h"
+#include "av1/common/entropymode.h"
 
-#include "vp10/encoder/cost.h"
-#include "vp10/encoder/encodemv.h"
-#include "vp10/encoder/subexp.h"
+#include "av1/encoder/cost.h"
+#include "av1/encoder/encodemv.h"
+#include "av1/encoder/subexp.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 static struct vp10_token mv_joint_encodings[MV_JOINTS];
 static struct vp10_token mv_class_encodings[MV_CLASSES];
diff --git a/vp10/encoder/encodemv.h b/av1/encoder/encodemv.h
similarity index 96%
rename from vp10/encoder/encodemv.h
rename to av1/encoder/encodemv.h
index 0e2e59b..6cb57c2 100644
--- a/vp10/encoder/encodemv.h
+++ b/av1/encoder/encodemv.h
@@ -11,7 +11,7 @@
 #ifndef VP10_ENCODER_ENCODEMV_H_
 #define VP10_ENCODER_ENCODEMV_H_
 
-#include "vp10/encoder/encoder.h"
+#include "av1/encoder/encoder.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/encoder.c b/av1/encoder/encoder.c
similarity index 99%
rename from vp10/encoder/encoder.c
rename to av1/encoder/encoder.c
index 178e6c8..5196d9c 100644
--- a/vp10/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -14,58 +14,58 @@
 
 #include "./vpx_config.h"
 
-#include "vp10/common/alloccommon.h"
+#include "av1/common/alloccommon.h"
 #if CONFIG_CLPF
-#include "vp10/common/clpf.h"
+#include "av1/common/clpf.h"
 #endif
 #if CONFIG_DERING
-#include "vp10/common/dering.h"
+#include "av1/common/dering.h"
 #endif  // CONFIG_DERING
-#include "vp10/common/filter.h"
-#include "vp10/common/idct.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/reconintra.h"
-#include "vp10/common/tile_common.h"
+#include "av1/common/filter.h"
+#include "av1/common/idct.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/reconintra.h"
+#include "av1/common/tile_common.h"
 
-#include "vp10/encoder/aq_complexity.h"
-#include "vp10/encoder/aq_cyclicrefresh.h"
-#include "vp10/encoder/aq_variance.h"
-#include "vp10/encoder/bitstream.h"
+#include "av1/encoder/aq_complexity.h"
+#include "av1/encoder/aq_cyclicrefresh.h"
+#include "av1/encoder/aq_variance.h"
+#include "av1/encoder/bitstream.h"
 #if CONFIG_ANS
-#include "vp10/encoder/buf_ans.h"
+#include "av1/encoder/buf_ans.h"
 #endif
-#include "vp10/encoder/context_tree.h"
-#include "vp10/encoder/encodeframe.h"
-#include "vp10/encoder/encodemv.h"
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/ethread.h"
-#include "vp10/encoder/firstpass.h"
-#include "vp10/encoder/mbgraph.h"
-#include "vp10/encoder/picklpf.h"
+#include "av1/encoder/context_tree.h"
+#include "av1/encoder/encodeframe.h"
+#include "av1/encoder/encodemv.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/ethread.h"
+#include "av1/encoder/firstpass.h"
+#include "av1/encoder/mbgraph.h"
+#include "av1/encoder/picklpf.h"
 #if CONFIG_LOOP_RESTORATION
-#include "vp10/encoder/pickrst.h"
+#include "av1/encoder/pickrst.h"
 #endif  // CONFIG_LOOP_RESTORATION
-#include "vp10/encoder/ratectrl.h"
-#include "vp10/encoder/rd.h"
-#include "vp10/encoder/resize.h"
-#include "vp10/encoder/segmentation.h"
-#include "vp10/encoder/speed_features.h"
-#include "vp10/encoder/temporal_filter.h"
+#include "av1/encoder/ratectrl.h"
+#include "av1/encoder/rd.h"
+#include "av1/encoder/resize.h"
+#include "av1/encoder/segmentation.h"
+#include "av1/encoder/speed_features.h"
+#include "av1/encoder/temporal_filter.h"
 
 #include "./vp10_rtcd.h"
 #include "./vpx_dsp_rtcd.h"
 #include "./vpx_scale_rtcd.h"
-#include "vpx_dsp/psnr.h"
+#include "aom_dsp/psnr.h"
 #if CONFIG_INTERNAL_STATS
-#include "vpx_dsp/ssim.h"
+#include "aom_dsp/ssim.h"
 #endif
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/system_state.h"
-#include "vpx_ports/vpx_timer.h"
-#include "vpx_scale/vpx_scale.h"
-#include "vpx_util/debug_util.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_filter.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/system_state.h"
+#include "aom_ports/vpx_timer.h"
+#include "aom_scale/vpx_scale.h"
+#include "aom_util/debug_util.h"
 
 #define AM_SEGMENT_ID_INACTIVE 7
 #define AM_SEGMENT_ID_ACTIVE 0
diff --git a/vp10/encoder/encoder.h b/av1/encoder/encoder.h
similarity index 96%
rename from vp10/encoder/encoder.h
rename to av1/encoder/encoder.h
index b1b5855..719615b 100644
--- a/vp10/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -14,35 +14,35 @@
 #include <stdio.h>
 
 #include "./vpx_config.h"
-#include "vpx/vp8cx.h"
+#include "aom/vp8cx.h"
 
-#include "vp10/common/alloccommon.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/thread_common.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/encoder/aq_cyclicrefresh.h"
+#include "av1/common/alloccommon.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/thread_common.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/encoder/aq_cyclicrefresh.h"
 #if CONFIG_ANS
-#include "vp10/encoder/buf_ans.h"
+#include "av1/encoder/buf_ans.h"
 #endif
-#include "vp10/encoder/context_tree.h"
-#include "vp10/encoder/encodemb.h"
-#include "vp10/encoder/firstpass.h"
-#include "vp10/encoder/lookahead.h"
-#include "vp10/encoder/mbgraph.h"
-#include "vp10/encoder/mcomp.h"
-#include "vp10/encoder/quantize.h"
-#include "vp10/encoder/ratectrl.h"
-#include "vp10/encoder/rd.h"
-#include "vp10/encoder/speed_features.h"
-#include "vp10/encoder/tokenize.h"
-#include "vp10/encoder/variance_tree.h"
+#include "av1/encoder/context_tree.h"
+#include "av1/encoder/encodemb.h"
+#include "av1/encoder/firstpass.h"
+#include "av1/encoder/lookahead.h"
+#include "av1/encoder/mbgraph.h"
+#include "av1/encoder/mcomp.h"
+#include "av1/encoder/quantize.h"
+#include "av1/encoder/ratectrl.h"
+#include "av1/encoder/rd.h"
+#include "av1/encoder/speed_features.h"
+#include "av1/encoder/tokenize.h"
+#include "av1/encoder/variance_tree.h"
 
 #if CONFIG_INTERNAL_STATS
-#include "vpx_dsp/ssim.h"
+#include "aom_dsp/ssim.h"
 #endif
-#include "vpx_dsp/variance.h"
-#include "vpx/internal/vpx_codec_internal.h"
-#include "vpx_util/vpx_thread.h"
+#include "aom_dsp/variance.h"
+#include "aom/internal/vpx_codec_internal.h"
+#include "aom_util/vpx_thread.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/ethread.c b/av1/encoder/ethread.c
similarity index 97%
rename from vp10/encoder/ethread.c
rename to av1/encoder/ethread.c
index 458dba4..63d716c 100644
--- a/vp10/encoder/ethread.c
+++ b/av1/encoder/ethread.c
@@ -8,10 +8,10 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/encoder/encodeframe.h"
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/ethread.h"
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "av1/encoder/encodeframe.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/ethread.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 static void accumulate_rd_opt(ThreadData *td, ThreadData *td_t) {
   int i, j, k, l, m, n;
diff --git a/vp10/encoder/ethread.h b/av1/encoder/ethread.h
similarity index 100%
rename from vp10/encoder/ethread.h
rename to av1/encoder/ethread.h
diff --git a/vp10/encoder/extend.c b/av1/encoder/extend.c
similarity index 97%
rename from vp10/encoder/extend.c
rename to av1/encoder/extend.c
index e3d4be3..1b0c442 100644
--- a/vp10/encoder/extend.c
+++ b/av1/encoder/extend.c
@@ -8,12 +8,12 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
-#include "vp10/common/common.h"
-#include "vp10/encoder/extend.h"
+#include "av1/common/common.h"
+#include "av1/encoder/extend.h"
 
 static void copy_and_extend_plane(const uint8_t *src, int src_pitch,
                                   uint8_t *dst, int dst_pitch, int w, int h,
diff --git a/vp10/encoder/extend.h b/av1/encoder/extend.h
similarity index 93%
rename from vp10/encoder/extend.h
rename to av1/encoder/extend.h
index f7967fd..1ad763e 100644
--- a/vp10/encoder/extend.h
+++ b/av1/encoder/extend.h
@@ -11,8 +11,8 @@
 #ifndef VP10_ENCODER_EXTEND_H_
 #define VP10_ENCODER_EXTEND_H_
 
-#include "vpx_scale/yv12config.h"
-#include "vpx/vpx_integer.h"
+#include "aom_scale/yv12config.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/firstpass.c b/av1/encoder/firstpass.c
similarity index 98%
rename from vp10/encoder/firstpass.c
rename to av1/encoder/firstpass.c
index aac2b74..b23b839 100644
--- a/vp10/encoder/firstpass.c
+++ b/av1/encoder/firstpass.c
@@ -15,28 +15,28 @@
 #include "./vpx_dsp_rtcd.h"
 #include "./vpx_scale_rtcd.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/system_state.h"
-#include "vpx_scale/vpx_scale.h"
-#include "vpx_scale/yv12config.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/system_state.h"
+#include "aom_scale/vpx_scale.h"
+#include "aom_scale/yv12config.h"
 
-#include "vp10/common/entropymv.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/reconinter.h"  // vp10_setup_dst_planes()
-#include "vp10/encoder/aq_variance.h"
-#include "vp10/encoder/block.h"
-#include "vp10/encoder/encodeframe.h"
-#include "vp10/encoder/encodemb.h"
-#include "vp10/encoder/encodemv.h"
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/extend.h"
-#include "vp10/encoder/firstpass.h"
-#include "vp10/encoder/mcomp.h"
-#include "vp10/encoder/quantize.h"
-#include "vp10/encoder/rd.h"
-#include "vpx_dsp/variance.h"
+#include "av1/common/entropymv.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/reconinter.h"  // vp10_setup_dst_planes()
+#include "av1/encoder/aq_variance.h"
+#include "av1/encoder/block.h"
+#include "av1/encoder/encodeframe.h"
+#include "av1/encoder/encodemb.h"
+#include "av1/encoder/encodemv.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/extend.h"
+#include "av1/encoder/firstpass.h"
+#include "av1/encoder/mcomp.h"
+#include "av1/encoder/quantize.h"
+#include "av1/encoder/rd.h"
+#include "aom_dsp/variance.h"
 
 #define OUTPUT_FPF 0
 #define ARF_STATS_OUTPUT 0
diff --git a/vp10/encoder/firstpass.h b/av1/encoder/firstpass.h
similarity index 98%
rename from vp10/encoder/firstpass.h
rename to av1/encoder/firstpass.h
index aacd095..5623540 100644
--- a/vp10/encoder/firstpass.h
+++ b/av1/encoder/firstpass.h
@@ -11,8 +11,8 @@
 #ifndef VP10_ENCODER_FIRSTPASS_H_
 #define VP10_ENCODER_FIRSTPASS_H_
 
-#include "vp10/encoder/lookahead.h"
-#include "vp10/encoder/ratectrl.h"
+#include "av1/encoder/lookahead.h"
+#include "av1/encoder/ratectrl.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/global_motion.c b/av1/encoder/global_motion.c
similarity index 92%
rename from vp10/encoder/global_motion.c
rename to av1/encoder/global_motion.c
index 6001624..cda6aaf 100644
--- a/vp10/encoder/global_motion.c
+++ b/av1/encoder/global_motion.c
@@ -14,13 +14,13 @@
 #include <math.h>
 #include <assert.h>
 
-#include "vp10/common/warped_motion.h"
+#include "av1/common/warped_motion.h"
 
-#include "vp10/encoder/segmentation.h"
-#include "vp10/encoder/global_motion.h"
-#include "vp10/encoder/corner_detect.h"
-#include "vp10/encoder/corner_match.h"
-#include "vp10/encoder/ransac.h"
+#include "av1/encoder/segmentation.h"
+#include "av1/encoder/global_motion.h"
+#include "av1/encoder/corner_detect.h"
+#include "av1/encoder/corner_match.h"
+#include "av1/encoder/ransac.h"
 
 #define MAX_CORNERS 4096
 #define MIN_INLIER_PROB 0.1
diff --git a/vp10/encoder/global_motion.h b/av1/encoder/global_motion.h
similarity index 96%
rename from vp10/encoder/global_motion.h
rename to av1/encoder/global_motion.h
index ac79930..ed088d6 100644
--- a/vp10/encoder/global_motion.h
+++ b/av1/encoder/global_motion.h
@@ -11,7 +11,7 @@
 #ifndef VP10_ENCODER_GLOBAL_MOTION_H_
 #define VP10_ENCODER_GLOBAL_MOTION_H_
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/hybrid_fwd_txfm.c b/av1/encoder/hybrid_fwd_txfm.c
similarity index 99%
rename from vp10/encoder/hybrid_fwd_txfm.c
rename to av1/encoder/hybrid_fwd_txfm.c
index 3c70a5a..ccfab0a 100644
--- a/vp10/encoder/hybrid_fwd_txfm.c
+++ b/av1/encoder/hybrid_fwd_txfm.c
@@ -12,8 +12,8 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vp10/common/idct.h"
-#include "vp10/encoder/hybrid_fwd_txfm.h"
+#include "av1/common/idct.h"
+#include "av1/encoder/hybrid_fwd_txfm.h"
 
 static INLINE void fdct32x32(int rd_transform, const int16_t *src,
                              tran_low_t *dst, int src_stride) {
diff --git a/vp10/encoder/hybrid_fwd_txfm.h b/av1/encoder/hybrid_fwd_txfm.h
similarity index 100%
rename from vp10/encoder/hybrid_fwd_txfm.h
rename to av1/encoder/hybrid_fwd_txfm.h
diff --git a/vp10/encoder/lookahead.c b/av1/encoder/lookahead.c
similarity index 97%
rename from vp10/encoder/lookahead.c
rename to av1/encoder/lookahead.c
index 6582277..3c4ff7d 100644
--- a/vp10/encoder/lookahead.c
+++ b/av1/encoder/lookahead.c
@@ -12,11 +12,11 @@
 
 #include "./vpx_config.h"
 
-#include "vp10/common/common.h"
+#include "av1/common/common.h"
 
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/extend.h"
-#include "vp10/encoder/lookahead.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/extend.h"
+#include "av1/encoder/lookahead.h"
 
 /* Return the buffer at the given absolute index and increment the index */
 static struct lookahead_entry *pop(struct lookahead_ctx *ctx, int *idx) {
diff --git a/vp10/encoder/lookahead.h b/av1/encoder/lookahead.h
similarity index 98%
rename from vp10/encoder/lookahead.h
rename to av1/encoder/lookahead.h
index c7a0844..4b26068 100644
--- a/vp10/encoder/lookahead.h
+++ b/av1/encoder/lookahead.h
@@ -11,8 +11,8 @@
 #ifndef VP10_ENCODER_LOOKAHEAD_H_
 #define VP10_ENCODER_LOOKAHEAD_H_
 
-#include "vpx_scale/yv12config.h"
-#include "vpx/vpx_integer.h"
+#include "aom_scale/yv12config.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/mbgraph.c b/av1/encoder/mbgraph.c
similarity index 97%
rename from vp10/encoder/mbgraph.c
rename to av1/encoder/mbgraph.c
index a4a2468..43f0f87 100644
--- a/vp10/encoder/mbgraph.c
+++ b/av1/encoder/mbgraph.c
@@ -13,14 +13,14 @@
 #include "./vp10_rtcd.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/system_state.h"
-#include "vp10/encoder/segmentation.h"
-#include "vp10/encoder/mcomp.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/reconintra.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/system_state.h"
+#include "av1/encoder/segmentation.h"
+#include "av1/encoder/mcomp.h"
+#include "av1/common/blockd.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/reconintra.h"
 
 static unsigned int do_16x16_motion_iteration(VP10_COMP *cpi, const MV *ref_mv,
                                               int mb_row, int mb_col) {
diff --git a/vp10/encoder/mbgraph.h b/av1/encoder/mbgraph.h
similarity index 100%
rename from vp10/encoder/mbgraph.h
rename to av1/encoder/mbgraph.h
diff --git a/vp10/encoder/mcomp.c b/av1/encoder/mcomp.c
similarity index 99%
rename from vp10/encoder/mcomp.c
rename to av1/encoder/mcomp.c
index 587fec7..9ee06e9 100644
--- a/vp10/encoder/mcomp.c
+++ b/av1/encoder/mcomp.c
@@ -15,16 +15,16 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
-#include "vp10/common/common.h"
-#include "vp10/common/reconinter.h"
+#include "av1/common/common.h"
+#include "av1/common/reconinter.h"
 
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/mcomp.h"
-#include "vp10/encoder/rdopt.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/mcomp.h"
+#include "av1/encoder/rdopt.h"
 
 // #define NEW_DIAMOND_SEARCH
 
diff --git a/vp10/encoder/mcomp.h b/av1/encoder/mcomp.h
similarity index 98%
rename from vp10/encoder/mcomp.h
rename to av1/encoder/mcomp.h
index 0af81f5..d26b9bd 100644
--- a/vp10/encoder/mcomp.h
+++ b/av1/encoder/mcomp.h
@@ -11,8 +11,8 @@
 #ifndef VP10_ENCODER_MCOMP_H_
 #define VP10_ENCODER_MCOMP_H_
 
-#include "vp10/encoder/block.h"
-#include "vpx_dsp/variance.h"
+#include "av1/encoder/block.h"
+#include "aom_dsp/variance.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/mips/msa/error_msa.c b/av1/encoder/mips/msa/error_msa.c
similarity index 99%
rename from vp10/encoder/mips/msa/error_msa.c
rename to av1/encoder/mips/msa/error_msa.c
index 9a098ea..71c5ad3 100644
--- a/vp10/encoder/mips/msa/error_msa.c
+++ b/av1/encoder/mips/msa/error_msa.c
@@ -9,7 +9,7 @@
  */
 
 #include "./vp10_rtcd.h"
-#include "vpx_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/macros_msa.h"
 
 #define BLOCK_ERROR_BLOCKSIZE_MSA(BSize)                                     \
   static int64_t block_error_##BSize##size_msa(                              \
diff --git a/vp10/encoder/mips/msa/fdct16x16_msa.c b/av1/encoder/mips/msa/fdct16x16_msa.c
similarity index 99%
rename from vp10/encoder/mips/msa/fdct16x16_msa.c
rename to av1/encoder/mips/msa/fdct16x16_msa.c
index c39a292..cda2138 100644
--- a/vp10/encoder/mips/msa/fdct16x16_msa.c
+++ b/av1/encoder/mips/msa/fdct16x16_msa.c
@@ -10,9 +10,9 @@
 
 #include <assert.h>
 
-#include "vp10/common/enums.h"
-#include "vp10/encoder/mips/msa/fdct_msa.h"
-#include "vpx_dsp/mips/fwd_txfm_msa.h"
+#include "av1/common/enums.h"
+#include "av1/encoder/mips/msa/fdct_msa.h"
+#include "aom_dsp/mips/fwd_txfm_msa.h"
 
 static void fadst16_cols_step1_msa(const int16_t *input, int32_t stride,
                                    const int32_t *const0, int16_t *int_buf) {
diff --git a/vp10/encoder/mips/msa/fdct4x4_msa.c b/av1/encoder/mips/msa/fdct4x4_msa.c
similarity index 97%
rename from vp10/encoder/mips/msa/fdct4x4_msa.c
rename to av1/encoder/mips/msa/fdct4x4_msa.c
index def9b45..a3731c3 100644
--- a/vp10/encoder/mips/msa/fdct4x4_msa.c
+++ b/av1/encoder/mips/msa/fdct4x4_msa.c
@@ -10,8 +10,8 @@
 
 #include <assert.h>
 
-#include "vp10/common/enums.h"
-#include "vp10/encoder/mips/msa/fdct_msa.h"
+#include "av1/common/enums.h"
+#include "av1/encoder/mips/msa/fdct_msa.h"
 
 void vp10_fwht4x4_msa(const int16_t *input, int16_t *output,
                       int32_t src_stride) {
diff --git a/vp10/encoder/mips/msa/fdct8x8_msa.c b/av1/encoder/mips/msa/fdct8x8_msa.c
similarity index 96%
rename from vp10/encoder/mips/msa/fdct8x8_msa.c
rename to av1/encoder/mips/msa/fdct8x8_msa.c
index 7843a62..3b6532a 100644
--- a/vp10/encoder/mips/msa/fdct8x8_msa.c
+++ b/av1/encoder/mips/msa/fdct8x8_msa.c
@@ -10,8 +10,8 @@
 
 #include <assert.h>
 
-#include "vp10/common/enums.h"
-#include "vp10/encoder/mips/msa/fdct_msa.h"
+#include "av1/common/enums.h"
+#include "av1/encoder/mips/msa/fdct_msa.h"
 
 void vp10_fht8x8_msa(const int16_t *input, int16_t *output, int32_t stride,
                      int32_t tx_type) {
diff --git a/vp10/encoder/mips/msa/fdct_msa.h b/av1/encoder/mips/msa/fdct_msa.h
similarity index 98%
rename from vp10/encoder/mips/msa/fdct_msa.h
rename to av1/encoder/mips/msa/fdct_msa.h
index 9a14625..07471d0 100644
--- a/vp10/encoder/mips/msa/fdct_msa.h
+++ b/av1/encoder/mips/msa/fdct_msa.h
@@ -11,9 +11,9 @@
 #ifndef VP10_ENCODER_MIPS_MSA_VP10_FDCT_MSA_H_
 #define VP10_ENCODER_MIPS_MSA_VP10_FDCT_MSA_H_
 
-#include "vpx_dsp/mips/fwd_txfm_msa.h"
-#include "vpx_dsp/mips/txfm_macros_msa.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/mips/fwd_txfm_msa.h"
+#include "aom_dsp/mips/txfm_macros_msa.h"
+#include "aom_ports/mem.h"
 
 #define VPX_ADST8(in0, in1, in2, in3, in4, in5, in6, in7, out0, out1, out2,  \
                   out3, out4, out5, out6, out7)                              \
diff --git a/vp10/encoder/mips/msa/temporal_filter_msa.c b/av1/encoder/mips/msa/temporal_filter_msa.c
similarity index 99%
rename from vp10/encoder/mips/msa/temporal_filter_msa.c
rename to av1/encoder/mips/msa/temporal_filter_msa.c
index 5feeab3..4d60d37 100644
--- a/vp10/encoder/mips/msa/temporal_filter_msa.c
+++ b/av1/encoder/mips/msa/temporal_filter_msa.c
@@ -9,7 +9,7 @@
  */
 
 #include "./vp10_rtcd.h"
-#include "vpx_dsp/mips/macros_msa.h"
+#include "aom_dsp/mips/macros_msa.h"
 
 static void temporal_filter_apply_8size_msa(uint8_t *frm1_ptr, uint32_t stride,
                                             uint8_t *frm2_ptr, int32_t filt_sth,
diff --git a/vp10/encoder/palette.c b/av1/encoder/palette.c
similarity index 99%
rename from vp10/encoder/palette.c
rename to av1/encoder/palette.c
index 371d1b9..74f91b7 100644
--- a/vp10/encoder/palette.c
+++ b/av1/encoder/palette.c
@@ -10,7 +10,7 @@
 
 #include <math.h>
 #include <stdlib.h>
-#include "vp10/encoder/palette.h"
+#include "av1/encoder/palette.h"
 
 static float calc_dist(const float *p1, const float *p2, int dim) {
   float dist = 0;
diff --git a/vp10/encoder/palette.h b/av1/encoder/palette.h
similarity index 97%
rename from vp10/encoder/palette.h
rename to av1/encoder/palette.h
index eb1a571..fbbb39c 100644
--- a/vp10/encoder/palette.h
+++ b/av1/encoder/palette.h
@@ -11,7 +11,7 @@
 #ifndef VP10_ENCODER_PALETTE_H_
 #define VP10_ENCODER_PALETTE_H_
 
-#include "vp10/common/blockd.h"
+#include "av1/common/blockd.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/pickdering.c b/av1/encoder/pickdering.c
similarity index 96%
rename from vp10/encoder/pickdering.c
rename to av1/encoder/pickdering.c
index 323567d..91e9b54 100644
--- a/vp10/encoder/pickdering.c
+++ b/av1/encoder/pickdering.c
@@ -11,11 +11,11 @@
 #include <string.h>
 
 #include "./vpx_scale_rtcd.h"
-#include "vp10/common/dering.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/encoder/encoder.h"
-#include "vpx/vpx_integer.h"
+#include "av1/common/dering.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/reconinter.h"
+#include "av1/encoder/encoder.h"
+#include "aom/vpx_integer.h"
 
 static double compute_dist(int16_t *x, int xstride, int16_t *y, int ystride,
                            int nhb, int nvb, int coeff_shift) {
diff --git a/vp10/encoder/picklpf.c b/av1/encoder/picklpf.c
similarity index 95%
rename from vp10/encoder/picklpf.c
rename to av1/encoder/picklpf.c
index 9fd7713..c4e9b7d 100644
--- a/vp10/encoder/picklpf.c
+++ b/av1/encoder/picklpf.c
@@ -13,18 +13,18 @@
 
 #include "./vpx_scale_rtcd.h"
 
-#include "vpx_dsp/psnr.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/psnr.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
-#include "vp10/common/loopfilter.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/quant_common.h"
+#include "av1/common/loopfilter.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/quant_common.h"
 
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/picklpf.h"
-#include "vp10/encoder/quantize.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/picklpf.h"
+#include "av1/encoder/quantize.h"
 
 int vp10_get_max_filter_level(const VP10_COMP *cpi) {
   if (cpi->oxcf.pass == 2) {
diff --git a/vp10/encoder/picklpf.h b/av1/encoder/picklpf.h
similarity index 96%
rename from vp10/encoder/picklpf.h
rename to av1/encoder/picklpf.h
index 994dde5..cd8afc6 100644
--- a/vp10/encoder/picklpf.h
+++ b/av1/encoder/picklpf.h
@@ -15,7 +15,7 @@
 extern "C" {
 #endif
 
-#include "vp10/encoder/encoder.h"
+#include "av1/encoder/encoder.h"
 
 struct yv12_buffer_config;
 struct VP10_COMP;
diff --git a/vp10/encoder/pickrst.c b/av1/encoder/pickrst.c
similarity index 98%
rename from vp10/encoder/pickrst.c
rename to av1/encoder/pickrst.c
index 242dbd3..b6ee6f0 100644
--- a/vp10/encoder/pickrst.c
+++ b/av1/encoder/pickrst.c
@@ -15,18 +15,18 @@
 
 #include "./vpx_scale_rtcd.h"
 
-#include "vpx_dsp/psnr.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/psnr.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/quant_common.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/quant_common.h"
 
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/picklpf.h"
-#include "vp10/encoder/pickrst.h"
-#include "vp10/encoder/quantize.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/picklpf.h"
+#include "av1/encoder/pickrst.h"
+#include "av1/encoder/quantize.h"
 
 static int64_t try_restoration_frame(const YV12_BUFFER_CONFIG *sd,
                                      VP10_COMP *const cpi, RestorationInfo *rsi,
diff --git a/vp10/encoder/pickrst.h b/av1/encoder/pickrst.h
similarity index 95%
rename from vp10/encoder/pickrst.h
rename to av1/encoder/pickrst.h
index 01e7cba..6d94cef 100644
--- a/vp10/encoder/pickrst.h
+++ b/av1/encoder/pickrst.h
@@ -15,7 +15,7 @@
 extern "C" {
 #endif
 
-#include "vp10/encoder/encoder.h"
+#include "av1/encoder/encoder.h"
 
 struct yv12_buffer_config;
 struct VP10_COMP;
diff --git a/vp10/encoder/quantize.c b/av1/encoder/quantize.c
similarity index 99%
rename from vp10/encoder/quantize.c
rename to av1/encoder/quantize.c
index 2324173..ed8a04b 100644
--- a/vp10/encoder/quantize.c
+++ b/av1/encoder/quantize.c
@@ -10,17 +10,17 @@
 
 #include <math.h>
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/quantize.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/quantize.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
-#include "vp10/common/quant_common.h"
-#include "vp10/common/scan.h"
-#include "vp10/common/seg_common.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/scan.h"
+#include "av1/common/seg_common.h"
 
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/quantize.h"
-#include "vp10/encoder/rd.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/quantize.h"
+#include "av1/encoder/rd.h"
 
 #if CONFIG_NEW_QUANT
 static INLINE int quantize_coeff_nuq(
diff --git a/vp10/encoder/quantize.h b/av1/encoder/quantize.h
similarity index 98%
rename from vp10/encoder/quantize.h
rename to av1/encoder/quantize.h
index c2035e3..6b1e739 100644
--- a/vp10/encoder/quantize.h
+++ b/av1/encoder/quantize.h
@@ -12,9 +12,9 @@
 #define VP10_ENCODER_QUANTIZE_H_
 
 #include "./vpx_config.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/scan.h"
-#include "vp10/encoder/block.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/scan.h"
+#include "av1/encoder/block.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/ransac.c b/av1/encoder/ransac.c
similarity index 100%
rename from vp10/encoder/ransac.c
rename to av1/encoder/ransac.c
diff --git a/vp10/encoder/ransac.h b/av1/encoder/ransac.h
similarity index 100%
rename from vp10/encoder/ransac.h
rename to av1/encoder/ransac.h
diff --git a/vp10/encoder/ratectrl.c b/av1/encoder/ratectrl.c
similarity index 99%
rename from vp10/encoder/ratectrl.c
rename to av1/encoder/ratectrl.c
index 4e7dd64..ddd5762 100644
--- a/vp10/encoder/ratectrl.c
+++ b/av1/encoder/ratectrl.c
@@ -15,20 +15,20 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/system_state.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/system_state.h"
 
-#include "vp10/common/alloccommon.h"
-#include "vp10/encoder/aq_cyclicrefresh.h"
-#include "vp10/common/common.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/seg_common.h"
+#include "av1/common/alloccommon.h"
+#include "av1/encoder/aq_cyclicrefresh.h"
+#include "av1/common/common.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/seg_common.h"
 
-#include "vp10/encoder/encodemv.h"
-#include "vp10/encoder/ratectrl.h"
+#include "av1/encoder/encodemv.h"
+#include "av1/encoder/ratectrl.h"
 
 // Max rate target for 1080P and below encodes under normal circumstances
 // (1920 * 1080 / (16 * 16)) * MAX_MB_RATE bits per MB
diff --git a/vp10/encoder/ratectrl.h b/av1/encoder/ratectrl.h
similarity index 98%
rename from vp10/encoder/ratectrl.h
rename to av1/encoder/ratectrl.h
index 1896583..88a14bc 100644
--- a/vp10/encoder/ratectrl.h
+++ b/av1/encoder/ratectrl.h
@@ -11,10 +11,10 @@
 #ifndef VP10_ENCODER_RATECTRL_H_
 #define VP10_ENCODER_RATECTRL_H_
 
-#include "vpx/vpx_codec.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_codec.h"
+#include "aom/vpx_integer.h"
 
-#include "vp10/common/blockd.h"
+#include "av1/common/blockd.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/rd.c b/av1/encoder/rd.c
similarity index 97%
rename from vp10/encoder/rd.c
rename to av1/encoder/rd.c
index 77c939f..a8a8691 100644
--- a/vp10/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -14,31 +14,31 @@
 
 #include "./vp10_rtcd.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/bitops.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/system_state.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/bitops.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/system_state.h"
 
-#include "vp10/common/common.h"
-#include "vp10/common/entropy.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/mvref_common.h"
-#include "vp10/common/pred_common.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/reconintra.h"
-#include "vp10/common/seg_common.h"
+#include "av1/common/common.h"
+#include "av1/common/entropy.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/mvref_common.h"
+#include "av1/common/pred_common.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/reconintra.h"
+#include "av1/common/seg_common.h"
 
-#include "vp10/encoder/cost.h"
-#include "vp10/encoder/encodemb.h"
-#include "vp10/encoder/encodemv.h"
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/mcomp.h"
-#include "vp10/encoder/quantize.h"
-#include "vp10/encoder/ratectrl.h"
-#include "vp10/encoder/rd.h"
-#include "vp10/encoder/tokenize.h"
+#include "av1/encoder/cost.h"
+#include "av1/encoder/encodemb.h"
+#include "av1/encoder/encodemv.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/mcomp.h"
+#include "av1/encoder/quantize.h"
+#include "av1/encoder/ratectrl.h"
+#include "av1/encoder/rd.h"
+#include "av1/encoder/tokenize.h"
 
 #define RD_THRESH_POW 1.25
 
diff --git a/vp10/encoder/rd.h b/av1/encoder/rd.h
similarity index 98%
rename from vp10/encoder/rd.h
rename to av1/encoder/rd.h
index 9765e63..9680215 100644
--- a/vp10/encoder/rd.h
+++ b/av1/encoder/rd.h
@@ -14,13 +14,13 @@
 #include <limits.h>
 
 #if CONFIG_ANS
-#include "vp10/common/ans.h"
+#include "av1/common/ans.h"
 #endif  // CONFIG_ANS
-#include "vp10/common/blockd.h"
+#include "av1/common/blockd.h"
 
-#include "vp10/encoder/block.h"
-#include "vp10/encoder/context_tree.h"
-#include "vp10/encoder/cost.h"
+#include "av1/encoder/block.h"
+#include "av1/encoder/context_tree.h"
+#include "av1/encoder/cost.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/rdopt.c b/av1/encoder/rdopt.c
similarity index 99%
rename from vp10/encoder/rdopt.c
rename to av1/encoder/rdopt.c
index ed1aba7..62334a3 100644
--- a/vp10/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -14,37 +14,37 @@
 #include "./vp10_rtcd.h"
 #include "./vpx_dsp_rtcd.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/blend.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/system_state.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/blend.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/system_state.h"
 
-#include "vp10/common/common.h"
-#include "vp10/common/common_data.h"
-#include "vp10/common/entropy.h"
-#include "vp10/common/entropymode.h"
-#include "vp10/common/idct.h"
-#include "vp10/common/mvref_common.h"
-#include "vp10/common/pred_common.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/reconintra.h"
-#include "vp10/common/scan.h"
-#include "vp10/common/seg_common.h"
+#include "av1/common/common.h"
+#include "av1/common/common_data.h"
+#include "av1/common/entropy.h"
+#include "av1/common/entropymode.h"
+#include "av1/common/idct.h"
+#include "av1/common/mvref_common.h"
+#include "av1/common/pred_common.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/reconintra.h"
+#include "av1/common/scan.h"
+#include "av1/common/seg_common.h"
 
-#include "vp10/encoder/cost.h"
-#include "vp10/encoder/encodemb.h"
-#include "vp10/encoder/encodemv.h"
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/hybrid_fwd_txfm.h"
-#include "vp10/encoder/mcomp.h"
-#include "vp10/encoder/palette.h"
-#include "vp10/encoder/quantize.h"
-#include "vp10/encoder/ratectrl.h"
-#include "vp10/encoder/rd.h"
-#include "vp10/encoder/rdopt.h"
-#include "vp10/encoder/aq_variance.h"
+#include "av1/encoder/cost.h"
+#include "av1/encoder/encodemb.h"
+#include "av1/encoder/encodemv.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/hybrid_fwd_txfm.h"
+#include "av1/encoder/mcomp.h"
+#include "av1/encoder/palette.h"
+#include "av1/encoder/quantize.h"
+#include "av1/encoder/ratectrl.h"
+#include "av1/encoder/rd.h"
+#include "av1/encoder/rdopt.h"
+#include "av1/encoder/aq_variance.h"
 
 #if CONFIG_DUAL_FILTER
 #if CONFIG_EXT_INTERP
diff --git a/vp10/encoder/rdopt.h b/av1/encoder/rdopt.h
similarity index 96%
rename from vp10/encoder/rdopt.h
rename to av1/encoder/rdopt.h
index 2ff9c24..4ce2879 100644
--- a/vp10/encoder/rdopt.h
+++ b/av1/encoder/rdopt.h
@@ -11,10 +11,10 @@
 #ifndef VP10_ENCODER_RDOPT_H_
 #define VP10_ENCODER_RDOPT_H_
 
-#include "vp10/common/blockd.h"
+#include "av1/common/blockd.h"
 
-#include "vp10/encoder/block.h"
-#include "vp10/encoder/context_tree.h"
+#include "av1/encoder/block.h"
+#include "av1/encoder/context_tree.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/resize.c b/av1/encoder/resize.c
similarity index 99%
rename from vp10/encoder/resize.c
rename to av1/encoder/resize.c
index e922e0a..e209b21 100644
--- a/vp10/encoder/resize.c
+++ b/av1/encoder/resize.c
@@ -16,11 +16,11 @@
 #include <string.h>
 
 #if CONFIG_VP9_HIGHBITDEPTH
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_dsp_common.h"
 #endif  // CONFIG_VP9_HIGHBITDEPTH
-#include "vpx_ports/mem.h"
-#include "vp10/common/common.h"
-#include "vp10/encoder/resize.h"
+#include "aom_ports/mem.h"
+#include "av1/common/common.h"
+#include "av1/encoder/resize.h"
 
 #define FILTER_BITS 7
 
diff --git a/vp10/encoder/resize.h b/av1/encoder/resize.h
similarity index 98%
rename from vp10/encoder/resize.h
rename to av1/encoder/resize.h
index cb3ee01..8fe1d1b 100644
--- a/vp10/encoder/resize.h
+++ b/av1/encoder/resize.h
@@ -12,7 +12,7 @@
 #define VP10_ENCODER_RESIZE_H_
 
 #include <stdio.h>
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/segmentation.c b/av1/encoder/segmentation.c
similarity index 98%
rename from vp10/encoder/segmentation.c
rename to av1/encoder/segmentation.c
index 7f889f5..5ac1283 100644
--- a/vp10/encoder/segmentation.c
+++ b/av1/encoder/segmentation.c
@@ -10,14 +10,14 @@
 
 #include <limits.h>
 
-#include "vpx_mem/vpx_mem.h"
+#include "aom_mem/vpx_mem.h"
 
-#include "vp10/common/pred_common.h"
-#include "vp10/common/tile_common.h"
+#include "av1/common/pred_common.h"
+#include "av1/common/tile_common.h"
 
-#include "vp10/encoder/cost.h"
-#include "vp10/encoder/segmentation.h"
-#include "vp10/encoder/subexp.h"
+#include "av1/encoder/cost.h"
+#include "av1/encoder/segmentation.h"
+#include "av1/encoder/subexp.h"
 
 void vp10_enable_segmentation(struct segmentation *seg) {
   seg->enabled = 1;
diff --git a/vp10/encoder/segmentation.h b/av1/encoder/segmentation.h
similarity index 95%
rename from vp10/encoder/segmentation.h
rename to av1/encoder/segmentation.h
index c07f37f..3c79bd1 100644
--- a/vp10/encoder/segmentation.h
+++ b/av1/encoder/segmentation.h
@@ -11,8 +11,8 @@
 #ifndef VP10_ENCODER_SEGMENTATION_H_
 #define VP10_ENCODER_SEGMENTATION_H_
 
-#include "vp10/common/blockd.h"
-#include "vp10/encoder/encoder.h"
+#include "av1/common/blockd.h"
+#include "av1/encoder/encoder.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/speed_features.c b/av1/encoder/speed_features.c
similarity index 99%
rename from vp10/encoder/speed_features.c
rename to av1/encoder/speed_features.c
index 074a1c3..ab66250 100644
--- a/vp10/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -10,11 +10,11 @@
 
 #include <limits.h>
 
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/speed_features.h"
-#include "vp10/encoder/rdopt.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/speed_features.h"
+#include "av1/encoder/rdopt.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 // Mesh search patters for various speed settings
 static MESH_PATTERN best_quality_mesh_pattern[MAX_MESH_STEP] = {
diff --git a/vp10/encoder/speed_features.h b/av1/encoder/speed_features.h
similarity index 99%
rename from vp10/encoder/speed_features.h
rename to av1/encoder/speed_features.h
index a0e5c63..2457c5b 100644
--- a/vp10/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -11,7 +11,7 @@
 #ifndef VP10_ENCODER_SPEED_FEATURES_H_
 #define VP10_ENCODER_SPEED_FEATURES_H_
 
-#include "vp10/common/enums.h"
+#include "av1/common/enums.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/subexp.c b/av1/encoder/subexp.c
similarity index 98%
rename from vp10/encoder/subexp.c
rename to av1/encoder/subexp.c
index 570b11e..d722654 100644
--- a/vp10/encoder/subexp.c
+++ b/av1/encoder/subexp.c
@@ -7,12 +7,12 @@
  *  in the file PATENTS.  All contributing project authors may
  *  be found in the AUTHORS file in the root of the source tree.
  */
-#include "vp10/encoder/bitwriter.h"
+#include "av1/encoder/bitwriter.h"
 
-#include "vp10/common/common.h"
-#include "vp10/common/entropy.h"
-#include "vp10/encoder/cost.h"
-#include "vp10/encoder/subexp.h"
+#include "av1/common/common.h"
+#include "av1/common/entropy.h"
+#include "av1/encoder/cost.h"
+#include "av1/encoder/subexp.h"
 
 #define vp10_cost_upd256 ((int)(vp10_cost_one(upd) - vp10_cost_zero(upd)))
 
diff --git a/vp10/encoder/subexp.h b/av1/encoder/subexp.h
similarity index 98%
rename from vp10/encoder/subexp.h
rename to av1/encoder/subexp.h
index 1648d74..82ce2e0 100644
--- a/vp10/encoder/subexp.h
+++ b/av1/encoder/subexp.h
@@ -15,7 +15,7 @@
 extern "C" {
 #endif
 
-#include "vpx_dsp/prob.h"
+#include "aom_dsp/prob.h"
 
 struct vp10_writer;
 
diff --git a/vp10/encoder/temporal_filter.c b/av1/encoder/temporal_filter.c
similarity index 97%
rename from vp10/encoder/temporal_filter.c
rename to av1/encoder/temporal_filter.c
index 263177c..32490cc 100644
--- a/vp10/encoder/temporal_filter.c
+++ b/av1/encoder/temporal_filter.c
@@ -11,24 +11,24 @@
 #include <math.h>
 #include <limits.h>
 
-#include "vp10/common/alloccommon.h"
-#include "vp10/common/onyxc_int.h"
-#include "vp10/common/quant_common.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/common/odintrin.h"
-#include "vp10/encoder/extend.h"
-#include "vp10/encoder/firstpass.h"
-#include "vp10/encoder/mcomp.h"
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/quantize.h"
-#include "vp10/encoder/ratectrl.h"
-#include "vp10/encoder/segmentation.h"
-#include "vp10/encoder/temporal_filter.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/vpx_timer.h"
-#include "vpx_scale/vpx_scale.h"
+#include "av1/common/alloccommon.h"
+#include "av1/common/onyxc_int.h"
+#include "av1/common/quant_common.h"
+#include "av1/common/reconinter.h"
+#include "av1/common/odintrin.h"
+#include "av1/encoder/extend.h"
+#include "av1/encoder/firstpass.h"
+#include "av1/encoder/mcomp.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/quantize.h"
+#include "av1/encoder/ratectrl.h"
+#include "av1/encoder/segmentation.h"
+#include "av1/encoder/temporal_filter.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/vpx_timer.h"
+#include "aom_scale/vpx_scale.h"
 
 static void temporal_filter_predictors_mb_c(
     MACROBLOCKD *xd, uint8_t *y_mb_ptr, uint8_t *u_mb_ptr, uint8_t *v_mb_ptr,
diff --git a/vp10/encoder/temporal_filter.h b/av1/encoder/temporal_filter.h
similarity index 100%
rename from vp10/encoder/temporal_filter.h
rename to av1/encoder/temporal_filter.h
diff --git a/vp10/encoder/tokenize.c b/av1/encoder/tokenize.c
similarity index 98%
rename from vp10/encoder/tokenize.c
rename to av1/encoder/tokenize.c
index 257eba5..c841fa6 100644
--- a/vp10/encoder/tokenize.c
+++ b/av1/encoder/tokenize.c
@@ -13,16 +13,16 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "vpx_mem/vpx_mem.h"
+#include "aom_mem/vpx_mem.h"
 
-#include "vp10/common/entropy.h"
-#include "vp10/common/pred_common.h"
-#include "vp10/common/scan.h"
-#include "vp10/common/seg_common.h"
+#include "av1/common/entropy.h"
+#include "av1/common/pred_common.h"
+#include "av1/common/scan.h"
+#include "av1/common/seg_common.h"
 
-#include "vp10/encoder/cost.h"
-#include "vp10/encoder/encoder.h"
-#include "vp10/encoder/tokenize.h"
+#include "av1/encoder/cost.h"
+#include "av1/encoder/encoder.h"
+#include "av1/encoder/tokenize.h"
 
 static const TOKENVALUE dct_cat_lt_10_value_tokens[] = {
   { 9, 63 }, { 9, 61 }, { 9, 59 }, { 9, 57 }, { 9, 55 }, { 9, 53 }, { 9, 51 },
diff --git a/vp10/encoder/tokenize.h b/av1/encoder/tokenize.h
similarity index 97%
rename from vp10/encoder/tokenize.h
rename to av1/encoder/tokenize.h
index 1623c9f..7ae8676 100644
--- a/vp10/encoder/tokenize.h
+++ b/av1/encoder/tokenize.h
@@ -11,10 +11,10 @@
 #ifndef VP10_ENCODER_TOKENIZE_H_
 #define VP10_ENCODER_TOKENIZE_H_
 
-#include "vp10/common/entropy.h"
+#include "av1/common/entropy.h"
 
-#include "vp10/encoder/block.h"
-#include "vp10/encoder/treewriter.h"
+#include "av1/encoder/block.h"
+#include "av1/encoder/treewriter.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/treewriter.c b/av1/encoder/treewriter.c
similarity index 97%
rename from vp10/encoder/treewriter.c
rename to av1/encoder/treewriter.c
index 152bf40..d3fcd45 100644
--- a/vp10/encoder/treewriter.c
+++ b/av1/encoder/treewriter.c
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/encoder/treewriter.h"
+#include "av1/encoder/treewriter.h"
 
 static void tree2tok(struct vp10_token *tokens, const vpx_tree_index *tree,
                      int i, int v, int l) {
diff --git a/vp10/encoder/treewriter.h b/av1/encoder/treewriter.h
similarity index 96%
rename from vp10/encoder/treewriter.h
rename to av1/encoder/treewriter.h
index fdbaadd..43c615f 100644
--- a/vp10/encoder/treewriter.h
+++ b/av1/encoder/treewriter.h
@@ -12,11 +12,11 @@
 #define VP10_ENCODER_TREEWRITER_H_
 
 #ifdef VP10_FORCE_VPXBOOL_TREEWRITER
-#include "vpx_dsp/bitwriter.h"
+#include "aom_dsp/bitwriter.h"
 #define tree_writer vpx_writer
 #define tree_bit_write vpx_write
 #else
-#include "vp10/encoder/bitwriter.h"
+#include "av1/encoder/bitwriter.h"
 #define tree_writer vp10_writer
 #define tree_bit_write vp10_write
 #endif
diff --git a/vp10/encoder/variance_tree.c b/av1/encoder/variance_tree.c
similarity index 95%
rename from vp10/encoder/variance_tree.c
rename to av1/encoder/variance_tree.c
index 03d316d..219d39a 100644
--- a/vp10/encoder/variance_tree.c
+++ b/av1/encoder/variance_tree.c
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/encoder/variance_tree.h"
-#include "vp10/encoder/encoder.h"
+#include "av1/encoder/variance_tree.h"
+#include "av1/encoder/encoder.h"
 
 void vp10_setup_var_tree(struct VP10Common *cm, ThreadData *td) {
   int i, j;
diff --git a/vp10/encoder/variance_tree.h b/av1/encoder/variance_tree.h
similarity index 97%
rename from vp10/encoder/variance_tree.h
rename to av1/encoder/variance_tree.h
index 70d5cb8..08c40d3 100644
--- a/vp10/encoder/variance_tree.h
+++ b/av1/encoder/variance_tree.h
@@ -15,9 +15,9 @@
 
 #include "./vpx_config.h"
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
-#include "vp10/common/enums.h"
+#include "av1/common/enums.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vp10/encoder/wedge_utils.c b/av1/encoder/wedge_utils.c
similarity index 96%
rename from vp10/encoder/wedge_utils.c
rename to av1/encoder/wedge_utils.c
index cb3234c..548bc48 100644
--- a/vp10/encoder/wedge_utils.c
+++ b/av1/encoder/wedge_utils.c
@@ -10,13 +10,13 @@
 
 #include <assert.h>
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
-#include "vp10/common/reconinter.h"
+#include "av1/common/reconinter.h"
 
 #define MAX_MASK_VALUE (1 << WEDGE_WEIGHT_BITS)
 
diff --git a/vp10/encoder/x86/dct_intrin_sse2.c b/av1/encoder/x86/dct_intrin_sse2.c
similarity index 99%
rename from vp10/encoder/x86/dct_intrin_sse2.c
rename to av1/encoder/x86/dct_intrin_sse2.c
index 0e0ee44..6fe3ada 100644
--- a/vp10/encoder/x86/dct_intrin_sse2.c
+++ b/av1/encoder/x86/dct_intrin_sse2.c
@@ -13,10 +13,10 @@
 
 #include "./vp10_rtcd.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_dsp/x86/fwd_txfm_sse2.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_dsp/x86/fwd_txfm_sse2.h"
+#include "aom_dsp/x86/txfm_common_sse2.h"
+#include "aom_ports/mem.h"
 
 static INLINE void load_buffer_4x4(const int16_t *input, __m128i *in,
                                    int stride, int flipud, int fliplr) {
diff --git a/vp10/encoder/x86/dct_sse2.asm b/av1/encoder/x86/dct_sse2.asm
similarity index 100%
rename from vp10/encoder/x86/dct_sse2.asm
rename to av1/encoder/x86/dct_sse2.asm
diff --git a/vp10/encoder/x86/dct_ssse3.c b/av1/encoder/x86/dct_ssse3.c
similarity index 99%
rename from vp10/encoder/x86/dct_ssse3.c
rename to av1/encoder/x86/dct_ssse3.c
index 39cce1b..aa018a1 100644
--- a/vp10/encoder/x86/dct_ssse3.c
+++ b/av1/encoder/x86/dct_ssse3.c
@@ -17,8 +17,8 @@
 #include <tmmintrin.h>  // SSSE3
 
 #include "./vp10_rtcd.h"
-#include "vpx_dsp/x86/inv_txfm_sse2.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
+#include "aom_dsp/x86/inv_txfm_sse2.h"
+#include "aom_dsp/x86/txfm_common_sse2.h"
 
 void vp10_fdct8x8_quant_ssse3(
     const int16_t *input, int stride, int16_t *coeff_ptr, intptr_t n_coeffs,
diff --git a/vp10/encoder/x86/error_intrin_avx2.c b/av1/encoder/x86/error_intrin_avx2.c
similarity index 98%
rename from vp10/encoder/x86/error_intrin_avx2.c
rename to av1/encoder/x86/error_intrin_avx2.c
index 560cd4a..6e7c093 100644
--- a/vp10/encoder/x86/error_intrin_avx2.c
+++ b/av1/encoder/x86/error_intrin_avx2.c
@@ -11,7 +11,7 @@
 #include <immintrin.h>  // AVX2
 
 #include "./vp10_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 int64_t vp10_block_error_avx2(const int16_t *coeff, const int16_t *dqcoeff,
                               intptr_t block_size, int64_t *ssz) {
diff --git a/vp10/encoder/x86/error_sse2.asm b/av1/encoder/x86/error_sse2.asm
similarity index 100%
rename from vp10/encoder/x86/error_sse2.asm
rename to av1/encoder/x86/error_sse2.asm
diff --git a/vp10/encoder/x86/highbd_block_error_intrin_sse2.c b/av1/encoder/x86/highbd_block_error_intrin_sse2.c
similarity index 98%
rename from vp10/encoder/x86/highbd_block_error_intrin_sse2.c
rename to av1/encoder/x86/highbd_block_error_intrin_sse2.c
index eefca1c..2728880 100644
--- a/vp10/encoder/x86/highbd_block_error_intrin_sse2.c
+++ b/av1/encoder/x86/highbd_block_error_intrin_sse2.c
@@ -11,7 +11,7 @@
 #include <emmintrin.h>
 #include <stdio.h>
 
-#include "vp10/common/common.h"
+#include "av1/common/common.h"
 
 int64_t vp10_highbd_block_error_sse2(tran_low_t *coeff, tran_low_t *dqcoeff,
                                      intptr_t block_size, int64_t *ssz,
diff --git a/vp10/encoder/x86/highbd_fwd_txfm_sse4.c b/av1/encoder/x86/highbd_fwd_txfm_sse4.c
similarity index 99%
rename from vp10/encoder/x86/highbd_fwd_txfm_sse4.c
rename to av1/encoder/x86/highbd_fwd_txfm_sse4.c
index e164375..a6cb454 100644
--- a/vp10/encoder/x86/highbd_fwd_txfm_sse4.c
+++ b/av1/encoder/x86/highbd_fwd_txfm_sse4.c
@@ -13,12 +13,12 @@
 
 #include "./vp10_rtcd.h"
 #include "./vpx_config.h"
-#include "vp10/common/vp10_fwd_txfm2d_cfg.h"
-#include "vp10/common/vp10_txfm.h"
-#include "vp10/common/x86/highbd_txfm_utility_sse4.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/vp10_fwd_txfm2d_cfg.h"
+#include "av1/common/vp10_txfm.h"
+#include "av1/common/x86/highbd_txfm_utility_sse4.h"
+#include "aom_dsp/txfm_common.h"
+#include "aom_dsp/x86/txfm_common_sse2.h"
+#include "aom_ports/mem.h"
 
 static INLINE void load_buffer_4x4(const int16_t *input, __m128i *in,
                                    int stride, int flipud, int fliplr,
diff --git a/vp10/encoder/x86/quantize_sse2.c b/av1/encoder/x86/quantize_sse2.c
similarity index 99%
rename from vp10/encoder/x86/quantize_sse2.c
rename to av1/encoder/x86/quantize_sse2.c
index b619894..b8cd0c7 100644
--- a/vp10/encoder/x86/quantize_sse2.c
+++ b/av1/encoder/x86/quantize_sse2.c
@@ -12,7 +12,7 @@
 #include <xmmintrin.h>
 
 #include "./vp10_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 void vp10_quantize_fp_sse2(const int16_t *coeff_ptr, intptr_t n_coeffs,
                            int skip_block, const int16_t *zbin_ptr,
diff --git a/vp10/encoder/x86/quantize_ssse3_x86_64.asm b/av1/encoder/x86/quantize_ssse3_x86_64.asm
similarity index 100%
rename from vp10/encoder/x86/quantize_ssse3_x86_64.asm
rename to av1/encoder/x86/quantize_ssse3_x86_64.asm
diff --git a/vp10/encoder/x86/ssim_opt_x86_64.asm b/av1/encoder/x86/ssim_opt_x86_64.asm
similarity index 99%
rename from vp10/encoder/x86/ssim_opt_x86_64.asm
rename to av1/encoder/x86/ssim_opt_x86_64.asm
index b45f009..29659ee 100644
--- a/vp10/encoder/x86/ssim_opt_x86_64.asm
+++ b/av1/encoder/x86/ssim_opt_x86_64.asm
@@ -8,7 +8,7 @@
 ;  be found in the AUTHORS file in the root of the source tree.
 ;
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 ; tabulate_ssim - sums sum_s,sum_r,sum_sq_s,sum_sq_r, sum_sxr
 %macro TABULATE_SSIM 0
diff --git a/vp10/encoder/x86/temporal_filter_apply_sse2.asm b/av1/encoder/x86/temporal_filter_apply_sse2.asm
similarity index 99%
rename from vp10/encoder/x86/temporal_filter_apply_sse2.asm
rename to av1/encoder/x86/temporal_filter_apply_sse2.asm
index 7171807..eabe575 100644
--- a/vp10/encoder/x86/temporal_filter_apply_sse2.asm
+++ b/av1/encoder/x86/temporal_filter_apply_sse2.asm
@@ -9,7 +9,7 @@
 ;
 
 
-%include "vpx_ports/x86_abi_support.asm"
+%include "aom_ports/x86_abi_support.asm"
 
 ; void vp10_temporal_filter_apply_sse2 | arg
 ;  (unsigned char  *frame1,           |  0
diff --git a/vp10/encoder/x86/vp10_highbd_quantize_sse4.c b/av1/encoder/x86/vp10_highbd_quantize_sse4.c
similarity index 99%
rename from vp10/encoder/x86/vp10_highbd_quantize_sse4.c
rename to av1/encoder/x86/vp10_highbd_quantize_sse4.c
index c49247b..8b05c6a 100644
--- a/vp10/encoder/x86/vp10_highbd_quantize_sse4.c
+++ b/av1/encoder/x86/vp10_highbd_quantize_sse4.c
@@ -12,7 +12,7 @@
 #include <stdint.h>
 
 #include "./vp10_rtcd.h"
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
 // Coefficient quantization phase 1
 // param[0-2] : rounding/quan/dequan constants
diff --git a/vp10/encoder/x86/wedge_utils_sse2.c b/av1/encoder/x86/wedge_utils_sse2.c
similarity index 98%
rename from vp10/encoder/x86/wedge_utils_sse2.c
rename to av1/encoder/x86/wedge_utils_sse2.c
index 19bef91..a6be947 100644
--- a/vp10/encoder/x86/wedge_utils_sse2.c
+++ b/av1/encoder/x86/wedge_utils_sse2.c
@@ -11,11 +11,11 @@
 #include <assert.h>
 #include <immintrin.h>
 
-#include "vpx_dsp/x86/synonyms.h"
+#include "aom_dsp/x86/synonyms.h"
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
-#include "vp10/common/reconinter.h"
+#include "av1/common/reconinter.h"
 
 #define MAX_MASK_VALUE (1 << WEDGE_WEIGHT_BITS)
 
diff --git a/vp10/exports_dec b/av1/exports_dec
similarity index 100%
rename from vp10/exports_dec
rename to av1/exports_dec
diff --git a/vp10/exports_enc b/av1/exports_enc
similarity index 100%
rename from vp10/exports_enc
rename to av1/exports_enc
diff --git a/vp10/vp10_common.mk b/av1/vp10_common.mk
similarity index 98%
rename from vp10/vp10_common.mk
rename to av1/vp10_common.mk
index e25cdcf..e776a8a 100644
--- a/vp10/vp10_common.mk
+++ b/av1/vp10_common.mk
@@ -136,4 +136,4 @@
 VP10_COMMON_SRCS-$(HAVE_SSE2) += common/x86/vp10_inv_txfm_sse2.c
 VP10_COMMON_SRCS-$(HAVE_SSE2) += common/x86/vp10_inv_txfm_sse2.h
 
-$(eval $(call rtcd_h_template,vp10_rtcd,vp10/common/vp10_rtcd_defs.pl))
+$(eval $(call rtcd_h_template,vp10_rtcd,av1/common/vp10_rtcd_defs.pl))
diff --git a/vp10/vp10_cx_iface.c b/av1/vp10_cx_iface.c
similarity index 99%
rename from vp10/vp10_cx_iface.c
rename to av1/vp10_cx_iface.c
index edcf25a..34dd428 100644
--- a/vp10/vp10_cx_iface.c
+++ b/av1/vp10_cx_iface.c
@@ -12,15 +12,15 @@
 #include <string.h>
 
 #include "./vpx_config.h"
-#include "vpx/vpx_encoder.h"
-#include "vpx_ports/vpx_once.h"
-#include "vpx_ports/system_state.h"
-#include "vpx/internal/vpx_codec_internal.h"
+#include "aom/vpx_encoder.h"
+#include "aom_ports/vpx_once.h"
+#include "aom_ports/system_state.h"
+#include "aom/internal/vpx_codec_internal.h"
 #include "./vpx_version.h"
-#include "vp10/encoder/encoder.h"
-#include "vpx/vp8cx.h"
-#include "vp10/encoder/firstpass.h"
-#include "vp10/vp10_iface_common.h"
+#include "av1/encoder/encoder.h"
+#include "aom/vp8cx.h"
+#include "av1/encoder/firstpass.h"
+#include "av1/vp10_iface_common.h"
 
 struct vp10_extracfg {
   int cpu_used;  // available cpu percentage in 1/16
diff --git a/vp10/vp10_dx_iface.c b/av1/vp10_dx_iface.c
similarity index 98%
rename from vp10/vp10_dx_iface.c
rename to av1/vp10_dx_iface.c
index 1b8636f..9e17c5a 100644
--- a/vp10/vp10_dx_iface.c
+++ b/av1/vp10_dx_iface.c
@@ -14,21 +14,21 @@
 #include "./vpx_config.h"
 #include "./vpx_version.h"
 
-#include "vpx/internal/vpx_codec_internal.h"
-#include "vpx/vp8dx.h"
-#include "vpx/vpx_decoder.h"
-#include "vpx_dsp/bitreader_buffer.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_util/vpx_thread.h"
+#include "aom/internal/vpx_codec_internal.h"
+#include "aom/vp8dx.h"
+#include "aom/vpx_decoder.h"
+#include "aom_dsp/bitreader_buffer.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_util/vpx_thread.h"
 
-#include "vp10/common/alloccommon.h"
-#include "vp10/common/frame_buffers.h"
-#include "vp10/common/enums.h"
+#include "av1/common/alloccommon.h"
+#include "av1/common/frame_buffers.h"
+#include "av1/common/enums.h"
 
-#include "vp10/decoder/decoder.h"
-#include "vp10/decoder/decodeframe.h"
+#include "av1/decoder/decoder.h"
+#include "av1/decoder/decodeframe.h"
 
-#include "vp10/vp10_iface_common.h"
+#include "av1/vp10_iface_common.h"
 
 typedef vpx_codec_stream_info_t vp10_stream_info_t;
 
diff --git a/vp10/vp10_iface_common.h b/av1/vp10_iface_common.h
similarity index 99%
rename from vp10/vp10_iface_common.h
rename to av1/vp10_iface_common.h
index d8de21e..37a9cc1 100644
--- a/vp10/vp10_iface_common.h
+++ b/av1/vp10_iface_common.h
@@ -10,7 +10,7 @@
 #ifndef VP10_VP10_IFACE_COMMON_H_
 #define VP10_VP10_IFACE_COMMON_H_
 
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
 static void yuvconfig2image(vpx_image_t *img, const YV12_BUFFER_CONFIG *yv12,
                             void *user_priv) {
diff --git a/vp10/vp10cx.mk b/av1/vp10cx.mk
similarity index 100%
rename from vp10/vp10cx.mk
rename to av1/vp10cx.mk
diff --git a/vp10/vp10dx.mk b/av1/vp10dx.mk
similarity index 100%
rename from vp10/vp10dx.mk
rename to av1/vp10dx.mk
diff --git a/build/make/Android.mk b/build/make/Android.mk
index 9c5ecc6..b3a2a08 100644
--- a/build/make/Android.mk
+++ b/build/make/Android.mk
@@ -9,11 +9,11 @@
 ##
 
 #
-# This file is to be used for compiling libvpx for Android using the NDK.
-# In an Android project place a libvpx checkout in the jni directory.
-# Run the configure script from the jni directory.  Base libvpx
+# This file is to be used for compiling libaom for Android using the NDK.
+# In an Android project place a libaom checkout in the jni directory.
+# Run the configure script from the jni directory.  Base libaom
 # encoder/decoder configuration will look similar to:
-# ./libvpx/configure --target=armv7-android-gcc --disable-examples \
+# ./libaom/configure --target=armv7-android-gcc --disable-examples \
 #                    --sdk-path=/opt/android-ndk-r6b/
 #
 # When targeting Android, realtime-only is enabled by default.  This can
@@ -24,33 +24,33 @@
 # source files to compile.
 #
 # Place an Android.mk file in the jni directory that references the
-# Android.mk file in the libvpx directory:
+# Android.mk file in the libaom directory:
 # LOCAL_PATH := $(call my-dir)
 # include $(CLEAR_VARS)
-# include jni/libvpx/build/make/Android.mk
+# include jni/libaom/build/make/Android.mk
 #
 # There are currently two TARGET_ARCH_ABI targets for ARM.
 # armeabi and armeabi-v7a.  armeabi-v7a is selected by creating an
 # Application.mk in the jni directory that contains:
 # APP_ABI := armeabi-v7a
 #
-# By default libvpx will detect at runtime the existance of NEON extension.
+# By default libaom will detect at runtime the existance of NEON extension.
 # For this we import the 'cpufeatures' module from the NDK sources.
-# libvpx can also be configured without this runtime detection method.
+# libaom can also be configured without this runtime detection method.
 # Configuring with --disable-runtime-cpu-detect will assume presence of NEON.
 # Configuring with --disable-runtime-cpu-detect --disable-neon \
 #     --disable-neon-asm
 # will remove any NEON dependency.
 
-# To change to building armeabi, run ./libvpx/configure again, but with
+# To change to building armeabi, run ./libaom/configure again, but with
 # --target=armv6-android-gcc and modify the Application.mk file to
 # set APP_ABI := armeabi
 #
-# Running ndk-build will build libvpx and include it in your project.
+# Running ndk-build will build libaom and include it in your project.
 #
 
 CONFIG_DIR := $(LOCAL_PATH)/
-LIBVPX_PATH := $(LOCAL_PATH)/libvpx
+LIBAOM_PATH := $(LOCAL_PATH)/libaom
 ASM_CNV_PATH_LOCAL := $(TARGET_ARCH_ABI)/ads2gas
 ASM_CNV_PATH := $(LOCAL_PATH)/$(ASM_CNV_PATH_LOCAL)
 
@@ -75,26 +75,26 @@
   $(error Not a supported TARGET_ARCH_ABI: $(TARGET_ARCH_ABI))
 endif
 
-# Rule that is normally in Makefile created by libvpx
+# Rule that is normally in Makefile created by libaom
 # configure.  Used to filter out source files based on configuration.
 enabled=$(filter-out $($(1)-no),$($(1)-yes))
 
-# Override the relative path that is defined by the libvpx
+# Override the relative path that is defined by the libaom
 # configure process
-SRC_PATH_BARE := $(LIBVPX_PATH)
+SRC_PATH_BARE := $(LIBAOM_PATH)
 
 # Include the list of files to be built
-include $(LIBVPX_PATH)/libs.mk
+include $(LIBAOM_PATH)/libs.mk
 
 # Optimise the code. May want to revisit this setting in the future.
 LOCAL_CFLAGS := -O3
 
 # For x86, include the source code in the search path so it will find files
 # like x86inc.asm and x86_abi_support.asm
-LOCAL_ASMFLAGS := -I$(LIBVPX_PATH)
+LOCAL_ASMFLAGS := -I$(LIBAOM_PATH)
 
 .PRECIOUS: %.asm.s
-$(ASM_CNV_PATH)/libvpx/%.asm.s: $(LIBVPX_PATH)/%.asm
+$(ASM_CNV_PATH)/libaom/%.asm.s: $(LIBAOM_PATH)/%.asm
 	@mkdir -p $(dir $@)
 	@$(CONFIG_DIR)$(ASM_CONVERSION) <$< > $@
 
@@ -108,18 +108,18 @@
 CODEC_SRCS_UNIQUE = $(sort $(CODEC_SRCS))
 
 # Pull out C files.  vpx_config.c is in the immediate directory and
-# so it does not need libvpx/ prefixed like the rest of the source files.
+# so it does not need libaom/ prefixed like the rest of the source files.
 # The neon files with intrinsics need to have .neon appended so the proper
 # flags are applied.
 CODEC_SRCS_C = $(filter %.c, $(CODEC_SRCS_UNIQUE))
 LOCAL_NEON_SRCS_C = $(filter %_neon.c, $(CODEC_SRCS_C))
 LOCAL_CODEC_SRCS_C = $(filter-out vpx_config.c %_neon.c, $(CODEC_SRCS_C))
 
-LOCAL_SRC_FILES += $(foreach file, $(LOCAL_CODEC_SRCS_C), libvpx/$(file))
+LOCAL_SRC_FILES += $(foreach file, $(LOCAL_CODEC_SRCS_C), libaom/$(file))
 ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
-  LOCAL_SRC_FILES += $(foreach file, $(LOCAL_NEON_SRCS_C), libvpx/$(file).neon)
+  LOCAL_SRC_FILES += $(foreach file, $(LOCAL_NEON_SRCS_C), libaom/$(file).neon)
 else # If there are neon sources then we are building for arm64 and do not need to specify .neon
-  LOCAL_SRC_FILES += $(foreach file, $(LOCAL_NEON_SRCS_C), libvpx/$(file))
+  LOCAL_SRC_FILES += $(foreach file, $(LOCAL_NEON_SRCS_C), libaom/$(file))
 endif
 
 # Pull out assembly files, splitting NEON from the rest.  This is
@@ -129,7 +129,7 @@
 # x86:
 
 CODEC_SRCS_ASM_X86 = $(filter %.asm, $(CODEC_SRCS_UNIQUE))
-LOCAL_SRC_FILES += $(foreach file, $(CODEC_SRCS_ASM_X86), libvpx/$(file))
+LOCAL_SRC_FILES += $(foreach file, $(CODEC_SRCS_ASM_X86), libaom/$(file))
 
 # arm:
 CODEC_SRCS_ASM_ARM_ALL = $(filter %.asm.s, $(CODEC_SRCS_UNIQUE))
@@ -137,7 +137,7 @@
                      $(CODEC_SRCS_ASM_ARM_ALL), \
                      $(if $(findstring neon,$(v)),,$(v)))
 CODEC_SRCS_ASM_ADS2GAS = $(patsubst %.s, \
-                         $(ASM_CNV_PATH_LOCAL)/libvpx/%.s, \
+                         $(ASM_CNV_PATH_LOCAL)/libaom/%.s, \
                          $(CODEC_SRCS_ASM_ARM))
 LOCAL_SRC_FILES += $(CODEC_SRCS_ASM_ADS2GAS)
 
@@ -146,7 +146,7 @@
                         $(CODEC_SRCS_ASM_ARM_ALL),\
                         $(if $(findstring neon,$(v)),$(v),))
   CODEC_SRCS_ASM_NEON_ADS2GAS = $(patsubst %.s, \
-                                $(ASM_CNV_PATH_LOCAL)/libvpx/%.s, \
+                                $(ASM_CNV_PATH_LOCAL)/libaom/%.s, \
                                 $(CODEC_SRCS_ASM_NEON))
   LOCAL_SRC_FILES += $(patsubst %.s, \
                      %.s.neon, \
@@ -155,10 +155,10 @@
 
 LOCAL_CFLAGS += \
     -DHAVE_CONFIG_H=vpx_config.h \
-    -I$(LIBVPX_PATH) \
+    -I$(LIBAOM_PATH) \
     -I$(ASM_CNV_PATH)
 
-LOCAL_MODULE := libvpx
+LOCAL_MODULE := libaom
 
 ifeq ($(CONFIG_RUNTIME_CPU_DETECT),yes)
   LOCAL_STATIC_LIBRARIES := cpufeatures
diff --git a/build/make/configure.sh b/build/make/configure.sh
index 86afb88..230d588 100644
--- a/build/make/configure.sh
+++ b/build/make/configure.sh
@@ -3,7 +3,7 @@
 ##  configure.sh
 ##
 ##  This script is sourced by the main configure script and contains
-##  utility functions and other common bits that aren't strictly libvpx
+##  utility functions and other common bits that aren't strictly libaom
 ##  related.
 ##
 ##  This build system is based in part on the FFmpeg configure script.
diff --git a/build/make/gen_msvs_vcxproj.sh b/build/make/gen_msvs_vcxproj.sh
index e98611d..9c5e859 100755
--- a/build/make/gen_msvs_vcxproj.sh
+++ b/build/make/gen_msvs_vcxproj.sh
@@ -299,7 +299,7 @@
             tag_content AppContainerApplication true
             # The application type can be one of "Windows Store",
             # "Windows Phone" or "Windows Phone Silverlight". The
-            # actual value doesn't matter from the libvpx point of view,
+            # actual value doesn't matter from the libaom point of view,
             # since a static library built for one works on the others.
             # The PlatformToolset field needs to be set in sync with this;
             # for Windows Store and Windows Phone Silverlight it should be
diff --git a/build/make/iosbuild.sh b/build/make/iosbuild.sh
index c703f22..e8fa112 100755
--- a/build/make/iosbuild.sh
+++ b/build/make/iosbuild.sh
@@ -27,7 +27,7 @@
 FRAMEWORK_LIB="VPX.framework/VPX"
 HEADER_DIR="${FRAMEWORK_DIR}/Headers/vpx"
 SCRIPT_DIR=$(dirname "$0")
-LIBVPX_SOURCE_DIR=$(cd ${SCRIPT_DIR}/../..; pwd)
+LIBAOM_SOURCE_DIR=$(cd ${SCRIPT_DIR}/../..; pwd)
 LIPO=$(xcrun -sdk iphoneos${SDK} -find lipo)
 ORIG_PWD="$(pwd)"
 ARM_TARGETS="arm64-darwin-gcc
@@ -40,7 +40,7 @@
 TARGETS="${ARM_TARGETS} ${SIM_TARGETS}"
 
 # Configures for the target specified by $1, and invokes make with the dist
-# target using $DIST_DIR as the distribution output directory.
+# target using $ as the distribution output directory.
 build_target() {
   local target="$1"
   local old_pwd="$(pwd)"
@@ -57,7 +57,7 @@
 
   mkdir "${target}"
   cd "${target}"
-  eval "${LIBVPX_SOURCE_DIR}/configure" --target="${target}" \
+  eval "${LIBAOM_SOURCE_DIR}/configure" --target="${target}" \
     ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS} ${target_specific_flags} \
     ${devnull}
   export DIST_DIR
@@ -125,7 +125,7 @@
     preproc_symbol=$(target_to_preproc_symbol "${target}")
     printf " ${preproc_symbol}\n" >> "${config_file}"
     printf "#define VPX_FRAMEWORK_TARGET \"${target}\"\n" >> "${config_file}"
-    printf "#include \"VPX/vpx/${target}/vpx_config.h\"\n" >> "${config_file}"
+    printf "#include \"VPX/aom/${target}/vpx_config.h\"\n" >> "${config_file}"
     printf "#elif defined" >> "${config_file}"
     mkdir "${HEADER_DIR}/${target}"
     cp -p "${BUILD_ROOT}/${target}/vpx_config.h" "${HEADER_DIR}/${target}"
@@ -147,7 +147,7 @@
   for target; do
     cpu="${target%%-*}"
     if [ "${cpu}" = "x86" ]; then
-      # lipo -info outputs i386 for libvpx x86 targets.
+      # lipo -info outputs i386 for libaom x86 targets.
       cpu="i386"
     fi
     requested_cpus="${requested_cpus}${cpu} "
@@ -201,14 +201,14 @@
     else
       local suffix="a"
     fi
-    lib_list="${lib_list} ${target_dist_dir}/lib/libvpx.${suffix}"
+    lib_list="${lib_list} ${target_dist_dir}/lib/libaom.${suffix}"
   done
 
   cd "${ORIG_PWD}"
 
-  # The basic libvpx API includes are all the same; just grab the most recent
+  # The basic libaom API includes are all the same; just grab the most recent
   # set.
-  cp -p "${target_dist_dir}"/include/vpx/* "${HEADER_DIR}"
+  cp -p "${target_dist_dir}"/include/aom/* "${HEADER_DIR}"
 
   # Build the fat library.
   ${LIPO} -create ${lib_list} -output ${FRAMEWORK_DIR}/VPX
@@ -270,7 +270,7 @@
   Usage: ${0##*/} [arguments]
     --help: Display this message and exit.
     --enable-shared: Build a dynamic framework for use on iOS 8 or later.
-    --extra-configure-args <args>: Extra args to pass when configuring libvpx.
+    --extra-configure-args <args>: Extra args to pass when configuring libaom.
     --macosx: Uses darwin15 targets instead of iphonesimulator targets for x86
               and x86_64. Allows linking to framework when builds target MacOSX
               instead of iOS.
@@ -342,7 +342,7 @@
   CONFIGURE_ARGS="--enable-shared ${CONFIGURE_ARGS}"
 fi
 
-FULLVERSION=$("${SCRIPT_DIR}"/version.sh --bare "${LIBVPX_SOURCE_DIR}")
+FULLVERSION=$("${SCRIPT_DIR}"/version.sh --bare "${LIBAOM_SOURCE_DIR}")
 VERSION=$(echo "${FULLVERSION}" | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+).*$/\1/')
 
 if [ "$ENABLE_SHARED" = "yes" ]; then
@@ -362,7 +362,7 @@
   FRAMEWORK_DIR=${FRAMEWORK_DIR}
   FRAMEWORK_LIB=${FRAMEWORK_LIB}
   HEADER_DIR=${HEADER_DIR}
-  LIBVPX_SOURCE_DIR=${LIBVPX_SOURCE_DIR}
+  LIBAOM_SOURCE_DIR=${LIBAOM_SOURCE_DIR}
   LIPO=${LIPO}
   MAKEFLAGS=${MAKEFLAGS}
   ORIG_PWD=${ORIG_PWD}
diff --git a/build/make/rtcd.pl b/build/make/rtcd.pl
index 50093f4..59dbe52 100755
--- a/build/make/rtcd.pl
+++ b/build/make/rtcd.pl
@@ -250,7 +250,7 @@
   common_top;
   print <<EOF;
 #ifdef RTCD_C
-#include "vpx_ports/x86.h"
+#include "aom_ports/x86.h"
 static void setup_rtcd_internal(void)
 {
     int flags = x86_simd_caps();
@@ -285,7 +285,7 @@
 #include "vpx_config.h"
 
 #ifdef RTCD_C
-#include "vpx_ports/arm.h"
+#include "aom_ports/arm.h"
 static void setup_rtcd_internal(void)
 {
     int flags = arm_cpu_caps();
diff --git a/configure b/configure
index 44f7c23..73a5308 100755
--- a/configure
+++ b/configure
@@ -189,7 +189,7 @@
 fi
 
 # disable codecs when their source directory does not exist
-[ -d "${source_path}/vp10" ] || disable_codec vp10
+[ -d "${source_path}/av1" ] || disable_codec vp10
 
 # install everything except the sources, by default. sources will have
 # to be enabled when doing dist builds, since that's no longer a common
@@ -584,7 +584,7 @@
     check_header pthread.h
     check_header unistd.h # for sysconf(3) and friends.
 
-    check_header vpx/vpx_integer.h -I${source_path} && enable_feature vpx_ports
+    check_header aom/vpx_integer.h -I${source_path} && enable_feature vpx_ports
 }
 
 process_toolchain() {
@@ -606,7 +606,7 @@
         check_add_cflags -Wunused-variable
         case ${CC} in
           *clang*)
-              # libvpx and/or clang have issues with aliasing:
+              # libaom and/or clang have issues with aliasing:
               # https://code.google.com/p/webm/issues/detail?id=603
               # work around them until they are fixed
               check_add_cflags -fno-strict-aliasing
@@ -748,7 +748,7 @@
 process "$@"
 print_webm_license ${BUILD_PFX}vpx_config.c "/*" " */"
 cat <<EOF >> ${BUILD_PFX}vpx_config.c
-#include "vpx/vpx_codec.h"
+#include "aom/vpx_codec.h"
 static const char* const cfg = "$CONFIGURE_ARGS";
 const char *vpx_codec_build_config(void) {return cfg;}
 EOF
diff --git a/examples.mk b/examples.mk
index 30fade1..07bdb05 100644
--- a/examples.mk
+++ b/examples.mk
@@ -65,11 +65,11 @@
 # while EXAMPLES demonstrate specific portions of the API.
 UTILS-$(CONFIG_DECODERS)    += vpxdec.c
 vpxdec.SRCS                 += md5_utils.c md5_utils.h
-vpxdec.SRCS                 += vpx_ports/mem_ops.h
-vpxdec.SRCS                 += vpx_ports/mem_ops_aligned.h
-vpxdec.SRCS                 += vpx_ports/msvc.h
-vpxdec.SRCS                 += vpx_ports/vpx_timer.h
-vpxdec.SRCS                 += vpx/vpx_integer.h
+vpxdec.SRCS                 += aom_ports/mem_ops.h
+vpxdec.SRCS                 += aom_ports/mem_ops_aligned.h
+vpxdec.SRCS                 += aom_ports/msvc.h
+vpxdec.SRCS                 += aom_ports/vpx_timer.h
+vpxdec.SRCS                 += aom/vpx_integer.h
 vpxdec.SRCS                 += args.c args.h
 vpxdec.SRCS                 += ivfdec.c ivfdec.h
 vpxdec.SRCS                 += tools_common.c tools_common.h
@@ -92,10 +92,10 @@
 vpxenc.SRCS                 += rate_hist.c rate_hist.h
 vpxenc.SRCS                 += tools_common.c tools_common.h
 vpxenc.SRCS                 += warnings.c warnings.h
-vpxenc.SRCS                 += vpx_ports/mem_ops.h
-vpxenc.SRCS                 += vpx_ports/mem_ops_aligned.h
-vpxenc.SRCS                 += vpx_ports/msvc.h
-vpxenc.SRCS                 += vpx_ports/vpx_timer.h
+vpxenc.SRCS                 += aom_ports/mem_ops.h
+vpxenc.SRCS                 += aom_ports/mem_ops_aligned.h
+vpxenc.SRCS                 += aom_ports/msvc.h
+vpxenc.SRCS                 += aom_ports/vpx_timer.h
 vpxenc.SRCS                 += vpxstats.c vpxstats.h
 ifeq ($(CONFIG_LIBYUV),yes)
   vpxenc.SRCS                 += $(LIBYUV_SRCS)
@@ -115,9 +115,9 @@
 simple_decoder.SRCS                += tools_common.h tools_common.c
 simple_decoder.SRCS                += video_common.h
 simple_decoder.SRCS                += video_reader.h video_reader.c
-simple_decoder.SRCS                += vpx_ports/mem_ops.h
-simple_decoder.SRCS                += vpx_ports/mem_ops_aligned.h
-simple_decoder.SRCS                += vpx_ports/msvc.h
+simple_decoder.SRCS                += aom_ports/mem_ops.h
+simple_decoder.SRCS                += aom_ports/mem_ops_aligned.h
+simple_decoder.SRCS                += aom_ports/msvc.h
 simple_decoder.DESCRIPTION          = Simplified decoder loop
 EXAMPLES-$(CONFIG_DECODERS)        += decode_to_md5.c
 decode_to_md5.SRCS                 += md5_utils.h md5_utils.c
@@ -125,9 +125,9 @@
 decode_to_md5.SRCS                 += tools_common.h tools_common.c
 decode_to_md5.SRCS                 += video_common.h
 decode_to_md5.SRCS                 += video_reader.h video_reader.c
-decode_to_md5.SRCS                 += vpx_ports/mem_ops.h
-decode_to_md5.SRCS                 += vpx_ports/mem_ops_aligned.h
-decode_to_md5.SRCS                 += vpx_ports/msvc.h
+decode_to_md5.SRCS                 += aom_ports/mem_ops.h
+decode_to_md5.SRCS                 += aom_ports/mem_ops_aligned.h
+decode_to_md5.SRCS                 += aom_ports/msvc.h
 decode_to_md5.GUID                  = 59120B9B-2735-4BFE-B022-146CA340FE42
 decode_to_md5.DESCRIPTION           = Frame by frame MD5 checksum
 EXAMPLES-$(CONFIG_ENCODERS)     += simple_encoder.c
@@ -135,7 +135,7 @@
 simple_encoder.SRCS             += tools_common.h tools_common.c
 simple_encoder.SRCS             += video_common.h
 simple_encoder.SRCS             += video_writer.h video_writer.c
-simple_encoder.SRCS             += vpx_ports/msvc.h
+simple_encoder.SRCS             += aom_ports/msvc.h
 simple_encoder.GUID              = 4607D299-8A71-4D2C-9B1D-071899B6FBFD
 simple_encoder.DESCRIPTION       = Simplified encoder loop
 EXAMPLES-$(CONFIG_VP10_ENCODER) += lossless_encoder.c
@@ -143,7 +143,7 @@
 lossless_encoder.SRCS           += tools_common.h tools_common.c
 lossless_encoder.SRCS           += video_common.h
 lossless_encoder.SRCS           += video_writer.h video_writer.c
-lossless_encoder.SRCS           += vpx_ports/msvc.h
+lossless_encoder.SRCS           += aom_ports/msvc.h
 lossless_encoder.GUID            = B63C7C88-5348-46DC-A5A6-CC151EF93366
 lossless_encoder.DESCRIPTION     = Simplified lossless encoder
 EXAMPLES-$(CONFIG_ENCODERS)     += twopass_encoder.c
@@ -151,7 +151,7 @@
 twopass_encoder.SRCS            += tools_common.h tools_common.c
 twopass_encoder.SRCS            += video_common.h
 twopass_encoder.SRCS            += video_writer.h video_writer.c
-twopass_encoder.SRCS            += vpx_ports/msvc.h
+twopass_encoder.SRCS            += aom_ports/msvc.h
 twopass_encoder.GUID             = 73494FA6-4AF9-4763-8FBB-265C92402FD8
 twopass_encoder.DESCRIPTION      = Two-pass encoder loop
 EXAMPLES-$(CONFIG_DECODERS)     += decode_with_drops.c
@@ -159,9 +159,9 @@
 decode_with_drops.SRCS          += tools_common.h tools_common.c
 decode_with_drops.SRCS          += video_common.h
 decode_with_drops.SRCS          += video_reader.h video_reader.c
-decode_with_drops.SRCS          += vpx_ports/mem_ops.h
-decode_with_drops.SRCS          += vpx_ports/mem_ops_aligned.h
-decode_with_drops.SRCS          += vpx_ports/msvc.h
+decode_with_drops.SRCS          += aom_ports/mem_ops.h
+decode_with_drops.SRCS          += aom_ports/mem_ops_aligned.h
+decode_with_drops.SRCS          += aom_ports/msvc.h
 decode_with_drops.GUID           = CE5C53C4-8DDA-438A-86ED-0DDD3CDB8D26
 decode_with_drops.DESCRIPTION    = Drops frames while decoding
 EXAMPLES-$(CONFIG_ENCODERS)        += set_maps.c
@@ -169,7 +169,7 @@
 set_maps.SRCS                      += tools_common.h tools_common.c
 set_maps.SRCS                      += video_common.h
 set_maps.SRCS                      += video_writer.h video_writer.c
-set_maps.SRCS                      += vpx_ports/msvc.h
+set_maps.SRCS                      += aom_ports/msvc.h
 set_maps.GUID                       = ECB2D24D-98B8-4015-A465-A4AF3DCC145F
 set_maps.DESCRIPTION                = Set active and ROI maps
 
@@ -249,7 +249,7 @@
 
 
 # Instantiate linker template for all examples.
-CODEC_LIB=$(if $(CONFIG_DEBUG_LIBS),vpx_g,vpx)
+CODEC_LIB=$(if $(CONFIG_DEBUG_LIBS),aom_g,aom)
 ifneq ($(filter darwin%,$(TGT_OS)),)
 SHARED_LIB_SUF=.dylib
 else
diff --git a/examples/decode_to_md5.c b/examples/decode_to_md5.c
index 51959f3..3cf40e6 100644
--- a/examples/decode_to_md5.c
+++ b/examples/decode_to_md5.c
@@ -33,8 +33,8 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx/vp8dx.h"
-#include "vpx/vpx_decoder.h"
+#include "aom/vp8dx.h"
+#include "aom/vpx_decoder.h"
 
 #include "../md5_utils.h"
 #include "../tools_common.h"
diff --git a/examples/decode_with_drops.c b/examples/decode_with_drops.c
index 29b8be9..17757f6 100644
--- a/examples/decode_with_drops.c
+++ b/examples/decode_with_drops.c
@@ -56,8 +56,8 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx/vp8dx.h"
-#include "vpx/vpx_decoder.h"
+#include "aom/vp8dx.h"
+#include "aom/vpx_decoder.h"
 
 #include "../tools_common.h"
 #include "../video_reader.h"
diff --git a/examples/lossless_encoder.c b/examples/lossless_encoder.c
index 5c380a8..09693c8 100644
--- a/examples/lossless_encoder.c
+++ b/examples/lossless_encoder.c
@@ -12,8 +12,8 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx/vpx_encoder.h"
-#include "vpx/vp8cx.h"
+#include "aom/vpx_encoder.h"
+#include "aom/vp8cx.h"
 
 #include "../tools_common.h"
 #include "../video_writer.h"
diff --git a/examples/set_maps.c b/examples/set_maps.c
index d128e7d..ae6a113 100644
--- a/examples/set_maps.c
+++ b/examples/set_maps.c
@@ -46,8 +46,8 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx/vp8cx.h"
-#include "vpx/vpx_encoder.h"
+#include "aom/vp8cx.h"
+#include "aom/vpx_encoder.h"
 
 #include "../tools_common.h"
 #include "../video_writer.h"
diff --git a/examples/simple_decoder.c b/examples/simple_decoder.c
index 2bb1a05..7b21ebf 100644
--- a/examples/simple_decoder.c
+++ b/examples/simple_decoder.c
@@ -32,7 +32,7 @@
 //
 // Initializing The Codec
 // ----------------------
-// The libvpx decoder is initialized by the call to vpx_codec_dec_init().
+// The libaom decoder is initialized by the call to vpx_codec_dec_init().
 // Determining the codec interface to use is handled by VpxVideoReader and the
 // functions prefixed with vpx_video_reader_. Discussion of those functions is
 // beyond the scope of this example, but the main gist is to open the input file
@@ -79,7 +79,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx/vpx_decoder.h"
+#include "aom/vpx_decoder.h"
 
 #include "../tools_common.h"
 #include "../video_reader.h"
diff --git a/examples/simple_encoder.c b/examples/simple_encoder.c
index 331a2a5..2cae453 100644
--- a/examples/simple_encoder.c
+++ b/examples/simple_encoder.c
@@ -99,7 +99,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_encoder.h"
 
 #include "../tools_common.h"
 #include "../video_writer.h"
diff --git a/examples/twopass_encoder.c b/examples/twopass_encoder.c
index 4c130ec..0ed303a 100644
--- a/examples/twopass_encoder.c
+++ b/examples/twopass_encoder.c
@@ -51,7 +51,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_encoder.h"
 
 #include "../tools_common.h"
 #include "../video_writer.h"
diff --git a/examples/vpxcx_set_ref.c b/examples/vpxcx_set_ref.c
index 6771d42..0d57f4d 100644
--- a/examples/vpxcx_set_ref.c
+++ b/examples/vpxcx_set_ref.c
@@ -50,9 +50,9 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx/vp8cx.h"
-#include "vpx/vpx_decoder.h"
-#include "vpx/vpx_encoder.h"
+#include "aom/vp8cx.h"
+#include "aom/vpx_decoder.h"
+#include "aom/vpx_encoder.h"
 
 #include "./tools_common.h"
 #include "./video_writer.h"
diff --git a/ivfdec.c b/ivfdec.c
index f64e594..24a0d94 100644
--- a/ivfdec.c
+++ b/ivfdec.c
@@ -12,7 +12,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx_ports/mem_ops.h"
+#include "aom_ports/mem_ops.h"
 
 #include "./ivfdec.h"
 
diff --git a/ivfenc.c b/ivfenc.c
index a50d318..b1e0f77 100644
--- a/ivfenc.c
+++ b/ivfenc.c
@@ -10,8 +10,8 @@
 
 #include "./ivfenc.h"
 
-#include "vpx/vpx_encoder.h"
-#include "vpx_ports/mem_ops.h"
+#include "aom/vpx_encoder.h"
+#include "aom_ports/mem_ops.h"
 
 void ivf_write_file_header(FILE *outfile, const struct vpx_codec_enc_cfg *cfg,
                            unsigned int fourcc, int frame_cnt) {
diff --git a/libs.mk b/libs.mk
index b42c623..2979cec 100644
--- a/libs.mk
+++ b/libs.mk
@@ -34,56 +34,56 @@
 CODEC_SRCS-yes += CHANGELOG
 CODEC_SRCS-yes += libs.mk
 
-include $(SRC_PATH_BARE)/vpx/vpx_codec.mk
-CODEC_SRCS-yes += $(addprefix vpx/,$(call enabled,API_SRCS))
-CODEC_DOC_SRCS += $(addprefix vpx/,$(call enabled,API_DOC_SRCS))
+include $(SRC_PATH_BARE)/aom/vpx_codec.mk
+CODEC_SRCS-yes += $(addprefix aom/,$(call enabled,API_SRCS))
+CODEC_DOC_SRCS += $(addprefix aom/,$(call enabled,API_DOC_SRCS))
 
-include $(SRC_PATH_BARE)/vpx_mem/vpx_mem.mk
-CODEC_SRCS-yes += $(addprefix vpx_mem/,$(call enabled,MEM_SRCS))
+include $(SRC_PATH_BARE)/aom_mem/vpx_mem.mk
+CODEC_SRCS-yes += $(addprefix aom_mem/,$(call enabled,MEM_SRCS))
 
-include $(SRC_PATH_BARE)/vpx_scale/vpx_scale.mk
-CODEC_SRCS-yes += $(addprefix vpx_scale/,$(call enabled,SCALE_SRCS))
+include $(SRC_PATH_BARE)/aom_scale/vpx_scale.mk
+CODEC_SRCS-yes += $(addprefix aom_scale/,$(call enabled,SCALE_SRCS))
 
-include $(SRC_PATH_BARE)/vpx_ports/vpx_ports.mk
-CODEC_SRCS-yes += $(addprefix vpx_ports/,$(call enabled,PORTS_SRCS))
+include $(SRC_PATH_BARE)/aom_ports/vpx_ports.mk
+CODEC_SRCS-yes += $(addprefix aom_ports/,$(call enabled,PORTS_SRCS))
 
-include $(SRC_PATH_BARE)/vpx_dsp/vpx_dsp.mk
-CODEC_SRCS-yes += $(addprefix vpx_dsp/,$(call enabled,DSP_SRCS))
+include $(SRC_PATH_BARE)/aom_dsp/vpx_dsp.mk
+CODEC_SRCS-yes += $(addprefix aom_dsp/,$(call enabled,DSP_SRCS))
 
-include $(SRC_PATH_BARE)/vpx_util/vpx_util.mk
-CODEC_SRCS-yes += $(addprefix vpx_util/,$(call enabled,UTIL_SRCS))
+include $(SRC_PATH_BARE)/aom_util/vpx_util.mk
+CODEC_SRCS-yes += $(addprefix aom_util/,$(call enabled,UTIL_SRCS))
 
 #  VP10 make file
 ifeq ($(CONFIG_VP10),yes)
-  VP10_PREFIX=vp10/
+  VP10_PREFIX=av1/
   include $(SRC_PATH_BARE)/$(VP10_PREFIX)vp10_common.mk
 endif
 
 ifeq ($(CONFIG_VP10_ENCODER),yes)
-  VP10_PREFIX=vp10/
+  VP10_PREFIX=av1/
   include $(SRC_PATH_BARE)/$(VP10_PREFIX)vp10cx.mk
   CODEC_SRCS-yes += $(addprefix $(VP10_PREFIX),$(call enabled,VP10_CX_SRCS))
   CODEC_EXPORTS-yes += $(addprefix $(VP10_PREFIX),$(VP10_CX_EXPORTS))
-  CODEC_SRCS-yes += $(VP10_PREFIX)vp10cx.mk vpx/vp8.h vpx/vp8cx.h
-  INSTALL-LIBS-yes += include/vpx/vp8.h include/vpx/vp8cx.h
-  INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/$(VP10_PREFIX)/%
-  CODEC_DOC_SRCS += vpx/vp8.h vpx/vp8cx.h
+  CODEC_SRCS-yes += $(VP10_PREFIX)vp10cx.mk aom/vp8.h aom/vp8cx.h
+  INSTALL-LIBS-yes += include/aom/vp8.h include/aom/vp8cx.h
+  INSTALL_MAPS += include/aom/% $(SRC_PATH_BARE)/$(VP10_PREFIX)/%
+  CODEC_DOC_SRCS += aom/vp8.h aom/vp8cx.h
   CODEC_DOC_SECTIONS += vp9 vp9_encoder
 endif
 
 ifeq ($(CONFIG_VP10_DECODER),yes)
-  VP10_PREFIX=vp10/
+  VP10_PREFIX=av1/
   include $(SRC_PATH_BARE)/$(VP10_PREFIX)vp10dx.mk
   CODEC_SRCS-yes += $(addprefix $(VP10_PREFIX),$(call enabled,VP10_DX_SRCS))
   CODEC_EXPORTS-yes += $(addprefix $(VP10_PREFIX),$(VP10_DX_EXPORTS))
-  CODEC_SRCS-yes += $(VP10_PREFIX)vp10dx.mk vpx/vp8.h vpx/vp8dx.h
-  INSTALL-LIBS-yes += include/vpx/vp8.h include/vpx/vp8dx.h
-  INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/$(VP10_PREFIX)/%
-  CODEC_DOC_SRCS += vpx/vp8.h vpx/vp8dx.h
+  CODEC_SRCS-yes += $(VP10_PREFIX)vp10dx.mk aom/vp8.h aom/vp8dx.h
+  INSTALL-LIBS-yes += include/aom/vp8.h include/aom/vp8dx.h
+  INSTALL_MAPS += include/aom/% $(SRC_PATH_BARE)/$(VP10_PREFIX)/%
+  CODEC_DOC_SRCS += aom/vp8.h aom/vp8dx.h
   CODEC_DOC_SECTIONS += vp9 vp9_decoder
 endif
 
-VP10_PREFIX=vp10/
+VP10_PREFIX=av1/
 $(BUILD_PFX)$(VP10_PREFIX)%.c.o: CFLAGS += -Wextra
 
 ifeq ($(CONFIG_ENCODERS),yes)
@@ -104,8 +104,8 @@
 
 # The following pairs define a mapping of locations in the distribution
 # tree to locations in the source/build trees.
-INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/vpx/%
-INSTALL_MAPS += include/vpx/% $(SRC_PATH_BARE)/vpx_ports/%
+INSTALL_MAPS += include/aom/% $(SRC_PATH_BARE)/aom/%
+INSTALL_MAPS += include/aom/% $(SRC_PATH_BARE)/aom_ports/%
 INSTALL_MAPS += $(LIBSUBDIR)/%     %
 INSTALL_MAPS += src/%     $(SRC_PATH_BARE)/%
 ifeq ($(CONFIG_MSVS),yes)
@@ -115,25 +115,25 @@
 
 CODEC_SRCS-yes += build/make/version.sh
 CODEC_SRCS-yes += build/make/rtcd.pl
-CODEC_SRCS-yes += vpx_ports/emmintrin_compat.h
-CODEC_SRCS-yes += vpx_ports/mem_ops.h
-CODEC_SRCS-yes += vpx_ports/mem_ops_aligned.h
-CODEC_SRCS-yes += vpx_ports/vpx_once.h
+CODEC_SRCS-yes += aom_ports/emmintrin_compat.h
+CODEC_SRCS-yes += aom_ports/mem_ops.h
+CODEC_SRCS-yes += aom_ports/mem_ops_aligned.h
+CODEC_SRCS-yes += aom_ports/vpx_once.h
 CODEC_SRCS-yes += $(BUILD_PFX)vpx_config.c
 INSTALL-SRCS-no += $(BUILD_PFX)vpx_config.c
 ifeq ($(ARCH_X86)$(ARCH_X86_64),yes)
 INSTALL-SRCS-$(CONFIG_CODEC_SRCS) += third_party/x86inc/x86inc.asm
 endif
-CODEC_EXPORTS-yes += vpx/exports_com
-CODEC_EXPORTS-$(CONFIG_ENCODERS) += vpx/exports_enc
-CODEC_EXPORTS-$(CONFIG_DECODERS) += vpx/exports_dec
+CODEC_EXPORTS-yes += aom/exports_com
+CODEC_EXPORTS-$(CONFIG_ENCODERS) += aom/exports_enc
+CODEC_EXPORTS-$(CONFIG_DECODERS) += aom/exports_dec
 
-INSTALL-LIBS-yes += include/vpx/vpx_codec.h
-INSTALL-LIBS-yes += include/vpx/vpx_frame_buffer.h
-INSTALL-LIBS-yes += include/vpx/vpx_image.h
-INSTALL-LIBS-yes += include/vpx/vpx_integer.h
-INSTALL-LIBS-$(CONFIG_DECODERS) += include/vpx/vpx_decoder.h
-INSTALL-LIBS-$(CONFIG_ENCODERS) += include/vpx/vpx_encoder.h
+INSTALL-LIBS-yes += include/aom/vpx_codec.h
+INSTALL-LIBS-yes += include/aom/vpx_frame_buffer.h
+INSTALL-LIBS-yes += include/aom/vpx_image.h
+INSTALL-LIBS-yes += include/aom/vpx_integer.h
+INSTALL-LIBS-$(CONFIG_DECODERS) += include/aom/vpx_decoder.h
+INSTALL-LIBS-$(CONFIG_ENCODERS) += include/aom/vpx_encoder.h
 ifeq ($(CONFIG_EXTERNAL_BUILD),yes)
 ifeq ($(CONFIG_MSVS),yes)
 INSTALL-LIBS-yes                  += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/$(CODEC_LIB).lib)
@@ -142,8 +142,8 @@
 INSTALL-LIBS-$(CONFIG_SHARED) += $(foreach p,$(VS_PLATFORMS),$(LIBSUBDIR)/$(p)/vpx.exp)
 endif
 else
-INSTALL-LIBS-$(CONFIG_STATIC) += $(LIBSUBDIR)/libvpx.a
-INSTALL-LIBS-$(CONFIG_DEBUG_LIBS) += $(LIBSUBDIR)/libvpx_g.a
+INSTALL-LIBS-$(CONFIG_STATIC) += $(LIBSUBDIR)/libaom.a
+INSTALL-LIBS-$(CONFIG_DEBUG_LIBS) += $(LIBSUBDIR)/libaom_g.a
 endif
 
 CODEC_SRCS=$(call enabled,CODEC_SRCS)
@@ -153,10 +153,10 @@
 
 # Generate a list of all enabled sources, in particular for exporting to gyp
 # based build systems.
-libvpx_srcs.txt:
+libaom_srcs.txt:
 	@echo "    [CREATE] $@"
 	@echo $(CODEC_SRCS) | xargs -n1 echo | LC_ALL=C sort -u > $@
-CLEAN-OBJS += libvpx_srcs.txt
+CLEAN-OBJS += libaom_srcs.txt
 
 
 ifeq ($(CONFIG_EXTERNAL_BUILD),yes)
@@ -174,7 +174,7 @@
 ASM_INCLUDES := \
     third_party/x86inc/x86inc.asm \
     vpx_config.asm \
-    vpx_ports/x86_abi_support.asm \
+    aom_ports/x86_abi_support.asm \
 
 vpx.$(VCPROJ_SFX): $(CODEC_SRCS) vpx.def
 	@echo "    [CREATE] $@"
@@ -198,101 +198,101 @@
 
 endif
 else
-LIBVPX_OBJS=$(call objs,$(CODEC_SRCS))
-OBJS-yes += $(LIBVPX_OBJS)
-LIBS-$(if yes,$(CONFIG_STATIC)) += $(BUILD_PFX)libvpx.a $(BUILD_PFX)libvpx_g.a
-$(BUILD_PFX)libvpx_g.a: $(LIBVPX_OBJS)
+LIBAOM_OBJS=$(call objs,$(CODEC_SRCS))
+OBJS-yes += $(LIBAOM_OBJS)
+LIBS-$(if yes,$(CONFIG_STATIC)) += $(BUILD_PFX)libaom.a $(BUILD_PFX)libaom_g.a
+$(BUILD_PFX)libaom_g.a: $(LIBAOM_OBJS)
 
 SO_VERSION_MAJOR := 3
 SO_VERSION_MINOR := 0
 SO_VERSION_PATCH := 0
 ifeq ($(filter darwin%,$(TGT_OS)),$(TGT_OS))
-LIBVPX_SO               := libvpx.$(SO_VERSION_MAJOR).dylib
+LIBAOM_SO               := libaom.$(SO_VERSION_MAJOR).dylib
 SHARED_LIB_SUF          := .dylib
-EXPORT_FILE             := libvpx.syms
-LIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
-                             libvpx.dylib  )
+EXPORT_FILE             := libaom.syms
+LIBAOM_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
+                             libaom.dylib  )
 else
 ifeq ($(filter iphonesimulator%,$(TGT_OS)),$(TGT_OS))
-LIBVPX_SO               := libvpx.$(SO_VERSION_MAJOR).dylib
+LIBAOM_SO               := libaom.$(SO_VERSION_MAJOR).dylib
 SHARED_LIB_SUF          := .dylib
-EXPORT_FILE             := libvpx.syms
-LIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, libvpx.dylib)
+EXPORT_FILE             := libaom.syms
+LIBAOM_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, libaom.dylib)
 else
 ifeq ($(filter os2%,$(TGT_OS)),$(TGT_OS))
-LIBVPX_SO               := libvpx$(SO_VERSION_MAJOR).dll
+LIBAOM_SO               := libaom$(SO_VERSION_MAJOR).dll
 SHARED_LIB_SUF          := _dll.a
-EXPORT_FILE             := libvpx.def
-LIBVPX_SO_SYMLINKS      :=
-LIBVPX_SO_IMPLIB        := libvpx_dll.a
+EXPORT_FILE             := libaom.def
+LIBAOM_SO_SYMLINKS      :=
+LIBAOM_SO_IMPLIB        := libaom_dll.a
 else
-LIBVPX_SO               := libvpx.so.$(SO_VERSION_MAJOR).$(SO_VERSION_MINOR).$(SO_VERSION_PATCH)
+LIBAOM_SO               := libaom.so.$(SO_VERSION_MAJOR).$(SO_VERSION_MINOR).$(SO_VERSION_PATCH)
 SHARED_LIB_SUF          := .so
-EXPORT_FILE             := libvpx.ver
-LIBVPX_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
-                             libvpx.so libvpx.so.$(SO_VERSION_MAJOR) \
-                             libvpx.so.$(SO_VERSION_MAJOR).$(SO_VERSION_MINOR))
+EXPORT_FILE             := libaom.ver
+LIBAOM_SO_SYMLINKS      := $(addprefix $(LIBSUBDIR)/, \
+                             libaom.so libaom.so.$(SO_VERSION_MAJOR) \
+                             libaom.so.$(SO_VERSION_MAJOR).$(SO_VERSION_MINOR))
 endif
 endif
 endif
 
-LIBS-$(CONFIG_SHARED) += $(BUILD_PFX)$(LIBVPX_SO)\
-                           $(notdir $(LIBVPX_SO_SYMLINKS)) \
-                           $(if $(LIBVPX_SO_IMPLIB), $(BUILD_PFX)$(LIBVPX_SO_IMPLIB))
-$(BUILD_PFX)$(LIBVPX_SO): $(LIBVPX_OBJS) $(EXPORT_FILE)
-$(BUILD_PFX)$(LIBVPX_SO): extralibs += -lm
-$(BUILD_PFX)$(LIBVPX_SO): SONAME = libvpx.so.$(SO_VERSION_MAJOR)
-$(BUILD_PFX)$(LIBVPX_SO): EXPORTS_FILE = $(EXPORT_FILE)
+LIBS-$(CONFIG_SHARED) += $(BUILD_PFX)$(LIBAOM_SO)\
+                           $(notdir $(LIBAOM_SO_SYMLINKS)) \
+                           $(if $(LIBAOM_SO_IMPLIB), $(BUILD_PFX)$(LIBAOM_SO_IMPLIB))
+$(BUILD_PFX)$(LIBAOM_SO): $(LIBAOM_OBJS) $(EXPORT_FILE)
+$(BUILD_PFX)$(LIBAOM_SO): extralibs += -lm
+$(BUILD_PFX)$(LIBAOM_SO): SONAME = libaom.so.$(SO_VERSION_MAJOR)
+$(BUILD_PFX)$(LIBAOM_SO): EXPORTS_FILE = $(EXPORT_FILE)
 
-libvpx.ver: $(call enabled,CODEC_EXPORTS)
+libaom.ver: $(call enabled,CODEC_EXPORTS)
 	@echo "    [CREATE] $@"
 	$(qexec)echo "{ global:" > $@
 	$(qexec)for f in $?; do awk '{print $$2";"}' < $$f >>$@; done
 	$(qexec)echo "local: *; };" >> $@
-CLEAN-OBJS += libvpx.ver
+CLEAN-OBJS += libaom.ver
 
-libvpx.syms: $(call enabled,CODEC_EXPORTS)
+libaom.syms: $(call enabled,CODEC_EXPORTS)
 	@echo "    [CREATE] $@"
 	$(qexec)awk '{print "_"$$2}' $^ >$@
-CLEAN-OBJS += libvpx.syms
+CLEAN-OBJS += libaom.syms
 
-libvpx.def: $(call enabled,CODEC_EXPORTS)
+libaom.def: $(call enabled,CODEC_EXPORTS)
 	@echo "    [CREATE] $@"
-	$(qexec)echo LIBRARY $(LIBVPX_SO:.dll=) INITINSTANCE TERMINSTANCE > $@
+	$(qexec)echo LIBRARY $(LIBAOM_SO:.dll=) INITINSTANCE TERMINSTANCE > $@
 	$(qexec)echo "DATA MULTIPLE NONSHARED" >> $@
 	$(qexec)echo "EXPORTS" >> $@
 	$(qexec)awk '{print "_"$$2}' $^ >>$@
-CLEAN-OBJS += libvpx.def
+CLEAN-OBJS += libaom.def
 
-libvpx_dll.a: $(LIBVPX_SO)
+libaom_dll.a: $(LIBAOM_SO)
 	@echo "    [IMPLIB] $@"
 	$(qexec)emximp -o $@ $<
-CLEAN-OBJS += libvpx_dll.a
+CLEAN-OBJS += libaom_dll.a
 
-define libvpx_symlink_template
+define libaom_symlink_template
 $(1): $(2)
 	@echo "    [LN]     $(2) $$@"
 	$(qexec)mkdir -p $$(dir $$@)
 	$(qexec)ln -sf $(2) $$@
 endef
 
-$(eval $(call libvpx_symlink_template,\
-    $(addprefix $(BUILD_PFX),$(notdir $(LIBVPX_SO_SYMLINKS))),\
-    $(BUILD_PFX)$(LIBVPX_SO)))
-$(eval $(call libvpx_symlink_template,\
-    $(addprefix $(DIST_DIR)/,$(LIBVPX_SO_SYMLINKS)),\
-    $(LIBVPX_SO)))
+$(eval $(call libaom_symlink_template,\
+    $(addprefix $(BUILD_PFX),$(notdir $(LIBAOM_SO_SYMLINKS))),\
+    $(BUILD_PFX)$(LIBAOM_SO)))
+$(eval $(call libaom_symlink_template,\
+    $(addprefix $(DIST_DIR)/,$(LIBAOM_SO_SYMLINKS)),\
+    $(LIBAOM_SO)))
 
 
-INSTALL-LIBS-$(CONFIG_SHARED) += $(LIBVPX_SO_SYMLINKS)
-INSTALL-LIBS-$(CONFIG_SHARED) += $(LIBSUBDIR)/$(LIBVPX_SO)
-INSTALL-LIBS-$(CONFIG_SHARED) += $(if $(LIBVPX_SO_IMPLIB),$(LIBSUBDIR)/$(LIBVPX_SO_IMPLIB))
+INSTALL-LIBS-$(CONFIG_SHARED) += $(LIBAOM_SO_SYMLINKS)
+INSTALL-LIBS-$(CONFIG_SHARED) += $(LIBSUBDIR)/$(LIBAOM_SO)
+INSTALL-LIBS-$(CONFIG_SHARED) += $(if $(LIBAOM_SO_IMPLIB),$(LIBSUBDIR)/$(LIBAOM_SO_IMPLIB))
 
 
 LIBS-yes += vpx.pc
 vpx.pc: config.mk libs.mk
 	@echo "    [CREATE] $@"
-	$(qexec)echo '# pkg-config file from libvpx $(VERSION_STRING)' > $@
+	$(qexec)echo '# pkg-config file from libaom $(VERSION_STRING)' > $@
 	$(qexec)echo 'prefix=$(PREFIX)' >> $@
 	$(qexec)echo 'exec_prefix=$${prefix}' >> $@
 	$(qexec)echo 'libdir=$${prefix}/$(LIBSUBDIR)' >> $@
@@ -303,7 +303,7 @@
 	$(qexec)echo 'Version: $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)' >> $@
 	$(qexec)echo 'Requires:' >> $@
 	$(qexec)echo 'Conflicts:' >> $@
-	$(qexec)echo 'Libs: -L$${libdir} -lvpx -lm' >> $@
+	$(qexec)echo 'Libs: -L$${libdir} -laom -lm' >> $@
 ifeq ($(HAVE_PTHREAD_H),yes)
 	$(qexec)echo 'Libs.private: -lm -lpthread' >> $@
 else
@@ -352,40 +352,40 @@
 endif
 
 ##
-## libvpx test directives
+## libaom test directives
 ##
 ifeq ($(CONFIG_UNIT_TESTS),yes)
 LIBVPX_TEST_DATA_PATH ?= .
 
 include $(SRC_PATH_BARE)/test/test.mk
-LIBVPX_TEST_SRCS=$(addprefix test/,$(call enabled,LIBVPX_TEST_SRCS))
-LIBVPX_TEST_BIN=./test_libvpx$(EXE_SFX)
-LIBVPX_TEST_DATA=$(addprefix $(LIBVPX_TEST_DATA_PATH)/,\
-                     $(call enabled,LIBVPX_TEST_DATA))
-libvpx_test_data_url=http://downloads.webmproject.org/test_data/libvpx/$(1)
+LIBAOM_TEST_SRCS=$(addprefix test/,$(call enabled,LIBAOM_TEST_SRCS))
+LIBAOM_TEST_BIN=./test_libvpx$(EXE_SFX)
+LIBAOM_TEST_DATA=$(addprefix $(LIBVPX_TEST_DATA_PATH)/,\
+                     $(call enabled,LIBAOM_TEST_DATA))
+libaom_test_data_url=http://downloads.webmproject.org/test_data/libvpx/$(1)
 
 TEST_INTRA_PRED_SPEED_BIN=./test_intra_pred_speed$(EXE_SFX)
 TEST_INTRA_PRED_SPEED_SRCS=$(addprefix test/,$(call enabled,TEST_INTRA_PRED_SPEED_SRCS))
 TEST_INTRA_PRED_SPEED_OBJS := $(sort $(call objs,$(TEST_INTRA_PRED_SPEED_SRCS)))
 
-libvpx_test_srcs.txt:
+libaom_test_srcs.txt:
 	@echo "    [CREATE] $@"
-	@echo $(LIBVPX_TEST_SRCS) | xargs -n1 echo | LC_ALL=C sort -u > $@
-CLEAN-OBJS += libvpx_test_srcs.txt
+	@echo $(LIBAOM_TEST_SRCS) | xargs -n1 echo | LC_ALL=C sort -u > $@
+CLEAN-OBJS += libaom_test_srcs.txt
 
-$(LIBVPX_TEST_DATA): $(SRC_PATH_BARE)/test/test-data.sha1
+$(LIBAOM_TEST_DATA): $(SRC_PATH_BARE)/test/test-data.sha1
 	@echo "    [DOWNLOAD] $@"
 	$(qexec)trap 'rm -f $@' INT TERM &&\
-            curl -L -o $@ $(call libvpx_test_data_url,$(@F))
+            curl -L -o $@ $(call libaom_test_data_url,$(@F))
 
-testdata:: $(LIBVPX_TEST_DATA)
+testdata:: $(LIBAOM_TEST_DATA)
 	$(qexec)[ -x "$$(which sha1sum)" ] && sha1sum=sha1sum;\
           [ -x "$$(which shasum)" ] && sha1sum=shasum;\
           [ -x "$$(which sha1)" ] && sha1sum=sha1;\
           if [ -n "$${sha1sum}" ]; then\
             set -e;\
             echo "Checking test data:";\
-            for f in $(call enabled,LIBVPX_TEST_DATA); do\
+            for f in $(call enabled,LIBAOM_TEST_DATA); do\
                 grep $$f $(SRC_PATH_BARE)/test/test-data.sha1 |\
                     (cd $(LIBVPX_TEST_DATA_PATH); $${sha1sum} -c);\
             done; \
@@ -412,7 +412,7 @@
 
 PROJECTS-$(CONFIG_MSVS) += gtest.$(VCPROJ_SFX)
 
-test_libvpx.$(VCPROJ_SFX): $(LIBVPX_TEST_SRCS) vpx.$(VCPROJ_SFX) gtest.$(VCPROJ_SFX)
+test_libvpx.$(VCPROJ_SFX): $(LIBAOM_TEST_SRCS) vpx.$(VCPROJ_SFX) gtest.$(VCPROJ_SFX)
 	@echo "    [CREATE] $@"
 	$(qexec)$(GEN_VCPROJ) \
             --exe \
@@ -430,7 +430,7 @@
 
 PROJECTS-$(CONFIG_MSVS) += test_libvpx.$(VCPROJ_SFX)
 
-LIBVPX_TEST_BIN := $(addprefix $(TGT_OS:win64=x64)/Release/,$(notdir $(LIBVPX_TEST_BIN)))
+LIBAOM_TEST_BIN := $(addprefix $(TGT_OS:win64=x64)/Release/,$(notdir $(LIBAOM_TEST_BIN)))
 
 ifneq ($(strip $(TEST_INTRA_PRED_SPEED_OBJS)),)
 PROJECTS-$(CONFIG_MSVS) += test_intra_pred_speed.$(VCPROJ_SFX)
@@ -466,18 +466,18 @@
 LIBS-yes += $(BUILD_PFX)libgtest.a $(BUILD_PFX)libgtest_g.a
 $(BUILD_PFX)libgtest_g.a: $(GTEST_OBJS)
 
-LIBVPX_TEST_OBJS=$(sort $(call objs,$(LIBVPX_TEST_SRCS)))
-$(LIBVPX_TEST_OBJS) $(LIBVPX_TEST_OBJS:.o=.d): CXXFLAGS += $(GTEST_INCLUDES)
-OBJS-yes += $(LIBVPX_TEST_OBJS)
-BINS-yes += $(LIBVPX_TEST_BIN)
+LIBAOM_TEST_OBJS=$(sort $(call objs,$(LIBAOM_TEST_SRCS)))
+$(LIBAOM_TEST_OBJS) $(LIBAOM_TEST_OBJS:.o=.d): CXXFLAGS += $(GTEST_INCLUDES)
+OBJS-yes += $(LIBAOM_TEST_OBJS)
+BINS-yes += $(LIBAOM_TEST_BIN)
 
-CODEC_LIB=$(if $(CONFIG_DEBUG_LIBS),vpx_g,vpx)
+CODEC_LIB=$(if $(CONFIG_DEBUG_LIBS),aom_g,aom)
 CODEC_LIB_SUF=$(if $(CONFIG_SHARED),$(SHARED_LIB_SUF),.a)
 TEST_LIBS := lib$(CODEC_LIB)$(CODEC_LIB_SUF) libgtest.a
-$(LIBVPX_TEST_BIN): $(TEST_LIBS)
-$(eval $(call linkerxx_template,$(LIBVPX_TEST_BIN), \
-              $(LIBVPX_TEST_OBJS) \
-              -L. -lvpx -lgtest $(extralibs) -lm))
+$(LIBAOM_TEST_BIN): $(TEST_LIBS)
+$(eval $(call linkerxx_template,$(LIBAOM_TEST_BIN), \
+              $(LIBAOM_TEST_OBJS) \
+              -L. -laom -lgtest $(extralibs) -lm))
 
 ifneq ($(strip $(TEST_INTRA_PRED_SPEED_OBJS)),)
 $(TEST_INTRA_PRED_SPEED_OBJS) $(TEST_INTRA_PRED_SPEED_OBJS:.o=.d): CXXFLAGS += $(GTEST_INCLUDES)
@@ -487,7 +487,7 @@
 $(TEST_INTRA_PRED_SPEED_BIN): $(TEST_LIBS)
 $(eval $(call linkerxx_template,$(TEST_INTRA_PRED_SPEED_BIN), \
               $(TEST_INTRA_PRED_SPEED_OBJS) \
-              -L. -lvpx -lgtest $(extralibs) -lm))
+              -L. -laom -lgtest $(extralibs) -lm))
 endif  # TEST_INTRA_PRED_SPEED
 
 endif  # CONFIG_UNIT_TESTS
@@ -495,17 +495,17 @@
 # Install test sources only if codec source is included
 INSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(patsubst $(SRC_PATH_BARE)/%,%,\
     $(shell find $(SRC_PATH_BARE)/third_party/googletest -type f))
-INSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(LIBVPX_TEST_SRCS)
+INSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(LIBAOM_TEST_SRCS)
 INSTALL-SRCS-$(CONFIG_CODEC_SRCS) += $(TEST_INTRA_PRED_SPEED_SRCS)
 
 define test_shard_template
 test:: test_shard.$(1)
 test-no-data-check:: test_shard_ndc.$(1)
-test_shard.$(1) test_shard_ndc.$(1): $(LIBVPX_TEST_BIN)
+test_shard.$(1) test_shard_ndc.$(1): $(LIBAOM_TEST_BIN)
 	@set -e; \
 	 export GTEST_SHARD_INDEX=$(1); \
 	 export GTEST_TOTAL_SHARDS=$(2); \
-	 $(LIBVPX_TEST_BIN)
+	 $(LIBAOM_TEST_BIN)
 test_shard.$(1): testdata
 .PHONY: test_shard.$(1)
 endef
@@ -536,7 +536,7 @@
 endif
 
 ## Update the global src list
-SRCS += $(CODEC_SRCS) $(LIBVPX_TEST_SRCS) $(GTEST_SRCS)
+SRCS += $(CODEC_SRCS) $(LIBAOM_TEST_SRCS) $(GTEST_SRCS)
 
 ##
 ## vpxdec/vpxenc tests.
diff --git a/rate_hist.h b/rate_hist.h
index 00a1676..df49411 100644
--- a/rate_hist.h
+++ b/rate_hist.h
@@ -11,7 +11,7 @@
 #ifndef RATE_HIST_H_
 #define RATE_HIST_H_
 
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_encoder.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/solution.mk b/solution.mk
index 145adc0..8d3531e 100644
--- a/solution.mk
+++ b/solution.mk
@@ -8,7 +8,7 @@
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
 
-# libvpx reverse dependencies (targets that depend on libvpx)
+# libaom reverse dependencies (targets that depend on libaom)
 VPX_NONDEPS=$(addsuffix .$(VCPROJ_SFX),vpx gtest)
 VPX_RDEPS=$(foreach vcp,\
               $(filter-out $(VPX_NONDEPS),$^), --dep=$(vcp:.$(VCPROJ_SFX)=):vpx)
diff --git a/test/acm_random.h b/test/acm_random.h
index eae2cf9..aec4c6b 100644
--- a/test/acm_random.h
+++ b/test/acm_random.h
@@ -13,9 +13,9 @@
 
 #include "third_party/googletest/src/include/gtest/gtest.h"
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 
 class ACMRandom {
  public:
@@ -65,6 +65,6 @@
   testing::internal::Random random_;
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // TEST_ACM_RANDOM_H_
diff --git a/test/active_map_refresh_test.cc b/test/active_map_refresh_test.cc
index 4e69f52..994d474 100644
--- a/test/active_map_refresh_test.cc
+++ b/test/active_map_refresh_test.cc
@@ -57,8 +57,8 @@
 const int kAqModeCyclicRefresh = 3;
 
 class ActiveMapRefreshTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<libvpx_test::TestMode, int> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode, int> {
  protected:
   ActiveMapRefreshTest() : EncoderTest(GET_PARAM(0)) {}
   virtual ~ActiveMapRefreshTest() {}
@@ -69,10 +69,10 @@
     cpu_used_ = GET_PARAM(2);
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
-    ::libvpx_test::Y4mVideoSource *y4m_video =
-        static_cast<libvpx_test::Y4mVideoSource *>(video);
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
+    ::libaom_test::Y4mVideoSource *y4m_video =
+        static_cast<libaom_test::Y4mVideoSource *>(video);
     if (video->frame() == 1) {
       encoder->Control(VP8E_SET_CPUUSED, cpu_used_);
       encoder->Control(VP9E_SET_AQ_MODE, kAqModeCyclicRefresh);
@@ -99,7 +99,7 @@
   }
 
   int cpu_used_;
-  ::libvpx_test::Y4mVideoSource *y4m_holder_;
+  ::libaom_test::Y4mVideoSource *y4m_holder_;
 };
 
 TEST_P(ActiveMapRefreshTest, Test) {
@@ -114,12 +114,12 @@
   cfg_.kf_max_dist = 90000;
 
 #if CONFIG_VP10
-  const int nframes = codec_ == &libvpx_test::kVP10 ? 10 : 30;
+  const int nframes = codec_ == &libaom_test::kVP10 ? 10 : 30;
 #else
   const int nframes = 30;
 #endif  // CONFIG_VP10
-  ::libvpx_test::Y4mVideoSource video("desktop_credits.y4m", 0, nframes);
-  ::libvpx_test::Y4mVideoSource video_holder("desktop_credits.y4m", 0, nframes);
+  ::libaom_test::Y4mVideoSource video("desktop_credits.y4m", 0, nframes);
+  ::libaom_test::Y4mVideoSource video_holder("desktop_credits.y4m", 0, nframes);
   video_holder.Begin();
   y4m_holder_ = &video_holder;
 
@@ -128,7 +128,7 @@
 
 #if CONFIG_VP10
 VP10_INSTANTIATE_TEST_CASE(ActiveMapRefreshTest,
-                           ::testing::Values(::libvpx_test::kRealTime),
+                           ::testing::Values(::libaom_test::kRealTime),
                            ::testing::Range(5, 6));
 #endif  // CONFIG_VP10
 }  // namespace
diff --git a/test/active_map_test.cc b/test/active_map_test.cc
index cdf8f0b..35da706 100644
--- a/test/active_map_test.cc
+++ b/test/active_map_test.cc
@@ -18,8 +18,8 @@
 namespace {
 
 class ActiveMapTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<libvpx_test::TestMode, int> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode, int> {
  protected:
   static const int kWidth = 208;
   static const int kHeight = 144;
@@ -33,8 +33,8 @@
     cpu_used_ = GET_PARAM(2);
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 1) {
       encoder->Control(VP8E_SET_CPUUSED, cpu_used_);
     } else if (video->frame() == 3) {
@@ -75,7 +75,7 @@
     cfg_.g_pass = VPX_RC_ONE_PASS;
     cfg_.rc_end_usage = VPX_CBR;
     cfg_.kf_max_dist = 90000;
-    ::libvpx_test::I420VideoSource video("hantro_odd.yuv", kWidth, kHeight, 30,
+    ::libaom_test::I420VideoSource video("hantro_odd.yuv", kWidth, kHeight, 30,
                                          1, 0, 20);
 
     ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
@@ -91,11 +91,11 @@
 TEST_P(ActiveMapTestLarge, Test) { DoTest(); }
 
 VP10_INSTANTIATE_TEST_CASE(ActiveMapTestLarge,
-                           ::testing::Values(::libvpx_test::kRealTime),
+                           ::testing::Values(::libaom_test::kRealTime),
                            ::testing::Range(0, 5));
 
 VP10_INSTANTIATE_TEST_CASE(ActiveMapTest,
-                           ::testing::Values(::libvpx_test::kRealTime),
+                           ::testing::Values(::libaom_test::kRealTime),
                            ::testing::Range(5, 9));
 
 }  // namespace
diff --git a/test/add_noise_test.cc b/test/add_noise_test.cc
index 4eff8b9..62f14b4 100644
--- a/test/add_noise_test.cc
+++ b/test/add_noise_test.cc
@@ -12,9 +12,9 @@
 #include "test/register_state_check.h"
 #include "third_party/googletest/src/include/gtest/gtest.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/postproc.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/postproc.h"
+#include "aom_mem/vpx_mem.h"
 
 namespace {
 
@@ -26,7 +26,7 @@
 
 class AddNoiseTest : public ::testing::TestWithParam<AddNoiseFunc> {
  public:
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
   virtual ~AddNoiseTest() {}
 };
 
diff --git a/test/altref_test.cc b/test/altref_test.cc
index 8c7dee4..2592914 100644
--- a/test/altref_test.cc
+++ b/test/altref_test.cc
@@ -15,8 +15,8 @@
 namespace {
 
 class AltRefForcedKeyTestLarge
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<libvpx_test::TestMode, int> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode, int> {
  protected:
   AltRefForcedKeyTestLarge()
       : EncoderTest(GET_PARAM(0)), encoding_mode_(GET_PARAM(1)),
@@ -30,14 +30,14 @@
     cfg_.g_threads = 0;
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 0) {
       encoder->Control(VP8E_SET_CPUUSED, cpu_used_);
       encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 1);
 #if CONFIG_VP10_ENCODER
       // override test default for tile columns if necessary.
-      if (GET_PARAM(0) == &libvpx_test::kVP10) {
+      if (GET_PARAM(0) == &libaom_test::kVP10) {
         encoder->Control(VP9E_SET_TILE_COLUMNS, 6);
       }
 #endif
@@ -54,7 +54,7 @@
     ++frame_num_;
   }
 
-  ::libvpx_test::TestMode encoding_mode_;
+  ::libaom_test::TestMode encoding_mode_;
   int cpu_used_;
   unsigned int forced_kf_frame_num_;
   unsigned int frame_num_;
@@ -68,7 +68,7 @@
   for (int i = 0; lag_values[i] != -1; ++i) {
     frame_num_ = 0;
     cfg_.g_lag_in_frames = lag_values[i];
-    libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+    libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                        timebase.den, timebase.num, 0, 30);
     ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
   }
@@ -82,14 +82,14 @@
     frame_num_ = 0;
     forced_kf_frame_num_ = lag_values[i] - 1;
     cfg_.g_lag_in_frames = lag_values[i];
-    libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+    libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                        timebase.den, timebase.num, 0, 30);
     ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
   }
 }
 
 VP10_INSTANTIATE_TEST_CASE(AltRefForcedKeyTestLarge,
-                           ::testing::Values(::libvpx_test::kOnePassGood),
+                           ::testing::Values(::libaom_test::kOnePassGood),
                            ::testing::Range(0, 9));
 
 }  // namespace
diff --git a/test/android/Android.mk b/test/android/Android.mk
index 48872a2..4f0565a 100644
--- a/test/android/Android.mk
+++ b/test/android/Android.mk
@@ -8,7 +8,7 @@
 #
 # This make file builds vpx_test app for android.
 # The test app itself runs on the command line through adb shell
-# The paths are really messed up as the libvpx make file
+# The paths are really messed up as the libaom make file
 # expects to be made from a parent directory.
 CUR_WD := $(call my-dir)
 BINDINGS_DIR := $(CUR_WD)/../../..
@@ -16,13 +16,13 @@
 
 #libwebm
 include $(CLEAR_VARS)
-include $(BINDINGS_DIR)/libvpx/third_party/libwebm/Android.mk
+include $(BINDINGS_DIR)/libaom/third_party/libwebm/Android.mk
 LOCAL_PATH := $(CUR_WD)/../../..
 
-#libvpx
+#libaom
 include $(CLEAR_VARS)
 LOCAL_STATIC_LIBRARIES := libwebm
-include $(BINDINGS_DIR)/libvpx/build/make/Android.mk
+include $(BINDINGS_DIR)/libaom/build/make/Android.mk
 LOCAL_PATH := $(CUR_WD)/../..
 
 #libgtest
@@ -35,10 +35,10 @@
 LOCAL_SRC_FILES := ./third_party/googletest/src/src/gtest-all.cc
 include $(BUILD_STATIC_LIBRARY)
 
-#libvpx_test
+#libaom_test
 include $(CLEAR_VARS)
 LOCAL_ARM_MODE := arm
-LOCAL_MODULE := libvpx_test
+LOCAL_MODULE := libaom_test
 LOCAL_STATIC_LIBRARIES := gtest libwebm
 
 ifeq ($(ENABLE_SHARED),1)
@@ -49,7 +49,7 @@
 
 include $(LOCAL_PATH)/test/test.mk
 LOCAL_C_INCLUDES := $(BINDINGS_DIR)
-FILTERED_SRC := $(sort $(filter %.cc %.c, $(LIBVPX_TEST_SRCS-yes)))
+FILTERED_SRC := $(sort $(filter %.cc %.c, $(LIBAOM_TEST_SRCS-yes)))
 LOCAL_SRC_FILES := $(addprefix ./test/, $(FILTERED_SRC))
 # some test files depend on *_rtcd.h, ensure they're generated first.
 $(eval $(call rtcd_dep_template))
diff --git a/test/android/README b/test/android/README
index 4a1adcf..e5b25d5 100644
--- a/test/android/README
+++ b/test/android/README
@@ -1,12 +1,12 @@
 Android.mk will build vpx unittests on android.
-1) Configure libvpx from the parent directory:
-./libvpx/configure --target=armv7-android-gcc --enable-external-build \
+1) Configure libaom from the parent directory:
+./libaom/configure --target=armv7-android-gcc --enable-external-build \
   --enable-postproc --disable-install-srcs --enable-multi-res-encoding \
   --enable-temporal-denoising --disable-unit-tests --disable-install-docs \
   --disable-examples --disable-runtime-cpu-detect --sdk-path=$NDK
 
 2) From the parent directory, invoke ndk-build:
-NDK_PROJECT_PATH=. ndk-build APP_BUILD_SCRIPT=./libvpx/test/android/Android.mk \
+NDK_PROJECT_PATH=. ndk-build APP_BUILD_SCRIPT=./libaom/test/android/Android.mk \
   APP_ABI=armeabi-v7a APP_PLATFORM=android-18 APP_OPTIM=release \
   APP_STL=gnustl_static
 
@@ -15,7 +15,7 @@
 
 3) Run get_files.py to download the test files:
 python get_files.py -i /path/to/test-data.sha1 -o /path/to/put/files \
-  -u http://downloads.webmproject.org/test_data/libvpx
+  -u http://downloads.webmproject.org/test_data/libaom
 
 4) Transfer files to device using adb. Ensure you have proper permissions for
 the target
diff --git a/test/android/scrape_gtest_log.py b/test/android/scrape_gtest_log.py
index 487845c..44cdcc4 100644
--- a/test/android/scrape_gtest_log.py
+++ b/test/android/scrape_gtest_log.py
@@ -8,7 +8,7 @@
 
 """Standalone script which parses a gtest log for json.
 
-Json is returned returns as an array.  This script is used by the libvpx
+Json is returned returns as an array.  This script is used by the libaom
 waterfall to gather json results mixed in with gtest logs.  This is
 dubious software engineering.
 """
diff --git a/test/aq_segment_test.cc b/test/aq_segment_test.cc
index 396a4fa..bd4e51e 100644
--- a/test/aq_segment_test.cc
+++ b/test/aq_segment_test.cc
@@ -16,8 +16,8 @@
 namespace {
 
 class AqSegmentTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<libvpx_test::TestMode, int> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode, int> {
  protected:
   AqSegmentTest() : EncoderTest(GET_PARAM(0)) {}
   virtual ~AqSegmentTest() {}
@@ -29,8 +29,8 @@
     aq_mode_ = 0;
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 1) {
       encoder->Control(VP8E_SET_CPUUSED, set_cpu_used_);
       encoder->Control(VP9E_SET_AQ_MODE, aq_mode_);
@@ -49,7 +49,7 @@
     cfg_.rc_buf_optimal_sz = 500;
     cfg_.rc_buf_sz = 1000;
     cfg_.rc_target_bitrate = 300;
-    ::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352,
+    ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352,
                                          288, 30, 1, 0, 15);
     ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
   }
@@ -79,11 +79,11 @@
 TEST_P(AqSegmentTestLarge, TestNoMisMatchAQ3) { DoTest(3); }
 
 VP10_INSTANTIATE_TEST_CASE(AqSegmentTest,
-                           ::testing::Values(::libvpx_test::kRealTime,
-                                             ::libvpx_test::kOnePassGood),
+                           ::testing::Values(::libaom_test::kRealTime,
+                                             ::libaom_test::kOnePassGood),
                            ::testing::Range(5, 9));
 VP10_INSTANTIATE_TEST_CASE(AqSegmentTestLarge,
-                           ::testing::Values(::libvpx_test::kRealTime,
-                                             ::libvpx_test::kOnePassGood),
+                           ::testing::Values(::libaom_test::kRealTime,
+                                             ::libaom_test::kOnePassGood),
                            ::testing::Range(3, 5));
 }  // namespace
diff --git a/test/arf_freq_test.cc b/test/arf_freq_test.cc
index 9c00ded..83a0337 100644
--- a/test/arf_freq_test.cc
+++ b/test/arf_freq_test.cc
@@ -15,7 +15,7 @@
 #include "test/util.h"
 #include "test/y4m_video_source.h"
 #include "test/yuv_video_source.h"
-#include "vp10/encoder/ratectrl.h"
+#include "av1/encoder/ratectrl.h"
 
 namespace {
 
@@ -38,7 +38,7 @@
 } TestVideoParam;
 
 typedef struct {
-  libvpx_test::TestMode mode;
+  libaom_test::TestMode mode;
   int cpu_used;
 } TestEncodeParam;
 
@@ -55,9 +55,9 @@
 };
 
 const TestEncodeParam kEncodeVectors[] = {
-  { ::libvpx_test::kOnePassGood, 2 }, { ::libvpx_test::kOnePassGood, 5 },
-  { ::libvpx_test::kTwoPassGood, 1 }, { ::libvpx_test::kTwoPassGood, 2 },
-  { ::libvpx_test::kTwoPassGood, 5 }, { ::libvpx_test::kRealTime, 5 },
+  { ::libaom_test::kOnePassGood, 2 }, { ::libaom_test::kOnePassGood, 5 },
+  { ::libaom_test::kTwoPassGood, 1 }, { ::libaom_test::kTwoPassGood, 2 },
+  { ::libaom_test::kTwoPassGood, 5 }, { ::libaom_test::kRealTime, 5 },
 };
 
 const int kMinArfVectors[] = {
@@ -75,8 +75,8 @@
 }
 
 class ArfFreqTestLarge
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith3Params<TestVideoParam,
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith3Params<TestVideoParam,
                                                  TestEncodeParam, int> {
  protected:
   ArfFreqTestLarge()
@@ -88,7 +88,7 @@
   virtual void SetUp() {
     InitializeConfig();
     SetMode(test_encode_param_.mode);
-    if (test_encode_param_.mode != ::libvpx_test::kRealTime) {
+    if (test_encode_param_.mode != ::libaom_test::kRealTime) {
       cfg_.g_lag_in_frames = 25;
       cfg_.rc_end_usage = VPX_VBR;
     } else {
@@ -142,14 +142,14 @@
     }
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 0) {
       encoder->Control(VP9E_SET_FRAME_PARALLEL_DECODING, 1);
       encoder->Control(VP9E_SET_TILE_COLUMNS, 4);
       encoder->Control(VP8E_SET_CPUUSED, test_encode_param_.cpu_used);
       encoder->Control(VP9E_SET_MIN_GF_INTERVAL, min_arf_requested_);
-      if (test_encode_param_.mode != ::libvpx_test::kRealTime) {
+      if (test_encode_param_.mode != ::libaom_test::kRealTime) {
         encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 1);
         encoder->Control(VP8E_SET_ARNR_MAXFRAMES, 7);
         encoder->Control(VP8E_SET_ARNR_STRENGTH, 5);
@@ -188,12 +188,12 @@
   init_flags_ = VPX_CODEC_USE_PSNR;
   if (cfg_.g_bit_depth > 8) init_flags_ |= VPX_CODEC_USE_HIGHBITDEPTH;
 
-  testing::internal::scoped_ptr<libvpx_test::VideoSource> video;
+  testing::internal::scoped_ptr<libaom_test::VideoSource> video;
   if (is_extension_y4m(test_video_param_.filename)) {
-    video.reset(new libvpx_test::Y4mVideoSource(test_video_param_.filename, 0,
+    video.reset(new libaom_test::Y4mVideoSource(test_video_param_.filename, 0,
                                                 kFrames));
   } else {
-    video.reset(new libvpx_test::YUVVideoSource(
+    video.reset(new libaom_test::YUVVideoSource(
         test_video_param_.filename, test_video_param_.fmt,
         test_video_param_.width, test_video_param_.height,
         test_video_param_.framerate_num, test_video_param_.framerate_den, 0,
@@ -219,8 +219,8 @@
 INSTANTIATE_TEST_CASE_P(
     DISABLED_VP10, ArfFreqTestLarge,
     ::testing::Combine(
-        ::testing::Values(static_cast<const libvpx_test::CodecFactory *>(
-            &libvpx_test::kVP10)),
+        ::testing::Values(static_cast<const libaom_test::CodecFactory *>(
+            &libaom_test::kVP10)),
         ::testing::ValuesIn(kTestVectors), ::testing::ValuesIn(kEncodeVectors),
         ::testing::ValuesIn(kMinArfVectors)));
 #endif  // CONFIG_VP10_ENCODER
diff --git a/test/avg_test.cc b/test/avg_test.cc
index 4a5d325..eb3e8b1 100644
--- a/test/avg_test.cc
+++ b/test/avg_test.cc
@@ -21,9 +21,9 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom_mem/vpx_mem.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 class AverageTestBase : public ::testing::Test {
@@ -40,7 +40,7 @@
     source_data_ = NULL;
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   // Handle blocks up to 4 blocks 64x64 with stride up to 128
@@ -199,7 +199,7 @@
   }
 
   virtual void TearDown() {
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
     vpx_free(src_);
   }
 
diff --git a/test/blend_a64_mask_1d_test.cc b/test/blend_a64_mask_1d_test.cc
index 4377e65..c5c5929 100644
--- a/test/blend_a64_mask_1d_test.cc
+++ b/test/blend_a64_mask_1d_test.cc
@@ -19,15 +19,15 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #include "./vp10_rtcd.h"
 
-#include "vp10/common/enums.h"
+#include "av1/common/enums.h"
 
-#include "vpx_dsp/blend.h"
+#include "aom_dsp/blend.h"
 
-using libvpx_test::FunctionEquivalenceTest;
+using libaom_test::FunctionEquivalenceTest;
 
 namespace {
 
@@ -117,7 +117,7 @@
 typedef void (*F8B)(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);
-typedef libvpx_test::FuncParam<F8B> TestFuncs;
+typedef libaom_test::FuncParam<F8B> TestFuncs;
 
 class BlendA64Mask1DTest8B : public BlendA64Mask1DTest<F8B, uint8_t> {
  protected:
@@ -216,7 +216,7 @@
                      uint32_t src0_stride, const uint8_t *src1,
                      uint32_t src1_stride, const uint8_t *mask, int h, int w,
                      int bd);
-typedef libvpx_test::FuncParam<FHBD> TestFuncsHBD;
+typedef libaom_test::FuncParam<FHBD> TestFuncsHBD;
 
 class BlendA64Mask1DTestHBD : public BlendA64Mask1DTest<FHBD, uint16_t> {
  protected:
diff --git a/test/blend_a64_mask_test.cc b/test/blend_a64_mask_test.cc
index 7ea798a..3fe6112 100644
--- a/test/blend_a64_mask_test.cc
+++ b/test/blend_a64_mask_test.cc
@@ -19,15 +19,15 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #include "./vp10_rtcd.h"
 
-#include "vp10/common/enums.h"
+#include "av1/common/enums.h"
 
-#include "vpx_dsp/blend.h"
+#include "aom_dsp/blend.h"
 
-using libvpx_test::FunctionEquivalenceTest;
+using libaom_test::FunctionEquivalenceTest;
 
 namespace {
 
@@ -128,7 +128,7 @@
                     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);
-typedef libvpx_test::FuncParam<F8B> TestFuncs;
+typedef libaom_test::FuncParam<F8B> TestFuncs;
 
 class BlendA64MaskTest8B : public BlendA64MaskTest<F8B, uint8_t> {
  protected:
@@ -192,7 +192,7 @@
                      uint32_t src1_stride, const uint8_t *mask,
                      uint32_t mask_stride, int h, int w, int suby, int subx,
                      int bd);
-typedef libvpx_test::FuncParam<FHBD> TestFuncsHBD;
+typedef libaom_test::FuncParam<FHBD> TestFuncsHBD;
 
 class BlendA64MaskTestHBD : public BlendA64MaskTest<FHBD, uint16_t> {
  protected:
diff --git a/test/boolcoder_test.cc b/test/boolcoder_test.cc
index 5dbfd5c..949907b 100644
--- a/test/boolcoder_test.cc
+++ b/test/boolcoder_test.cc
@@ -15,11 +15,11 @@
 #include "third_party/googletest/src/include/gtest/gtest.h"
 
 #include "test/acm_random.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/bitreader.h"
-#include "vpx_dsp/bitwriter.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/bitreader.h"
+#include "aom_dsp/bitwriter.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 const int num_tests = 10;
diff --git a/test/borders_test.cc b/test/borders_test.cc
index 9057631..e631da5 100644
--- a/test/borders_test.cc
+++ b/test/borders_test.cc
@@ -18,8 +18,8 @@
 namespace {
 
 class BordersTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWithParam<libvpx_test::TestMode> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWithParam<libaom_test::TestMode> {
  protected:
   BordersTest() : EncoderTest(GET_PARAM(0)) {}
   virtual ~BordersTest() {}
@@ -29,8 +29,8 @@
     SetMode(GET_PARAM(1));
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 1) {
       encoder->Control(VP8E_SET_CPUUSED, 1);
       encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 1);
@@ -57,7 +57,7 @@
   cfg_.rc_target_bitrate = 2000;
   cfg_.rc_max_quantizer = 10;
 
-  ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
+  ::libaom_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
                                        40);
 
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
@@ -73,12 +73,12 @@
   cfg_.rc_target_bitrate = 200;
   cfg_.rc_min_quantizer = 40;
 
-  ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
+  ::libaom_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
                                        40);
 
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
 }
 
 VP10_INSTANTIATE_TEST_CASE(BordersTest,
-                           ::testing::Values(::libvpx_test::kTwoPassGood));
+                           ::testing::Values(::libaom_test::kTwoPassGood));
 }  // namespace
diff --git a/test/clear_system_state.h b/test/clear_system_state.h
index 044a5c7..b80cceb 100644
--- a/test/clear_system_state.h
+++ b/test/clear_system_state.h
@@ -12,10 +12,10 @@
 
 #include "./vpx_config.h"
 #if ARCH_X86 || ARCH_X86_64
-#include "vpx_ports/x86.h"
+#include "aom_ports/x86.h"
 #endif
 
-namespace libvpx_test {
+namespace libaom_test {
 
 // Reset system to a known state. This function should be used for all non-API
 // test cases.
@@ -25,5 +25,5 @@
 #endif
 }
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 #endif  // TEST_CLEAR_SYSTEM_STATE_H_
diff --git a/test/codec_factory.h b/test/codec_factory.h
index 6a8d0c8..abbf2e1 100644
--- a/test/codec_factory.h
+++ b/test/codec_factory.h
@@ -11,18 +11,18 @@
 #define TEST_CODEC_FACTORY_H_
 
 #include "./vpx_config.h"
-#include "vpx/vpx_decoder.h"
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_decoder.h"
+#include "aom/vpx_encoder.h"
 #if CONFIG_VP10_ENCODER
-#include "vpx/vp8cx.h"
+#include "aom/vp8cx.h"
 #endif
 #if CONFIG_VP10_DECODER
-#include "vpx/vp8dx.h"
+#include "aom/vp8dx.h"
 #endif
 
 #include "test/decode_test_driver.h"
 #include "test/encode_test_driver.h"
-namespace libvpx_test {
+namespace libaom_test {
 
 const int kCodecFactoryParam = 0;
 
@@ -56,17 +56,17 @@
 template <class T1>
 class CodecTestWithParam
     : public ::testing::TestWithParam<
-          std::tr1::tuple<const libvpx_test::CodecFactory *, T1> > {};
+          std::tr1::tuple<const libaom_test::CodecFactory *, T1> > {};
 
 template <class T1, class T2>
 class CodecTestWith2Params
     : public ::testing::TestWithParam<
-          std::tr1::tuple<const libvpx_test::CodecFactory *, T1, T2> > {};
+          std::tr1::tuple<const libaom_test::CodecFactory *, T1, T2> > {};
 
 template <class T1, class T2, class T3>
 class CodecTestWith3Params
     : public ::testing::TestWithParam<
-          std::tr1::tuple<const libvpx_test::CodecFactory *, T1, T2, T3> > {};
+          std::tr1::tuple<const libaom_test::CodecFactory *, T1, T2, T3> > {};
 
 /*
  * VP10 Codec Definitions
@@ -147,18 +147,18 @@
   }
 };
 
-const libvpx_test::VP10CodecFactory kVP10;
+const libaom_test::VP10CodecFactory kVP10;
 
 #define VP10_INSTANTIATE_TEST_CASE(test, ...)                               \
   INSTANTIATE_TEST_CASE_P(                                                  \
       VP10, test,                                                           \
       ::testing::Combine(                                                   \
-          ::testing::Values(static_cast<const libvpx_test::CodecFactory *>( \
-              &libvpx_test::kVP10)),                                        \
+          ::testing::Values(static_cast<const libaom_test::CodecFactory *>( \
+              &libaom_test::kVP10)),                                        \
           __VA_ARGS__))
 #else
 #define VP10_INSTANTIATE_TEST_CASE(test, ...)
 #endif  // CONFIG_VP10
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 #endif  // TEST_CODEC_FACTORY_H_
diff --git a/test/convolve_test.cc b/test/convolve_test.cc
index e3e75d1..910c4ec 100644
--- a/test/convolve_test.cc
+++ b/test/convolve_test.cc
@@ -18,10 +18,10 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_filter.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
 namespace {
 
@@ -311,7 +311,7 @@
 #endif
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
   static void TearDownTestCase() {
     vpx_free(input_ - 1);
@@ -369,7 +369,7 @@
         output_[i] = 0;
     }
 
-    ::libvpx_test::ACMRandom prng;
+    ::libaom_test::ACMRandom prng;
     for (int i = 0; i < kInputBufferSize; ++i) {
       if (i & 1) {
         input_[i] = 255;
@@ -729,7 +729,7 @@
 #endif
 
   // Populate ref and out with some random data
-  ::libvpx_test::ACMRandom prng;
+  ::libaom_test::ACMRandom prng;
   for (int y = 0; y < Height(); ++y) {
     for (int x = 0; x < Width(); ++x) {
       uint16_t r;
@@ -806,7 +806,7 @@
 #endif
 
   // Populate ref and out with some random data
-  ::libvpx_test::ACMRandom prng;
+  ::libaom_test::ACMRandom prng;
   for (int y = 0; y < Height(); ++y) {
     for (int x = 0; x < Width(); ++x) {
       uint16_t r;
diff --git a/test/cpu_speed_test.cc b/test/cpu_speed_test.cc
index 2ed9113..d7ad2ef 100644
--- a/test/cpu_speed_test.cc
+++ b/test/cpu_speed_test.cc
@@ -19,8 +19,8 @@
 const int kMaxPSNR = 100;
 
 class CpuSpeedTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<libvpx_test::TestMode, int> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode, int> {
  protected:
   CpuSpeedTest()
       : EncoderTest(GET_PARAM(0)), encoding_mode_(GET_PARAM(1)),
@@ -31,7 +31,7 @@
   virtual void SetUp() {
     InitializeConfig();
     SetMode(encoding_mode_);
-    if (encoding_mode_ != ::libvpx_test::kRealTime) {
+    if (encoding_mode_ != ::libaom_test::kRealTime) {
       cfg_.g_lag_in_frames = 25;
       cfg_.rc_end_usage = VPX_VBR;
     } else {
@@ -42,12 +42,12 @@
 
   virtual void BeginPassHook(unsigned int /*pass*/) { min_psnr_ = kMaxPSNR; }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 1) {
       encoder->Control(VP8E_SET_CPUUSED, set_cpu_used_);
       encoder->Control(VP9E_SET_TUNE_CONTENT, tune_content_);
-      if (encoding_mode_ != ::libvpx_test::kRealTime) {
+      if (encoding_mode_ != ::libaom_test::kRealTime) {
         encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 1);
         encoder->Control(VP8E_SET_ARNR_MAXFRAMES, 7);
         encoder->Control(VP8E_SET_ARNR_STRENGTH, 5);
@@ -66,7 +66,7 @@
   void TestEncodeHighBitrate();
   void TestLowBitrate();
 
-  ::libvpx_test::TestMode encoding_mode_;
+  ::libaom_test::TestMode encoding_mode_;
   int set_cpu_used_;
   double min_psnr_;
   int tune_content_;
@@ -83,7 +83,7 @@
   cfg_.rc_max_quantizer = 0;
   cfg_.rc_min_quantizer = 0;
 
-  ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
+  ::libaom_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
                                        10);
 
   init_flags_ = VPX_CODEC_USE_PSNR;
@@ -93,7 +93,7 @@
 }
 
 void CpuSpeedTest::TestScreencastQ0() {
-  ::libvpx_test::Y4mVideoSource video("screendata.y4m", 0, 10);
+  ::libaom_test::Y4mVideoSource video("screendata.y4m", 0, 10);
   cfg_.g_timebase = video.timebase();
   cfg_.rc_2pass_vbr_minsection_pct = 5;
   cfg_.rc_2pass_vbr_maxsection_pct = 2000;
@@ -108,7 +108,7 @@
 }
 
 void CpuSpeedTest::TestTuneScreen() {
-  ::libvpx_test::Y4mVideoSource video("screendata.y4m", 0, 10);
+  ::libaom_test::Y4mVideoSource video("screendata.y4m", 0, 10);
   cfg_.g_timebase = video.timebase();
   cfg_.rc_2pass_vbr_minsection_pct = 5;
   cfg_.rc_2pass_vbr_minsection_pct = 2000;
@@ -133,7 +133,7 @@
   cfg_.rc_max_quantizer = 10;
   cfg_.rc_min_quantizer = 0;
 
-  ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
+  ::libaom_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
                                        10);
 
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
@@ -148,7 +148,7 @@
   cfg_.rc_target_bitrate = 200;
   cfg_.rc_min_quantizer = 40;
 
-  ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
+  ::libaom_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
                                        10);
 
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
@@ -169,11 +169,11 @@
 TEST_P(CpuSpeedTestLarge, TestLowBitrate) { TestLowBitrate(); }
 
 VP10_INSTANTIATE_TEST_CASE(CpuSpeedTest,
-                           ::testing::Values(::libvpx_test::kTwoPassGood,
-                                             ::libvpx_test::kOnePassGood),
+                           ::testing::Values(::libaom_test::kTwoPassGood,
+                                             ::libaom_test::kOnePassGood),
                            ::testing::Range(1, 3));
 VP10_INSTANTIATE_TEST_CASE(CpuSpeedTestLarge,
-                           ::testing::Values(::libvpx_test::kTwoPassGood,
-                                             ::libvpx_test::kOnePassGood),
+                           ::testing::Values(::libaom_test::kTwoPassGood,
+                                             ::libaom_test::kOnePassGood),
                            ::testing::Range(0, 1));
 }  // namespace
diff --git a/test/cx_set_ref.sh b/test/cx_set_ref.sh
index dddb366..7f1e604 100755
--- a/test/cx_set_ref.sh
+++ b/test/cx_set_ref.sh
@@ -8,7 +8,7 @@
 ##  in the file PATENTS.  All contributing project authors may
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
-##  This file tests the libvpx cx_set_ref example. To add new tests to this
+##  This file tests the libaom cx_set_ref example. To add new tests to this
 ##  file, do the following:
 ##    1. Write a shell function (this is your test).
 ##    2. Add the function to cx_set_ref_tests (on a new line).
@@ -27,7 +27,7 @@
 # $1 is the codec name.
 vpx_set_ref() {
   local codec="$1"
-  local encoder="${LIBVPX_BIN_PATH}/vpxcx_set_ref${VPX_TEST_EXE_SUFFIX}"
+  local encoder="${LIBAOM_BIN_PATH}/vpxcx_set_ref${VPX_TEST_EXE_SUFFIX}"
 
   local output_file="${VPX_TEST_OUTPUT_DIR}/${codec}cx_set_ref_${codec}.ivf"
   local ref_frame_num=90
diff --git a/test/datarate_test.cc b/test/datarate_test.cc
index 300b11e..6e66f21 100644
--- a/test/datarate_test.cc
+++ b/test/datarate_test.cc
@@ -14,13 +14,13 @@
 #include "test/i420_video_source.h"
 #include "test/util.h"
 #include "test/y4m_video_source.h"
-#include "vpx/vpx_codec.h"
+#include "aom/vpx_codec.h"
 
 namespace {
 
 class DatarateTestLarge
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<libvpx_test::TestMode, int> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode, int> {
  public:
   DatarateTestLarge() : EncoderTest(GET_PARAM(0)) {}
 
@@ -48,8 +48,8 @@
     denoiser_offon_period_ = -1;
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 0) encoder->Control(VP8E_SET_CPUUSED, set_cpu_used_);
 
     if (denoiser_offon_test_) {
@@ -131,7 +131,7 @@
   cfg_.rc_end_usage = VPX_VBR;
   cfg_.g_lag_in_frames = 0;
 
-  ::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                        30, 1, 0, 300);
   for (int i = 400; i <= 800; i += 400) {
     cfg_.rc_target_bitrate = i;
@@ -155,7 +155,7 @@
   cfg_.rc_end_usage = VPX_CBR;
   cfg_.g_lag_in_frames = 0;
 
-  ::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                        30, 1, 0, 140);
   for (int i = 150; i < 800; i += 200) {
     cfg_.rc_target_bitrate = i;
@@ -170,7 +170,7 @@
 
 // Check basic rate targeting for CBR.
 TEST_P(DatarateTestLarge, BasicRateTargeting444) {
-  ::libvpx_test::Y4mVideoSource video("rush_hour_444.y4m", 0, 140);
+  ::libaom_test::Y4mVideoSource video("rush_hour_444.y4m", 0, 140);
 
   cfg_.g_profile = 1;
   cfg_.g_timebase = video.timebase();
@@ -217,7 +217,7 @@
   // interval (128).
   cfg_.kf_max_dist = 9999;
 
-  ::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                        30, 1, 0, 140);
 
   const int kDropFrameThreshTestStep = 30;
@@ -245,7 +245,7 @@
 }
 
 VP10_INSTANTIATE_TEST_CASE(DatarateTestLarge,
-                           ::testing::Values(::libvpx_test::kOnePassGood,
-                                             ::libvpx_test::kRealTime),
+                           ::testing::Values(::libaom_test::kOnePassGood,
+                                             ::libaom_test::kRealTime),
                            ::testing::Range(2, 9));
 }  // namespace
diff --git a/test/dct16x16_test.cc b/test/dct16x16_test.cc
index d71bc86..8233a52 100644
--- a/test/dct16x16_test.cc
+++ b/test/dct16x16_test.cc
@@ -20,14 +20,14 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vp10/common/entropy.h"
-#include "vp10/common/scan.h"
-#include "vpx/vpx_codec.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/msvc.h"  // for round()
+#include "av1/common/entropy.h"
+#include "av1/common/scan.h"
+#include "aom/vpx_codec.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/msvc.h"  // for round()
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 
@@ -632,7 +632,7 @@
     inv_txfm_ref = idct16x16_ref;
 #endif
   }
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunFwdTxfm(int16_t *in, tran_low_t *out, int stride) {
@@ -684,7 +684,7 @@
     inv_txfm_ref = iht16x16_ref;
 #endif
   }
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunFwdTxfm(int16_t *in, tran_low_t *out, int stride) {
@@ -723,7 +723,7 @@
     pitch_ = 16;
     mask_ = (1 << bit_depth_) - 1;
   }
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunFwdTxfm(int16_t *in, tran_low_t *out, int stride) {}
@@ -749,7 +749,7 @@
     bit_depth_ = GET_PARAM(1);
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   vpx_bit_depth_t bit_depth_;
diff --git a/test/dct32x32_test.cc b/test/dct32x32_test.cc
index b59ab03..629f878 100644
--- a/test/dct32x32_test.cc
+++ b/test/dct32x32_test.cc
@@ -21,13 +21,13 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vp10/common/entropy.h"
-#include "vpx/vpx_codec.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/msvc.h"  // for round()
+#include "av1/common/entropy.h"
+#include "aom/vpx_codec.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/msvc.h"  // for round()
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 
@@ -90,7 +90,7 @@
     mask_ = (1 << bit_depth_) - 1;
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   int version_;
@@ -299,7 +299,7 @@
     bit_depth_ = GET_PARAM(1);
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   vpx_bit_depth_t bit_depth_;
diff --git a/test/decode_api_test.cc b/test/decode_api_test.cc
index 6571154..6aceaba 100644
--- a/test/decode_api_test.cc
+++ b/test/decode_api_test.cc
@@ -12,8 +12,8 @@
 
 #include "./vpx_config.h"
 #include "test/ivf_video_source.h"
-#include "vpx/vp8dx.h"
-#include "vpx/vpx_decoder.h"
+#include "aom/vp8dx.h"
+#include "aom/vpx_decoder.h"
 
 namespace {
 
diff --git a/test/decode_perf_test.cc b/test/decode_perf_test.cc
index d8bfcbe..04ca12f 100644
--- a/test/decode_perf_test.cc
+++ b/test/decode_perf_test.cc
@@ -17,7 +17,7 @@
 #include "test/md5_helper.h"
 #include "test/util.h"
 #include "test/webm_video_source.h"
-#include "vpx_ports/vpx_timer.h"
+#include "aom_ports/vpx_timer.h"
 #include "./ivfenc.h"
 #include "./vpx_version.h"
 
@@ -76,12 +76,12 @@
   const char *const video_name = GET_PARAM(VIDEO_NAME);
   const unsigned threads = GET_PARAM(THREADS);
 
-  libvpx_test::WebMVideoSource video(video_name);
+  libaom_test::WebMVideoSource video(video_name);
   video.Init();
 
   vpx_codec_dec_cfg_t cfg = vpx_codec_dec_cfg_t();
   cfg.threads = threads;
-  libvpx_test::VP9Decoder decoder(cfg, 0);
+  libaom_test::VP9Decoder decoder(cfg, 0);
 
   vpx_usec_timer t;
   vpx_usec_timer_start(&t);
@@ -110,8 +110,8 @@
                         ::testing::ValuesIn(kVP9DecodePerfVectors));
 
 class VP9NewEncodeDecodePerfTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWithParam<libvpx_test::TestMode> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWithParam<libaom_test::TestMode> {
  protected:
   VP9NewEncodeDecodePerfTest()
       : EncoderTest(GET_PARAM(0)), encoding_mode_(GET_PARAM(1)), speed_(0),
@@ -136,8 +136,8 @@
     cfg_.rc_end_usage = VPX_VBR;
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 1) {
       encoder->Control(VP8E_SET_CPUUSED, speed_);
       encoder->Control(VP9E_SET_FRAME_PARALLEL_DECODING, 1);
@@ -179,7 +179,7 @@
   void set_speed(unsigned int speed) { speed_ = speed; }
 
  private:
-  libvpx_test::TestMode encoding_mode_;
+  libaom_test::TestMode encoding_mode_;
   uint32_t speed_;
   FILE *outfile_;
   uint32_t out_frames_;
@@ -213,7 +213,7 @@
   init_flags_ = VPX_CODEC_USE_PSNR;
 
   const char *video_name = kVP9EncodePerfTestVectors[i].name;
-  libvpx_test::I420VideoSource video(
+  libaom_test::I420VideoSource video(
       video_name, kVP9EncodePerfTestVectors[i].width,
       kVP9EncodePerfTestVectors[i].height, timebase.den, timebase.num, 0,
       kVP9EncodePerfTestVectors[i].frames);
@@ -223,12 +223,12 @@
 
   const uint32_t threads = 4;
 
-  libvpx_test::IVFVideoSource decode_video(kNewEncodeOutputFile);
+  libaom_test::IVFVideoSource decode_video(kNewEncodeOutputFile);
   decode_video.Init();
 
   vpx_codec_dec_cfg_t cfg = vpx_codec_dec_cfg_t();
   cfg.threads = threads;
-  libvpx_test::VP9Decoder decoder(cfg, 0);
+  libaom_test::VP9Decoder decoder(cfg, 0);
 
   vpx_usec_timer t;
   vpx_usec_timer_start(&t);
@@ -256,5 +256,5 @@
 }
 
 VP10_INSTANTIATE_TEST_CASE(VP9NewEncodeDecodePerfTest,
-                           ::testing::Values(::libvpx_test::kTwoPassGood));
+                           ::testing::Values(::libaom_test::kTwoPassGood));
 }  // namespace
diff --git a/test/decode_test_driver.cc b/test/decode_test_driver.cc
index a62ddbd..4484d47 100644
--- a/test/decode_test_driver.cc
+++ b/test/decode_test_driver.cc
@@ -15,7 +15,7 @@
 #include "test/register_state_check.h"
 #include "test/video_source.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 
 const char kVP8Name[] = "WebM Project VP8";
 const char kVP10Name[] = "WebM Project VP10";
@@ -120,4 +120,4 @@
 
 void DecoderTest::set_flags(const vpx_codec_flags_t flags) { flags_ = flags; }
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
diff --git a/test/decode_test_driver.h b/test/decode_test_driver.h
index e6ef853..04ae46f 100644
--- a/test/decode_test_driver.h
+++ b/test/decode_test_driver.h
@@ -13,9 +13,9 @@
 #include <cstring>
 #include "third_party/googletest/src/include/gtest/gtest.h"
 #include "./vpx_config.h"
-#include "vpx/vpx_decoder.h"
+#include "aom/vpx_decoder.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 
 class CodecFactory;
 class CompressedVideoSource;
@@ -85,7 +85,7 @@
     return detail ? detail : vpx_codec_error(&decoder_);
   }
 
-  // Passes the external frame buffer information to libvpx.
+  // Passes the external frame buffer information to libaom.
   vpx_codec_err_t SetFrameBufferFunctions(
       vpx_get_frame_buffer_cb_fn_t cb_get,
       vpx_release_frame_buffer_cb_fn_t cb_release, void *user_priv) {
@@ -166,6 +166,6 @@
   vpx_codec_flags_t flags_;
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // TEST_DECODE_TEST_DRIVER_H_
diff --git a/test/decode_to_md5.sh b/test/decode_to_md5.sh
index 854b74f..54d1593 100755
--- a/test/decode_to_md5.sh
+++ b/test/decode_to_md5.sh
@@ -8,7 +8,7 @@
 ##  in the file PATENTS.  All contributing project authors may
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
-##  This file tests the libvpx decode_to_md5 example. To add new tests to this
+##  This file tests the libaom decode_to_md5 example. To add new tests to this
 ##  file, do the following:
 ##    1. Write a shell function (this is your test).
 ##    2. Add the function to decode_to_md5_tests (on a new line).
@@ -28,7 +28,7 @@
 # interpreted as codec name and used solely to name the output file. $3 is the
 # expected md5 sum: It must match that of the final frame.
 decode_to_md5() {
-  local decoder="${LIBVPX_BIN_PATH}/decode_to_md5${VPX_TEST_EXE_SUFFIX}"
+  local decoder="${LIBAOM_BIN_PATH}/decode_to_md5${VPX_TEST_EXE_SUFFIX}"
   local input_file="$1"
   local codec="$2"
   local expected_md5="$3"
diff --git a/test/decode_with_drops.sh b/test/decode_with_drops.sh
index 9b2edb6..bb2416a 100755
--- a/test/decode_with_drops.sh
+++ b/test/decode_with_drops.sh
@@ -8,7 +8,7 @@
 ##  in the file PATENTS.  All contributing project authors may
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
-##  This file tests the libvpx decode_with_drops example. To add new tests to
+##  This file tests the libaom decode_with_drops example. To add new tests to
 ##  this file, do the following:
 ##    1. Write a shell function (this is your test).
 ##    2. Add the function to decode_with_drops_tests (on a new line).
@@ -28,7 +28,7 @@
 # to name the output file. $3 is the drop mode, and is passed directly to
 # decode_with_drops.
 decode_with_drops() {
-  local decoder="${LIBVPX_BIN_PATH}/decode_with_drops${VPX_TEST_EXE_SUFFIX}"
+  local decoder="${LIBAOM_BIN_PATH}/decode_with_drops${VPX_TEST_EXE_SUFFIX}"
   local input_file="$1"
   local codec="$2"
   local output_file="${VPX_TEST_OUTPUT_DIR}/decode_with_drops_${codec}"
diff --git a/test/denoiser_sse2_test.cc b/test/denoiser_sse2_test.cc
index daca510..571f3cf 100644
--- a/test/denoiser_sse2_test.cc
+++ b/test/denoiser_sse2_test.cc
@@ -18,13 +18,13 @@
 #include "test/register_state_check.h"
 #include "test/util.h"
 
-#include "vpx_scale/yv12config.h"
-#include "vpx/vpx_integer.h"
-#include "vp10/common/reconinter.h"
-#include "vp10/encoder/context_tree.h"
-#include "vp10/encoder/denoiser.h"
+#include "aom_scale/yv12config.h"
+#include "aom/vpx_integer.h"
+#include "av1/common/reconinter.h"
+#include "av1/encoder/context_tree.h"
+#include "av1/encoder/denoiser.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 
@@ -35,7 +35,7 @@
 
   virtual void SetUp() { bs_ = GetParam(); }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   BLOCK_SIZE bs_;
diff --git a/test/divu_small_test.cc b/test/divu_small_test.cc
index 3b00e05..ea6da47 100644
--- a/test/divu_small_test.cc
+++ b/test/divu_small_test.cc
@@ -27,9 +27,9 @@
 #include "third_party/googletest/src/include/gtest/gtest.h"
 
 #include "test/acm_random.h"
-#include "vp10/common/odintrin.h"
+#include "av1/common/odintrin.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 TEST(Daala, TestDIVUuptoMAX) {
   for (int d = 1; d <= OD_DIVU_DMAX; d++) {
diff --git a/test/encode_api_test.cc b/test/encode_api_test.cc
index 6c1d5e3..dc3a52b 100644
--- a/test/encode_api_test.cc
+++ b/test/encode_api_test.cc
@@ -11,8 +11,8 @@
 #include "third_party/googletest/src/include/gtest/gtest.h"
 
 #include "./vpx_config.h"
-#include "vpx/vp8cx.h"
-#include "vpx/vpx_encoder.h"
+#include "aom/vp8cx.h"
+#include "aom/vpx_encoder.h"
 
 namespace {
 
diff --git a/test/encode_perf_test.cc b/test/encode_perf_test.cc
index 2411dcd..7f33d55 100644
--- a/test/encode_perf_test.cc
+++ b/test/encode_perf_test.cc
@@ -16,7 +16,7 @@
 #include "test/i420_video_source.h"
 #include "test/util.h"
 #include "test/y4m_video_source.h"
-#include "vpx_ports/vpx_timer.h"
+#include "aom_ports/vpx_timer.h"
 
 namespace {
 
@@ -54,8 +54,8 @@
 #define NELEMENTS(x) (sizeof((x)) / sizeof((x)[0]))
 
 class VP9EncodePerfTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWithParam<libvpx_test::TestMode> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWithParam<libaom_test::TestMode> {
  protected:
   VP9EncodePerfTest()
       : EncoderTest(GET_PARAM(0)), min_psnr_(kMaxPsnr), nframes_(0),
@@ -82,8 +82,8 @@
     cfg_.g_threads = threads_;
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 0) {
       const int log2_tile_columns = 3;
       encoder->Control(VP8E_SET_CPUUSED, speed_);
@@ -116,7 +116,7 @@
  private:
   double min_psnr_;
   unsigned int nframes_;
-  libvpx_test::TestMode encoding_mode_;
+  libaom_test::TestMode encoding_mode_;
   unsigned speed_;
   unsigned int threads_;
 };
@@ -143,7 +143,7 @@
 
         const unsigned frames = kVP9EncodePerfTestVectors[i].frames;
         const char *video_name = kVP9EncodePerfTestVectors[i].name;
-        libvpx_test::I420VideoSource video(
+        libaom_test::I420VideoSource video(
             video_name, kVP9EncodePerfTestVectors[i].width,
             kVP9EncodePerfTestVectors[i].height, timebase.den, timebase.num, 0,
             kVP9EncodePerfTestVectors[i].frames);
@@ -183,5 +183,5 @@
 }
 
 VP10_INSTANTIATE_TEST_CASE(VP9EncodePerfTest,
-                           ::testing::Values(::libvpx_test::kRealTime));
+                           ::testing::Values(::libaom_test::kRealTime));
 }  // namespace
diff --git a/test/encode_test_driver.cc b/test/encode_test_driver.cc
index 61044ee..cb1df9b 100644
--- a/test/encode_test_driver.cc
+++ b/test/encode_test_driver.cc
@@ -13,14 +13,14 @@
 #include "third_party/googletest/src/include/gtest/gtest.h"
 
 #include "./vpx_config.h"
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 #include "test/codec_factory.h"
 #include "test/decode_test_driver.h"
 #include "test/encode_test_driver.h"
 #include "test/register_state_check.h"
 #include "test/video_source.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 void Encoder::InitEncoder(VideoSource *video) {
   vpx_codec_err_t res;
   const vpx_image_t *img = video->img();
@@ -317,4 +317,4 @@
   }
 }
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
diff --git a/test/encode_test_driver.h b/test/encode_test_driver.h
index 94abd03..5762be5 100644
--- a/test/encode_test_driver.h
+++ b/test/encode_test_driver.h
@@ -17,11 +17,11 @@
 
 #include "./vpx_config.h"
 #if CONFIG_VP10_ENCODER
-#include "vpx/vp8cx.h"
+#include "aom/vp8cx.h"
 #endif
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_encoder.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 
 class CodecFactory;
 class VideoSource;
@@ -34,18 +34,18 @@
   kTwoPassBest
 };
 #define ALL_TEST_MODES                                                        \
-  ::testing::Values(::libvpx_test::kRealTime, ::libvpx_test::kOnePassGood,    \
-                    ::libvpx_test::kOnePassBest, ::libvpx_test::kTwoPassGood, \
-                    ::libvpx_test::kTwoPassBest)
+  ::testing::Values(::libaom_test::kRealTime, ::libaom_test::kOnePassGood,    \
+                    ::libaom_test::kOnePassBest, ::libaom_test::kTwoPassGood, \
+                    ::libaom_test::kTwoPassBest)
 
 #define ONE_PASS_TEST_MODES                                                \
-  ::testing::Values(::libvpx_test::kRealTime, ::libvpx_test::kOnePassGood, \
-                    ::libvpx_test::kOnePassBest)
+  ::testing::Values(::libaom_test::kRealTime, ::libaom_test::kOnePassGood, \
+                    ::libaom_test::kOnePassBest)
 
 #define TWO_PASS_TEST_MODES \
-  ::testing::Values(::libvpx_test::kTwoPassGood, ::libvpx_test::kTwoPassBest)
+  ::testing::Values(::libaom_test::kTwoPassGood, ::libaom_test::kTwoPassBest)
 
-// Provides an object to handle the libvpx get_cx_data() iteration pattern
+// Provides an object to handle the libaom get_cx_data() iteration pattern
 class CxDataIterator {
  public:
   explicit CxDataIterator(vpx_codec_ctx_t *encoder)
@@ -60,7 +60,7 @@
   vpx_codec_iter_t iter_;
 };
 
-// Implements an in-memory store for libvpx twopass statistics
+// Implements an in-memory store for libaom twopass statistics
 class TwopassStatsStore {
  public:
   void Append(const vpx_codec_cx_pkt_t &pkt) {
@@ -250,6 +250,6 @@
   vpx_codec_pts_t last_pts_;
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // TEST_ENCODE_TEST_DRIVER_H_
diff --git a/test/encoder_parms_get_to_decoder.cc b/test/encoder_parms_get_to_decoder.cc
index 8af0b7d..e2fe537 100644
--- a/test/encoder_parms_get_to_decoder.cc
+++ b/test/encoder_parms_get_to_decoder.cc
@@ -14,7 +14,7 @@
 #include "test/encode_test_driver.h"
 #include "test/util.h"
 #include "test/y4m_video_source.h"
-#include "vp10/vp10_dx_iface.c"
+#include "av1/vp10_dx_iface.c"
 
 namespace {
 
@@ -53,8 +53,8 @@
 };
 
 class VpxEncoderParmsGetToDecoder
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<EncodeParameters,
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<EncodeParameters,
                                                  EncodePerfTestVideo> {
  protected:
   VpxEncoderParmsGetToDecoder()
@@ -64,7 +64,7 @@
 
   virtual void SetUp() {
     InitializeConfig();
-    SetMode(::libvpx_test::kTwoPassGood);
+    SetMode(::libaom_test::kTwoPassGood);
     cfg_.g_lag_in_frames = 25;
     cfg_.g_error_resilient = encode_parms.error_resilient;
     dec_cfg_.threads = 4;
@@ -72,8 +72,8 @@
     cfg_.rc_target_bitrate = test_video_.bitrate;
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 1) {
       encoder->Control(VP9E_SET_COLOR_SPACE, encode_parms.cs);
       encoder->Control(VP9E_SET_COLOR_RANGE, encode_parms.color_range);
@@ -93,8 +93,8 @@
   }
 
   virtual bool HandleDecodeResult(const vpx_codec_err_t res_dec,
-                                  const libvpx_test::VideoSource & /*video*/,
-                                  libvpx_test::Decoder *decoder) {
+                                  const libaom_test::VideoSource & /*video*/,
+                                  libaom_test::Decoder *decoder) {
     vpx_codec_ctx_t *const vp9_decoder = decoder->GetDecoder();
     vpx_codec_alg_priv_t *const priv =
         reinterpret_cast<vpx_codec_alg_priv_t *>(vp9_decoder->priv);
@@ -135,8 +135,8 @@
 TEST_P(VpxEncoderParmsGetToDecoder, BitstreamParms) {
   init_flags_ = VPX_CODEC_USE_PSNR;
 
-  libvpx_test::VideoSource *const video =
-      new libvpx_test::Y4mVideoSource(test_video_.name, 0, test_video_.frames);
+  libaom_test::VideoSource *const video =
+      new libaom_test::Y4mVideoSource(test_video_.name, 0, test_video_.frames);
   ASSERT_TRUE(video != NULL);
 
   ASSERT_NO_FATAL_FAILURE(RunLoop(video));
diff --git a/test/end_to_end_test.cc b/test/end_to_end_test.cc
index fe5c479..693df78 100644
--- a/test/end_to_end_test.cc
+++ b/test/end_to_end_test.cc
@@ -68,9 +68,9 @@
 };
 
 // Encoding modes tested
-const libvpx_test::TestMode kEncodingModeVectors[] = {
-  ::libvpx_test::kTwoPassGood, ::libvpx_test::kOnePassGood,
-  ::libvpx_test::kRealTime,
+const libaom_test::TestMode kEncodingModeVectors[] = {
+  ::libaom_test::kTwoPassGood, ::libaom_test::kOnePassGood,
+  ::libaom_test::kRealTime,
 };
 
 // Speed settings tested
@@ -85,8 +85,8 @@
 }
 
 class EndToEndTestLarge
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith3Params<libvpx_test::TestMode,
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith3Params<libaom_test::TestMode,
                                                  TestVideoParam, int> {
  protected:
   EndToEndTestLarge()
@@ -99,7 +99,7 @@
   virtual void SetUp() {
     InitializeConfig();
     SetMode(encoding_mode_);
-    if (encoding_mode_ != ::libvpx_test::kRealTime) {
+    if (encoding_mode_ != ::libaom_test::kRealTime) {
       cfg_.g_lag_in_frames = 5;
       cfg_.rc_end_usage = VPX_VBR;
     } else {
@@ -122,18 +122,18 @@
     nframes_++;
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 1) {
       encoder->Control(VP9E_SET_FRAME_PARALLEL_DECODING, 1);
       encoder->Control(VP9E_SET_TILE_COLUMNS, 4);
       encoder->Control(VP8E_SET_CPUUSED, cpu_used_);
       // Test screen coding tools at cpu_used = 1 && encoding mode is two-pass.
-      if (cpu_used_ == 1 && encoding_mode_ == ::libvpx_test::kTwoPassGood)
+      if (cpu_used_ == 1 && encoding_mode_ == ::libaom_test::kTwoPassGood)
         encoder->Control(VP9E_SET_TUNE_CONTENT, VPX_CONTENT_SCREEN);
       else
         encoder->Control(VP9E_SET_TUNE_CONTENT, VPX_CONTENT_DEFAULT);
-      if (encoding_mode_ != ::libvpx_test::kRealTime) {
+      if (encoding_mode_ != ::libaom_test::kRealTime) {
         encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 1);
         encoder->Control(VP8E_SET_ARNR_MAXFRAMES, 7);
         encoder->Control(VP8E_SET_ARNR_STRENGTH, 5);
@@ -157,7 +157,7 @@
  private:
   double psnr_;
   unsigned int nframes_;
-  libvpx_test::TestMode encoding_mode_;
+  libaom_test::TestMode encoding_mode_;
 };
 
 TEST_P(EndToEndTestLarge, EndtoEndPSNRTest) {
@@ -169,12 +169,12 @@
   init_flags_ = VPX_CODEC_USE_PSNR;
   if (cfg_.g_bit_depth > 8) init_flags_ |= VPX_CODEC_USE_HIGHBITDEPTH;
 
-  libvpx_test::VideoSource *video;
+  libaom_test::VideoSource *video;
   if (is_extension_y4m(test_video_param_.filename)) {
     video =
-        new libvpx_test::Y4mVideoSource(test_video_param_.filename, 0, kFrames);
+        new libaom_test::Y4mVideoSource(test_video_param_.filename, 0, kFrames);
   } else {
-    video = new libvpx_test::YUVVideoSource(test_video_param_.filename,
+    video = new libaom_test::YUVVideoSource(test_video_param_.filename,
                                             test_video_param_.fmt, kWidth,
                                             kHeight, kFramerate, 1, 0, kFrames);
   }
diff --git a/test/error_block_test.cc b/test/error_block_test.cc
index 90130ca..8047e3d 100644
--- a/test/error_block_test.cc
+++ b/test/error_block_test.cc
@@ -20,11 +20,11 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vp10/common/entropy.h"
-#include "vpx/vpx_codec.h"
-#include "vpx/vpx_integer.h"
+#include "av1/common/entropy.h"
+#include "aom/vpx_codec.h"
+#include "aom/vpx_integer.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 #if CONFIG_VP9_HIGHBITDEPTH
@@ -46,7 +46,7 @@
     bit_depth_ = GET_PARAM(2);
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   vpx_bit_depth_t bit_depth_;
diff --git a/test/error_resilience_test.cc b/test/error_resilience_test.cc
index 2c1392c..f86f85d 100644
--- a/test/error_resilience_test.cc
+++ b/test/error_resilience_test.cc
@@ -20,8 +20,8 @@
 const int kMaxDroppableFrames = 12;
 
 class ErrorResilienceTestLarge
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWithParam<libvpx_test::TestMode> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWithParam<libaom_test::TestMode> {
  protected:
   ErrorResilienceTestLarge()
       : EncoderTest(GET_PARAM(0)), psnr_(0.0), nframes_(0), mismatch_psnr_(0.0),
@@ -54,8 +54,8 @@
     nframes_++;
   }
 
-  virtual void PreEncodeFrameHook(libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder * /*encoder*/) {
+  virtual void PreEncodeFrameHook(libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder * /*encoder*/) {
     frame_flags_ &=
         ~(VP8_EFLAG_NO_UPD_LAST | VP8_EFLAG_NO_UPD_GF | VP8_EFLAG_NO_UPD_ARF);
     if (droppable_nframes_ > 0 &&
@@ -101,7 +101,7 @@
     mismatch_psnr_ += mismatch_psnr;
     ++mismatch_nframes_;
     // std::cout << "Mismatch frame psnr: " << mismatch_psnr << "\n";
-    ::libvpx_test::EncoderTest::MismatchHook(img1, img2);
+    ::libaom_test::EncoderTest::MismatchHook(img1, img2);
   }
 
   void SetErrorFrames(int num, unsigned int *list) {
@@ -138,7 +138,7 @@
   unsigned int mismatch_nframes_;
   unsigned int error_frames_[kMaxErrorFrames];
   unsigned int droppable_frames_[kMaxDroppableFrames];
-  libvpx_test::TestMode encoding_mode_;
+  libaom_test::TestMode encoding_mode_;
 };
 
 TEST_P(ErrorResilienceTestLarge, OnVersusOff) {
@@ -149,7 +149,7 @@
 
   init_flags_ = VPX_CODEC_USE_PSNR;
 
-  libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                      timebase.den, timebase.num, 0, 30);
 
   // Error resilient mode OFF.
@@ -186,7 +186,7 @@
 
   init_flags_ = VPX_CODEC_USE_PSNR;
 
-  libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                      timebase.den, timebase.num, 0, 40);
 
   // Error resilient mode ON.
diff --git a/test/ethread_test.cc b/test/ethread_test.cc
index 6b80ccc..0a32458 100644
--- a/test/ethread_test.cc
+++ b/test/ethread_test.cc
@@ -19,8 +19,8 @@
 
 namespace {
 class VPxEncoderThreadTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<libvpx_test::TestMode, int> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode, int> {
  protected:
   VPxEncoderThreadTest()
       : EncoderTest(GET_PARAM(0)), encoder_initialized_(false),
@@ -47,7 +47,7 @@
     InitializeConfig();
     SetMode(encoding_mode_);
 
-    if (encoding_mode_ != ::libvpx_test::kRealTime) {
+    if (encoding_mode_ != ::libaom_test::kRealTime) {
       cfg_.g_lag_in_frames = 3;
       cfg_.rc_end_usage = VPX_VBR;
       cfg_.rc_2pass_vbr_minsection_pct = 5;
@@ -65,12 +65,12 @@
     encoder_initialized_ = false;
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource * /*video*/,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource * /*video*/,
+                                  ::libaom_test::Encoder *encoder) {
     if (!encoder_initialized_) {
 #if CONFIG_VP10 && CONFIG_EXT_TILE
       encoder->Control(VP9E_SET_TILE_COLUMNS, 1);
-      if (codec_ == &libvpx_test::kVP10) {
+      if (codec_ == &libaom_test::kVP10) {
         // TODO(geza): Start using multiple tile rows when the multi-threaded
         // encoder can handle them
         encoder->Control(VP9E_SET_TILE_ROWS, 32);
@@ -83,7 +83,7 @@
       encoder->Control(VP9E_SET_TILE_ROWS, 0);
 #endif  // CONFIG_VP10 && CONFIG_EXT_TILE
       encoder->Control(VP8E_SET_CPUUSED, set_cpu_used_);
-      if (encoding_mode_ != ::libvpx_test::kRealTime) {
+      if (encoding_mode_ != ::libaom_test::kRealTime) {
         encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 1);
         encoder->Control(VP8E_SET_ARNR_MAXFRAMES, 7);
         encoder->Control(VP8E_SET_ARNR_STRENGTH, 5);
@@ -99,7 +99,7 @@
   virtual void FramePktHook(const vpx_codec_cx_pkt_t *pkt) {
     size_enc_.push_back(pkt->data.frame.sz);
 
-    ::libvpx_test::MD5 md5_enc;
+    ::libaom_test::MD5 md5_enc;
     md5_enc.Add(reinterpret_cast<uint8_t *>(pkt->data.frame.buf),
                 pkt->data.frame.sz);
     md5_enc_.push_back(md5_enc.Get());
@@ -113,14 +113,14 @@
     const vpx_image_t *img = decoder_->GetDxData().Next();
 
     if (img) {
-      ::libvpx_test::MD5 md5_res;
+      ::libaom_test::MD5 md5_res;
       md5_res.Add(img);
       md5_dec_.push_back(md5_res.Get());
     }
   }
 
   void DoTest() {
-    ::libvpx_test::Y4mVideoSource video("niklas_1280_720_30.y4m", 15, 18);
+    ::libaom_test::Y4mVideoSource video("niklas_1280_720_30.y4m", 15, 18);
     cfg_.rc_target_bitrate = 1000;
 
     // Encode using single thread.
@@ -157,9 +157,9 @@
   }
 
   bool encoder_initialized_;
-  ::libvpx_test::TestMode encoding_mode_;
+  ::libaom_test::TestMode encoding_mode_;
   int set_cpu_used_;
-  ::libvpx_test::Decoder *decoder_;
+  ::libaom_test::Decoder *decoder_;
   std::vector<size_t> size_enc_;
   std::vector<std::string> md5_enc_;
   std::vector<std::string> md5_dec_;
@@ -172,12 +172,12 @@
 TEST_P(VPxEncoderThreadTestLarge, EncoderResultTest) { DoTest(); }
 
 VP10_INSTANTIATE_TEST_CASE(VPxEncoderThreadTest,
-                           ::testing::Values(::libvpx_test::kTwoPassGood,
-                                             ::libvpx_test::kOnePassGood),
+                           ::testing::Values(::libaom_test::kTwoPassGood,
+                                             ::libaom_test::kOnePassGood),
                            ::testing::Range(3, 9));
 
 VP10_INSTANTIATE_TEST_CASE(VPxEncoderThreadTestLarge,
-                           ::testing::Values(::libvpx_test::kTwoPassGood,
-                                             ::libvpx_test::kOnePassGood),
+                           ::testing::Values(::libaom_test::kTwoPassGood,
+                                             ::libaom_test::kOnePassGood),
                            ::testing::Range(1, 3));
 }  // namespace
diff --git a/test/examples.sh b/test/examples.sh
index 39f7e39..1ee120a 100755
--- a/test/examples.sh
+++ b/test/examples.sh
@@ -8,7 +8,7 @@
 ##  in the file PATENTS.  All contributing project authors may
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
-##  This file runs all of the tests for the libvpx examples.
+##  This file runs all of the tests for the libaom examples.
 ##
 . $(dirname $0)/tools_common.sh
 
diff --git a/test/fdct4x4_test.cc b/test/fdct4x4_test.cc
index 7b195b5..dda6e68 100644
--- a/test/fdct4x4_test.cc
+++ b/test/fdct4x4_test.cc
@@ -21,19 +21,19 @@
 #include "test/register_state_check.h"
 #include "test/transform_test_base.h"
 #include "test/util.h"
-#include "vp10/common/entropy.h"
-#include "vpx/vpx_codec.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/entropy.h"
+#include "aom/vpx_codec.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 typedef void (*FdctFunc)(const int16_t *in, tran_low_t *out, int stride);
 typedef void (*IdctFunc)(const tran_low_t *in, uint8_t *out, int stride);
 typedef void (*IhtFunc)(const tran_low_t *in, uint8_t *out, int stride,
                         int tx_type);
-using libvpx_test::FhtFunc;
+using libaom_test::FhtFunc;
 
 typedef std::tr1::tuple<FdctFunc, IdctFunc, int, vpx_bit_depth_t, int>
     Dct4x4Param;
@@ -89,7 +89,7 @@
 #endif  // HAVE_SSE2
 #endif  // CONFIG_VP9_HIGHBITDEPTH
 
-class Trans4x4DCT : public libvpx_test::TransformTestBase,
+class Trans4x4DCT : public libaom_test::TransformTestBase,
                     public ::testing::TestWithParam<Dct4x4Param> {
  public:
   virtual ~Trans4x4DCT() {}
@@ -104,7 +104,7 @@
     mask_ = (1 << bit_depth_) - 1;
     num_coeffs_ = GET_PARAM(4);
   }
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunFwdTxfm(const int16_t *in, tran_low_t *out, int stride) {
@@ -126,7 +126,7 @@
 
 TEST_P(Trans4x4DCT, InvAccuracyCheck) { RunInvAccuracyCheck(1); }
 
-class Trans4x4HT : public libvpx_test::TransformTestBase,
+class Trans4x4HT : public libaom_test::TransformTestBase,
                    public ::testing::TestWithParam<Ht4x4Param> {
  public:
   virtual ~Trans4x4HT() {}
@@ -141,7 +141,7 @@
     mask_ = (1 << bit_depth_) - 1;
     num_coeffs_ = GET_PARAM(4);
   }
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunFwdTxfm(const int16_t *in, tran_low_t *out, int stride) {
@@ -164,7 +164,7 @@
 
 TEST_P(Trans4x4HT, InvAccuracyCheck) { RunInvAccuracyCheck(1); }
 
-class Trans4x4WHT : public libvpx_test::TransformTestBase,
+class Trans4x4WHT : public libaom_test::TransformTestBase,
                     public ::testing::TestWithParam<Dct4x4Param> {
  public:
   virtual ~Trans4x4WHT() {}
@@ -179,7 +179,7 @@
     mask_ = (1 << bit_depth_) - 1;
     num_coeffs_ = GET_PARAM(4);
   }
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunFwdTxfm(const int16_t *in, tran_low_t *out, int stride) {
diff --git a/test/fdct8x8_test.cc b/test/fdct8x8_test.cc
index 78c7791..5f07468 100644
--- a/test/fdct8x8_test.cc
+++ b/test/fdct8x8_test.cc
@@ -20,13 +20,13 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vp10/common/entropy.h"
-#include "vp10/common/scan.h"
-#include "vpx/vpx_codec.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/entropy.h"
+#include "av1/common/scan.h"
+#include "aom/vpx_codec.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 
@@ -530,7 +530,7 @@
     mask_ = (1 << bit_depth_) - 1;
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunFwdTxfm(int16_t *in, tran_low_t *out, int stride) {
@@ -569,7 +569,7 @@
     mask_ = (1 << bit_depth_) - 1;
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunFwdTxfm(int16_t *in, tran_low_t *out, int stride) {
@@ -603,7 +603,7 @@
     mask_ = (1 << bit_depth_) - 1;
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunInvTxfm(tran_low_t *out, uint8_t *dst, int stride) {
diff --git a/test/frame_size_tests.cc b/test/frame_size_tests.cc
index cc72d8e..ff05119 100644
--- a/test/frame_size_tests.cc
+++ b/test/frame_size_tests.cc
@@ -13,27 +13,27 @@
 
 namespace {
 
-class VP9FrameSizeTestsLarge : public ::libvpx_test::EncoderTest,
+class VP9FrameSizeTestsLarge : public ::libaom_test::EncoderTest,
                                public ::testing::Test {
  protected:
   VP9FrameSizeTestsLarge()
-      : EncoderTest(&::libvpx_test::kVP10), expected_res_(VPX_CODEC_OK) {}
+      : EncoderTest(&::libaom_test::kVP10), expected_res_(VPX_CODEC_OK) {}
   virtual ~VP9FrameSizeTestsLarge() {}
 
   virtual void SetUp() {
     InitializeConfig();
-    SetMode(::libvpx_test::kRealTime);
+    SetMode(::libaom_test::kRealTime);
   }
 
   virtual bool HandleDecodeResult(const vpx_codec_err_t res_dec,
-                                  const libvpx_test::VideoSource & /*video*/,
-                                  libvpx_test::Decoder *decoder) {
+                                  const libaom_test::VideoSource & /*video*/,
+                                  libaom_test::Decoder *decoder) {
     EXPECT_EQ(expected_res_, res_dec) << decoder->DecodeError();
     return !::testing::Test::HasFailure();
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 1) {
       encoder->Control(VP8E_SET_CPUUSED, 7);
       encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 1);
@@ -47,7 +47,7 @@
 };
 
 TEST_F(VP9FrameSizeTestsLarge, TestInvalidSizes) {
-  ::libvpx_test::RandomVideoSource video;
+  ::libaom_test::RandomVideoSource video;
 
 #if CONFIG_SIZE_LIMIT
   video.SetSize(DECODE_WIDTH_LIMIT + 16, DECODE_HEIGHT_LIMIT + 16);
@@ -58,7 +58,7 @@
 }
 
 TEST_F(VP9FrameSizeTestsLarge, ValidSizes) {
-  ::libvpx_test::RandomVideoSource video;
+  ::libaom_test::RandomVideoSource video;
 
 #if CONFIG_SIZE_LIMIT
   video.SetSize(DECODE_WIDTH_LIMIT, DECODE_HEIGHT_LIMIT);
@@ -85,7 +85,7 @@
 }
 
 TEST_F(VP9FrameSizeTestsLarge, OneByOneVideo) {
-  ::libvpx_test::RandomVideoSource video;
+  ::libaom_test::RandomVideoSource video;
 
   video.SetSize(1, 1);
   video.set_limit(2);
diff --git a/test/function_equivalence_test.h b/test/function_equivalence_test.h
index 4c5a97f..dcb5829 100644
--- a/test/function_equivalence_test.h
+++ b/test/function_equivalence_test.h
@@ -16,9 +16,9 @@
 #include "test/clear_system_state.h"
 #include "test/util.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
-namespace libvpx_test {
+namespace libaom_test {
 // Base class for tests that compare 2 implementations of the same function
 // for equivalence. The template parameter should be pointer to a function
 // that is being tested.
@@ -50,12 +50,12 @@
 
   virtual void SetUp() { params_ = this->GetParam(); }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   ACMRandom rng_;
   FuncParam<T> params_;
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 #endif  // TEST_FUNCTION_EQUIVALENCE_TEST_H_
diff --git a/test/hadamard_test.cc b/test/hadamard_test.cc
index e771595..1f86e9c 100644
--- a/test/hadamard_test.cc
+++ b/test/hadamard_test.cc
@@ -19,7 +19,7 @@
 
 namespace {
 
-using ::libvpx_test::ACMRandom;
+using ::libaom_test::ACMRandom;
 
 typedef void (*HadamardFunc)(const int16_t *a, int a_stride, int16_t *b);
 
diff --git a/test/hbd_metrics_test.cc b/test/hbd_metrics_test.cc
index abe82be..a7c1ec3 100644
--- a/test/hbd_metrics_test.cc
+++ b/test/hbd_metrics_test.cc
@@ -16,13 +16,13 @@
 #include "test/acm_random.h"
 #include "test/util.h"
 #include "./vpx_config.h"
-#include "vpx_dsp/psnr.h"
-#include "vpx_dsp/ssim.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/msvc.h"
-#include "vpx_scale/yv12config.h"
+#include "aom_dsp/psnr.h"
+#include "aom_dsp/ssim.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/msvc.h"
+#include "aom_scale/yv12config.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 
diff --git a/test/i420_video_source.h b/test/i420_video_source.h
index 4957382..d1324af 100644
--- a/test/i420_video_source.h
+++ b/test/i420_video_source.h
@@ -15,7 +15,7 @@
 
 #include "test/yuv_video_source.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 
 // This class extends VideoSource to allow parsing of raw yv12
 // so that we can do actual file encodes.
@@ -28,6 +28,6 @@
                        rate_numerator, rate_denominator, start, limit) {}
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // TEST_I420_VIDEO_SOURCE_H_
diff --git a/test/idct8x8_test.cc b/test/idct8x8_test.cc
index ee75805..52d3f4f 100644
--- a/test/idct8x8_test.cc
+++ b/test/idct8x8_test.cc
@@ -16,10 +16,10 @@
 
 #include "./vpx_dsp_rtcd.h"
 #include "test/acm_random.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/msvc.h"  // for round()
+#include "aom/vpx_integer.h"
+#include "aom_ports/msvc.h"  // for round()
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 
diff --git a/test/idct_test.cc b/test/idct_test.cc
index 6b619a0..a1264a8 100644
--- a/test/idct_test.cc
+++ b/test/idct_test.cc
@@ -14,7 +14,7 @@
 
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 typedef void (*IdctFunc)(int16_t *input, unsigned char *pred_ptr,
                          int pred_stride, unsigned char *dst_ptr,
@@ -31,7 +31,7 @@
     for (i = 0; i < 256; i++) output[i] = ((i & 0xF) < 4 && (i < 64)) ? 0 : -1;
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
   IdctFunc UUT;
   int16_t input[16];
diff --git a/test/intrapred_test.cc b/test/intrapred_test.cc
index 5d0cb58..0cedb12 100644
--- a/test/intrapred_test.cc
+++ b/test/intrapred_test.cc
@@ -18,13 +18,13 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/pred_common.h"
-#include "vpx_mem/vpx_mem.h"
+#include "av1/common/blockd.h"
+#include "av1/common/pred_common.h"
+#include "aom_mem/vpx_mem.h"
 
 namespace {
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 const int count_test_block = 100000;
 
diff --git a/test/ivf_video_source.h b/test/ivf_video_source.h
index b87624a..7b81bb9 100644
--- a/test/ivf_video_source.h
+++ b/test/ivf_video_source.h
@@ -15,7 +15,7 @@
 #include <string>
 #include "test/video_source.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 const unsigned int kCodeBufferSize = 256 * 1024;
 const unsigned int kIvfFileHdrSize = 32;
 const unsigned int kIvfFrameHdrSize = 12;
@@ -40,7 +40,7 @@
 
   virtual void Init() {
     // Allocate a buffer for read in the compressed video frame.
-    compressed_frame_buf_ = new uint8_t[libvpx_test::kCodeBufferSize];
+    compressed_frame_buf_ = new uint8_t[libaom_test::kCodeBufferSize];
     ASSERT_TRUE(compressed_frame_buf_ != NULL)
         << "Allocate frame buffer failed";
   }
@@ -101,6 +101,6 @@
   bool end_of_file_;
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // TEST_IVF_VIDEO_SOURCE_H_
diff --git a/test/level_test.cc b/test/level_test.cc
index fbbb539..0a12668 100644
--- a/test/level_test.cc
+++ b/test/level_test.cc
@@ -15,8 +15,8 @@
 
 namespace {
 class LevelTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<libvpx_test::TestMode, int> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode, int> {
  protected:
   LevelTest()
       : EncoderTest(GET_PARAM(0)), encoding_mode_(GET_PARAM(1)),
@@ -27,7 +27,7 @@
   virtual void SetUp() {
     InitializeConfig();
     SetMode(encoding_mode_);
-    if (encoding_mode_ != ::libvpx_test::kRealTime) {
+    if (encoding_mode_ != ::libaom_test::kRealTime) {
       cfg_.g_lag_in_frames = 25;
       cfg_.rc_end_usage = VPX_VBR;
     } else {
@@ -41,13 +41,13 @@
     cfg_.rc_min_quantizer = 0;
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 0) {
       encoder->Control(VP8E_SET_CPUUSED, cpu_used_);
       encoder->Control(VP9E_SET_TARGET_LEVEL, target_level_);
       encoder->Control(VP9E_SET_MIN_GF_INTERVAL, min_gf_internal_);
-      if (encoding_mode_ != ::libvpx_test::kRealTime) {
+      if (encoding_mode_ != ::libaom_test::kRealTime) {
         encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 1);
         encoder->Control(VP8E_SET_ARNR_MAXFRAMES, 7);
         encoder->Control(VP8E_SET_ARNR_STRENGTH, 5);
@@ -59,7 +59,7 @@
     ASSERT_GE(level_, 0);
   }
 
-  ::libvpx_test::TestMode encoding_mode_;
+  ::libaom_test::TestMode encoding_mode_;
   int cpu_used_;
   int min_gf_internal_;
   int target_level_;
@@ -68,7 +68,7 @@
 
 // Test for keeping level stats only
 TEST_P(LevelTest, TestTargetLevel0) {
-  ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
+  ::libaom_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
                                        40);
   target_level_ = 0;
   min_gf_internal_ = 4;
@@ -82,14 +82,14 @@
 
 // Test for level control being turned off
 TEST_P(LevelTest, TestTargetLevel255) {
-  ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
+  ::libaom_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0,
                                        30);
   target_level_ = 255;
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
 }
 
 TEST_P(LevelTest, TestTargetLevelApi) {
-  ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0, 1);
+  ::libaom_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0, 1);
   static const vpx_codec_iface_t *codec = &vpx_codec_vp9_cx_algo;
   vpx_codec_ctx_t enc;
   vpx_codec_enc_cfg_t cfg;
@@ -110,7 +110,7 @@
 }
 
 VP9_INSTANTIATE_TEST_CASE(LevelTest,
-                          ::testing::Values(::libvpx_test::kTwoPassGood,
-                                            ::libvpx_test::kOnePassGood),
+                          ::testing::Values(::libaom_test::kTwoPassGood,
+                                            ::libaom_test::kOnePassGood),
                           ::testing::Range(0, 9));
 }  // namespace
diff --git a/test/lossless_test.cc b/test/lossless_test.cc
index c7f1963..3989e93 100644
--- a/test/lossless_test.cc
+++ b/test/lossless_test.cc
@@ -22,8 +22,8 @@
 const int kMaxPsnr = 100;
 
 class LosslessTestLarge
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWithParam<libvpx_test::TestMode> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWithParam<libaom_test::TestMode> {
  protected:
   LosslessTestLarge()
       : EncoderTest(GET_PARAM(0)), psnr_(kMaxPsnr), nframes_(0),
@@ -36,8 +36,8 @@
     SetMode(encoding_mode_);
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 1) {
       // Only call Control if quantizer > 0 to verify that using quantizer
       // alone will activate lossless
@@ -61,7 +61,7 @@
  private:
   double psnr_;
   unsigned int nframes_;
-  libvpx_test::TestMode encoding_mode_;
+  libaom_test::TestMode encoding_mode_;
 };
 
 TEST_P(LosslessTestLarge, TestLossLessEncoding) {
@@ -75,7 +75,7 @@
   init_flags_ = VPX_CODEC_USE_PSNR;
 
   // intentionally changed the dimension for better testing coverage
-  libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                      timebase.den, timebase.num, 0, 5);
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
   const double psnr_lossless = GetMinPsnr();
@@ -83,7 +83,7 @@
 }
 
 TEST_P(LosslessTestLarge, TestLossLessEncoding444) {
-  libvpx_test::Y4mVideoSource video("rush_hour_444.y4m", 0, 5);
+  libaom_test::Y4mVideoSource video("rush_hour_444.y4m", 0, 5);
 
   cfg_.g_profile = 1;
   cfg_.g_timebase = video.timebase();
@@ -111,7 +111,7 @@
 
   init_flags_ = VPX_CODEC_USE_PSNR;
 
-  libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                      timebase.den, timebase.num, 0, 5);
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
   const double psnr_lossless = GetMinPsnr();
@@ -119,6 +119,6 @@
 }
 
 VP10_INSTANTIATE_TEST_CASE(LosslessTestLarge,
-                           ::testing::Values(::libvpx_test::kOnePassGood,
-                                             ::libvpx_test::kTwoPassGood));
+                           ::testing::Values(::libaom_test::kOnePassGood,
+                                             ::libaom_test::kTwoPassGood));
 }  // namespace
diff --git a/test/lpf_8_test.cc b/test/lpf_8_test.cc
index 8aaab23..3088b4a 100644
--- a/test/lpf_8_test.cc
+++ b/test/lpf_8_test.cc
@@ -20,11 +20,11 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vp10/common/entropy.h"
-#include "vp10/common/loopfilter.h"
-#include "vpx/vpx_integer.h"
+#include "av1/common/entropy.h"
+#include "av1/common/loopfilter.h"
+#include "aom/vpx_integer.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 // Horizontally and Vertically need 32x32: 8  Coeffs preceeding filtered section
@@ -63,7 +63,7 @@
     mask_ = (1 << bit_depth_) - 1;
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   int bit_depth_;
@@ -82,7 +82,7 @@
     mask_ = (1 << bit_depth_) - 1;
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   int bit_depth_;
diff --git a/test/masked_sad_test.cc b/test/masked_sad_test.cc
index c5b5081..b9af5ad 100644
--- a/test/masked_sad_test.cc
+++ b/test/masked_sad_test.cc
@@ -20,9 +20,9 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 const int number_of_iterations = 500;
@@ -40,7 +40,7 @@
     ref_maskedSAD_op_ = GET_PARAM(1);
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   MaskedSADFunc maskedSAD_op_;
@@ -97,7 +97,7 @@
     ref_maskedSAD_op_ = GET_PARAM(1);
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   HighbdMaskedSADFunc maskedSAD_op_;
diff --git a/test/masked_variance_test.cc b/test/masked_variance_test.cc
index 131599f..36fde93 100644
--- a/test/masked_variance_test.cc
+++ b/test/masked_variance_test.cc
@@ -20,12 +20,12 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_codec.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_dsp/vpx_filter.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom/vpx_codec.h"
+#include "aom/vpx_integer.h"
+#include "aom_dsp/vpx_filter.h"
+#include "aom_mem/vpx_mem.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 const int number_of_iterations = 500;
@@ -47,7 +47,7 @@
     ref_func_ = GET_PARAM(1);
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   MaskedVarianceFunc opt_func_;
@@ -142,7 +142,7 @@
     ref_func_ = GET_PARAM(1);
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   MaskedSubPixelVarianceFunc opt_func_;
@@ -262,7 +262,7 @@
     bit_depth_ = GET_PARAM(2);
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   MaskedVarianceFunc opt_func_;
@@ -361,7 +361,7 @@
     bit_depth_ = GET_PARAM(2);
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   MaskedSubPixelVarianceFunc opt_func_;
diff --git a/test/md5_helper.h b/test/md5_helper.h
index ef310a2..b995619 100644
--- a/test/md5_helper.h
+++ b/test/md5_helper.h
@@ -12,9 +12,9 @@
 #define TEST_MD5_HELPER_H_
 
 #include "./md5_utils.h"
-#include "vpx/vpx_decoder.h"
+#include "aom/vpx_decoder.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 class MD5 {
  public:
   MD5() { MD5Init(&md5_); }
@@ -70,6 +70,6 @@
   MD5Context md5_;
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // TEST_MD5_HELPER_H_
diff --git a/test/minmax_test.cc b/test/minmax_test.cc
index e51c9fd..026f79a 100644
--- a/test/minmax_test.cc
+++ b/test/minmax_test.cc
@@ -14,14 +14,14 @@
 #include "third_party/googletest/src/include/gtest/gtest.h"
 
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #include "test/acm_random.h"
 #include "test/register_state_check.h"
 
 namespace {
 
-using ::libvpx_test::ACMRandom;
+using ::libaom_test::ACMRandom;
 
 typedef void (*MinMaxFunc)(const uint8_t *a, int a_stride, const uint8_t *b,
                            int b_stride, int *min, int *max);
diff --git a/test/obmc_sad_test.cc b/test/obmc_sad_test.cc
index de80373..c47bd26 100644
--- a/test/obmc_sad_test.cc
+++ b/test/obmc_sad_test.cc
@@ -15,11 +15,11 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #define MAX_SB_SQUARE (MAX_SB_SIZE * MAX_SB_SIZE)
 
-using libvpx_test::FunctionEquivalenceTest;
+using libaom_test::FunctionEquivalenceTest;
 
 namespace {
 
@@ -28,7 +28,7 @@
 
 typedef unsigned int (*ObmcSadF)(const uint8_t *pre, int pre_stride,
                                  const int32_t *wsrc, const int32_t *mask);
-typedef libvpx_test::FuncParam<ObmcSadF> TestFuncs;
+typedef libaom_test::FuncParam<ObmcSadF> TestFuncs;
 
 ////////////////////////////////////////////////////////////////////////////////
 // 8 bit
diff --git a/test/obmc_variance_test.cc b/test/obmc_variance_test.cc
index 2bddcd2..ff4dd4a 100644
--- a/test/obmc_variance_test.cc
+++ b/test/obmc_variance_test.cc
@@ -16,12 +16,12 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 #define MAX_SB_SQUARE (MAX_SB_SIZE * MAX_SB_SIZE)
 
-using libvpx_test::ACMRandom;
-using libvpx_test::FunctionEquivalenceTest;
+using libaom_test::ACMRandom;
+using libaom_test::FunctionEquivalenceTest;
 
 namespace {
 
@@ -31,7 +31,7 @@
 typedef unsigned int (*ObmcVarF)(const uint8_t *pre, int pre_stride,
                                  const int32_t *wsrc, const int32_t *mask,
                                  unsigned int *sse);
-typedef libvpx_test::FuncParam<ObmcVarF> TestFuncs;
+typedef libaom_test::FuncParam<ObmcVarF> TestFuncs;
 
 ////////////////////////////////////////////////////////////////////////////////
 // 8 bit
diff --git a/test/partial_idct_test.cc b/test/partial_idct_test.cc
index 439888d..8d3bd72 100644
--- a/test/partial_idct_test.cc
+++ b/test/partial_idct_test.cc
@@ -20,11 +20,11 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/scan.h"
-#include "vpx/vpx_integer.h"
+#include "av1/common/blockd.h"
+#include "av1/common/scan.h"
+#include "aom/vpx_integer.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 typedef void (*FwdTxfmFunc)(const int16_t *in, tran_low_t *out, int stride);
@@ -43,7 +43,7 @@
     last_nonzero_ = GET_PARAM(4);
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   int last_nonzero_;
diff --git a/test/quantize_test.cc b/test/quantize_test.cc
index 0232ab9..bfebdc5 100644
--- a/test/quantize_test.cc
+++ b/test/quantize_test.cc
@@ -22,8 +22,8 @@
 #include "vp8/encoder/block.h"
 #include "vp8/encoder/onyx_int.h"
 #include "vp8/encoder/quantize.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom/vpx_integer.h"
+#include "aom_mem/vpx_mem.h"
 
 namespace {
 #if !CONFIG_AOM_QM
@@ -35,7 +35,7 @@
 
 typedef std::tr1::tuple<VP8Quantize, VP8Quantize> VP8QuantizeParam;
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 using std::tr1::make_tuple;
 
 // Create and populate a VP8_COMP instance which has a complete set of
@@ -47,7 +47,7 @@
     vp8_comp_ = NULL;
     vpx_free(macroblockd_dst_);
     macroblockd_dst_ = NULL;
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
   }
 
  protected:
diff --git a/test/realtime_test.cc b/test/realtime_test.cc
index 63f1ac3..d48f7fb 100644
--- a/test/realtime_test.cc
+++ b/test/realtime_test.cc
@@ -20,8 +20,8 @@
 const int kFramesToEncode = 2;
 
 class RealtimeTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWithParam<libvpx_test::TestMode> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWithParam<libaom_test::TestMode> {
  protected:
   RealtimeTest() : EncoderTest(GET_PARAM(0)), frame_packets_(0) {}
   virtual ~RealtimeTest() {}
@@ -29,7 +29,7 @@
   virtual void SetUp() {
     InitializeConfig();
     cfg_.g_lag_in_frames = 0;
-    SetMode(::libvpx_test::kRealTime);
+    SetMode(::libaom_test::kRealTime);
   }
 
   virtual void BeginPassHook(unsigned int /*pass*/) {
@@ -48,7 +48,7 @@
 };
 
 TEST_P(RealtimeTest, RealtimeFirstPassProducesFrames) {
-  ::libvpx_test::RandomVideoSource video;
+  ::libaom_test::RandomVideoSource video;
   video.SetSize(kVideoSourceWidth, kVideoSourceHeight);
   video.set_limit(kFramesToEncode);
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
@@ -56,8 +56,8 @@
 }
 
 VP8_INSTANTIATE_TEST_CASE(RealtimeTest,
-                          ::testing::Values(::libvpx_test::kRealTime));
+                          ::testing::Values(::libaom_test::kRealTime));
 VP9_INSTANTIATE_TEST_CASE(RealtimeTest,
-                          ::testing::Values(::libvpx_test::kRealTime));
+                          ::testing::Values(::libaom_test::kRealTime));
 
 }  // namespace
diff --git a/test/reconintra_predictors_test.cc b/test/reconintra_predictors_test.cc
index 7f9fc8d..cddf3c1 100644
--- a/test/reconintra_predictors_test.cc
+++ b/test/reconintra_predictors_test.cc
@@ -15,12 +15,12 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vp10/common/enums.h"
+#include "av1/common/enums.h"
 
 namespace {
 
 using std::tr1::tuple;
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 typedef void (*Predictor)(uint8_t *dst, ptrdiff_t stride, int bs,
                           const uint8_t *above, const uint8_t *left);
@@ -76,7 +76,7 @@
     delete[] alloc_;
     delete[] predRef_;
     delete[] pred_;
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
   }
 
  protected:
@@ -170,7 +170,7 @@
     delete[] alloc_;
     delete[] predRef_;
     delete[] pred_;
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
   }
 
  protected:
diff --git a/test/register_state_check.h b/test/register_state_check.h
index a6744b7..4ec53f4 100644
--- a/test/register_state_check.h
+++ b/test/register_state_check.h
@@ -13,7 +13,7 @@
 
 #include "third_party/googletest/src/include/gtest/gtest.h"
 #include "./vpx_config.h"
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 
 // ASM_REGISTER_STATE_CHECK(asm_function)
 //   Minimally validates the environment pre & post function execution. This
@@ -40,7 +40,7 @@
   return (lhs.Low == rhs.Low && lhs.High == rhs.High);
 }
 
-namespace libvpx_test {
+namespace libaom_test {
 
 // Compares the state of xmm[6-15] at construction with their state at
 // destruction. These registers should be preserved by the callee on
@@ -82,11 +82,11 @@
 
 #define ASM_REGISTER_STATE_CHECK(statement)    \
   do {                                         \
-    libvpx_test::RegisterStateCheck reg_check; \
+    libaom_test::RegisterStateCheck reg_check; \
     statement;                                 \
   } while (false)
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #elif defined(CONFIG_SHARED) && defined(HAVE_NEON_ASM) && \
     defined(CONFIG_VP10) && !CONFIG_SHARED && HAVE_NEON_ASM && CONFIG_VP10
@@ -96,7 +96,7 @@
 void vpx_push_neon(int64_t *store);
 }
 
-namespace libvpx_test {
+namespace libaom_test {
 
 // Compares the state of d8-d15 at construction with their state at
 // destruction. These registers should be preserved by the callee on
@@ -130,27 +130,27 @@
 
 #define ASM_REGISTER_STATE_CHECK(statement)    \
   do {                                         \
-    libvpx_test::RegisterStateCheck reg_check; \
+    libaom_test::RegisterStateCheck reg_check; \
     statement;                                 \
   } while (false)
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #else
 
-namespace libvpx_test {
+namespace libaom_test {
 
 class RegisterStateCheck {};
 #define ASM_REGISTER_STATE_CHECK(statement) statement
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // _WIN64
 
 #if ARCH_X86 || ARCH_X86_64
 #if defined(__GNUC__)
 
-namespace libvpx_test {
+namespace libaom_test {
 
 // Checks the FPU tag word pre/post execution to ensure emms has been called.
 class RegisterStateCheckMMX {
@@ -179,11 +179,11 @@
 
 #define API_REGISTER_STATE_CHECK(statement)       \
   do {                                            \
-    libvpx_test::RegisterStateCheckMMX reg_check; \
+    libaom_test::RegisterStateCheckMMX reg_check; \
     ASM_REGISTER_STATE_CHECK(statement);          \
   } while (false)
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // __GNUC__
 #endif  // ARCH_X86 || ARCH_X86_64
diff --git a/test/resize_test.cc b/test/resize_test.cc
index 3738a09..9b4808b 100644
--- a/test/resize_test.cc
+++ b/test/resize_test.cc
@@ -243,7 +243,7 @@
   *h = initial_h;
 }
 
-class ResizingVideoSource : public ::libvpx_test::DummyVideoSource {
+class ResizingVideoSource : public ::libaom_test::DummyVideoSource {
  public:
   ResizingVideoSource() {
     SetSize(kInitialWidth, kInitialHeight);
@@ -265,8 +265,8 @@
 };
 
 class ResizeTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWithParam<libvpx_test::TestMode> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWithParam<libaom_test::TestMode> {
  protected:
   ResizeTest() : EncoderTest(GET_PARAM(0)) {}
 
@@ -336,8 +336,8 @@
 #endif
   }
 
-  virtual void PreEncodeFrameHook(libvpx_test::VideoSource *video,
-                                  libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(libaom_test::VideoSource *video,
+                                  libaom_test::Encoder *encoder) {
     if (change_config_) {
       int new_q = 60;
       if (video->frame() == 0) {
@@ -389,7 +389,7 @@
 };
 
 TEST_P(ResizeInternalTest, TestInternalResizeWorks) {
-  ::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                        30, 1, 0, 10);
   init_flags_ = VPX_CODEC_USE_PSNR;
   change_config_ = false;
@@ -418,7 +418,7 @@
 }
 
 TEST_P(ResizeInternalTest, TestInternalResizeChangeConfig) {
-  ::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                        30, 1, 0, 10);
   cfg_.g_w = 352;
   cfg_.g_h = 288;
@@ -427,14 +427,14 @@
 }
 
 class ResizeRealtimeTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<libvpx_test::TestMode, int> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode, int> {
  protected:
   ResizeRealtimeTest() : EncoderTest(GET_PARAM(0)) {}
   virtual ~ResizeRealtimeTest() {}
 
-  virtual void PreEncodeFrameHook(libvpx_test::VideoSource *video,
-                                  libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(libaom_test::VideoSource *video,
+                                  libaom_test::Encoder *encoder) {
     if (video->frame() == 0) {
       encoder->Control(VP9E_SET_AQ_MODE, 3);
       encoder->Control(VP8E_SET_CPUUSED, set_cpu_used_);
@@ -525,7 +525,7 @@
 // Run at low bitrate, with resize_allowed = 1, and verify that we get
 // one resize down event.
 TEST_P(ResizeRealtimeTest, TestInternalResizeDown) {
-  ::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                        30, 1, 0, 299);
   DefaultConfig();
   cfg_.g_w = 352;
@@ -563,7 +563,7 @@
 // Start at low target bitrate, raise the bitrate in the middle of the clip,
 // scaling-up should occur after bitrate changed.
 TEST_P(ResizeRealtimeTest, TestInternalResizeDownUpChangeBitRate) {
-  ::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                        30, 1, 0, 359);
   DefaultConfig();
   cfg_.g_w = 352;
@@ -641,8 +641,8 @@
 #endif
   }
 
-  virtual void PreEncodeFrameHook(libvpx_test::VideoSource *video,
-                                  libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(libaom_test::VideoSource *video,
+                                  libaom_test::Encoder *encoder) {
     if (CspForFrameNumber(video->frame()) != VPX_IMG_FMT_I420 &&
         cfg_.g_profile != 1) {
       cfg_.g_profile = 1;
@@ -680,7 +680,7 @@
 #endif
 };
 
-class ResizingCspVideoSource : public ::libvpx_test::DummyVideoSource {
+class ResizingCspVideoSource : public ::libaom_test::DummyVideoSource {
  public:
   ResizingCspVideoSource() {
     SetSize(kInitialWidth, kInitialHeight);
@@ -706,12 +706,12 @@
 }
 
 VP10_INSTANTIATE_TEST_CASE(ResizeTest,
-                           ::testing::Values(::libvpx_test::kRealTime));
+                           ::testing::Values(::libaom_test::kRealTime));
 VP10_INSTANTIATE_TEST_CASE(ResizeInternalTest,
-                           ::testing::Values(::libvpx_test::kOnePassBest));
+                           ::testing::Values(::libaom_test::kOnePassBest));
 VP10_INSTANTIATE_TEST_CASE(ResizeRealtimeTest,
-                           ::testing::Values(::libvpx_test::kRealTime),
+                           ::testing::Values(::libaom_test::kRealTime),
                            ::testing::Range(5, 9));
 VP10_INSTANTIATE_TEST_CASE(ResizeCspTest,
-                           ::testing::Values(::libvpx_test::kRealTime));
+                           ::testing::Values(::libaom_test::kRealTime));
 }  // namespace
diff --git a/test/resize_util.sh b/test/resize_util.sh
index 5e47271..0c5851d 100755
--- a/test/resize_util.sh
+++ b/test/resize_util.sh
@@ -8,7 +8,7 @@
 ##  in the file PATENTS.  All contributing project authors may
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
-##  This file tests the libvpx resize_util example code. To add new tests to
+##  This file tests the libaom resize_util example code. To add new tests to
 ##  this file, do the following:
 ##    1. Write a shell function (this is your test).
 ##    2. Add the function to resize_util_tests (on a new line).
@@ -26,7 +26,7 @@
 # Resizes $YUV_RAW_INPUT using the resize_util example. $1 is the output
 # dimensions that will be passed to resize_util.
 resize_util() {
-  local resizer="${LIBVPX_BIN_PATH}/resize_util${VPX_TEST_EXE_SUFFIX}"
+  local resizer="${LIBAOM_BIN_PATH}/resize_util${VPX_TEST_EXE_SUFFIX}"
   local output_file="${VPX_TEST_OUTPUT_DIR}/resize_util.raw"
   local frames_to_resize="10"
   local target_dimensions="$1"
diff --git a/test/sad_test.cc b/test/sad_test.cc
index 1e6295d..8276cd4 100644
--- a/test/sad_test.cc
+++ b/test/sad_test.cc
@@ -20,9 +20,9 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vpx/vpx_codec.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_codec.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
 typedef unsigned int (*SadMxNFunc)(const uint8_t *src_ptr, int src_stride,
                                    const uint8_t *ref_ptr, int ref_stride);
@@ -38,7 +38,7 @@
                              uint32_t *sad_array);
 typedef std::tr1::tuple<int, int, SadMxNx4Func, int> SadMxNx4Param;
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 class SADTestBase : public ::testing::Test {
@@ -76,7 +76,7 @@
     second_pred16_ = NULL;
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   // Handle up to 4 128x128 blocks, with stride up to 256
diff --git a/test/set_maps.sh b/test/set_maps.sh
index e7c8d43..b50453e 100755
--- a/test/set_maps.sh
+++ b/test/set_maps.sh
@@ -8,7 +8,7 @@
 ##  in the file PATENTS.  All contributing project authors may
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
-##  This file tests the libvpx set_maps example. To add new tests to this file,
+##  This file tests the libaom set_maps example. To add new tests to this file,
 ##  do the following:
 ##    1. Write a shell function (this is your test).
 ##    2. Add the function to set_maps_tests (on a new line).
@@ -16,14 +16,14 @@
 . $(dirname $0)/tools_common.sh
 
 # Environment check: $YUV_RAW_INPUT is required, and set_maps must exist in
-# $LIBVPX_BIN_PATH.
+# $LIBAOM_BIN_PATH.
 set_maps_verify_environment() {
   if [ ! -e "${YUV_RAW_INPUT}" ]; then
     echo "Libvpx test data must exist in LIBVPX_TEST_DATA_PATH."
     return 1
   fi
   if [ -z "$(vpx_tool_path set_maps)" ]; then
-    elog "set_maps not found. It must exist in LIBVPX_BIN_PATH or its parent."
+    elog "set_maps not found. It must exist in LIBAOM_BIN_PATH or its parent."
     return 1
   fi
 }
diff --git a/test/simple_decoder.sh b/test/simple_decoder.sh
index 7eeaf71..0955c92 100755
--- a/test/simple_decoder.sh
+++ b/test/simple_decoder.sh
@@ -8,7 +8,7 @@
 ##  in the file PATENTS.  All contributing project authors may
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
-##  This file tests the libvpx simple_decoder example code. To add new tests to
+##  This file tests the libaom simple_decoder example code. To add new tests to
 ##  this file, do the following:
 ##    1. Write a shell function (this is your test).
 ##    2. Add the function to simple_decoder_tests (on a new line).
@@ -27,7 +27,7 @@
 # Runs simple_decoder using $1 as input file. $2 is the codec name, and is used
 # solely to name the output file.
 simple_decoder() {
-  local decoder="${LIBVPX_BIN_PATH}/simple_decoder${VPX_TEST_EXE_SUFFIX}"
+  local decoder="${LIBAOM_BIN_PATH}/simple_decoder${VPX_TEST_EXE_SUFFIX}"
   local input_file="$1"
   local codec="$2"
   local output_file="${VPX_TEST_OUTPUT_DIR}/simple_decoder_${codec}.raw"
diff --git a/test/simple_encoder.sh b/test/simple_encoder.sh
index ee633ae..e0da0ec 100755
--- a/test/simple_encoder.sh
+++ b/test/simple_encoder.sh
@@ -8,7 +8,7 @@
 ##  in the file PATENTS.  All contributing project authors may
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
-##  This file tests the libvpx simple_encoder example. To add new tests to this
+##  This file tests the libaom simple_encoder example. To add new tests to this
 ##  file, do the following:
 ##    1. Write a shell function (this is your test).
 ##    2. Add the function to simple_encoder_tests (on a new line).
@@ -25,7 +25,7 @@
 
 # Runs simple_encoder using the codec specified by $1 with a frame limit of 100.
 simple_encoder() {
-  local encoder="${LIBVPX_BIN_PATH}/simple_encoder${VPX_TEST_EXE_SUFFIX}"
+  local encoder="${LIBAOM_BIN_PATH}/simple_encoder${VPX_TEST_EXE_SUFFIX}"
   local codec="$1"
   local output_file="${VPX_TEST_OUTPUT_DIR}/simple_encoder_${codec}.ivf"
 
diff --git a/test/subtract_test.cc b/test/subtract_test.cc
index 498b6fa..a6ba557 100644
--- a/test/subtract_test.cc
+++ b/test/subtract_test.cc
@@ -17,10 +17,10 @@
 #include "test/register_state_check.h"
 #include "test/util.h"
 #if CONFIG_VP10
-#include "vp10/common/blockd.h"
+#include "av1/common/blockd.h"
 #endif
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
 #define USE_SPEED_TEST (0)
 
@@ -33,10 +33,10 @@
 
 class VP9SubtractBlockTest : public ::testing::TestWithParam<SubtractFunc> {
  public:
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 };
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 TEST_P(VP9SubtractBlockTest, SimpleSubtract) {
   ACMRandom rnd(ACMRandom::DeterministicSeed());
diff --git a/test/sum_squares_test.cc b/test/sum_squares_test.cc
index 4991a04..c4ddf57 100644
--- a/test/sum_squares_test.cc
+++ b/test/sum_squares_test.cc
@@ -16,15 +16,15 @@
 
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 #include "test/acm_random.h"
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
 #include "test/function_equivalence_test.h"
 
-using libvpx_test::ACMRandom;
-using libvpx_test::FunctionEquivalenceTest;
+using libaom_test::ACMRandom;
+using libaom_test::FunctionEquivalenceTest;
 
 namespace {
 const int kNumIterations = 10000;
@@ -32,14 +32,14 @@
 static const int16_t kInt13Max = (1 << 12) - 1;
 
 typedef uint64_t (*SSI16Func)(const int16_t *src, int stride, int size);
-typedef libvpx_test::FuncParam<SSI16Func> TestFuncs;
+typedef libaom_test::FuncParam<SSI16Func> TestFuncs;
 
 class SumSquaresTest : public ::testing::TestWithParam<TestFuncs> {
  public:
   virtual ~SumSquaresTest() {}
   virtual void SetUp() { params_ = this->GetParam(); }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   TestFuncs params_;
@@ -130,7 +130,7 @@
 //////////////////////////////////////////////////////////////////////////////
 
 typedef uint64_t (*F1D)(const int16_t *src, uint32_t N);
-typedef libvpx_test::FuncParam<F1D> TestFuncs1D;
+typedef libaom_test::FuncParam<F1D> TestFuncs1D;
 
 class SumSquares1DTest : public FunctionEquivalenceTest<F1D> {
  protected:
diff --git a/test/superframe_test.cc b/test/superframe_test.cc
index 7580375..2f7132a 100644
--- a/test/superframe_test.cc
+++ b/test/superframe_test.cc
@@ -21,12 +21,12 @@
 const int kTileCols = 2;
 const int kTileRows = 3;
 
-typedef std::tr1::tuple<libvpx_test::TestMode, int, int, int>
+typedef std::tr1::tuple<libaom_test::TestMode, int, int, int>
     SuperframeTestParam;
 
 class SuperframeTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWithParam<SuperframeTestParam> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWithParam<SuperframeTestParam> {
  protected:
   SuperframeTest()
       : EncoderTest(GET_PARAM(0)), modified_buf_(NULL), last_sf_pts_(0) {}
@@ -35,7 +35,7 @@
   virtual void SetUp() {
     InitializeConfig();
     const SuperframeTestParam input = GET_PARAM(1);
-    const libvpx_test::TestMode mode = std::tr1::get<kTestMode>(input);
+    const libaom_test::TestMode mode = std::tr1::get<kTestMode>(input);
     const int syntax = std::tr1::get<kSuperframeSyntax>(input);
     SetMode(mode);
     sf_count_ = 0;
@@ -47,8 +47,8 @@
 
   virtual void TearDown() { delete[] modified_buf_; }
 
-  virtual void PreEncodeFrameHook(libvpx_test::VideoSource *video,
-                                  libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(libaom_test::VideoSource *video,
+                                  libaom_test::Encoder *encoder) {
     if (video->frame() == 1) {
       encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 1);
       encoder->Control(VP8E_SET_CPUUSED, 2);
@@ -104,7 +104,7 @@
   sf_count_max_ = 0;  // early exit on successful test.
   cfg_.g_lag_in_frames = 25;
 
-  ::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
+  ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                        30, 1, 0, 40);
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
 #if CONFIG_EXT_REFS
@@ -128,7 +128,7 @@
 const int tile_row_values[] = { 1, 2, 32 };
 VP10_INSTANTIATE_TEST_CASE(
     SuperframeTest,
-    ::testing::Combine(::testing::Values(::libvpx_test::kTwoPassGood),
+    ::testing::Combine(::testing::Values(::libaom_test::kTwoPassGood),
                        ::testing::Values(1),
                        ::testing::ValuesIn(tile_col_values),
                        ::testing::ValuesIn(tile_row_values)));
@@ -136,7 +136,7 @@
 #if !CONFIG_ANS
 VP10_INSTANTIATE_TEST_CASE(
     SuperframeTest,
-    ::testing::Combine(::testing::Values(::libvpx_test::kTwoPassGood),
+    ::testing::Combine(::testing::Values(::libaom_test::kTwoPassGood),
                        ::testing::Values(1), ::testing::Values(0),
                        ::testing::Values(0)));
 #endif  // !CONFIG_ANS
diff --git a/test/test-data.mk b/test/test-data.mk
index c03159c..fd33627 100644
--- a/test/test-data.mk
+++ b/test/test-data.mk
@@ -1,118 +1,116 @@
-LIBVPX_TEST_SRCS-yes += test-data.mk
+LIBAOM_TEST_SRCS-yes += test-data.mk
 
 # Encoder test source
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += hantro_collage_w352h288.yuv
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += hantro_odd.yuv
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += hantro_collage_w352h288.yuv
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += hantro_odd.yuv
 
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_10_420.y4m
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_10_422.y4m
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_10_444.y4m
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_10_440.yuv
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_12_420.y4m
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_12_422.y4m
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_12_444.y4m
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_12_440.yuv
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_8_420_a10-1.y4m
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_8_420.y4m
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_8_422.y4m
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_8_444.y4m
-LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_8_440.yuv
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_10_420.y4m
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_10_422.y4m
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_10_444.y4m
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_10_440.yuv
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_12_420.y4m
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_12_422.y4m
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_12_444.y4m
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_12_440.yuv
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_8_420_a10-1.y4m
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_8_420.y4m
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_8_422.y4m
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_8_444.y4m
+LIBAOM_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_8_440.yuv
 
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += desktop_credits.y4m
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += niklas_1280_720_30.y4m
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += rush_hour_444.y4m
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += screendata.y4m
-
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += desktop_credits.y4m
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += desktop_credits.y4m
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += niklas_1280_720_30.y4m
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += rush_hour_444.y4m
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += screendata.y4m
 
 ifeq ($(CONFIG_DECODE_PERF_TESTS),yes)
 # Encode / Decode test
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += niklas_1280_720_30.yuv
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += niklas_1280_720_30.yuv
 # BBB VP9 streams
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_426x240_tile_1x1_180kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_640x360_tile_1x2_337kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_854x480_tile_1x2_651kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_1280x720_tile_1x4_1310kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_1920x1080_tile_1x1_2581kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_1920x1080_tile_1x4_2586kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_1920x1080_tile_1x4_fpm_2304kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_426x240_tile_1x1_180kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_640x360_tile_1x2_337kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_854x480_tile_1x2_651kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_1280x720_tile_1x4_1310kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_1920x1080_tile_1x1_2581kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_1920x1080_tile_1x4_2586kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-bbb_1920x1080_tile_1x4_fpm_2304kbps.webm
 # Sintel VP9 streams
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-sintel_426x182_tile_1x1_171kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-sintel_640x272_tile_1x2_318kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-sintel_854x364_tile_1x2_621kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-sintel_1280x546_tile_1x4_1257kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-sintel_1920x818_tile_1x4_fpm_2279kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-sintel_426x182_tile_1x1_171kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-sintel_640x272_tile_1x2_318kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-sintel_854x364_tile_1x2_621kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-sintel_1280x546_tile_1x4_1257kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-sintel_1920x818_tile_1x4_fpm_2279kbps.webm
 # TOS VP9 streams
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_426x178_tile_1x1_181kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_640x266_tile_1x2_336kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_854x356_tile_1x2_656kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_854x356_tile_1x2_fpm_546kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_1280x534_tile_1x4_1306kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_1280x534_tile_1x4_fpm_952kbps.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_1920x800_tile_1x4_fpm_2335kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_426x178_tile_1x1_181kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_640x266_tile_1x2_336kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_854x356_tile_1x2_656kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_854x356_tile_1x2_fpm_546kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_1280x534_tile_1x4_1306kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_1280x534_tile_1x4_fpm_952kbps.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-tos_1920x800_tile_1x4_fpm_2335kbps.webm
 endif  # CONFIG_DECODE_PERF_TESTS
 
 ifeq ($(CONFIG_ENCODE_PERF_TESTS),yes)
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += desktop_640_360_30.yuv
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += kirland_640_480_30.yuv
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += macmarcomoving_640_480_30.yuv
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += macmarcostationary_640_480_30.yuv
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += niklas_1280_720_30.yuv
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += niklas_640_480_30.yuv
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += tacomanarrows_640_480_30.yuv
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += tacomasmallcameramovement_640_480_30.yuv
-LIBVPX_TEST_DATA-$(CONFIG_VP10_ENCODER) += thaloundeskmtg_640_480_30.yuv
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += desktop_640_360_30.yuv
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += kirland_640_480_30.yuv
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += macmarcomoving_640_480_30.yuv
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += macmarcostationary_640_480_30.yuv
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += niklas_1280_720_30.yuv
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += niklas_640_480_30.yuv
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += tacomanarrows_640_480_30.yuv
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += tacomasmallcameramovement_640_480_30.yuv
+LIBAOM_TEST_DATA-$(CONFIG_VP10_ENCODER) += thaloundeskmtg_640_480_30.yuv
 endif  # CONFIG_ENCODE_PERF_TESTS
 
 # sort and remove duplicates
-LIBVPX_TEST_DATA-yes := $(sort $(LIBVPX_TEST_DATA-yes))
+LIBAOM_TEST_DATA-yes := $(sort $(LIBAOM_TEST_DATA-yes))
 
 # VP9 dynamic resizing test (decoder)
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_5_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_5_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_5_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_5_3-4.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_7_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_7_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_7_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_7_3-4.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_5_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_5_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_5_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_5_3-4.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_7_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_7_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_7_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_7_3-4.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_5_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_5_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_5_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_5_3-4.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_7_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_7_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_7_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_7_3-4.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_5_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_5_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_5_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_5_3-4.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_7_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_7_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_7_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_7_3-4.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_5_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_5_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_5_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_5_3-4.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_7_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_7_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_7_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_7_3-4.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_5_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_5_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_5_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_5_3-4.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_7_1-2.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_7_1-2.webm.md5
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_7_3-4.webm
-LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_7_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_5_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_5_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_5_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_5_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_7_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_7_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_7_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x180_7_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_5_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_5_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_5_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_5_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_7_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_7_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_7_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_320x240_7_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_5_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_5_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_5_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_5_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_7_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_7_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_7_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x360_7_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_5_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_5_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_5_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_5_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_7_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_7_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_7_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_640x480_7_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_5_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_5_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_5_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_5_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_7_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_7_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_7_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1280x720_7_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_5_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_5_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_5_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_5_3-4.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_7_1-2.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_7_1-2.webm.md5
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_7_3-4.webm
+LIBAOM_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-21-resize_inter_1920x1080_7_3-4.webm.md5
diff --git a/test/test.mk b/test/test.mk
index feb3f49..d7f2391 100644
--- a/test/test.mk
+++ b/test/test.mk
@@ -1,53 +1,53 @@
-LIBVPX_TEST_SRCS-yes += acm_random.h
-LIBVPX_TEST_SRCS-yes += clear_system_state.h
-LIBVPX_TEST_SRCS-yes += codec_factory.h
-LIBVPX_TEST_SRCS-yes += md5_helper.h
-LIBVPX_TEST_SRCS-yes += register_state_check.h
-LIBVPX_TEST_SRCS-yes += test.mk
-LIBVPX_TEST_SRCS-yes += test_libvpx.cc
-LIBVPX_TEST_SRCS-yes += util.h
-LIBVPX_TEST_SRCS-yes += video_source.h
-LIBVPX_TEST_SRCS-yes += transform_test_base.h
-LIBVPX_TEST_SRCS-yes += function_equivalence_test.h
+LIBAOM_TEST_SRCS-yes += acm_random.h
+LIBAOM_TEST_SRCS-yes += clear_system_state.h
+LIBAOM_TEST_SRCS-yes += codec_factory.h
+LIBAOM_TEST_SRCS-yes += md5_helper.h
+LIBAOM_TEST_SRCS-yes += register_state_check.h
+LIBAOM_TEST_SRCS-yes += test.mk
+LIBAOM_TEST_SRCS-yes += test_libvpx.cc
+LIBAOM_TEST_SRCS-yes += util.h
+LIBAOM_TEST_SRCS-yes += video_source.h
+LIBAOM_TEST_SRCS-yes += transform_test_base.h
+LIBAOM_TEST_SRCS-yes += function_equivalence_test.h
 
 ##
 ## BLACK BOX TESTS
 ##
 ## Black box tests only use the public API.
 ##
-LIBVPX_TEST_SRCS-yes                   += ../md5_utils.h ../md5_utils.c
-LIBVPX_TEST_SRCS-$(CONFIG_DECODERS)    += ivf_video_source.h
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += ../y4minput.h ../y4minput.c
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += altref_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += aq_segment_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += datarate_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += encode_api_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += error_resilience_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += i420_video_source.h
-#LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += realtime_test.cc
-#LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += resize_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += y4m_video_source.h
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += yuv_video_source.h
+LIBAOM_TEST_SRCS-yes                   += ../md5_utils.h ../md5_utils.c
+LIBAOM_TEST_SRCS-$(CONFIG_DECODERS)    += ivf_video_source.h
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += ../y4minput.h ../y4minput.c
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += altref_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += aq_segment_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += datarate_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += encode_api_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += error_resilience_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += i420_video_source.h
+#LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += realtime_test.cc
+#LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += resize_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += y4m_video_source.h
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += yuv_video_source.h
 
-#LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += level_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += active_map_refresh_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += active_map_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += borders_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += cpu_speed_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += frame_size_tests.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += lossless_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += ethread_test.cc
+#LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += level_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += active_map_refresh_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += active_map_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += borders_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += cpu_speed_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += frame_size_tests.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += lossless_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += ethread_test.cc
 
-LIBVPX_TEST_SRCS-yes                   += decode_test_driver.cc
-LIBVPX_TEST_SRCS-yes                   += decode_test_driver.h
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += encode_test_driver.cc
-LIBVPX_TEST_SRCS-yes                   += encode_test_driver.h
+LIBAOM_TEST_SRCS-yes                   += decode_test_driver.cc
+LIBAOM_TEST_SRCS-yes                   += decode_test_driver.h
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += encode_test_driver.cc
+LIBAOM_TEST_SRCS-yes                   += encode_test_driver.h
 
 ## IVF writing.
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += ../ivfenc.c ../ivfenc.h
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += ../ivfenc.c ../ivfenc.h
 
 ## Y4m parsing.
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS)    += y4m_test.cc ../y4menc.c ../y4menc.h
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS)    += y4m_test.cc ../y4menc.c ../y4menc.h
 
 ## WebM Parsing
 ifeq ($(CONFIG_WEBM_IO), yes)
@@ -55,32 +55,32 @@
 LIBWEBM_PARSER_SRCS += ../third_party/libwebm/mkvparser/mkvreader.cc
 LIBWEBM_PARSER_SRCS += ../third_party/libwebm/mkvparser/mkvparser.h
 LIBWEBM_PARSER_SRCS += ../third_party/libwebm/mkvparser/mkvreader.h
-LIBVPX_TEST_SRCS-$(CONFIG_DECODERS)    += $(LIBWEBM_PARSER_SRCS)
-LIBVPX_TEST_SRCS-$(CONFIG_DECODERS)    += ../tools_common.h
-LIBVPX_TEST_SRCS-$(CONFIG_DECODERS)    += ../webmdec.cc
-LIBVPX_TEST_SRCS-$(CONFIG_DECODERS)    += ../webmdec.h
-LIBVPX_TEST_SRCS-$(CONFIG_DECODERS)    += webm_video_source.h
+LIBAOM_TEST_SRCS-$(CONFIG_DECODERS)    += $(LIBWEBM_PARSER_SRCS)
+LIBAOM_TEST_SRCS-$(CONFIG_DECODERS)    += ../tools_common.h
+LIBAOM_TEST_SRCS-$(CONFIG_DECODERS)    += ../webmdec.cc
+LIBAOM_TEST_SRCS-$(CONFIG_DECODERS)    += ../webmdec.h
+LIBAOM_TEST_SRCS-$(CONFIG_DECODERS)    += webm_video_source.h
 endif
 
-LIBVPX_TEST_SRCS-$(CONFIG_DECODERS)    += decode_api_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_DECODERS)    += decode_api_test.cc
 
 # Currently we only support decoder perf tests for vp9. Also they read from WebM
 # files, so WebM IO is required.
 ifeq ($(CONFIG_DECODE_PERF_TESTS)$(CONFIG_VP10_DECODER)$(CONFIG_WEBM_IO), \
       yesyesyes)
-LIBVPX_TEST_SRCS-yes                   += decode_perf_test.cc
+LIBAOM_TEST_SRCS-yes                   += decode_perf_test.cc
 endif
 
 # encode perf tests are vp9 only
 ifeq ($(CONFIG_ENCODE_PERF_TESTS)$(CONFIG_VP10_ENCODER), yesyes)
-LIBVPX_TEST_SRCS-yes += encode_perf_test.cc
+LIBAOM_TEST_SRCS-yes += encode_perf_test.cc
 endif
 
 ## Multi-codec / unconditional black box tests.
 ifeq ($(findstring yes,$(CONFIG_VP10_ENCODER)),yes)
-LIBVPX_TEST_SRCS-yes += active_map_refresh_test.cc
-LIBVPX_TEST_SRCS-yes += active_map_test.cc
-LIBVPX_TEST_SRCS-yes += end_to_end_test.cc
+LIBAOM_TEST_SRCS-yes += active_map_refresh_test.cc
+LIBAOM_TEST_SRCS-yes += active_map_test.cc
+LIBAOM_TEST_SRCS-yes += end_to_end_test.cc
 endif
 
 ##
@@ -97,87 +97,87 @@
 # These tests require both the encoder and decoder to be built.
 ifeq ($(CONFIG_VP10_ENCODER)$(CONFIG_VP10_DECODER),yesyes)
 # IDCT test currently depends on FDCT function
-LIBVPX_TEST_SRCS-yes                   += idct8x8_test.cc
-LIBVPX_TEST_SRCS-yes                   += partial_idct_test.cc
-LIBVPX_TEST_SRCS-yes                   += superframe_test.cc
-LIBVPX_TEST_SRCS-yes                   += tile_independence_test.cc
-LIBVPX_TEST_SRCS-yes                   += boolcoder_test.cc
-LIBVPX_TEST_SRCS-yes                   += divu_small_test.cc
-#LIBVPX_TEST_SRCS-yes                   += encoder_parms_get_to_decoder.cc
+LIBAOM_TEST_SRCS-yes                   += idct8x8_test.cc
+LIBAOM_TEST_SRCS-yes                   += partial_idct_test.cc
+LIBAOM_TEST_SRCS-yes                   += superframe_test.cc
+LIBAOM_TEST_SRCS-yes                   += tile_independence_test.cc
+LIBAOM_TEST_SRCS-yes                   += boolcoder_test.cc
+LIBAOM_TEST_SRCS-yes                   += divu_small_test.cc
+#LIBAOM_TEST_SRCS-yes                   += encoder_parms_get_to_decoder.cc
 endif
 
-#LIBVPX_TEST_SRCS-yes                   += convolve_test.cc
-LIBVPX_TEST_SRCS-yes                   += lpf_8_test.cc
-LIBVPX_TEST_SRCS-yes                   += intrapred_test.cc
-#LIBVPX_TEST_SRCS-$(CONFIG_VP10_DECODER) += vp9_thread_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += dct16x16_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += dct32x32_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += fdct4x4_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += fdct8x8_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += hadamard_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += minmax_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += variance_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += error_block_test.cc
-#LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp9_quantize_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += subtract_test.cc
+#LIBAOM_TEST_SRCS-yes                   += convolve_test.cc
+LIBAOM_TEST_SRCS-yes                   += lpf_8_test.cc
+LIBAOM_TEST_SRCS-yes                   += intrapred_test.cc
+#LIBAOM_TEST_SRCS-$(CONFIG_VP10_DECODER) += vp9_thread_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += dct16x16_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += dct32x32_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += fdct4x4_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += fdct8x8_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += hadamard_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += minmax_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += variance_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += error_block_test.cc
+#LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp9_quantize_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += subtract_test.cc
 
 ifeq ($(CONFIG_VP10_ENCODER)$(CONFIG_VP10_TEMPORAL_DENOISING),yesyes)
-LIBVPX_TEST_SRCS-$(HAVE_SSE2) += denoiser_sse2_test.cc
+LIBAOM_TEST_SRCS-$(HAVE_SSE2) += denoiser_sse2_test.cc
 endif
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += arf_freq_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += arf_freq_test.cc
 
 
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_inv_txfm_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_dct_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_fht4x4_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_fht8x8_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_fht16x16_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_ANS)          += vp10_ans_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_EXT_TILE)     += vp10_ext_tile_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_inv_txfm_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_dct_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_fht4x4_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_fht8x8_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_fht16x16_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_ANS)          += vp10_ans_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_EXT_TILE)     += vp10_ext_tile_test.cc
 
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += sum_squares_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += subtract_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += blend_a64_mask_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += blend_a64_mask_1d_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += sum_squares_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += subtract_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += blend_a64_mask_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += blend_a64_mask_1d_test.cc
 
 ifeq ($(CONFIG_EXT_INTER),yes)
-LIBVPX_TEST_SRCS-$(HAVE_SSSE3) += masked_variance_test.cc
-LIBVPX_TEST_SRCS-$(HAVE_SSSE3) += masked_sad_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_wedge_utils_test.cc
+LIBAOM_TEST_SRCS-$(HAVE_SSSE3) += masked_variance_test.cc
+LIBAOM_TEST_SRCS-$(HAVE_SSSE3) += masked_sad_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += vp10_wedge_utils_test.cc
 endif
 
 ifeq ($(CONFIG_EXT_INTRA),yes)
-LIBVPX_TEST_SRCS-$(HAVE_SSE4_1) += reconintra_predictors_test.cc
+LIBAOM_TEST_SRCS-$(HAVE_SSE4_1) += reconintra_predictors_test.cc
 endif
 
 ifeq ($(CONFIG_OBMC),yes)
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += obmc_sad_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10_ENCODER) += obmc_variance_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += obmc_sad_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10_ENCODER) += obmc_variance_test.cc
 endif
 
 ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
-LIBVPX_TEST_SRCS-$(HAVE_SSE4_1) += vp10_quantize_test.cc
-LIBVPX_TEST_SRCS-$(HAVE_SSE4_1) += vp10_highbd_iht_test.cc
+LIBAOM_TEST_SRCS-$(HAVE_SSE4_1) += vp10_quantize_test.cc
+LIBAOM_TEST_SRCS-$(HAVE_SSE4_1) += vp10_highbd_iht_test.cc
 endif # CONFIG_VP9_HIGHBITDEPTH
 endif # VP10
 
 ## Multi-codec / unconditional whitebox tests.
 
 ifeq ($(CONFIG_VP10_ENCODER),yes)
-LIBVPX_TEST_SRCS-yes += avg_test.cc
+LIBAOM_TEST_SRCS-yes += avg_test.cc
 endif
 ifeq ($(CONFIG_INTERNAL_STATS),yes)
-LIBVPX_TEST_SRCS-$(CONFIG_VP9_HIGHBITDEPTH) += hbd_metrics_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP9_HIGHBITDEPTH) += hbd_metrics_test.cc
 endif
-LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS) += sad_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10) += vp10_txfm_test.h
-LIBVPX_TEST_SRCS-$(CONFIG_VP10) += vp10_txfm_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10) += vp10_fwd_txfm1d_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10) += vp10_inv_txfm1d_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10) += vp10_fwd_txfm2d_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10) += vp10_inv_txfm2d_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10) += vp10_convolve_test.cc
-LIBVPX_TEST_SRCS-$(CONFIG_VP10) += vp10_convolve_optimz_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_ENCODERS) += sad_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10) += vp10_txfm_test.h
+LIBAOM_TEST_SRCS-$(CONFIG_VP10) += vp10_txfm_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10) += vp10_fwd_txfm1d_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10) += vp10_inv_txfm1d_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10) += vp10_fwd_txfm2d_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10) += vp10_inv_txfm2d_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10) += vp10_convolve_test.cc
+LIBAOM_TEST_SRCS-$(CONFIG_VP10) += vp10_convolve_optimz_test.cc
 
 TEST_INTRA_PRED_SPEED_SRCS-yes := test_intra_pred_speed.cc
 TEST_INTRA_PRED_SPEED_SRCS-yes += ../md5_utils.h ../md5_utils.c
diff --git a/test/test_intra_pred_speed.cc b/test/test_intra_pred_speed.cc
index 4306fab..41bc4ec 100644
--- a/test/test_intra_pred_speed.cc
+++ b/test/test_intra_pred_speed.cc
@@ -18,9 +18,9 @@
 #include "test/acm_random.h"
 #include "test/clear_system_state.h"
 #include "test/md5_helper.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem.h"
-#include "vpx_ports/vpx_timer.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem.h"
+#include "aom_ports/vpx_timer.h"
 
 // -----------------------------------------------------------------------------
 
@@ -40,7 +40,7 @@
                    const char *const pred_func_names[], int num_funcs,
                    const char *const signatures[], int block_size,
                    int num_pixels_per_test) {
-  libvpx_test::ACMRandom rnd(libvpx_test::ACMRandom::DeterministicSeed());
+  libaom_test::ACMRandom rnd(libaom_test::ACMRandom::DeterministicSeed());
   const int kBPS = 32;
   const int kTotalPixels = 32 * kBPS;
   DECLARE_ALIGNED(16, uint8_t, src[kTotalPixels]);
@@ -67,11 +67,11 @@
     for (int num_tests = 0; num_tests < kNumTests; ++num_tests) {
       pred_funcs[k](src, kBPS, above, left);
     }
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
     vpx_usec_timer_mark(&timer);
     const int elapsed_time =
         static_cast<int>(vpx_usec_timer_elapsed(&timer) / 1000);
-    libvpx_test::MD5 md5;
+    libaom_test::MD5 md5;
     md5.Add(src, sizeof(src));
     printf("Mode %s[%12s]: %5d ms     MD5: %s\n", name, pred_func_names[k],
            elapsed_time, md5.Get());
diff --git a/test/test_libvpx.cc b/test/test_libvpx.cc
index 9867f9d..3f650ab 100644
--- a/test/test_libvpx.cc
+++ b/test/test_libvpx.cc
@@ -13,7 +13,7 @@
 
 #include "./vpx_config.h"
 #if ARCH_X86 || ARCH_X86_64
-#include "vpx_ports/x86.h"
+#include "aom_ports/x86.h"
 #endif
 extern "C" {
 #if CONFIG_VP10
diff --git a/test/tile_independence_test.cc b/test/tile_independence_test.cc
index 6fb8adb..4cb50c3 100644
--- a/test/tile_independence_test.cc
+++ b/test/tile_independence_test.cc
@@ -17,12 +17,12 @@
 #include "test/i420_video_source.h"
 #include "test/util.h"
 #include "test/md5_helper.h"
-#include "vpx_mem/vpx_mem.h"
+#include "aom_mem/vpx_mem.h"
 
 namespace {
 class TileIndependenceTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<int, int> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<int, int> {
  protected:
   TileIndependenceTest()
       : EncoderTest(GET_PARAM(0)), md5_fw_order_(), md5_inv_order_(),
@@ -53,11 +53,11 @@
 
   virtual void SetUp() {
     InitializeConfig();
-    SetMode(libvpx_test::kTwoPassGood);
+    SetMode(libaom_test::kTwoPassGood);
   }
 
-  virtual void PreEncodeFrameHook(libvpx_test::VideoSource *video,
-                                  libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(libaom_test::VideoSource *video,
+                                  libaom_test::Encoder *encoder) {
     if (video->frame() == 1) {
       encoder->Control(VP9E_SET_TILE_COLUMNS, n_tile_cols_);
       encoder->Control(VP9E_SET_TILE_ROWS, n_tile_rows_);
@@ -65,13 +65,13 @@
     }
   }
 
-  virtual void SetCpuUsed(libvpx_test::Encoder *encoder) {
+  virtual void SetCpuUsed(libaom_test::Encoder *encoder) {
     static const int kCpuUsed = 3;
     encoder->Control(VP8E_SET_CPUUSED, kCpuUsed);
   }
 
-  void UpdateMD5(::libvpx_test::Decoder *dec, const vpx_codec_cx_pkt_t *pkt,
-                 ::libvpx_test::MD5 *md5) {
+  void UpdateMD5(::libaom_test::Decoder *dec, const vpx_codec_cx_pkt_t *pkt,
+                 ::libaom_test::MD5 *md5) {
     const vpx_codec_err_t res = dec->DecodeFrame(
         reinterpret_cast<uint8_t *>(pkt->data.frame.buf), pkt->data.frame.sz);
     if (res != VPX_CODEC_OK) {
@@ -94,7 +94,7 @@
     cfg_.g_lag_in_frames = 12;
     cfg_.rc_end_usage = VPX_VBR;
 
-    libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 704, 576,
+    libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 704, 576,
                                        timebase.den, timebase.num, 0, 5);
     ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
 
@@ -103,8 +103,8 @@
     ASSERT_STREQ(md5_fw_str, md5_inv_str);
   }
 
-  ::libvpx_test::MD5 md5_fw_order_, md5_inv_order_;
-  ::libvpx_test::Decoder *fw_dec_, *inv_dec_;
+  ::libaom_test::MD5 md5_fw_order_, md5_inv_order_;
+  ::libaom_test::Decoder *fw_dec_, *inv_dec_;
 
  private:
   int n_tile_cols_;
@@ -117,7 +117,7 @@
 TEST_P(TileIndependenceTest, MD5Match) { DoTest(); }
 
 class TileIndependenceTestLarge : public TileIndependenceTest {
-  virtual void SetCpuUsed(libvpx_test::Encoder *encoder) {
+  virtual void SetCpuUsed(libaom_test::Encoder *encoder) {
     static const int kCpuUsed = 0;
     encoder->Control(VP8E_SET_CPUUSED, kCpuUsed);
   }
diff --git a/test/tools_common.sh b/test/tools_common.sh
index ce0b47b..2e10437 100755
--- a/test/tools_common.sh
+++ b/test/tools_common.sh
@@ -8,7 +8,7 @@
 ##  in the file PATENTS.  All contributing project authors may
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
-##  This file contains shell code shared by test scripts for libvpx tools.
+##  This file contains shell code shared by test scripts for libaom tools.
 
 # Use $VPX_TEST_TOOLS_COMMON_SH as a pseudo include guard.
 if [ -z "${VPX_TEST_TOOLS_COMMON_SH}" ]; then
@@ -47,7 +47,7 @@
 
 # Echoes the target configuration being tested.
 test_configuration_target() {
-  vpx_config_mk="${LIBVPX_CONFIG_PATH}/config.mk"
+  vpx_config_mk="${LIBAOM_CONFIG_PATH}/config.mk"
   # Find the TOOLCHAIN line, split it using ':=' as the field separator, and
   # print the last field to get the value. Then pipe the value to tr to consume
   # any leading/trailing spaces while allowing tr to echo the output to stdout.
@@ -67,10 +67,10 @@
 }
 
 # Echoes the git hash portion of the VERSION_STRING variable defined in
-# $LIBVPX_CONFIG_PATH/config.mk to stdout, or the version number string when
+# $LIBAOM_CONFIG_PATH/config.mk to stdout, or the version number string when
 # no git hash is contained in VERSION_STRING.
 config_hash() {
-  vpx_config_mk="${LIBVPX_CONFIG_PATH}/config.mk"
+  vpx_config_mk="${LIBAOM_CONFIG_PATH}/config.mk"
   # Find VERSION_STRING line, split it with "-g" and print the last field to
   # output the git hash to stdout.
   vpx_version=$(awk -F -g '/VERSION_STRING/ {print $NF}' "${vpx_config_mk}")
@@ -117,21 +117,21 @@
   fi
 }
 
-# This script requires that the LIBVPX_BIN_PATH, LIBVPX_CONFIG_PATH, and
+# This script requires that the LIBAOM_BIN_PATH, LIBAOM_CONFIG_PATH, and
 # LIBVPX_TEST_DATA_PATH variables are in the environment: Confirm that
 # the variables are set and that they all evaluate to directory paths.
 verify_vpx_test_environment() {
-  test_env_var_dir "LIBVPX_BIN_PATH" \
-    && test_env_var_dir "LIBVPX_CONFIG_PATH" \
+  test_env_var_dir "LIBAOM_BIN_PATH" \
+    && test_env_var_dir "LIBAOM_CONFIG_PATH" \
     && test_env_var_dir "LIBVPX_TEST_DATA_PATH"
 }
 
-# Greps vpx_config.h in LIBVPX_CONFIG_PATH for positional parameter one, which
-# should be a LIBVPX preprocessor flag. Echoes yes to stdout when the feature
+# Greps vpx_config.h in LIBAOM_CONFIG_PATH for positional parameter one, which
+# should be a LIBAOM preprocessor flag. Echoes yes to stdout when the feature
 # is available.
 vpx_config_option_enabled() {
   vpx_config_option="${1}"
-  vpx_config_file="${LIBVPX_CONFIG_PATH}/vpx_config.h"
+  vpx_config_file="${LIBAOM_CONFIG_PATH}/vpx_config.h"
   config_line=$(grep "${vpx_config_option}" "${vpx_config_file}")
   if echo "${config_line}" | egrep -q '1$'; then
     echo yes
@@ -146,16 +146,16 @@
   fi
 }
 
-# Echoes path to $1 when it's executable and exists in ${LIBVPX_BIN_PATH}, or an
+# Echoes path to $1 when it's executable and exists in ${LIBAOM_BIN_PATH}, or an
 # empty string. Caller is responsible for testing the string once the function
 # returns.
 vpx_tool_path() {
   local readonly tool_name="$1"
-  local tool_path="${LIBVPX_BIN_PATH}/${tool_name}${VPX_TEST_EXE_SUFFIX}"
+  local tool_path="${LIBAOM_BIN_PATH}/${tool_name}${VPX_TEST_EXE_SUFFIX}"
   if [ ! -x "${tool_path}" ]; then
     # Try one directory up: when running via examples.sh the tool could be in
-    # the parent directory of $LIBVPX_BIN_PATH.
-    tool_path="${LIBVPX_BIN_PATH}/../${tool_name}${VPX_TEST_EXE_SUFFIX}"
+    # the parent directory of $LIBAOM_BIN_PATH.
+    tool_path="${LIBAOM_BIN_PATH}/../${tool_name}${VPX_TEST_EXE_SUFFIX}"
   fi
 
   if [ ! -x "${tool_path}" ]; then
@@ -165,10 +165,10 @@
 }
 
 # Echoes yes to stdout when the file named by positional parameter one exists
-# in LIBVPX_BIN_PATH, and is executable.
+# in LIBAOM_BIN_PATH, and is executable.
 vpx_tool_available() {
   local tool_name="$1"
-  local tool="${LIBVPX_BIN_PATH}/${tool_name}${VPX_TEST_EXE_SUFFIX}"
+  local tool="${LIBAOM_BIN_PATH}/${tool_name}${VPX_TEST_EXE_SUFFIX}"
   [ -x "${tool}" ] && echo yes
 }
 
@@ -275,12 +275,12 @@
 vpx_test_usage() {
 cat << EOF
   Usage: ${0##*/} [arguments]
-    --bin-path <path to libvpx binaries directory>
-    --config-path <path to libvpx config directory>
+    --bin-path <path to libaom binaries directory>
+    --config-path <path to libaom config directory>
     --filter <filter>: User test filter. Only tests matching filter are run.
     --run-disabled-tests: Run disabled tests.
     --help: Display this message and exit.
-    --test-data-path <path to libvpx test data directory>
+    --test-data-path <path to libaom test data directory>
     --show-program-output: Shows output from all programs being tested.
     --prefix: Allows for a user specified prefix to be inserted before all test
               programs. Grants the ability, for example, to run test programs
@@ -289,10 +289,10 @@
     --verbose: Verbose output.
 
     When the --bin-path option is not specified the script attempts to use
-    \$LIBVPX_BIN_PATH and then the current directory.
+    \$LIBAOM_BIN_PATH and then the current directory.
 
     When the --config-path option is not specified the script attempts to use
-    \$LIBVPX_CONFIG_PATH and then the current directory.
+    \$LIBAOM_CONFIG_PATH and then the current directory.
 
     When the -test-data-path option is not specified the script attempts to use
     \$LIBVPX_TEST_DATA_PATH and then the current directory.
@@ -302,8 +302,8 @@
 # Returns non-zero (failure) when required environment variables are empty
 # strings.
 vpx_test_check_environment() {
-  if [ -z "${LIBVPX_BIN_PATH}" ] || \
-     [ -z "${LIBVPX_CONFIG_PATH}" ] || \
+  if [ -z "${LIBAOM_BIN_PATH}" ] || \
+     [ -z "${LIBAOM_CONFIG_PATH}" ] || \
      [ -z "${LIBVPX_TEST_DATA_PATH}" ]; then
     return 1
   fi
@@ -313,11 +313,11 @@
 while [ -n "$1" ]; do
   case "$1" in
     --bin-path)
-      LIBVPX_BIN_PATH="$2"
+      LIBAOM_BIN_PATH="$2"
       shift
       ;;
     --config-path)
-      LIBVPX_CONFIG_PATH="$2"
+      LIBAOM_CONFIG_PATH="$2"
       shift
       ;;
     --filter)
@@ -358,8 +358,8 @@
 
 # Handle running the tests from a build directory without arguments when running
 # the tests on *nix/macosx.
-LIBVPX_BIN_PATH="${LIBVPX_BIN_PATH:-.}"
-LIBVPX_CONFIG_PATH="${LIBVPX_CONFIG_PATH:-.}"
+LIBAOM_BIN_PATH="${LIBAOM_BIN_PATH:-.}"
+LIBAOM_CONFIG_PATH="${LIBAOM_CONFIG_PATH:-.}"
 LIBVPX_TEST_DATA_PATH="${LIBVPX_TEST_DATA_PATH:-.}"
 
 # Create a temporary directory for output files, and a trap to clean it up.
@@ -403,8 +403,8 @@
 trap cleanup EXIT
 
 vlog "$(basename "${0%.*}") test configuration:
-  LIBVPX_BIN_PATH=${LIBVPX_BIN_PATH}
-  LIBVPX_CONFIG_PATH=${LIBVPX_CONFIG_PATH}
+  LIBAOM_BIN_PATH=${LIBAOM_BIN_PATH}
+  LIBAOM_CONFIG_PATH=${LIBAOM_CONFIG_PATH}
   LIBVPX_TEST_DATA_PATH=${LIBVPX_TEST_DATA_PATH}
   VP8_IVF_FILE=${VP8_IVF_FILE}
   VP9_IVF_FILE=${VP9_IVF_FILE}
diff --git a/test/transform_test_base.h b/test/transform_test_base.h
index 071018c..a09897c 100644
--- a/test/transform_test_base.h
+++ b/test/transform_test_base.h
@@ -11,14 +11,14 @@
 #define TEST_TRANSFORM_TEST_BASE_H_
 
 #include "./vpx_config.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx/vpx_codec.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom/vpx_codec.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 
 //  Note:
 //   Same constant are defined in vp9/common/vp9_entropy.h and
-//   vp10/common/entropy.h.  Goal is to make this base class
+//   av1/common/entropy.h.  Goal is to make this base class
 //   to use for future codec transform testing.  But including
 //   either of them would lead to compiling error when we do
 //   unit test for another codec. Suggest to move the definition
@@ -280,6 +280,6 @@
   }
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // TEST_TRANSFORM_TEST_BASE_H_
diff --git a/test/twopass_encoder.sh b/test/twopass_encoder.sh
index 7a223f2..222f170 100755
--- a/test/twopass_encoder.sh
+++ b/test/twopass_encoder.sh
@@ -8,7 +8,7 @@
 ##  in the file PATENTS.  All contributing project authors may
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
-##  This file tests the libvpx twopass_encoder example. To add new tests to this
+##  This file tests the libaom twopass_encoder example. To add new tests to this
 ##  file, do the following:
 ##    1. Write a shell function (this is your test).
 ##    2. Add the function to twopass_encoder_tests (on a new line).
@@ -26,7 +26,7 @@
 # Runs twopass_encoder using the codec specified by $1 with a frame limit of
 # 100.
 twopass_encoder() {
-  local encoder="${LIBVPX_BIN_PATH}/twopass_encoder${VPX_TEST_EXE_SUFFIX}"
+  local encoder="${LIBAOM_BIN_PATH}/twopass_encoder${VPX_TEST_EXE_SUFFIX}"
   local codec="$1"
   local output_file="${VPX_TEST_OUTPUT_DIR}/twopass_encoder_${codec}.ivf"
 
diff --git a/test/user_priv_test.cc b/test/user_priv_test.cc
index 4b5de09..7e8d398 100644
--- a/test/user_priv_test.cc
+++ b/test/user_priv_test.cc
@@ -22,13 +22,13 @@
 #if CONFIG_WEBM_IO
 #include "test/webm_video_source.h"
 #endif
-#include "vpx_mem/vpx_mem.h"
-#include "vpx/vp8.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom/vp8.h"
 
 namespace {
 
 using std::string;
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 #if CONFIG_WEBM_IO
 
@@ -44,13 +44,13 @@
 // should match.
 string DecodeFile(const string &filename) {
   ACMRandom rnd(ACMRandom::DeterministicSeed());
-  libvpx_test::WebMVideoSource video(filename);
+  libaom_test::WebMVideoSource video(filename);
   video.Init();
 
   vpx_codec_dec_cfg_t cfg = vpx_codec_dec_cfg_t();
-  libvpx_test::VP9Decoder decoder(cfg, 0);
+  libaom_test::VP9Decoder decoder(cfg, 0);
 
-  libvpx_test::MD5 md5;
+  libaom_test::MD5 md5;
   int frame_num = 0;
   for (video.Begin(); !::testing::Test::HasFailure() && video.cxdata();
        video.Next()) {
@@ -62,7 +62,7 @@
       EXPECT_EQ(VPX_CODEC_OK, res) << decoder.DecodeError();
       break;
     }
-    libvpx_test::DxDataIterator dec_iter = decoder.GetDxData();
+    libaom_test::DxDataIterator dec_iter = decoder.GetDxData();
     const vpx_image_t *img = NULL;
 
     // Get decompressed data.
diff --git a/test/util.h b/test/util.h
index 0ef2ad8..6567253 100644
--- a/test/util.h
+++ b/test/util.h
@@ -14,7 +14,7 @@
 #include <stdio.h>
 #include <math.h>
 #include "third_party/googletest/src/include/gtest/gtest.h"
-#include "vpx/vpx_image.h"
+#include "aom/vpx_image.h"
 
 // Macros
 #define GET_PARAM(k) std::tr1::get<k>(GetParam())
diff --git a/test/variance_test.cc b/test/variance_test.cc
index e8b5669..1541f8e 100644
--- a/test/variance_test.cc
+++ b/test/variance_test.cc
@@ -18,10 +18,10 @@
 #include "test/acm_random.h"
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
-#include "vpx/vpx_codec.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_mem/vpx_mem.h"
-#include "vpx_ports/mem.h"
+#include "aom/vpx_codec.h"
+#include "aom/vpx_integer.h"
+#include "aom_mem/vpx_mem.h"
+#include "aom_ports/mem.h"
 
 namespace {
 
@@ -41,7 +41,7 @@
                                       const uint8_t *b, int b_stride);
 typedef unsigned int (*SumOfSquaresFunction)(const int16_t *src);
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 // Truncate high bit depth results by downshifting (with rounding) by:
 // 2 * (bit_depth - 8) for sse
@@ -220,7 +220,7 @@
  public:
   SumOfSquaresTest() : func_(GetParam()) {}
 
-  virtual ~SumOfSquaresTest() { libvpx_test::ClearSystemState(); }
+  virtual ~SumOfSquaresTest() { libaom_test::ClearSystemState(); }
 
  protected:
   void ConstTest();
@@ -331,7 +331,7 @@
     delete[] ref_;
     src_ = NULL;
     ref_ = NULL;
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
   }
 
  protected:
@@ -588,7 +588,7 @@
       vpx_free(CONVERT_TO_SHORTPTR(sec_));
 #endif  // CONFIG_VP9_HIGHBITDEPTH
     }
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
   }
 
  protected:
diff --git a/test/video_source.h b/test/video_source.h
index 94a95ce..7fde59c 100644
--- a/test/video_source.h
+++ b/test/video_source.h
@@ -20,9 +20,9 @@
 #include <cstdlib>
 #include <string>
 #include "test/acm_random.h"
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_encoder.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 
 // Helper macros to ensure LIBVPX_TEST_DATA_PATH is a quoted string.
 // These are undefined right below GetDataPath
@@ -250,6 +250,6 @@
   virtual unsigned int frame_number() const = 0;
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // TEST_VIDEO_SOURCE_H_
diff --git a/test/vp10_ans_test.cc b/test/vp10_ans_test.cc
index ca89f20..ddedbea 100644
--- a/test/vp10_ans_test.cc
+++ b/test/vp10_ans_test.cc
@@ -20,17 +20,17 @@
 #include "third_party/googletest/src/include/gtest/gtest.h"
 
 #include "test/acm_random.h"
-#include "vp10/common/ans.h"
-#include "vp10/encoder/treewriter.h"
-#include "vpx_dsp/bitreader.h"
-#include "vpx_dsp/bitwriter.h"
+#include "av1/common/ans.h"
+#include "av1/encoder/treewriter.h"
+#include "aom_dsp/bitreader.h"
+#include "aom_dsp/bitwriter.h"
 
 namespace {
 typedef std::vector<std::pair<uint8_t, bool> > PvVec;
 
 PvVec abs_encode_build_vals(int iters) {
   PvVec ret;
-  libvpx_test::ACMRandom gen(0x30317076);
+  libaom_test::ACMRandom gen(0x30317076);
   double entropy = 0;
   for (int i = 0; i < iters; ++i) {
     uint8_t p;
@@ -167,7 +167,7 @@
   }
   assert(p_to_sym.size() == rans_precision);
   std::vector<int> ret;
-  libvpx_test::ACMRandom gen(18543637);
+  libaom_test::ACMRandom gen(18543637);
   for (int i = 0; i < iters; ++i) {
     int sym = p_to_sym[gen.Rand8() * 4];
     ret.push_back(sym);
diff --git a/test/vp10_convolve_optimz_test.cc b/test/vp10_convolve_optimz_test.cc
index 2235088..cb8b8fb 100644
--- a/test/vp10_convolve_optimz_test.cc
+++ b/test/vp10_convolve_optimz_test.cc
@@ -19,7 +19,7 @@
 namespace {
 
 using std::tr1::tuple;
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 typedef void (*conv_filter_t)(const uint8_t *, int, uint8_t *, int, int, int,
                               const InterpFilterParams, const int, int, int);
@@ -79,7 +79,7 @@
 
   virtual void TearDown() {
     delete[] alloc_;
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
   }
 
  protected:
@@ -255,7 +255,7 @@
 
   virtual void TearDown() {
     delete[] alloc_;
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
   }
 
  protected:
diff --git a/test/vp10_convolve_test.cc b/test/vp10_convolve_test.cc
index da750b5..2ec6ae7 100644
--- a/test/vp10_convolve_test.cc
+++ b/test/vp10_convolve_test.cc
@@ -3,12 +3,12 @@
 #include "./vp10_rtcd.h"
 #include "./vpx_dsp_rtcd.h"
 #include "test/acm_random.h"
-#include "vp10/common/filter.h"
-#include "vp10/common/vp10_convolve.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/filter.h"
+#include "av1/common/vp10_convolve.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 void setup_convolve() {
diff --git a/test/vp10_dct_test.cc b/test/vp10_dct_test.cc
index 63e0202..5d31adf 100644
--- a/test/vp10_dct_test.cc
+++ b/test/vp10_dct_test.cc
@@ -16,13 +16,13 @@
 #include "test/acm_random.h"
 #include "test/util.h"
 #include "./vpx_config.h"
-#include "vpx_ports/msvc.h"
+#include "aom_ports/msvc.h"
 
 #undef CONFIG_COEFFICIENT_RANGE_CHECKING
 #define CONFIG_COEFFICIENT_RANGE_CHECKING 1
-#include "vp10/encoder/dct.c"
+#include "av1/encoder/dct.c"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 void reference_dct_1d(const double *in, double *out, int size) {
diff --git a/test/vp10_ext_tile_test.cc b/test/vp10_ext_tile_test.cc
index e3b24e7..6ca7ec8 100644
--- a/test/vp10_ext_tile_test.cc
+++ b/test/vp10_ext_tile_test.cc
@@ -30,8 +30,8 @@
 const int kImgHeight = 576;
 
 class VP10ExtTileTest
-    : public ::libvpx_test::EncoderTest,
-      public ::libvpx_test::CodecTestWith2Params<libvpx_test::TestMode, int> {
+    : public ::libaom_test::EncoderTest,
+      public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode, int> {
  protected:
   VP10ExtTileTest()
       : EncoderTest(GET_PARAM(0)), encoding_mode_(GET_PARAM(1)),
@@ -69,8 +69,8 @@
     cfg_.rc_min_quantizer = 0;
   }
 
-  virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
-                                  ::libvpx_test::Encoder *encoder) {
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
     if (video->frame() == 0) {
       // Encode setting
       encoder->Control(VP8E_SET_CPUUSED, set_cpu_used_);
@@ -99,7 +99,7 @@
     if (pts == (vpx_codec_pts_t)kSkip) return;
 
     // Calculate MD5 as the reference.
-    ::libvpx_test::MD5 md5_res;
+    ::libaom_test::MD5 md5_res;
     md5_res.Add(&img);
     md5_.push_back(md5_res.Get());
   }
@@ -133,7 +133,7 @@
 
         if (!IsLastFrame) {
           if (img) {
-            ::libvpx_test::MD5 md5_res;
+            ::libaom_test::MD5 md5_res;
             md5_res.Add(img);
             tile_md5_.push_back(md5_res.Get());
           }
@@ -159,22 +159,22 @@
     }
 
     if (IsLastFrame) {
-      ::libvpx_test::MD5 md5_res;
+      ::libaom_test::MD5 md5_res;
       md5_res.Add(&tile_img_);
       tile_md5_.push_back(md5_res.Get());
     }
   }
 
-  ::libvpx_test::TestMode encoding_mode_;
+  ::libaom_test::TestMode encoding_mode_;
   int set_cpu_used_;
-  ::libvpx_test::Decoder *decoder_;
+  ::libaom_test::Decoder *decoder_;
   vpx_image_t tile_img_;
   std::vector<std::string> md5_;
   std::vector<std::string> tile_md5_;
 };
 
 TEST_P(VP10ExtTileTest, DecoderResultTest) {
-  ::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", kImgWidth,
+  ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", kImgWidth,
                                        kImgHeight, 30, 1, 0, kLimit);
   cfg_.rc_target_bitrate = 500;
   cfg_.g_error_resilient = VPX_ERROR_RESILIENT_DEFAULT;
@@ -191,6 +191,6 @@
 
 VP10_INSTANTIATE_TEST_CASE(
     // Now only test 2-pass mode.
-    VP10ExtTileTest, ::testing::Values(::libvpx_test::kTwoPassGood),
+    VP10ExtTileTest, ::testing::Values(::libaom_test::kTwoPassGood),
     ::testing::Range(0, 4));
 }  // namespace
diff --git a/test/vp10_fht16x16_test.cc b/test/vp10_fht16x16_test.cc
index cc15353..40884f3 100644
--- a/test/vp10_fht16x16_test.cc
+++ b/test/vp10_fht16x16_test.cc
@@ -18,15 +18,15 @@
 #include "test/register_state_check.h"
 #include "test/transform_test_base.h"
 #include "test/util.h"
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 typedef void (*IhtFunc)(const tran_low_t *in, uint8_t *out, int stride,
                         int tx_type);
 using std::tr1::tuple;
-using libvpx_test::FhtFunc;
+using libaom_test::FhtFunc;
 typedef tuple<FhtFunc, IhtFunc, int, vpx_bit_depth_t, int> Ht16x16Param;
 
 void fht16x16_ref(const int16_t *in, tran_low_t *out, int stride, int tx_type) {
@@ -48,7 +48,7 @@
 }
 #endif  // CONFIG_VP9_HIGHBITDEPTH
 
-class VP10Trans16x16HT : public libvpx_test::TransformTestBase,
+class VP10Trans16x16HT : public libaom_test::TransformTestBase,
                          public ::testing::TestWithParam<Ht16x16Param> {
  public:
   virtual ~VP10Trans16x16HT() {}
@@ -63,7 +63,7 @@
     mask_ = (1 << bit_depth_) - 1;
     num_coeffs_ = GET_PARAM(4);
   }
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunFwdTxfm(const int16_t *in, tran_low_t *out, int stride) {
@@ -106,7 +106,7 @@
     vpx_free(input_);
     vpx_free(output_);
     vpx_free(output_ref_);
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
   }
 
  protected:
diff --git a/test/vp10_fht4x4_test.cc b/test/vp10_fht4x4_test.cc
index f1db663..1f4aa1e 100644
--- a/test/vp10_fht4x4_test.cc
+++ b/test/vp10_fht4x4_test.cc
@@ -18,15 +18,15 @@
 #include "test/register_state_check.h"
 #include "test/transform_test_base.h"
 #include "test/util.h"
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 typedef void (*IhtFunc)(const tran_low_t *in, uint8_t *out, int stride,
                         int tx_type);
 using std::tr1::tuple;
-using libvpx_test::FhtFunc;
+using libaom_test::FhtFunc;
 typedef tuple<FhtFunc, IhtFunc, int, vpx_bit_depth_t, int> Ht4x4Param;
 
 void fht4x4_ref(const int16_t *in, tran_low_t *out, int stride, int tx_type) {
@@ -49,7 +49,7 @@
 }
 #endif  // CONFIG_VP9_HIGHBITDEPTH
 
-class VP10Trans4x4HT : public libvpx_test::TransformTestBase,
+class VP10Trans4x4HT : public libaom_test::TransformTestBase,
                        public ::testing::TestWithParam<Ht4x4Param> {
  public:
   virtual ~VP10Trans4x4HT() {}
@@ -64,7 +64,7 @@
     mask_ = (1 << bit_depth_) - 1;
     num_coeffs_ = GET_PARAM(4);
   }
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunFwdTxfm(const int16_t *in, tran_low_t *out, int stride) {
@@ -106,7 +106,7 @@
     vpx_free(input_);
     vpx_free(output_);
     vpx_free(output_ref_);
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
   }
 
  protected:
diff --git a/test/vp10_fht8x8_test.cc b/test/vp10_fht8x8_test.cc
index a711901..3990bd5 100644
--- a/test/vp10_fht8x8_test.cc
+++ b/test/vp10_fht8x8_test.cc
@@ -18,15 +18,15 @@
 #include "test/register_state_check.h"
 #include "test/transform_test_base.h"
 #include "test/util.h"
-#include "vpx_ports/mem.h"
+#include "aom_ports/mem.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 typedef void (*IhtFunc)(const tran_low_t *in, uint8_t *out, int stride,
                         int tx_type);
 
-using libvpx_test::FhtFunc;
+using libaom_test::FhtFunc;
 using std::tr1::tuple;
 typedef tuple<FhtFunc, IhtFunc, int, vpx_bit_depth_t, int> Ht8x8Param;
 
@@ -48,7 +48,7 @@
 }
 #endif  // CONFIG_VP9_HIGHBITDEPTH
 
-class VP10Trans8x8HT : public libvpx_test::TransformTestBase,
+class VP10Trans8x8HT : public libaom_test::TransformTestBase,
                        public ::testing::TestWithParam<Ht8x8Param> {
  public:
   virtual ~VP10Trans8x8HT() {}
@@ -63,7 +63,7 @@
     mask_ = (1 << bit_depth_) - 1;
     num_coeffs_ = GET_PARAM(4);
   }
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   void RunFwdTxfm(const int16_t *in, tran_low_t *out, int stride) {
@@ -105,7 +105,7 @@
     vpx_free(input_);
     vpx_free(output_);
     vpx_free(output_ref_);
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
   }
 
  protected:
diff --git a/test/vp10_fwd_txfm1d_test.cc b/test/vp10_fwd_txfm1d_test.cc
index d6bb32f..2b9cfe5 100644
--- a/test/vp10_fwd_txfm1d_test.cc
+++ b/test/vp10_fwd_txfm1d_test.cc
@@ -8,15 +8,15 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "vp10/common/vp10_fwd_txfm1d.h"
+#include "av1/common/vp10_fwd_txfm1d.h"
 #include "test/vp10_txfm_test.h"
 
-using libvpx_test::ACMRandom;
-using libvpx_test::input_base;
-using libvpx_test::reference_hybrid_1d;
-using libvpx_test::TYPE_TXFM;
-using libvpx_test::TYPE_DCT;
-using libvpx_test::TYPE_ADST;
+using libaom_test::ACMRandom;
+using libaom_test::input_base;
+using libaom_test::reference_hybrid_1d;
+using libaom_test::TYPE_TXFM;
+using libaom_test::TYPE_DCT;
+using libaom_test::TYPE_ADST;
 
 namespace {
 const int txfm_type_num = 2;
diff --git a/test/vp10_fwd_txfm2d_test.cc b/test/vp10_fwd_txfm2d_test.cc
index c522c45..7dbb922 100644
--- a/test/vp10_fwd_txfm2d_test.cc
+++ b/test/vp10_fwd_txfm2d_test.cc
@@ -15,15 +15,15 @@
 #include "test/acm_random.h"
 #include "test/util.h"
 #include "test/vp10_txfm_test.h"
-#include "vp10/common/vp10_txfm.h"
+#include "av1/common/vp10_txfm.h"
 #include "./vp10_rtcd.h"
 
-using libvpx_test::ACMRandom;
-using libvpx_test::input_base;
-using libvpx_test::bd;
-using libvpx_test::compute_avg_abs_error;
-using libvpx_test::Fwd_Txfm2d_Func;
-using libvpx_test::TYPE_TXFM;
+using libaom_test::ACMRandom;
+using libaom_test::input_base;
+using libaom_test::bd;
+using libaom_test::compute_avg_abs_error;
+using libaom_test::Fwd_Txfm2d_Func;
+using libaom_test::TYPE_TXFM;
 
 namespace {
 #if CONFIG_VP9_HIGHBITDEPTH
@@ -48,8 +48,8 @@
     amplify_factor_ =
         amplify_bit >= 0 ? (1 << amplify_bit) : (1.0 / (1 << -amplify_bit));
 
-    fwd_txfm_ = libvpx_test::fwd_txfm_func_ls[tx_size_];
-    txfm1d_size_ = libvpx_test::get_txfm1d_size(tx_size_);
+    fwd_txfm_ = libaom_test::fwd_txfm_func_ls[tx_size_];
+    txfm1d_size_ = libaom_test::get_txfm1d_size(tx_size_);
     txfm2d_size_ = txfm1d_size_ * txfm1d_size_;
     get_txfm1d_type(tx_type_, &type0_, &type1_);
     input_ = reinterpret_cast<int16_t *>(
@@ -76,11 +76,11 @@
       fwd_txfm_(input_, output_, txfm1d_size_, tx_type_, bd);
 
       if (lr_flip_ && ud_flip_)
-        libvpx_test::fliplrud(ref_input_, txfm1d_size_, txfm1d_size_);
+        libaom_test::fliplrud(ref_input_, txfm1d_size_, txfm1d_size_);
       else if (lr_flip_)
-        libvpx_test::fliplr(ref_input_, txfm1d_size_, txfm1d_size_);
+        libaom_test::fliplr(ref_input_, txfm1d_size_, txfm1d_size_);
       else if (ud_flip_)
-        libvpx_test::flipud(ref_input_, txfm1d_size_, txfm1d_size_);
+        libaom_test::flipud(ref_input_, txfm1d_size_, txfm1d_size_);
 
       reference_hybrid_2d(ref_input_, ref_output_, txfm1d_size_, type0_,
                           type1_);
diff --git a/test/vp10_highbd_iht_test.cc b/test/vp10_highbd_iht_test.cc
index b632b40..6190971 100644
--- a/test/vp10_highbd_iht_test.cc
+++ b/test/vp10_highbd_iht_test.cc
@@ -15,14 +15,14 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vp10/common/enums.h"
-#include "vpx_dsp/vpx_dsp_common.h"
-#include "vpx_ports/mem.h"
+#include "av1/common/enums.h"
+#include "aom_dsp/vpx_dsp_common.h"
+#include "aom_ports/mem.h"
 
 namespace {
 
 using std::tr1::tuple;
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 typedef void (*HbdHtFunc)(const int16_t *input, int32_t *output, int stride,
                           int tx_type, int bd);
@@ -56,7 +56,7 @@
 
     // Note:
     // Inverse transform input buffer is 32-byte aligned
-    // Refer to <root>/vp10/encoder/context_tree.c, function,
+    // Refer to <root>/av1/encoder/context_tree.c, function,
     // void alloc_mode_context().
     coeffs_ = reinterpret_cast<int32_t *>(
         vpx_memalign(32, sizeof(coeffs_[0]) * num_coeffs_));
@@ -71,7 +71,7 @@
     vpx_free(coeffs_);
     vpx_free(output_);
     vpx_free(output_ref_);
-    libvpx_test::ClearSystemState();
+    libaom_test::ClearSystemState();
   }
 
  protected:
diff --git a/test/vp10_inv_txfm1d_test.cc b/test/vp10_inv_txfm1d_test.cc
index 77e1122..744aae8 100644
--- a/test/vp10_inv_txfm1d_test.cc
+++ b/test/vp10_inv_txfm1d_test.cc
@@ -9,11 +9,11 @@
  */
 
 #include "test/vp10_txfm_test.h"
-#include "vp10/common/vp10_fwd_txfm1d.h"
-#include "vp10/common/vp10_inv_txfm1d.h"
+#include "av1/common/vp10_fwd_txfm1d.h"
+#include "av1/common/vp10_inv_txfm1d.h"
 
-using libvpx_test::ACMRandom;
-using libvpx_test::input_base;
+using libaom_test::ACMRandom;
+using libaom_test::input_base;
 
 namespace {
 const int txfm_type_num = 2;
diff --git a/test/vp10_inv_txfm2d_test.cc b/test/vp10_inv_txfm2d_test.cc
index 8cbca5a..bbd0aaf 100644
--- a/test/vp10_inv_txfm2d_test.cc
+++ b/test/vp10_inv_txfm2d_test.cc
@@ -16,14 +16,14 @@
 #include "test/acm_random.h"
 #include "test/util.h"
 #include "test/vp10_txfm_test.h"
-#include "vp10/common/vp10_inv_txfm2d_cfg.h"
+#include "av1/common/vp10_inv_txfm2d_cfg.h"
 
-using libvpx_test::ACMRandom;
-using libvpx_test::input_base;
-using libvpx_test::bd;
-using libvpx_test::compute_avg_abs_error;
-using libvpx_test::Fwd_Txfm2d_Func;
-using libvpx_test::Inv_Txfm2d_Func;
+using libaom_test::ACMRandom;
+using libaom_test::input_base;
+using libaom_test::bd;
+using libaom_test::compute_avg_abs_error;
+using libaom_test::Fwd_Txfm2d_Func;
+using libaom_test::Inv_Txfm2d_Func;
 
 namespace {
 
@@ -39,7 +39,7 @@
     tx_size_ = GET_PARAM(1);
     max_error_ = GET_PARAM(2);
     max_avg_error_ = GET_PARAM(3);
-    txfm1d_size_ = libvpx_test::get_txfm1d_size(tx_size_);
+    txfm1d_size_ = libaom_test::get_txfm1d_size(tx_size_);
     txfm2d_size_ = txfm1d_size_ * txfm1d_size_;
     count_ = 500;
 
@@ -53,9 +53,9 @@
 
   void RunRoundtripCheck() {
     const Fwd_Txfm2d_Func fwd_txfm_func =
-        libvpx_test::fwd_txfm_func_ls[tx_size_];
+        libaom_test::fwd_txfm_func_ls[tx_size_];
     const Inv_Txfm2d_Func inv_txfm_func =
-        libvpx_test::inv_txfm_func_ls[tx_size_];
+        libaom_test::inv_txfm_func_ls[tx_size_];
     double avg_abs_error = 0;
     ACMRandom rnd(ACMRandom::DeterministicSeed());
     for (int ci = 0; ci < count_; ci++) {
diff --git a/test/vp10_inv_txfm_test.cc b/test/vp10_inv_txfm_test.cc
index 3469d19..df8787d 100644
--- a/test/vp10_inv_txfm_test.cc
+++ b/test/vp10_inv_txfm_test.cc
@@ -20,12 +20,12 @@
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
-#include "vp10/common/blockd.h"
-#include "vp10/common/scan.h"
-#include "vpx/vpx_integer.h"
-#include "vp10/common/vp10_inv_txfm.h"
+#include "av1/common/blockd.h"
+#include "av1/common/scan.h"
+#include "aom/vpx_integer.h"
+#include "av1/common/vp10_inv_txfm.h"
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 namespace {
 const double kInvSqrt2 = 0.707106781186547524400844362104;
@@ -125,7 +125,7 @@
     last_nonzero_ = GET_PARAM(4);
   }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
  protected:
   int last_nonzero_;
diff --git a/test/vp10_quantize_test.cc b/test/vp10_quantize_test.cc
index e7365bb..f3990ae 100644
--- a/test/vp10_quantize_test.cc
+++ b/test/vp10_quantize_test.cc
@@ -17,7 +17,7 @@
 #include "test/acm_random.h"
 #include "test/clear_system_state.h"
 #include "test/register_state_check.h"
-#include "vp10/common/scan.h"
+#include "av1/common/scan.h"
 
 namespace {
 
@@ -37,7 +37,7 @@
   int coeffCount;
 };
 
-using libvpx_test::ACMRandom;
+using libaom_test::ACMRandom;
 
 const int numTests = 1000;
 const int maxSize = 1024;
@@ -173,7 +173,7 @@
 
   virtual void SetUp() { params_ = GetParam(); }
 
-  virtual void TearDown() { libvpx_test::ClearSystemState(); }
+  virtual void TearDown() { libaom_test::ClearSystemState(); }
 
   virtual ~VP10QuantizeTest() {}
 
diff --git a/test/vp10_txfm_test.cc b/test/vp10_txfm_test.cc
index f9055f1..718d71b 100644
--- a/test/vp10_txfm_test.cc
+++ b/test/vp10_txfm_test.cc
@@ -11,7 +11,7 @@
 #include <stdio.h>
 #include "test/vp10_txfm_test.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 
 int get_txfm1d_size(TX_SIZE tx_size) { return 1 << (tx_size + 2); }
 
@@ -160,4 +160,4 @@
 template void flipud<double>(double *dest, int stride, int length);
 template void fliplrud<double>(double *dest, int stride, int length);
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
diff --git a/test/vp10_txfm_test.h b/test/vp10_txfm_test.h
index 4b7d978..bfae073 100644
--- a/test/vp10_txfm_test.h
+++ b/test/vp10_txfm_test.h
@@ -21,11 +21,11 @@
 #include "third_party/googletest/src/include/gtest/gtest.h"
 
 #include "test/acm_random.h"
-#include "vp10/common/enums.h"
-#include "vp10/common/vp10_txfm.h"
+#include "av1/common/enums.h"
+#include "av1/common/vp10_txfm.h"
 #include "./vp10_rtcd.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 typedef enum {
   TYPE_DCT = 0,
   TYPE_ADST,
@@ -87,5 +87,5 @@
 };
 #endif  // CONFIG_VP9_HIGHBITDEPTH
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 #endif  // VP10_TXFM_TEST_H_
diff --git a/test/vp10_wedge_utils_test.cc b/test/vp10_wedge_utils_test.cc
index 57008c6..127a32f 100644
--- a/test/vp10_wedge_utils_test.cc
+++ b/test/vp10_wedge_utils_test.cc
@@ -15,9 +15,9 @@
 #include "./vpx_dsp_rtcd.h"
 #include "./vp10_rtcd.h"
 
-#include "vpx_dsp/vpx_dsp_common.h"
+#include "aom_dsp/vpx_dsp_common.h"
 
-#include "vp10/common/enums.h"
+#include "av1/common/enums.h"
 
 #include "test/acm_random.h"
 #include "test/function_equivalence_test.h"
@@ -26,8 +26,8 @@
 #define WEDGE_WEIGHT_BITS 6
 #define MAX_MASK_VALUE (1 << (WEDGE_WEIGHT_BITS))
 
-using libvpx_test::ACMRandom;
-using libvpx_test::FunctionEquivalenceTest;
+using libaom_test::ACMRandom;
+using libaom_test::FunctionEquivalenceTest;
 
 namespace {
 
@@ -158,7 +158,7 @@
 
 typedef uint64_t (*FSSE)(const int16_t *r1, const int16_t *d, const uint8_t *m,
                          int N);
-typedef libvpx_test::FuncParam<FSSE> TestFuncsFSSE;
+typedef libaom_test::FuncParam<FSSE> TestFuncsFSSE;
 
 class WedgeUtilsSSEOptTest : public FunctionEquivalenceTest<FSSE> {
  protected:
@@ -230,7 +230,7 @@
 //////////////////////////////////////////////////////////////////////////////
 
 typedef int (*FSign)(const int16_t *ds, const uint8_t *m, int N, int64_t limit);
-typedef libvpx_test::FuncParam<FSign> TestFuncsFSign;
+typedef libaom_test::FuncParam<FSign> TestFuncsFSign;
 
 class WedgeUtilsSignOptTest : public FunctionEquivalenceTest<FSign> {
  protected:
@@ -339,7 +339,7 @@
 //////////////////////////////////////////////////////////////////////////////
 
 typedef void (*FDS)(int16_t *d, const int16_t *a, const int16_t *b, int N);
-typedef libvpx_test::FuncParam<FDS> TestFuncsFDS;
+typedef libaom_test::FuncParam<FDS> TestFuncsFDS;
 
 class WedgeUtilsDeltaSquaresOptTest : public FunctionEquivalenceTest<FDS> {
  protected:
diff --git a/test/vp8_multi_resolution_encoder.sh b/test/vp8_multi_resolution_encoder.sh
index a8b7fe7..9b09daa 100755
--- a/test/vp8_multi_resolution_encoder.sh
+++ b/test/vp8_multi_resolution_encoder.sh
@@ -8,7 +8,7 @@
 ##  in the file PATENTS.  All contributing project authors may
 ##  be found in the AUTHORS file in the root of the source tree.
 ##
-##  This file tests the libvpx vp8_multi_resolution_encoder example. To add new
+##  This file tests the libaom vp8_multi_resolution_encoder example. To add new
 ##  tests to this file, do the following:
 ##    1. Write a shell function (this is your test).
 ##    2. Add the function to vp8_mre_tests (on a new line).
@@ -24,7 +24,7 @@
     fi
     local readonly app="vp8_multi_resolution_encoder"
     if [ -z "$(vpx_tool_path "${app}")" ]; then
-      elog "${app} not found. It must exist in LIBVPX_BIN_PATH or its parent."
+      elog "${app} not found. It must exist in LIBAOM_BIN_PATH or its parent."
       return 1
     fi
   fi
diff --git a/test/vpxdec.sh b/test/vpxdec.sh
index de51c80..8b213ea 100755
--- a/test/vpxdec.sh
+++ b/test/vpxdec.sh
@@ -23,13 +23,13 @@
     return 1
   fi
   if [ -z "$(vpx_tool_path vpxdec)" ]; then
-    elog "vpxdec not found. It must exist in LIBVPX_BIN_PATH or its parent."
+    elog "vpxdec not found. It must exist in LIBAOM_BIN_PATH or its parent."
     return 1
   fi
 }
 
 # Wrapper function for running vpxdec with pipe input. Requires that
-# LIBVPX_BIN_PATH points to the directory containing vpxdec. $1 is used as the
+# LIBAOM_BIN_PATH points to the directory containing vpxdec. $1 is used as the
 # input file path and shifted away. All remaining parameters are passed through
 # to vpxdec.
 vpxdec_pipe() {
@@ -39,7 +39,7 @@
   cat "${input}" | eval "${VPX_TEST_PREFIX}" "${decoder}" - "$@" ${devnull}
 }
 
-# Wrapper function for running vpxdec. Requires that LIBVPX_BIN_PATH points to
+# Wrapper function for running vpxdec. Requires that LIBAOM_BIN_PATH points to
 # the directory containing vpxdec. $1 one is used as the input file path and
 # shifted away. All remaining parameters are passed through to vpxdec.
 vpxdec() {
diff --git a/test/vpxenc.sh b/test/vpxenc.sh
index e899499..20e147f 100755
--- a/test/vpxenc.sh
+++ b/test/vpxenc.sh
@@ -31,7 +31,7 @@
     fi
   fi
   if [ -z "$(vpx_tool_path vpxenc)" ]; then
-    elog "vpxenc not found. It must exist in LIBVPX_BIN_PATH or its parent."
+    elog "vpxenc not found. It must exist in LIBAOM_BIN_PATH or its parent."
     return 1
   fi
 }
@@ -91,7 +91,7 @@
 }
 
 # Wrapper function for running vpxenc with pipe input. Requires that
-# LIBVPX_BIN_PATH points to the directory containing vpxenc. $1 is used as the
+# LIBAOM_BIN_PATH points to the directory containing vpxenc. $1 is used as the
 # input file path and shifted away. All remaining parameters are passed through
 # to vpxenc.
 vpxenc_pipe() {
@@ -103,7 +103,7 @@
     "$@" ${devnull}
 }
 
-# Wrapper function for running vpxenc. Requires that LIBVPX_BIN_PATH points to
+# Wrapper function for running vpxenc. Requires that LIBAOM_BIN_PATH points to
 # the directory containing vpxenc. $1 one is used as the input file path and
 # shifted away. All remaining parameters are passed through to vpxenc.
 vpxenc() {
diff --git a/test/webm_video_source.h b/test/webm_video_source.h
index 5371361..c0e1cb1 100644
--- a/test/webm_video_source.h
+++ b/test/webm_video_source.h
@@ -18,7 +18,7 @@
 #include "../webmdec.h"
 #include "test/video_source.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 
 // This class extends VideoSource to allow parsing of WebM files,
 // so that we can do actual file decodes.
@@ -88,6 +88,6 @@
   bool end_of_file_;
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // TEST_WEBM_VIDEO_SOURCE_H_
diff --git a/test/y4m_test.cc b/test/y4m_test.cc
index 000bab6..d68d3d1 100644
--- a/test/y4m_test.cc
+++ b/test/y4m_test.cc
@@ -74,7 +74,7 @@
 }
 
 class Y4mVideoSourceTest : public ::testing::TestWithParam<Y4mTestParam>,
-                           public ::libvpx_test::Y4mVideoSource {
+                           public ::libaom_test::Y4mVideoSource {
  protected:
   Y4mVideoSourceTest() : Y4mVideoSource("", 0, 0) {}
 
@@ -117,7 +117,7 @@
   // Checks MD5 of the raw frame data
   void Md5Check(const string &expected_md5) {
     ASSERT_TRUE(input_file_ != NULL);
-    libvpx_test::MD5 md5;
+    libaom_test::MD5 md5;
     for (unsigned int i = start_; i < limit_; i++) {
       md5.Add(img());
       Next();
@@ -158,7 +158,7 @@
     ASSERT_TRUE(input_file_ != NULL);
     char buf[Y4M_BUFFER_SIZE] = { 0 };
     const struct VpxRational framerate = { y4m_.fps_n, y4m_.fps_d };
-    tmpfile_ = new libvpx_test::TempOutFile;
+    tmpfile_ = new libaom_test::TempOutFile;
     ASSERT_TRUE(tmpfile_->file() != NULL);
     y4m_write_file_header(buf, sizeof(buf), kWidth, kHeight, &framerate,
                           y4m_.vpx_fmt, y4m_.bit_depth);
@@ -176,7 +176,7 @@
     Y4mVideoSourceTest::Init(file_name, limit);
     WriteY4mAndReadBack();
   }
-  libvpx_test::TempOutFile *tmpfile_;
+  libaom_test::TempOutFile *tmpfile_;
 };
 
 TEST_P(Y4mVideoWriteTest, WriteTest) {
diff --git a/test/y4m_video_source.h b/test/y4m_video_source.h
index 2682ddd..094cdbe 100644
--- a/test/y4m_video_source.h
+++ b/test/y4m_video_source.h
@@ -15,7 +15,7 @@
 #include "test/video_source.h"
 #include "./y4minput.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 
 // This class extends VideoSource to allow parsing of raw yv12
 // so that we can do actual file encodes.
@@ -117,6 +117,6 @@
   y4m_input y4m_;
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // TEST_Y4M_VIDEO_SOURCE_H_
diff --git a/test/yuv_video_source.h b/test/yuv_video_source.h
index 2cc81a0..33a31d4 100644
--- a/test/yuv_video_source.h
+++ b/test/yuv_video_source.h
@@ -15,9 +15,9 @@
 #include <string>
 
 #include "test/video_source.h"
-#include "vpx/vpx_image.h"
+#include "aom/vpx_image.h"
 
-namespace libvpx_test {
+namespace libaom_test {
 
 // This class extends VideoSource to allow parsing of raw YUV
 // formats of various color sampling and bit-depths so that we can
@@ -119,6 +119,6 @@
   int framerate_denominator_;
 };
 
-}  // namespace libvpx_test
+}  // namespace libaom_test
 
 #endif  // TEST_YUV_VIDEO_SOURCE_H_
diff --git a/third_party/libyuv/source/cpu_id.cc b/third_party/libyuv/source/cpu_id.cc
index 8a10b00..72f686e 100644
--- a/third_party/libyuv/source/cpu_id.cc
+++ b/third_party/libyuv/source/cpu_id.cc
@@ -121,7 +121,7 @@
 }
 #endif  // defined(_M_IX86) || defined(_M_X64) ..
 
-// based on libvpx arm_cpudetect.c
+// based on libaom arm_cpudetect.c
 // For Arm, but public to allow testing on any CPU
 LIBYUV_API SAFEBUFFERS
 int ArmCpuCaps(const char* cpuinfo_name) {
diff --git a/third_party/x86inc/README.libvpx b/third_party/x86inc/README.libvpx
index 8d3cd96..6347614 100644
--- a/third_party/x86inc/README.libvpx
+++ b/third_party/x86inc/README.libvpx
@@ -11,8 +11,8 @@
 Get configuration from vpx_config.asm.
 Prefix functions with vpx by default.
 Manage name mangling (prefixing with '_') manually because 'PREFIX' does not
-  exist in libvpx.
-Expand PIC default to macho64 and respect CONFIG_PIC from libvpx
+  exist in libaom.
+Expand PIC default to macho64 and respect CONFIG_PIC from libaom
 Set 'private_extern' visibility for macho targets.
 Copy PIC 'GLOBAL' macros from x86_abi_support.asm
 Use .text instead of .rodata on macho to avoid broken tables in PIC mode.
diff --git a/third_party/x86inc/x86inc.asm b/third_party/x86inc/x86inc.asm
index b647dff..bb84f61 100644
--- a/third_party/x86inc/x86inc.asm
+++ b/third_party/x86inc/x86inc.asm
@@ -82,7 +82,7 @@
      %define FORMAT_MACHO 1
 %endif
 
-; Set PREFIX for libvpx builds.
+; Set PREFIX for libaom builds.
 %if FORMAT_ELF
     %undef PREFIX
 %elif WIN64
@@ -100,7 +100,7 @@
 ; In some instances macho32 tables get misaligned when using .rodata.
 ; When looking at the disassembly it appears that the offset is either
 ; correct or consistently off by 90. Placing them in the .text section
-; works around the issue. It appears to be specific to the way libvpx
+; works around the issue. It appears to be specific to the way libaom
 ; handles the tables.
 %macro SECTION_RODATA 0-1 16
     %ifidn __OUTPUT_FORMAT__,macho32
@@ -113,7 +113,7 @@
     %endif
 %endmacro
 
-; PIC macros are copied from vpx_ports/x86_abi_support.asm. The "define PIC"
+; PIC macros are copied from aom_ports/x86_abi_support.asm. The "define PIC"
 ; from original code is added in for 64bit.
 %ifidn __OUTPUT_FORMAT__,elf32
 %define ABI_IS_32BIT 1
@@ -790,7 +790,7 @@
     annotate_function_size
     %if %1
         %xdefine %%FUNCTION_PREFIX private_prefix
-        ; libvpx explicitly sets visibility in shared object builds. Avoid
+        ; libaom explicitly sets visibility in shared object builds. Avoid
         ; setting visibility to hidden as it may break builds that split
         ; sources on e.g., directory boundaries.
         %ifdef CHROMIUM
diff --git a/tools_common.c b/tools_common.c
index e1c89a4..33d8bef 100644
--- a/tools_common.c
+++ b/tools_common.c
@@ -17,11 +17,11 @@
 #include "./tools_common.h"
 
 #if CONFIG_VP10_ENCODER
-#include "vpx/vp8cx.h"
+#include "aom/vp8cx.h"
 #endif
 
 #if CONFIG_VP10_DECODER
-#include "vpx/vp8dx.h"
+#include "aom/vp8dx.h"
 #endif
 
 #if defined(_WIN32) || defined(__OS2__)
diff --git a/tools_common.h b/tools_common.h
index ce4fbf8..4cdb312 100644
--- a/tools_common.h
+++ b/tools_common.h
@@ -13,10 +13,10 @@
 #include <stdio.h>
 
 #include "./vpx_config.h"
-#include "vpx/vpx_codec.h"
-#include "vpx/vpx_image.h"
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/msvc.h"
+#include "aom/vpx_codec.h"
+#include "aom/vpx_image.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/msvc.h"
 
 #if CONFIG_ENCODERS
 #include "./y4minput.h"
diff --git a/video_reader.c b/video_reader.c
index a0ba252..c3a19d3 100644
--- a/video_reader.c
+++ b/video_reader.c
@@ -14,7 +14,7 @@
 #include "./ivfdec.h"
 #include "./video_reader.h"
 
-#include "vpx_ports/mem_ops.h"
+#include "aom_ports/mem_ops.h"
 
 static const char *const kIVFSignature = "DKIF";
 
diff --git a/video_writer.c b/video_writer.c
index 56d428b..c0c292f 100644
--- a/video_writer.c
+++ b/video_writer.c
@@ -12,7 +12,7 @@
 
 #include "./ivfenc.h"
 #include "./video_writer.h"
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_encoder.h"
 
 struct VpxVideoWriterStruct {
   VpxVideoInfo info;
diff --git a/vp10/common/x86/vp10_fwd_dct32x32_impl_sse2.h b/vp10/common/x86/vp10_fwd_dct32x32_impl_sse2.h
deleted file mode 100644
index eea9f97..0000000
--- a/vp10/common/x86/vp10_fwd_dct32x32_impl_sse2.h
+++ /dev/null
@@ -1,3201 +0,0 @@
-/*
- *  Copyright (c) 2012 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 <emmintrin.h>  // SSE2
-
-#include "./vp10_rtcd.h"
-#include "vp10/common/vp10_fwd_txfm.h"
-#include "vpx_dsp/txfm_common.h"
-#include "vpx_dsp/x86/txfm_common_sse2.h"
-
-// TODO(jingning) The high bit-depth version needs re-work for performance.
-// The current SSE2 implementation also causes cross reference to the static
-// functions in the C implementation file.
-#if DCT_HIGH_BIT_DEPTH
-#define ADD_EPI16 _mm_adds_epi16
-#define SUB_EPI16 _mm_subs_epi16
-#if FDCT32x32_HIGH_PRECISION
-void vp10_fdct32x32_rows_c(const int16_t *intermediate, tran_low_t *out) {
-  int i, j;
-  for (i = 0; i < 32; ++i) {
-    tran_high_t temp_in[32], temp_out[32];
-    for (j = 0; j < 32; ++j) temp_in[j] = intermediate[j * 32 + i];
-    vp10_fdct32(temp_in, temp_out, 0);
-    for (j = 0; j < 32; ++j)
-      out[j + i * 32] =
-          (tran_low_t)((temp_out[j] + 1 + (temp_out[j] < 0)) >> 2);
-  }
-}
-#define HIGH_FDCT32x32_2D_C vp10_highbd_fdct32x32_c
-#define HIGH_FDCT32x32_2D_ROWS_C vp10_fdct32x32_rows_c
-#else
-void vp10_fdct32x32_rd_rows_c(const int16_t *intermediate, tran_low_t *out) {
-  int i, j;
-  for (i = 0; i < 32; ++i) {
-    tran_high_t temp_in[32], temp_out[32];
-    for (j = 0; j < 32; ++j) temp_in[j] = intermediate[j * 32 + i];
-    vp10_fdct32(temp_in, temp_out, 1);
-    for (j = 0; j < 32; ++j) out[j + i * 32] = (tran_low_t)temp_out[j];
-  }
-}
-#define HIGH_FDCT32x32_2D_C vp10_highbd_fdct32x32_rd_c
-#define HIGH_FDCT32x32_2D_ROWS_C vp10_fdct32x32_rd_rows_c
-#endif  // FDCT32x32_HIGH_PRECISION
-#else
-#define ADD_EPI16 _mm_add_epi16
-#define SUB_EPI16 _mm_sub_epi16
-#endif  // DCT_HIGH_BIT_DEPTH
-
-void FDCT32x32_2D(const int16_t *input, tran_low_t *output_org, int stride) {
-  // Calculate pre-multiplied strides
-  const int str1 = stride;
-  const int str2 = 2 * stride;
-  const int str3 = 2 * stride + str1;
-  // We need an intermediate buffer between passes.
-  DECLARE_ALIGNED(16, int16_t, intermediate[32 * 32]);
-  // Constants
-  //    When we use them, in one case, they are all the same. In all others
-  //    it's a pair of them that we need to repeat four times. This is done
-  //    by constructing the 32 bit constant corresponding to that pair.
-  const __m128i k__cospi_p16_p16 = _mm_set1_epi16((int16_t)cospi_16_64);
-  const __m128i k__cospi_p16_m16 = pair_set_epi16(+cospi_16_64, -cospi_16_64);
-  const __m128i k__cospi_m08_p24 = pair_set_epi16(-cospi_8_64, cospi_24_64);
-  const __m128i k__cospi_m24_m08 = pair_set_epi16(-cospi_24_64, -cospi_8_64);
-  const __m128i k__cospi_p24_p08 = pair_set_epi16(+cospi_24_64, cospi_8_64);
-  const __m128i k__cospi_p12_p20 = pair_set_epi16(+cospi_12_64, cospi_20_64);
-  const __m128i k__cospi_m20_p12 = pair_set_epi16(-cospi_20_64, cospi_12_64);
-  const __m128i k__cospi_m04_p28 = pair_set_epi16(-cospi_4_64, cospi_28_64);
-  const __m128i k__cospi_p28_p04 = pair_set_epi16(+cospi_28_64, cospi_4_64);
-  const __m128i k__cospi_m28_m04 = pair_set_epi16(-cospi_28_64, -cospi_4_64);
-  const __m128i k__cospi_m12_m20 = pair_set_epi16(-cospi_12_64, -cospi_20_64);
-  const __m128i k__cospi_p30_p02 = pair_set_epi16(+cospi_30_64, cospi_2_64);
-  const __m128i k__cospi_p14_p18 = pair_set_epi16(+cospi_14_64, cospi_18_64);
-  const __m128i k__cospi_p22_p10 = pair_set_epi16(+cospi_22_64, cospi_10_64);
-  const __m128i k__cospi_p06_p26 = pair_set_epi16(+cospi_6_64, cospi_26_64);
-  const __m128i k__cospi_m26_p06 = pair_set_epi16(-cospi_26_64, cospi_6_64);
-  const __m128i k__cospi_m10_p22 = pair_set_epi16(-cospi_10_64, cospi_22_64);
-  const __m128i k__cospi_m18_p14 = pair_set_epi16(-cospi_18_64, cospi_14_64);
-  const __m128i k__cospi_m02_p30 = pair_set_epi16(-cospi_2_64, cospi_30_64);
-  const __m128i k__cospi_p31_p01 = pair_set_epi16(+cospi_31_64, cospi_1_64);
-  const __m128i k__cospi_p15_p17 = pair_set_epi16(+cospi_15_64, cospi_17_64);
-  const __m128i k__cospi_p23_p09 = pair_set_epi16(+cospi_23_64, cospi_9_64);
-  const __m128i k__cospi_p07_p25 = pair_set_epi16(+cospi_7_64, cospi_25_64);
-  const __m128i k__cospi_m25_p07 = pair_set_epi16(-cospi_25_64, cospi_7_64);
-  const __m128i k__cospi_m09_p23 = pair_set_epi16(-cospi_9_64, cospi_23_64);
-  const __m128i k__cospi_m17_p15 = pair_set_epi16(-cospi_17_64, cospi_15_64);
-  const __m128i k__cospi_m01_p31 = pair_set_epi16(-cospi_1_64, cospi_31_64);
-  const __m128i k__cospi_p27_p05 = pair_set_epi16(+cospi_27_64, cospi_5_64);
-  const __m128i k__cospi_p11_p21 = pair_set_epi16(+cospi_11_64, cospi_21_64);
-  const __m128i k__cospi_p19_p13 = pair_set_epi16(+cospi_19_64, cospi_13_64);
-  const __m128i k__cospi_p03_p29 = pair_set_epi16(+cospi_3_64, cospi_29_64);
-  const __m128i k__cospi_m29_p03 = pair_set_epi16(-cospi_29_64, cospi_3_64);
-  const __m128i k__cospi_m13_p19 = pair_set_epi16(-cospi_13_64, cospi_19_64);
-  const __m128i k__cospi_m21_p11 = pair_set_epi16(-cospi_21_64, cospi_11_64);
-  const __m128i k__cospi_m05_p27 = pair_set_epi16(-cospi_5_64, cospi_27_64);
-  const __m128i k__DCT_CONST_ROUNDING = _mm_set1_epi32(DCT_CONST_ROUNDING);
-  const __m128i kZero = _mm_set1_epi16(0);
-  const __m128i kOne = _mm_set1_epi16(1);
-  // Do the two transform/transpose passes
-  int pass;
-#if DCT_HIGH_BIT_DEPTH
-  int overflow;
-#endif
-  for (pass = 0; pass < 2; ++pass) {
-    // We process eight columns (transposed rows in second pass) at a time.
-    int column_start;
-    for (column_start = 0; column_start < 32; column_start += 8) {
-      __m128i step1[32];
-      __m128i step2[32];
-      __m128i step3[32];
-      __m128i out[32];
-      // Stage 1
-      // Note: even though all the loads below are aligned, using the aligned
-      //       intrinsic make the code slightly slower.
-      if (0 == pass) {
-        const int16_t *in = &input[column_start];
-        // step1[i] =  (in[ 0 * stride] + in[(32 -  1) * stride]) << 2;
-        // Note: the next four blocks could be in a loop. That would help the
-        //       instruction cache but is actually slower.
-        {
-          const int16_t *ina = in + 0 * str1;
-          const int16_t *inb = in + 31 * str1;
-          __m128i *step1a = &step1[0];
-          __m128i *step1b = &step1[31];
-          const __m128i ina0 = _mm_loadu_si128((const __m128i *)(ina));
-          const __m128i ina1 = _mm_loadu_si128((const __m128i *)(ina + str1));
-          const __m128i ina2 = _mm_loadu_si128((const __m128i *)(ina + str2));
-          const __m128i ina3 = _mm_loadu_si128((const __m128i *)(ina + str3));
-          const __m128i inb3 = _mm_loadu_si128((const __m128i *)(inb - str3));
-          const __m128i inb2 = _mm_loadu_si128((const __m128i *)(inb - str2));
-          const __m128i inb1 = _mm_loadu_si128((const __m128i *)(inb - str1));
-          const __m128i inb0 = _mm_loadu_si128((const __m128i *)(inb));
-          step1a[0] = _mm_add_epi16(ina0, inb0);
-          step1a[1] = _mm_add_epi16(ina1, inb1);
-          step1a[2] = _mm_add_epi16(ina2, inb2);
-          step1a[3] = _mm_add_epi16(ina3, inb3);
-          step1b[-3] = _mm_sub_epi16(ina3, inb3);
-          step1b[-2] = _mm_sub_epi16(ina2, inb2);
-          step1b[-1] = _mm_sub_epi16(ina1, inb1);
-          step1b[-0] = _mm_sub_epi16(ina0, inb0);
-          step1a[0] = _mm_slli_epi16(step1a[0], 2);
-          step1a[1] = _mm_slli_epi16(step1a[1], 2);
-          step1a[2] = _mm_slli_epi16(step1a[2], 2);
-          step1a[3] = _mm_slli_epi16(step1a[3], 2);
-          step1b[-3] = _mm_slli_epi16(step1b[-3], 2);
-          step1b[-2] = _mm_slli_epi16(step1b[-2], 2);
-          step1b[-1] = _mm_slli_epi16(step1b[-1], 2);
-          step1b[-0] = _mm_slli_epi16(step1b[-0], 2);
-        }
-        {
-          const int16_t *ina = in + 4 * str1;
-          const int16_t *inb = in + 27 * str1;
-          __m128i *step1a = &step1[4];
-          __m128i *step1b = &step1[27];
-          const __m128i ina0 = _mm_loadu_si128((const __m128i *)(ina));
-          const __m128i ina1 = _mm_loadu_si128((const __m128i *)(ina + str1));
-          const __m128i ina2 = _mm_loadu_si128((const __m128i *)(ina + str2));
-          const __m128i ina3 = _mm_loadu_si128((const __m128i *)(ina + str3));
-          const __m128i inb3 = _mm_loadu_si128((const __m128i *)(inb - str3));
-          const __m128i inb2 = _mm_loadu_si128((const __m128i *)(inb - str2));
-          const __m128i inb1 = _mm_loadu_si128((const __m128i *)(inb - str1));
-          const __m128i inb0 = _mm_loadu_si128((const __m128i *)(inb));
-          step1a[0] = _mm_add_epi16(ina0, inb0);
-          step1a[1] = _mm_add_epi16(ina1, inb1);
-          step1a[2] = _mm_add_epi16(ina2, inb2);
-          step1a[3] = _mm_add_epi16(ina3, inb3);
-          step1b[-3] = _mm_sub_epi16(ina3, inb3);
-          step1b[-2] = _mm_sub_epi16(ina2, inb2);
-          step1b[-1] = _mm_sub_epi16(ina1, inb1);
-          step1b[-0] = _mm_sub_epi16(ina0, inb0);
-          step1a[0] = _mm_slli_epi16(step1a[0], 2);
-          step1a[1] = _mm_slli_epi16(step1a[1], 2);
-          step1a[2] = _mm_slli_epi16(step1a[2], 2);
-          step1a[3] = _mm_slli_epi16(step1a[3], 2);
-          step1b[-3] = _mm_slli_epi16(step1b[-3], 2);
-          step1b[-2] = _mm_slli_epi16(step1b[-2], 2);
-          step1b[-1] = _mm_slli_epi16(step1b[-1], 2);
-          step1b[-0] = _mm_slli_epi16(step1b[-0], 2);
-        }
-        {
-          const int16_t *ina = in + 8 * str1;
-          const int16_t *inb = in + 23 * str1;
-          __m128i *step1a = &step1[8];
-          __m128i *step1b = &step1[23];
-          const __m128i ina0 = _mm_loadu_si128((const __m128i *)(ina));
-          const __m128i ina1 = _mm_loadu_si128((const __m128i *)(ina + str1));
-          const __m128i ina2 = _mm_loadu_si128((const __m128i *)(ina + str2));
-          const __m128i ina3 = _mm_loadu_si128((const __m128i *)(ina + str3));
-          const __m128i inb3 = _mm_loadu_si128((const __m128i *)(inb - str3));
-          const __m128i inb2 = _mm_loadu_si128((const __m128i *)(inb - str2));
-          const __m128i inb1 = _mm_loadu_si128((const __m128i *)(inb - str1));
-          const __m128i inb0 = _mm_loadu_si128((const __m128i *)(inb));
-          step1a[0] = _mm_add_epi16(ina0, inb0);
-          step1a[1] = _mm_add_epi16(ina1, inb1);
-          step1a[2] = _mm_add_epi16(ina2, inb2);
-          step1a[3] = _mm_add_epi16(ina3, inb3);
-          step1b[-3] = _mm_sub_epi16(ina3, inb3);
-          step1b[-2] = _mm_sub_epi16(ina2, inb2);
-          step1b[-1] = _mm_sub_epi16(ina1, inb1);
-          step1b[-0] = _mm_sub_epi16(ina0, inb0);
-          step1a[0] = _mm_slli_epi16(step1a[0], 2);
-          step1a[1] = _mm_slli_epi16(step1a[1], 2);
-          step1a[2] = _mm_slli_epi16(step1a[2], 2);
-          step1a[3] = _mm_slli_epi16(step1a[3], 2);
-          step1b[-3] = _mm_slli_epi16(step1b[-3], 2);
-          step1b[-2] = _mm_slli_epi16(step1b[-2], 2);
-          step1b[-1] = _mm_slli_epi16(step1b[-1], 2);
-          step1b[-0] = _mm_slli_epi16(step1b[-0], 2);
-        }
-        {
-          const int16_t *ina = in + 12 * str1;
-          const int16_t *inb = in + 19 * str1;
-          __m128i *step1a = &step1[12];
-          __m128i *step1b = &step1[19];
-          const __m128i ina0 = _mm_loadu_si128((const __m128i *)(ina));
-          const __m128i ina1 = _mm_loadu_si128((const __m128i *)(ina + str1));
-          const __m128i ina2 = _mm_loadu_si128((const __m128i *)(ina + str2));
-          const __m128i ina3 = _mm_loadu_si128((const __m128i *)(ina + str3));
-          const __m128i inb3 = _mm_loadu_si128((const __m128i *)(inb - str3));
-          const __m128i inb2 = _mm_loadu_si128((const __m128i *)(inb - str2));
-          const __m128i inb1 = _mm_loadu_si128((const __m128i *)(inb - str1));
-          const __m128i inb0 = _mm_loadu_si128((const __m128i *)(inb));
-          step1a[0] = _mm_add_epi16(ina0, inb0);
-          step1a[1] = _mm_add_epi16(ina1, inb1);
-          step1a[2] = _mm_add_epi16(ina2, inb2);
-          step1a[3] = _mm_add_epi16(ina3, inb3);
-          step1b[-3] = _mm_sub_epi16(ina3, inb3);
-          step1b[-2] = _mm_sub_epi16(ina2, inb2);
-          step1b[-1] = _mm_sub_epi16(ina1, inb1);
-          step1b[-0] = _mm_sub_epi16(ina0, inb0);
-          step1a[0] = _mm_slli_epi16(step1a[0], 2);
-          step1a[1] = _mm_slli_epi16(step1a[1], 2);
-          step1a[2] = _mm_slli_epi16(step1a[2], 2);
-          step1a[3] = _mm_slli_epi16(step1a[3], 2);
-          step1b[-3] = _mm_slli_epi16(step1b[-3], 2);
-          step1b[-2] = _mm_slli_epi16(step1b[-2], 2);
-          step1b[-1] = _mm_slli_epi16(step1b[-1], 2);
-          step1b[-0] = _mm_slli_epi16(step1b[-0], 2);
-        }
-      } else {
-        int16_t *in = &intermediate[column_start];
-        // step1[i] =  in[ 0 * 32] + in[(32 -  1) * 32];
-        // Note: using the same approach as above to have common offset is
-        //       counter-productive as all offsets can be calculated at compile
-        //       time.
-        // Note: the next four blocks could be in a loop. That would help the
-        //       instruction cache but is actually slower.
-        {
-          __m128i in00 = _mm_loadu_si128((const __m128i *)(in + 0 * 32));
-          __m128i in01 = _mm_loadu_si128((const __m128i *)(in + 1 * 32));
-          __m128i in02 = _mm_loadu_si128((const __m128i *)(in + 2 * 32));
-          __m128i in03 = _mm_loadu_si128((const __m128i *)(in + 3 * 32));
-          __m128i in28 = _mm_loadu_si128((const __m128i *)(in + 28 * 32));
-          __m128i in29 = _mm_loadu_si128((const __m128i *)(in + 29 * 32));
-          __m128i in30 = _mm_loadu_si128((const __m128i *)(in + 30 * 32));
-          __m128i in31 = _mm_loadu_si128((const __m128i *)(in + 31 * 32));
-          step1[0] = ADD_EPI16(in00, in31);
-          step1[1] = ADD_EPI16(in01, in30);
-          step1[2] = ADD_EPI16(in02, in29);
-          step1[3] = ADD_EPI16(in03, in28);
-          step1[28] = SUB_EPI16(in03, in28);
-          step1[29] = SUB_EPI16(in02, in29);
-          step1[30] = SUB_EPI16(in01, in30);
-          step1[31] = SUB_EPI16(in00, in31);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x8(&step1[0], &step1[1], &step1[2],
-                                             &step1[3], &step1[28], &step1[29],
-                                             &step1[30], &step1[31]);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          __m128i in04 = _mm_loadu_si128((const __m128i *)(in + 4 * 32));
-          __m128i in05 = _mm_loadu_si128((const __m128i *)(in + 5 * 32));
-          __m128i in06 = _mm_loadu_si128((const __m128i *)(in + 6 * 32));
-          __m128i in07 = _mm_loadu_si128((const __m128i *)(in + 7 * 32));
-          __m128i in24 = _mm_loadu_si128((const __m128i *)(in + 24 * 32));
-          __m128i in25 = _mm_loadu_si128((const __m128i *)(in + 25 * 32));
-          __m128i in26 = _mm_loadu_si128((const __m128i *)(in + 26 * 32));
-          __m128i in27 = _mm_loadu_si128((const __m128i *)(in + 27 * 32));
-          step1[4] = ADD_EPI16(in04, in27);
-          step1[5] = ADD_EPI16(in05, in26);
-          step1[6] = ADD_EPI16(in06, in25);
-          step1[7] = ADD_EPI16(in07, in24);
-          step1[24] = SUB_EPI16(in07, in24);
-          step1[25] = SUB_EPI16(in06, in25);
-          step1[26] = SUB_EPI16(in05, in26);
-          step1[27] = SUB_EPI16(in04, in27);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x8(&step1[4], &step1[5], &step1[6],
-                                             &step1[7], &step1[24], &step1[25],
-                                             &step1[26], &step1[27]);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          __m128i in08 = _mm_loadu_si128((const __m128i *)(in + 8 * 32));
-          __m128i in09 = _mm_loadu_si128((const __m128i *)(in + 9 * 32));
-          __m128i in10 = _mm_loadu_si128((const __m128i *)(in + 10 * 32));
-          __m128i in11 = _mm_loadu_si128((const __m128i *)(in + 11 * 32));
-          __m128i in20 = _mm_loadu_si128((const __m128i *)(in + 20 * 32));
-          __m128i in21 = _mm_loadu_si128((const __m128i *)(in + 21 * 32));
-          __m128i in22 = _mm_loadu_si128((const __m128i *)(in + 22 * 32));
-          __m128i in23 = _mm_loadu_si128((const __m128i *)(in + 23 * 32));
-          step1[8] = ADD_EPI16(in08, in23);
-          step1[9] = ADD_EPI16(in09, in22);
-          step1[10] = ADD_EPI16(in10, in21);
-          step1[11] = ADD_EPI16(in11, in20);
-          step1[20] = SUB_EPI16(in11, in20);
-          step1[21] = SUB_EPI16(in10, in21);
-          step1[22] = SUB_EPI16(in09, in22);
-          step1[23] = SUB_EPI16(in08, in23);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x8(&step1[8], &step1[9], &step1[10],
-                                             &step1[11], &step1[20], &step1[21],
-                                             &step1[22], &step1[23]);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          __m128i in12 = _mm_loadu_si128((const __m128i *)(in + 12 * 32));
-          __m128i in13 = _mm_loadu_si128((const __m128i *)(in + 13 * 32));
-          __m128i in14 = _mm_loadu_si128((const __m128i *)(in + 14 * 32));
-          __m128i in15 = _mm_loadu_si128((const __m128i *)(in + 15 * 32));
-          __m128i in16 = _mm_loadu_si128((const __m128i *)(in + 16 * 32));
-          __m128i in17 = _mm_loadu_si128((const __m128i *)(in + 17 * 32));
-          __m128i in18 = _mm_loadu_si128((const __m128i *)(in + 18 * 32));
-          __m128i in19 = _mm_loadu_si128((const __m128i *)(in + 19 * 32));
-          step1[12] = ADD_EPI16(in12, in19);
-          step1[13] = ADD_EPI16(in13, in18);
-          step1[14] = ADD_EPI16(in14, in17);
-          step1[15] = ADD_EPI16(in15, in16);
-          step1[16] = SUB_EPI16(in15, in16);
-          step1[17] = SUB_EPI16(in14, in17);
-          step1[18] = SUB_EPI16(in13, in18);
-          step1[19] = SUB_EPI16(in12, in19);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x8(&step1[12], &step1[13], &step1[14],
-                                             &step1[15], &step1[16], &step1[17],
-                                             &step1[18], &step1[19]);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-      }
-      // Stage 2
-      {
-        step2[0] = ADD_EPI16(step1[0], step1[15]);
-        step2[1] = ADD_EPI16(step1[1], step1[14]);
-        step2[2] = ADD_EPI16(step1[2], step1[13]);
-        step2[3] = ADD_EPI16(step1[3], step1[12]);
-        step2[4] = ADD_EPI16(step1[4], step1[11]);
-        step2[5] = ADD_EPI16(step1[5], step1[10]);
-        step2[6] = ADD_EPI16(step1[6], step1[9]);
-        step2[7] = ADD_EPI16(step1[7], step1[8]);
-        step2[8] = SUB_EPI16(step1[7], step1[8]);
-        step2[9] = SUB_EPI16(step1[6], step1[9]);
-        step2[10] = SUB_EPI16(step1[5], step1[10]);
-        step2[11] = SUB_EPI16(step1[4], step1[11]);
-        step2[12] = SUB_EPI16(step1[3], step1[12]);
-        step2[13] = SUB_EPI16(step1[2], step1[13]);
-        step2[14] = SUB_EPI16(step1[1], step1[14]);
-        step2[15] = SUB_EPI16(step1[0], step1[15]);
-#if DCT_HIGH_BIT_DEPTH
-        overflow = check_epi16_overflow_x16(
-            &step2[0], &step2[1], &step2[2], &step2[3], &step2[4], &step2[5],
-            &step2[6], &step2[7], &step2[8], &step2[9], &step2[10], &step2[11],
-            &step2[12], &step2[13], &step2[14], &step2[15]);
-        if (overflow) {
-          if (pass == 0)
-            HIGH_FDCT32x32_2D_C(input, output_org, stride);
-          else
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-          return;
-        }
-#endif  // DCT_HIGH_BIT_DEPTH
-      }
-      {
-        const __m128i s2_20_0 = _mm_unpacklo_epi16(step1[27], step1[20]);
-        const __m128i s2_20_1 = _mm_unpackhi_epi16(step1[27], step1[20]);
-        const __m128i s2_21_0 = _mm_unpacklo_epi16(step1[26], step1[21]);
-        const __m128i s2_21_1 = _mm_unpackhi_epi16(step1[26], step1[21]);
-        const __m128i s2_22_0 = _mm_unpacklo_epi16(step1[25], step1[22]);
-        const __m128i s2_22_1 = _mm_unpackhi_epi16(step1[25], step1[22]);
-        const __m128i s2_23_0 = _mm_unpacklo_epi16(step1[24], step1[23]);
-        const __m128i s2_23_1 = _mm_unpackhi_epi16(step1[24], step1[23]);
-        const __m128i s2_20_2 = _mm_madd_epi16(s2_20_0, k__cospi_p16_m16);
-        const __m128i s2_20_3 = _mm_madd_epi16(s2_20_1, k__cospi_p16_m16);
-        const __m128i s2_21_2 = _mm_madd_epi16(s2_21_0, k__cospi_p16_m16);
-        const __m128i s2_21_3 = _mm_madd_epi16(s2_21_1, k__cospi_p16_m16);
-        const __m128i s2_22_2 = _mm_madd_epi16(s2_22_0, k__cospi_p16_m16);
-        const __m128i s2_22_3 = _mm_madd_epi16(s2_22_1, k__cospi_p16_m16);
-        const __m128i s2_23_2 = _mm_madd_epi16(s2_23_0, k__cospi_p16_m16);
-        const __m128i s2_23_3 = _mm_madd_epi16(s2_23_1, k__cospi_p16_m16);
-        const __m128i s2_24_2 = _mm_madd_epi16(s2_23_0, k__cospi_p16_p16);
-        const __m128i s2_24_3 = _mm_madd_epi16(s2_23_1, k__cospi_p16_p16);
-        const __m128i s2_25_2 = _mm_madd_epi16(s2_22_0, k__cospi_p16_p16);
-        const __m128i s2_25_3 = _mm_madd_epi16(s2_22_1, k__cospi_p16_p16);
-        const __m128i s2_26_2 = _mm_madd_epi16(s2_21_0, k__cospi_p16_p16);
-        const __m128i s2_26_3 = _mm_madd_epi16(s2_21_1, k__cospi_p16_p16);
-        const __m128i s2_27_2 = _mm_madd_epi16(s2_20_0, k__cospi_p16_p16);
-        const __m128i s2_27_3 = _mm_madd_epi16(s2_20_1, k__cospi_p16_p16);
-        // dct_const_round_shift
-        const __m128i s2_20_4 = _mm_add_epi32(s2_20_2, k__DCT_CONST_ROUNDING);
-        const __m128i s2_20_5 = _mm_add_epi32(s2_20_3, k__DCT_CONST_ROUNDING);
-        const __m128i s2_21_4 = _mm_add_epi32(s2_21_2, k__DCT_CONST_ROUNDING);
-        const __m128i s2_21_5 = _mm_add_epi32(s2_21_3, k__DCT_CONST_ROUNDING);
-        const __m128i s2_22_4 = _mm_add_epi32(s2_22_2, k__DCT_CONST_ROUNDING);
-        const __m128i s2_22_5 = _mm_add_epi32(s2_22_3, k__DCT_CONST_ROUNDING);
-        const __m128i s2_23_4 = _mm_add_epi32(s2_23_2, k__DCT_CONST_ROUNDING);
-        const __m128i s2_23_5 = _mm_add_epi32(s2_23_3, k__DCT_CONST_ROUNDING);
-        const __m128i s2_24_4 = _mm_add_epi32(s2_24_2, k__DCT_CONST_ROUNDING);
-        const __m128i s2_24_5 = _mm_add_epi32(s2_24_3, k__DCT_CONST_ROUNDING);
-        const __m128i s2_25_4 = _mm_add_epi32(s2_25_2, k__DCT_CONST_ROUNDING);
-        const __m128i s2_25_5 = _mm_add_epi32(s2_25_3, k__DCT_CONST_ROUNDING);
-        const __m128i s2_26_4 = _mm_add_epi32(s2_26_2, k__DCT_CONST_ROUNDING);
-        const __m128i s2_26_5 = _mm_add_epi32(s2_26_3, k__DCT_CONST_ROUNDING);
-        const __m128i s2_27_4 = _mm_add_epi32(s2_27_2, k__DCT_CONST_ROUNDING);
-        const __m128i s2_27_5 = _mm_add_epi32(s2_27_3, k__DCT_CONST_ROUNDING);
-        const __m128i s2_20_6 = _mm_srai_epi32(s2_20_4, DCT_CONST_BITS);
-        const __m128i s2_20_7 = _mm_srai_epi32(s2_20_5, DCT_CONST_BITS);
-        const __m128i s2_21_6 = _mm_srai_epi32(s2_21_4, DCT_CONST_BITS);
-        const __m128i s2_21_7 = _mm_srai_epi32(s2_21_5, DCT_CONST_BITS);
-        const __m128i s2_22_6 = _mm_srai_epi32(s2_22_4, DCT_CONST_BITS);
-        const __m128i s2_22_7 = _mm_srai_epi32(s2_22_5, DCT_CONST_BITS);
-        const __m128i s2_23_6 = _mm_srai_epi32(s2_23_4, DCT_CONST_BITS);
-        const __m128i s2_23_7 = _mm_srai_epi32(s2_23_5, DCT_CONST_BITS);
-        const __m128i s2_24_6 = _mm_srai_epi32(s2_24_4, DCT_CONST_BITS);
-        const __m128i s2_24_7 = _mm_srai_epi32(s2_24_5, DCT_CONST_BITS);
-        const __m128i s2_25_6 = _mm_srai_epi32(s2_25_4, DCT_CONST_BITS);
-        const __m128i s2_25_7 = _mm_srai_epi32(s2_25_5, DCT_CONST_BITS);
-        const __m128i s2_26_6 = _mm_srai_epi32(s2_26_4, DCT_CONST_BITS);
-        const __m128i s2_26_7 = _mm_srai_epi32(s2_26_5, DCT_CONST_BITS);
-        const __m128i s2_27_6 = _mm_srai_epi32(s2_27_4, DCT_CONST_BITS);
-        const __m128i s2_27_7 = _mm_srai_epi32(s2_27_5, DCT_CONST_BITS);
-        // Combine
-        step2[20] = _mm_packs_epi32(s2_20_6, s2_20_7);
-        step2[21] = _mm_packs_epi32(s2_21_6, s2_21_7);
-        step2[22] = _mm_packs_epi32(s2_22_6, s2_22_7);
-        step2[23] = _mm_packs_epi32(s2_23_6, s2_23_7);
-        step2[24] = _mm_packs_epi32(s2_24_6, s2_24_7);
-        step2[25] = _mm_packs_epi32(s2_25_6, s2_25_7);
-        step2[26] = _mm_packs_epi32(s2_26_6, s2_26_7);
-        step2[27] = _mm_packs_epi32(s2_27_6, s2_27_7);
-#if DCT_HIGH_BIT_DEPTH
-        overflow = check_epi16_overflow_x8(&step2[20], &step2[21], &step2[22],
-                                           &step2[23], &step2[24], &step2[25],
-                                           &step2[26], &step2[27]);
-        if (overflow) {
-          if (pass == 0)
-            HIGH_FDCT32x32_2D_C(input, output_org, stride);
-          else
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-          return;
-        }
-#endif  // DCT_HIGH_BIT_DEPTH
-      }
-
-#if !FDCT32x32_HIGH_PRECISION
-      // dump the magnitude by half, hence the intermediate values are within
-      // the range of 16 bits.
-      if (1 == pass) {
-        __m128i s3_00_0 = _mm_cmplt_epi16(step2[0], kZero);
-        __m128i s3_01_0 = _mm_cmplt_epi16(step2[1], kZero);
-        __m128i s3_02_0 = _mm_cmplt_epi16(step2[2], kZero);
-        __m128i s3_03_0 = _mm_cmplt_epi16(step2[3], kZero);
-        __m128i s3_04_0 = _mm_cmplt_epi16(step2[4], kZero);
-        __m128i s3_05_0 = _mm_cmplt_epi16(step2[5], kZero);
-        __m128i s3_06_0 = _mm_cmplt_epi16(step2[6], kZero);
-        __m128i s3_07_0 = _mm_cmplt_epi16(step2[7], kZero);
-        __m128i s2_08_0 = _mm_cmplt_epi16(step2[8], kZero);
-        __m128i s2_09_0 = _mm_cmplt_epi16(step2[9], kZero);
-        __m128i s3_10_0 = _mm_cmplt_epi16(step2[10], kZero);
-        __m128i s3_11_0 = _mm_cmplt_epi16(step2[11], kZero);
-        __m128i s3_12_0 = _mm_cmplt_epi16(step2[12], kZero);
-        __m128i s3_13_0 = _mm_cmplt_epi16(step2[13], kZero);
-        __m128i s2_14_0 = _mm_cmplt_epi16(step2[14], kZero);
-        __m128i s2_15_0 = _mm_cmplt_epi16(step2[15], kZero);
-        __m128i s3_16_0 = _mm_cmplt_epi16(step1[16], kZero);
-        __m128i s3_17_0 = _mm_cmplt_epi16(step1[17], kZero);
-        __m128i s3_18_0 = _mm_cmplt_epi16(step1[18], kZero);
-        __m128i s3_19_0 = _mm_cmplt_epi16(step1[19], kZero);
-        __m128i s3_20_0 = _mm_cmplt_epi16(step2[20], kZero);
-        __m128i s3_21_0 = _mm_cmplt_epi16(step2[21], kZero);
-        __m128i s3_22_0 = _mm_cmplt_epi16(step2[22], kZero);
-        __m128i s3_23_0 = _mm_cmplt_epi16(step2[23], kZero);
-        __m128i s3_24_0 = _mm_cmplt_epi16(step2[24], kZero);
-        __m128i s3_25_0 = _mm_cmplt_epi16(step2[25], kZero);
-        __m128i s3_26_0 = _mm_cmplt_epi16(step2[26], kZero);
-        __m128i s3_27_0 = _mm_cmplt_epi16(step2[27], kZero);
-        __m128i s3_28_0 = _mm_cmplt_epi16(step1[28], kZero);
-        __m128i s3_29_0 = _mm_cmplt_epi16(step1[29], kZero);
-        __m128i s3_30_0 = _mm_cmplt_epi16(step1[30], kZero);
-        __m128i s3_31_0 = _mm_cmplt_epi16(step1[31], kZero);
-
-        step2[0] = SUB_EPI16(step2[0], s3_00_0);
-        step2[1] = SUB_EPI16(step2[1], s3_01_0);
-        step2[2] = SUB_EPI16(step2[2], s3_02_0);
-        step2[3] = SUB_EPI16(step2[3], s3_03_0);
-        step2[4] = SUB_EPI16(step2[4], s3_04_0);
-        step2[5] = SUB_EPI16(step2[5], s3_05_0);
-        step2[6] = SUB_EPI16(step2[6], s3_06_0);
-        step2[7] = SUB_EPI16(step2[7], s3_07_0);
-        step2[8] = SUB_EPI16(step2[8], s2_08_0);
-        step2[9] = SUB_EPI16(step2[9], s2_09_0);
-        step2[10] = SUB_EPI16(step2[10], s3_10_0);
-        step2[11] = SUB_EPI16(step2[11], s3_11_0);
-        step2[12] = SUB_EPI16(step2[12], s3_12_0);
-        step2[13] = SUB_EPI16(step2[13], s3_13_0);
-        step2[14] = SUB_EPI16(step2[14], s2_14_0);
-        step2[15] = SUB_EPI16(step2[15], s2_15_0);
-        step1[16] = SUB_EPI16(step1[16], s3_16_0);
-        step1[17] = SUB_EPI16(step1[17], s3_17_0);
-        step1[18] = SUB_EPI16(step1[18], s3_18_0);
-        step1[19] = SUB_EPI16(step1[19], s3_19_0);
-        step2[20] = SUB_EPI16(step2[20], s3_20_0);
-        step2[21] = SUB_EPI16(step2[21], s3_21_0);
-        step2[22] = SUB_EPI16(step2[22], s3_22_0);
-        step2[23] = SUB_EPI16(step2[23], s3_23_0);
-        step2[24] = SUB_EPI16(step2[24], s3_24_0);
-        step2[25] = SUB_EPI16(step2[25], s3_25_0);
-        step2[26] = SUB_EPI16(step2[26], s3_26_0);
-        step2[27] = SUB_EPI16(step2[27], s3_27_0);
-        step1[28] = SUB_EPI16(step1[28], s3_28_0);
-        step1[29] = SUB_EPI16(step1[29], s3_29_0);
-        step1[30] = SUB_EPI16(step1[30], s3_30_0);
-        step1[31] = SUB_EPI16(step1[31], s3_31_0);
-#if DCT_HIGH_BIT_DEPTH
-        overflow = check_epi16_overflow_x32(
-            &step2[0], &step2[1], &step2[2], &step2[3], &step2[4], &step2[5],
-            &step2[6], &step2[7], &step2[8], &step2[9], &step2[10], &step2[11],
-            &step2[12], &step2[13], &step2[14], &step2[15], &step1[16],
-            &step1[17], &step1[18], &step1[19], &step2[20], &step2[21],
-            &step2[22], &step2[23], &step2[24], &step2[25], &step2[26],
-            &step2[27], &step1[28], &step1[29], &step1[30], &step1[31]);
-        if (overflow) {
-          HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-          return;
-        }
-#endif  // DCT_HIGH_BIT_DEPTH
-        step2[0] = _mm_add_epi16(step2[0], kOne);
-        step2[1] = _mm_add_epi16(step2[1], kOne);
-        step2[2] = _mm_add_epi16(step2[2], kOne);
-        step2[3] = _mm_add_epi16(step2[3], kOne);
-        step2[4] = _mm_add_epi16(step2[4], kOne);
-        step2[5] = _mm_add_epi16(step2[5], kOne);
-        step2[6] = _mm_add_epi16(step2[6], kOne);
-        step2[7] = _mm_add_epi16(step2[7], kOne);
-        step2[8] = _mm_add_epi16(step2[8], kOne);
-        step2[9] = _mm_add_epi16(step2[9], kOne);
-        step2[10] = _mm_add_epi16(step2[10], kOne);
-        step2[11] = _mm_add_epi16(step2[11], kOne);
-        step2[12] = _mm_add_epi16(step2[12], kOne);
-        step2[13] = _mm_add_epi16(step2[13], kOne);
-        step2[14] = _mm_add_epi16(step2[14], kOne);
-        step2[15] = _mm_add_epi16(step2[15], kOne);
-        step1[16] = _mm_add_epi16(step1[16], kOne);
-        step1[17] = _mm_add_epi16(step1[17], kOne);
-        step1[18] = _mm_add_epi16(step1[18], kOne);
-        step1[19] = _mm_add_epi16(step1[19], kOne);
-        step2[20] = _mm_add_epi16(step2[20], kOne);
-        step2[21] = _mm_add_epi16(step2[21], kOne);
-        step2[22] = _mm_add_epi16(step2[22], kOne);
-        step2[23] = _mm_add_epi16(step2[23], kOne);
-        step2[24] = _mm_add_epi16(step2[24], kOne);
-        step2[25] = _mm_add_epi16(step2[25], kOne);
-        step2[26] = _mm_add_epi16(step2[26], kOne);
-        step2[27] = _mm_add_epi16(step2[27], kOne);
-        step1[28] = _mm_add_epi16(step1[28], kOne);
-        step1[29] = _mm_add_epi16(step1[29], kOne);
-        step1[30] = _mm_add_epi16(step1[30], kOne);
-        step1[31] = _mm_add_epi16(step1[31], kOne);
-
-        step2[0] = _mm_srai_epi16(step2[0], 2);
-        step2[1] = _mm_srai_epi16(step2[1], 2);
-        step2[2] = _mm_srai_epi16(step2[2], 2);
-        step2[3] = _mm_srai_epi16(step2[3], 2);
-        step2[4] = _mm_srai_epi16(step2[4], 2);
-        step2[5] = _mm_srai_epi16(step2[5], 2);
-        step2[6] = _mm_srai_epi16(step2[6], 2);
-        step2[7] = _mm_srai_epi16(step2[7], 2);
-        step2[8] = _mm_srai_epi16(step2[8], 2);
-        step2[9] = _mm_srai_epi16(step2[9], 2);
-        step2[10] = _mm_srai_epi16(step2[10], 2);
-        step2[11] = _mm_srai_epi16(step2[11], 2);
-        step2[12] = _mm_srai_epi16(step2[12], 2);
-        step2[13] = _mm_srai_epi16(step2[13], 2);
-        step2[14] = _mm_srai_epi16(step2[14], 2);
-        step2[15] = _mm_srai_epi16(step2[15], 2);
-        step1[16] = _mm_srai_epi16(step1[16], 2);
-        step1[17] = _mm_srai_epi16(step1[17], 2);
-        step1[18] = _mm_srai_epi16(step1[18], 2);
-        step1[19] = _mm_srai_epi16(step1[19], 2);
-        step2[20] = _mm_srai_epi16(step2[20], 2);
-        step2[21] = _mm_srai_epi16(step2[21], 2);
-        step2[22] = _mm_srai_epi16(step2[22], 2);
-        step2[23] = _mm_srai_epi16(step2[23], 2);
-        step2[24] = _mm_srai_epi16(step2[24], 2);
-        step2[25] = _mm_srai_epi16(step2[25], 2);
-        step2[26] = _mm_srai_epi16(step2[26], 2);
-        step2[27] = _mm_srai_epi16(step2[27], 2);
-        step1[28] = _mm_srai_epi16(step1[28], 2);
-        step1[29] = _mm_srai_epi16(step1[29], 2);
-        step1[30] = _mm_srai_epi16(step1[30], 2);
-        step1[31] = _mm_srai_epi16(step1[31], 2);
-      }
-#endif  // !FDCT32x32_HIGH_PRECISION
-
-#if FDCT32x32_HIGH_PRECISION
-      if (pass == 0) {
-#endif
-        // Stage 3
-        {
-          step3[0] = ADD_EPI16(step2[(8 - 1)], step2[0]);
-          step3[1] = ADD_EPI16(step2[(8 - 2)], step2[1]);
-          step3[2] = ADD_EPI16(step2[(8 - 3)], step2[2]);
-          step3[3] = ADD_EPI16(step2[(8 - 4)], step2[3]);
-          step3[4] = SUB_EPI16(step2[(8 - 5)], step2[4]);
-          step3[5] = SUB_EPI16(step2[(8 - 6)], step2[5]);
-          step3[6] = SUB_EPI16(step2[(8 - 7)], step2[6]);
-          step3[7] = SUB_EPI16(step2[(8 - 8)], step2[7]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x8(&step3[0], &step3[1], &step3[2],
-                                             &step3[3], &step3[4], &step3[5],
-                                             &step3[6], &step3[7]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          const __m128i s3_10_0 = _mm_unpacklo_epi16(step2[13], step2[10]);
-          const __m128i s3_10_1 = _mm_unpackhi_epi16(step2[13], step2[10]);
-          const __m128i s3_11_0 = _mm_unpacklo_epi16(step2[12], step2[11]);
-          const __m128i s3_11_1 = _mm_unpackhi_epi16(step2[12], step2[11]);
-          const __m128i s3_10_2 = _mm_madd_epi16(s3_10_0, k__cospi_p16_m16);
-          const __m128i s3_10_3 = _mm_madd_epi16(s3_10_1, k__cospi_p16_m16);
-          const __m128i s3_11_2 = _mm_madd_epi16(s3_11_0, k__cospi_p16_m16);
-          const __m128i s3_11_3 = _mm_madd_epi16(s3_11_1, k__cospi_p16_m16);
-          const __m128i s3_12_2 = _mm_madd_epi16(s3_11_0, k__cospi_p16_p16);
-          const __m128i s3_12_3 = _mm_madd_epi16(s3_11_1, k__cospi_p16_p16);
-          const __m128i s3_13_2 = _mm_madd_epi16(s3_10_0, k__cospi_p16_p16);
-          const __m128i s3_13_3 = _mm_madd_epi16(s3_10_1, k__cospi_p16_p16);
-          // dct_const_round_shift
-          const __m128i s3_10_4 = _mm_add_epi32(s3_10_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_10_5 = _mm_add_epi32(s3_10_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_11_4 = _mm_add_epi32(s3_11_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_11_5 = _mm_add_epi32(s3_11_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_12_4 = _mm_add_epi32(s3_12_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_12_5 = _mm_add_epi32(s3_12_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_13_4 = _mm_add_epi32(s3_13_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_13_5 = _mm_add_epi32(s3_13_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_10_6 = _mm_srai_epi32(s3_10_4, DCT_CONST_BITS);
-          const __m128i s3_10_7 = _mm_srai_epi32(s3_10_5, DCT_CONST_BITS);
-          const __m128i s3_11_6 = _mm_srai_epi32(s3_11_4, DCT_CONST_BITS);
-          const __m128i s3_11_7 = _mm_srai_epi32(s3_11_5, DCT_CONST_BITS);
-          const __m128i s3_12_6 = _mm_srai_epi32(s3_12_4, DCT_CONST_BITS);
-          const __m128i s3_12_7 = _mm_srai_epi32(s3_12_5, DCT_CONST_BITS);
-          const __m128i s3_13_6 = _mm_srai_epi32(s3_13_4, DCT_CONST_BITS);
-          const __m128i s3_13_7 = _mm_srai_epi32(s3_13_5, DCT_CONST_BITS);
-          // Combine
-          step3[10] = _mm_packs_epi32(s3_10_6, s3_10_7);
-          step3[11] = _mm_packs_epi32(s3_11_6, s3_11_7);
-          step3[12] = _mm_packs_epi32(s3_12_6, s3_12_7);
-          step3[13] = _mm_packs_epi32(s3_13_6, s3_13_7);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x4(&step3[10], &step3[11], &step3[12],
-                                             &step3[13]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          step3[16] = ADD_EPI16(step2[23], step1[16]);
-          step3[17] = ADD_EPI16(step2[22], step1[17]);
-          step3[18] = ADD_EPI16(step2[21], step1[18]);
-          step3[19] = ADD_EPI16(step2[20], step1[19]);
-          step3[20] = SUB_EPI16(step1[19], step2[20]);
-          step3[21] = SUB_EPI16(step1[18], step2[21]);
-          step3[22] = SUB_EPI16(step1[17], step2[22]);
-          step3[23] = SUB_EPI16(step1[16], step2[23]);
-          step3[24] = SUB_EPI16(step1[31], step2[24]);
-          step3[25] = SUB_EPI16(step1[30], step2[25]);
-          step3[26] = SUB_EPI16(step1[29], step2[26]);
-          step3[27] = SUB_EPI16(step1[28], step2[27]);
-          step3[28] = ADD_EPI16(step2[27], step1[28]);
-          step3[29] = ADD_EPI16(step2[26], step1[29]);
-          step3[30] = ADD_EPI16(step2[25], step1[30]);
-          step3[31] = ADD_EPI16(step2[24], step1[31]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x16(
-              &step3[16], &step3[17], &step3[18], &step3[19], &step3[20],
-              &step3[21], &step3[22], &step3[23], &step3[24], &step3[25],
-              &step3[26], &step3[27], &step3[28], &step3[29], &step3[30],
-              &step3[31]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-
-        // Stage 4
-        {
-          step1[0] = ADD_EPI16(step3[3], step3[0]);
-          step1[1] = ADD_EPI16(step3[2], step3[1]);
-          step1[2] = SUB_EPI16(step3[1], step3[2]);
-          step1[3] = SUB_EPI16(step3[0], step3[3]);
-          step1[8] = ADD_EPI16(step3[11], step2[8]);
-          step1[9] = ADD_EPI16(step3[10], step2[9]);
-          step1[10] = SUB_EPI16(step2[9], step3[10]);
-          step1[11] = SUB_EPI16(step2[8], step3[11]);
-          step1[12] = SUB_EPI16(step2[15], step3[12]);
-          step1[13] = SUB_EPI16(step2[14], step3[13]);
-          step1[14] = ADD_EPI16(step3[13], step2[14]);
-          step1[15] = ADD_EPI16(step3[12], step2[15]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x16(
-              &step1[0], &step1[1], &step1[2], &step1[3], &step1[4], &step1[5],
-              &step1[6], &step1[7], &step1[8], &step1[9], &step1[10],
-              &step1[11], &step1[12], &step1[13], &step1[14], &step1[15]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          const __m128i s1_05_0 = _mm_unpacklo_epi16(step3[6], step3[5]);
-          const __m128i s1_05_1 = _mm_unpackhi_epi16(step3[6], step3[5]);
-          const __m128i s1_05_2 = _mm_madd_epi16(s1_05_0, k__cospi_p16_m16);
-          const __m128i s1_05_3 = _mm_madd_epi16(s1_05_1, k__cospi_p16_m16);
-          const __m128i s1_06_2 = _mm_madd_epi16(s1_05_0, k__cospi_p16_p16);
-          const __m128i s1_06_3 = _mm_madd_epi16(s1_05_1, k__cospi_p16_p16);
-          // dct_const_round_shift
-          const __m128i s1_05_4 = _mm_add_epi32(s1_05_2, k__DCT_CONST_ROUNDING);
-          const __m128i s1_05_5 = _mm_add_epi32(s1_05_3, k__DCT_CONST_ROUNDING);
-          const __m128i s1_06_4 = _mm_add_epi32(s1_06_2, k__DCT_CONST_ROUNDING);
-          const __m128i s1_06_5 = _mm_add_epi32(s1_06_3, k__DCT_CONST_ROUNDING);
-          const __m128i s1_05_6 = _mm_srai_epi32(s1_05_4, DCT_CONST_BITS);
-          const __m128i s1_05_7 = _mm_srai_epi32(s1_05_5, DCT_CONST_BITS);
-          const __m128i s1_06_6 = _mm_srai_epi32(s1_06_4, DCT_CONST_BITS);
-          const __m128i s1_06_7 = _mm_srai_epi32(s1_06_5, DCT_CONST_BITS);
-          // Combine
-          step1[5] = _mm_packs_epi32(s1_05_6, s1_05_7);
-          step1[6] = _mm_packs_epi32(s1_06_6, s1_06_7);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x2(&step1[5], &step1[6]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          const __m128i s1_18_0 = _mm_unpacklo_epi16(step3[18], step3[29]);
-          const __m128i s1_18_1 = _mm_unpackhi_epi16(step3[18], step3[29]);
-          const __m128i s1_19_0 = _mm_unpacklo_epi16(step3[19], step3[28]);
-          const __m128i s1_19_1 = _mm_unpackhi_epi16(step3[19], step3[28]);
-          const __m128i s1_20_0 = _mm_unpacklo_epi16(step3[20], step3[27]);
-          const __m128i s1_20_1 = _mm_unpackhi_epi16(step3[20], step3[27]);
-          const __m128i s1_21_0 = _mm_unpacklo_epi16(step3[21], step3[26]);
-          const __m128i s1_21_1 = _mm_unpackhi_epi16(step3[21], step3[26]);
-          const __m128i s1_18_2 = _mm_madd_epi16(s1_18_0, k__cospi_m08_p24);
-          const __m128i s1_18_3 = _mm_madd_epi16(s1_18_1, k__cospi_m08_p24);
-          const __m128i s1_19_2 = _mm_madd_epi16(s1_19_0, k__cospi_m08_p24);
-          const __m128i s1_19_3 = _mm_madd_epi16(s1_19_1, k__cospi_m08_p24);
-          const __m128i s1_20_2 = _mm_madd_epi16(s1_20_0, k__cospi_m24_m08);
-          const __m128i s1_20_3 = _mm_madd_epi16(s1_20_1, k__cospi_m24_m08);
-          const __m128i s1_21_2 = _mm_madd_epi16(s1_21_0, k__cospi_m24_m08);
-          const __m128i s1_21_3 = _mm_madd_epi16(s1_21_1, k__cospi_m24_m08);
-          const __m128i s1_26_2 = _mm_madd_epi16(s1_21_0, k__cospi_m08_p24);
-          const __m128i s1_26_3 = _mm_madd_epi16(s1_21_1, k__cospi_m08_p24);
-          const __m128i s1_27_2 = _mm_madd_epi16(s1_20_0, k__cospi_m08_p24);
-          const __m128i s1_27_3 = _mm_madd_epi16(s1_20_1, k__cospi_m08_p24);
-          const __m128i s1_28_2 = _mm_madd_epi16(s1_19_0, k__cospi_p24_p08);
-          const __m128i s1_28_3 = _mm_madd_epi16(s1_19_1, k__cospi_p24_p08);
-          const __m128i s1_29_2 = _mm_madd_epi16(s1_18_0, k__cospi_p24_p08);
-          const __m128i s1_29_3 = _mm_madd_epi16(s1_18_1, k__cospi_p24_p08);
-          // dct_const_round_shift
-          const __m128i s1_18_4 = _mm_add_epi32(s1_18_2, k__DCT_CONST_ROUNDING);
-          const __m128i s1_18_5 = _mm_add_epi32(s1_18_3, k__DCT_CONST_ROUNDING);
-          const __m128i s1_19_4 = _mm_add_epi32(s1_19_2, k__DCT_CONST_ROUNDING);
-          const __m128i s1_19_5 = _mm_add_epi32(s1_19_3, k__DCT_CONST_ROUNDING);
-          const __m128i s1_20_4 = _mm_add_epi32(s1_20_2, k__DCT_CONST_ROUNDING);
-          const __m128i s1_20_5 = _mm_add_epi32(s1_20_3, k__DCT_CONST_ROUNDING);
-          const __m128i s1_21_4 = _mm_add_epi32(s1_21_2, k__DCT_CONST_ROUNDING);
-          const __m128i s1_21_5 = _mm_add_epi32(s1_21_3, k__DCT_CONST_ROUNDING);
-          const __m128i s1_26_4 = _mm_add_epi32(s1_26_2, k__DCT_CONST_ROUNDING);
-          const __m128i s1_26_5 = _mm_add_epi32(s1_26_3, k__DCT_CONST_ROUNDING);
-          const __m128i s1_27_4 = _mm_add_epi32(s1_27_2, k__DCT_CONST_ROUNDING);
-          const __m128i s1_27_5 = _mm_add_epi32(s1_27_3, k__DCT_CONST_ROUNDING);
-          const __m128i s1_28_4 = _mm_add_epi32(s1_28_2, k__DCT_CONST_ROUNDING);
-          const __m128i s1_28_5 = _mm_add_epi32(s1_28_3, k__DCT_CONST_ROUNDING);
-          const __m128i s1_29_4 = _mm_add_epi32(s1_29_2, k__DCT_CONST_ROUNDING);
-          const __m128i s1_29_5 = _mm_add_epi32(s1_29_3, k__DCT_CONST_ROUNDING);
-          const __m128i s1_18_6 = _mm_srai_epi32(s1_18_4, DCT_CONST_BITS);
-          const __m128i s1_18_7 = _mm_srai_epi32(s1_18_5, DCT_CONST_BITS);
-          const __m128i s1_19_6 = _mm_srai_epi32(s1_19_4, DCT_CONST_BITS);
-          const __m128i s1_19_7 = _mm_srai_epi32(s1_19_5, DCT_CONST_BITS);
-          const __m128i s1_20_6 = _mm_srai_epi32(s1_20_4, DCT_CONST_BITS);
-          const __m128i s1_20_7 = _mm_srai_epi32(s1_20_5, DCT_CONST_BITS);
-          const __m128i s1_21_6 = _mm_srai_epi32(s1_21_4, DCT_CONST_BITS);
-          const __m128i s1_21_7 = _mm_srai_epi32(s1_21_5, DCT_CONST_BITS);
-          const __m128i s1_26_6 = _mm_srai_epi32(s1_26_4, DCT_CONST_BITS);
-          const __m128i s1_26_7 = _mm_srai_epi32(s1_26_5, DCT_CONST_BITS);
-          const __m128i s1_27_6 = _mm_srai_epi32(s1_27_4, DCT_CONST_BITS);
-          const __m128i s1_27_7 = _mm_srai_epi32(s1_27_5, DCT_CONST_BITS);
-          const __m128i s1_28_6 = _mm_srai_epi32(s1_28_4, DCT_CONST_BITS);
-          const __m128i s1_28_7 = _mm_srai_epi32(s1_28_5, DCT_CONST_BITS);
-          const __m128i s1_29_6 = _mm_srai_epi32(s1_29_4, DCT_CONST_BITS);
-          const __m128i s1_29_7 = _mm_srai_epi32(s1_29_5, DCT_CONST_BITS);
-          // Combine
-          step1[18] = _mm_packs_epi32(s1_18_6, s1_18_7);
-          step1[19] = _mm_packs_epi32(s1_19_6, s1_19_7);
-          step1[20] = _mm_packs_epi32(s1_20_6, s1_20_7);
-          step1[21] = _mm_packs_epi32(s1_21_6, s1_21_7);
-          step1[26] = _mm_packs_epi32(s1_26_6, s1_26_7);
-          step1[27] = _mm_packs_epi32(s1_27_6, s1_27_7);
-          step1[28] = _mm_packs_epi32(s1_28_6, s1_28_7);
-          step1[29] = _mm_packs_epi32(s1_29_6, s1_29_7);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x8(&step1[18], &step1[19], &step1[20],
-                                             &step1[21], &step1[26], &step1[27],
-                                             &step1[28], &step1[29]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        // Stage 5
-        {
-          step2[4] = ADD_EPI16(step1[5], step3[4]);
-          step2[5] = SUB_EPI16(step3[4], step1[5]);
-          step2[6] = SUB_EPI16(step3[7], step1[6]);
-          step2[7] = ADD_EPI16(step1[6], step3[7]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x4(&step2[4], &step2[5], &step2[6],
-                                             &step2[7]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          const __m128i out_00_0 = _mm_unpacklo_epi16(step1[0], step1[1]);
-          const __m128i out_00_1 = _mm_unpackhi_epi16(step1[0], step1[1]);
-          const __m128i out_08_0 = _mm_unpacklo_epi16(step1[2], step1[3]);
-          const __m128i out_08_1 = _mm_unpackhi_epi16(step1[2], step1[3]);
-          const __m128i out_00_2 = _mm_madd_epi16(out_00_0, k__cospi_p16_p16);
-          const __m128i out_00_3 = _mm_madd_epi16(out_00_1, k__cospi_p16_p16);
-          const __m128i out_16_2 = _mm_madd_epi16(out_00_0, k__cospi_p16_m16);
-          const __m128i out_16_3 = _mm_madd_epi16(out_00_1, k__cospi_p16_m16);
-          const __m128i out_08_2 = _mm_madd_epi16(out_08_0, k__cospi_p24_p08);
-          const __m128i out_08_3 = _mm_madd_epi16(out_08_1, k__cospi_p24_p08);
-          const __m128i out_24_2 = _mm_madd_epi16(out_08_0, k__cospi_m08_p24);
-          const __m128i out_24_3 = _mm_madd_epi16(out_08_1, k__cospi_m08_p24);
-          // dct_const_round_shift
-          const __m128i out_00_4 =
-              _mm_add_epi32(out_00_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_00_5 =
-              _mm_add_epi32(out_00_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_16_4 =
-              _mm_add_epi32(out_16_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_16_5 =
-              _mm_add_epi32(out_16_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_08_4 =
-              _mm_add_epi32(out_08_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_08_5 =
-              _mm_add_epi32(out_08_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_24_4 =
-              _mm_add_epi32(out_24_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_24_5 =
-              _mm_add_epi32(out_24_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_00_6 = _mm_srai_epi32(out_00_4, DCT_CONST_BITS);
-          const __m128i out_00_7 = _mm_srai_epi32(out_00_5, DCT_CONST_BITS);
-          const __m128i out_16_6 = _mm_srai_epi32(out_16_4, DCT_CONST_BITS);
-          const __m128i out_16_7 = _mm_srai_epi32(out_16_5, DCT_CONST_BITS);
-          const __m128i out_08_6 = _mm_srai_epi32(out_08_4, DCT_CONST_BITS);
-          const __m128i out_08_7 = _mm_srai_epi32(out_08_5, DCT_CONST_BITS);
-          const __m128i out_24_6 = _mm_srai_epi32(out_24_4, DCT_CONST_BITS);
-          const __m128i out_24_7 = _mm_srai_epi32(out_24_5, DCT_CONST_BITS);
-          // Combine
-          out[0] = _mm_packs_epi32(out_00_6, out_00_7);
-          out[16] = _mm_packs_epi32(out_16_6, out_16_7);
-          out[8] = _mm_packs_epi32(out_08_6, out_08_7);
-          out[24] = _mm_packs_epi32(out_24_6, out_24_7);
-#if DCT_HIGH_BIT_DEPTH
-          overflow =
-              check_epi16_overflow_x4(&out[0], &out[16], &out[8], &out[24]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          const __m128i s2_09_0 = _mm_unpacklo_epi16(step1[9], step1[14]);
-          const __m128i s2_09_1 = _mm_unpackhi_epi16(step1[9], step1[14]);
-          const __m128i s2_10_0 = _mm_unpacklo_epi16(step1[10], step1[13]);
-          const __m128i s2_10_1 = _mm_unpackhi_epi16(step1[10], step1[13]);
-          const __m128i s2_09_2 = _mm_madd_epi16(s2_09_0, k__cospi_m08_p24);
-          const __m128i s2_09_3 = _mm_madd_epi16(s2_09_1, k__cospi_m08_p24);
-          const __m128i s2_10_2 = _mm_madd_epi16(s2_10_0, k__cospi_m24_m08);
-          const __m128i s2_10_3 = _mm_madd_epi16(s2_10_1, k__cospi_m24_m08);
-          const __m128i s2_13_2 = _mm_madd_epi16(s2_10_0, k__cospi_m08_p24);
-          const __m128i s2_13_3 = _mm_madd_epi16(s2_10_1, k__cospi_m08_p24);
-          const __m128i s2_14_2 = _mm_madd_epi16(s2_09_0, k__cospi_p24_p08);
-          const __m128i s2_14_3 = _mm_madd_epi16(s2_09_1, k__cospi_p24_p08);
-          // dct_const_round_shift
-          const __m128i s2_09_4 = _mm_add_epi32(s2_09_2, k__DCT_CONST_ROUNDING);
-          const __m128i s2_09_5 = _mm_add_epi32(s2_09_3, k__DCT_CONST_ROUNDING);
-          const __m128i s2_10_4 = _mm_add_epi32(s2_10_2, k__DCT_CONST_ROUNDING);
-          const __m128i s2_10_5 = _mm_add_epi32(s2_10_3, k__DCT_CONST_ROUNDING);
-          const __m128i s2_13_4 = _mm_add_epi32(s2_13_2, k__DCT_CONST_ROUNDING);
-          const __m128i s2_13_5 = _mm_add_epi32(s2_13_3, k__DCT_CONST_ROUNDING);
-          const __m128i s2_14_4 = _mm_add_epi32(s2_14_2, k__DCT_CONST_ROUNDING);
-          const __m128i s2_14_5 = _mm_add_epi32(s2_14_3, k__DCT_CONST_ROUNDING);
-          const __m128i s2_09_6 = _mm_srai_epi32(s2_09_4, DCT_CONST_BITS);
-          const __m128i s2_09_7 = _mm_srai_epi32(s2_09_5, DCT_CONST_BITS);
-          const __m128i s2_10_6 = _mm_srai_epi32(s2_10_4, DCT_CONST_BITS);
-          const __m128i s2_10_7 = _mm_srai_epi32(s2_10_5, DCT_CONST_BITS);
-          const __m128i s2_13_6 = _mm_srai_epi32(s2_13_4, DCT_CONST_BITS);
-          const __m128i s2_13_7 = _mm_srai_epi32(s2_13_5, DCT_CONST_BITS);
-          const __m128i s2_14_6 = _mm_srai_epi32(s2_14_4, DCT_CONST_BITS);
-          const __m128i s2_14_7 = _mm_srai_epi32(s2_14_5, DCT_CONST_BITS);
-          // Combine
-          step2[9] = _mm_packs_epi32(s2_09_6, s2_09_7);
-          step2[10] = _mm_packs_epi32(s2_10_6, s2_10_7);
-          step2[13] = _mm_packs_epi32(s2_13_6, s2_13_7);
-          step2[14] = _mm_packs_epi32(s2_14_6, s2_14_7);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x4(&step2[9], &step2[10], &step2[13],
-                                             &step2[14]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          step2[16] = ADD_EPI16(step1[19], step3[16]);
-          step2[17] = ADD_EPI16(step1[18], step3[17]);
-          step2[18] = SUB_EPI16(step3[17], step1[18]);
-          step2[19] = SUB_EPI16(step3[16], step1[19]);
-          step2[20] = SUB_EPI16(step3[23], step1[20]);
-          step2[21] = SUB_EPI16(step3[22], step1[21]);
-          step2[22] = ADD_EPI16(step1[21], step3[22]);
-          step2[23] = ADD_EPI16(step1[20], step3[23]);
-          step2[24] = ADD_EPI16(step1[27], step3[24]);
-          step2[25] = ADD_EPI16(step1[26], step3[25]);
-          step2[26] = SUB_EPI16(step3[25], step1[26]);
-          step2[27] = SUB_EPI16(step3[24], step1[27]);
-          step2[28] = SUB_EPI16(step3[31], step1[28]);
-          step2[29] = SUB_EPI16(step3[30], step1[29]);
-          step2[30] = ADD_EPI16(step1[29], step3[30]);
-          step2[31] = ADD_EPI16(step1[28], step3[31]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x16(
-              &step2[16], &step2[17], &step2[18], &step2[19], &step2[20],
-              &step2[21], &step2[22], &step2[23], &step2[24], &step2[25],
-              &step2[26], &step2[27], &step2[28], &step2[29], &step2[30],
-              &step2[31]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        // Stage 6
-        {
-          const __m128i out_04_0 = _mm_unpacklo_epi16(step2[4], step2[7]);
-          const __m128i out_04_1 = _mm_unpackhi_epi16(step2[4], step2[7]);
-          const __m128i out_20_0 = _mm_unpacklo_epi16(step2[5], step2[6]);
-          const __m128i out_20_1 = _mm_unpackhi_epi16(step2[5], step2[6]);
-          const __m128i out_12_0 = _mm_unpacklo_epi16(step2[5], step2[6]);
-          const __m128i out_12_1 = _mm_unpackhi_epi16(step2[5], step2[6]);
-          const __m128i out_28_0 = _mm_unpacklo_epi16(step2[4], step2[7]);
-          const __m128i out_28_1 = _mm_unpackhi_epi16(step2[4], step2[7]);
-          const __m128i out_04_2 = _mm_madd_epi16(out_04_0, k__cospi_p28_p04);
-          const __m128i out_04_3 = _mm_madd_epi16(out_04_1, k__cospi_p28_p04);
-          const __m128i out_20_2 = _mm_madd_epi16(out_20_0, k__cospi_p12_p20);
-          const __m128i out_20_3 = _mm_madd_epi16(out_20_1, k__cospi_p12_p20);
-          const __m128i out_12_2 = _mm_madd_epi16(out_12_0, k__cospi_m20_p12);
-          const __m128i out_12_3 = _mm_madd_epi16(out_12_1, k__cospi_m20_p12);
-          const __m128i out_28_2 = _mm_madd_epi16(out_28_0, k__cospi_m04_p28);
-          const __m128i out_28_3 = _mm_madd_epi16(out_28_1, k__cospi_m04_p28);
-          // dct_const_round_shift
-          const __m128i out_04_4 =
-              _mm_add_epi32(out_04_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_04_5 =
-              _mm_add_epi32(out_04_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_20_4 =
-              _mm_add_epi32(out_20_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_20_5 =
-              _mm_add_epi32(out_20_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_12_4 =
-              _mm_add_epi32(out_12_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_12_5 =
-              _mm_add_epi32(out_12_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_28_4 =
-              _mm_add_epi32(out_28_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_28_5 =
-              _mm_add_epi32(out_28_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_04_6 = _mm_srai_epi32(out_04_4, DCT_CONST_BITS);
-          const __m128i out_04_7 = _mm_srai_epi32(out_04_5, DCT_CONST_BITS);
-          const __m128i out_20_6 = _mm_srai_epi32(out_20_4, DCT_CONST_BITS);
-          const __m128i out_20_7 = _mm_srai_epi32(out_20_5, DCT_CONST_BITS);
-          const __m128i out_12_6 = _mm_srai_epi32(out_12_4, DCT_CONST_BITS);
-          const __m128i out_12_7 = _mm_srai_epi32(out_12_5, DCT_CONST_BITS);
-          const __m128i out_28_6 = _mm_srai_epi32(out_28_4, DCT_CONST_BITS);
-          const __m128i out_28_7 = _mm_srai_epi32(out_28_5, DCT_CONST_BITS);
-          // Combine
-          out[4] = _mm_packs_epi32(out_04_6, out_04_7);
-          out[20] = _mm_packs_epi32(out_20_6, out_20_7);
-          out[12] = _mm_packs_epi32(out_12_6, out_12_7);
-          out[28] = _mm_packs_epi32(out_28_6, out_28_7);
-#if DCT_HIGH_BIT_DEPTH
-          overflow =
-              check_epi16_overflow_x4(&out[4], &out[20], &out[12], &out[28]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          step3[8] = ADD_EPI16(step2[9], step1[8]);
-          step3[9] = SUB_EPI16(step1[8], step2[9]);
-          step3[10] = SUB_EPI16(step1[11], step2[10]);
-          step3[11] = ADD_EPI16(step2[10], step1[11]);
-          step3[12] = ADD_EPI16(step2[13], step1[12]);
-          step3[13] = SUB_EPI16(step1[12], step2[13]);
-          step3[14] = SUB_EPI16(step1[15], step2[14]);
-          step3[15] = ADD_EPI16(step2[14], step1[15]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x8(&step3[8], &step3[9], &step3[10],
-                                             &step3[11], &step3[12], &step3[13],
-                                             &step3[14], &step3[15]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          const __m128i s3_17_0 = _mm_unpacklo_epi16(step2[17], step2[30]);
-          const __m128i s3_17_1 = _mm_unpackhi_epi16(step2[17], step2[30]);
-          const __m128i s3_18_0 = _mm_unpacklo_epi16(step2[18], step2[29]);
-          const __m128i s3_18_1 = _mm_unpackhi_epi16(step2[18], step2[29]);
-          const __m128i s3_21_0 = _mm_unpacklo_epi16(step2[21], step2[26]);
-          const __m128i s3_21_1 = _mm_unpackhi_epi16(step2[21], step2[26]);
-          const __m128i s3_22_0 = _mm_unpacklo_epi16(step2[22], step2[25]);
-          const __m128i s3_22_1 = _mm_unpackhi_epi16(step2[22], step2[25]);
-          const __m128i s3_17_2 = _mm_madd_epi16(s3_17_0, k__cospi_m04_p28);
-          const __m128i s3_17_3 = _mm_madd_epi16(s3_17_1, k__cospi_m04_p28);
-          const __m128i s3_18_2 = _mm_madd_epi16(s3_18_0, k__cospi_m28_m04);
-          const __m128i s3_18_3 = _mm_madd_epi16(s3_18_1, k__cospi_m28_m04);
-          const __m128i s3_21_2 = _mm_madd_epi16(s3_21_0, k__cospi_m20_p12);
-          const __m128i s3_21_3 = _mm_madd_epi16(s3_21_1, k__cospi_m20_p12);
-          const __m128i s3_22_2 = _mm_madd_epi16(s3_22_0, k__cospi_m12_m20);
-          const __m128i s3_22_3 = _mm_madd_epi16(s3_22_1, k__cospi_m12_m20);
-          const __m128i s3_25_2 = _mm_madd_epi16(s3_22_0, k__cospi_m20_p12);
-          const __m128i s3_25_3 = _mm_madd_epi16(s3_22_1, k__cospi_m20_p12);
-          const __m128i s3_26_2 = _mm_madd_epi16(s3_21_0, k__cospi_p12_p20);
-          const __m128i s3_26_3 = _mm_madd_epi16(s3_21_1, k__cospi_p12_p20);
-          const __m128i s3_29_2 = _mm_madd_epi16(s3_18_0, k__cospi_m04_p28);
-          const __m128i s3_29_3 = _mm_madd_epi16(s3_18_1, k__cospi_m04_p28);
-          const __m128i s3_30_2 = _mm_madd_epi16(s3_17_0, k__cospi_p28_p04);
-          const __m128i s3_30_3 = _mm_madd_epi16(s3_17_1, k__cospi_p28_p04);
-          // dct_const_round_shift
-          const __m128i s3_17_4 = _mm_add_epi32(s3_17_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_17_5 = _mm_add_epi32(s3_17_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_18_4 = _mm_add_epi32(s3_18_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_18_5 = _mm_add_epi32(s3_18_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_21_4 = _mm_add_epi32(s3_21_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_21_5 = _mm_add_epi32(s3_21_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_22_4 = _mm_add_epi32(s3_22_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_22_5 = _mm_add_epi32(s3_22_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_17_6 = _mm_srai_epi32(s3_17_4, DCT_CONST_BITS);
-          const __m128i s3_17_7 = _mm_srai_epi32(s3_17_5, DCT_CONST_BITS);
-          const __m128i s3_18_6 = _mm_srai_epi32(s3_18_4, DCT_CONST_BITS);
-          const __m128i s3_18_7 = _mm_srai_epi32(s3_18_5, DCT_CONST_BITS);
-          const __m128i s3_21_6 = _mm_srai_epi32(s3_21_4, DCT_CONST_BITS);
-          const __m128i s3_21_7 = _mm_srai_epi32(s3_21_5, DCT_CONST_BITS);
-          const __m128i s3_22_6 = _mm_srai_epi32(s3_22_4, DCT_CONST_BITS);
-          const __m128i s3_22_7 = _mm_srai_epi32(s3_22_5, DCT_CONST_BITS);
-          const __m128i s3_25_4 = _mm_add_epi32(s3_25_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_25_5 = _mm_add_epi32(s3_25_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_26_4 = _mm_add_epi32(s3_26_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_26_5 = _mm_add_epi32(s3_26_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_29_4 = _mm_add_epi32(s3_29_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_29_5 = _mm_add_epi32(s3_29_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_30_4 = _mm_add_epi32(s3_30_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_30_5 = _mm_add_epi32(s3_30_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_25_6 = _mm_srai_epi32(s3_25_4, DCT_CONST_BITS);
-          const __m128i s3_25_7 = _mm_srai_epi32(s3_25_5, DCT_CONST_BITS);
-          const __m128i s3_26_6 = _mm_srai_epi32(s3_26_4, DCT_CONST_BITS);
-          const __m128i s3_26_7 = _mm_srai_epi32(s3_26_5, DCT_CONST_BITS);
-          const __m128i s3_29_6 = _mm_srai_epi32(s3_29_4, DCT_CONST_BITS);
-          const __m128i s3_29_7 = _mm_srai_epi32(s3_29_5, DCT_CONST_BITS);
-          const __m128i s3_30_6 = _mm_srai_epi32(s3_30_4, DCT_CONST_BITS);
-          const __m128i s3_30_7 = _mm_srai_epi32(s3_30_5, DCT_CONST_BITS);
-          // Combine
-          step3[17] = _mm_packs_epi32(s3_17_6, s3_17_7);
-          step3[18] = _mm_packs_epi32(s3_18_6, s3_18_7);
-          step3[21] = _mm_packs_epi32(s3_21_6, s3_21_7);
-          step3[22] = _mm_packs_epi32(s3_22_6, s3_22_7);
-          // Combine
-          step3[25] = _mm_packs_epi32(s3_25_6, s3_25_7);
-          step3[26] = _mm_packs_epi32(s3_26_6, s3_26_7);
-          step3[29] = _mm_packs_epi32(s3_29_6, s3_29_7);
-          step3[30] = _mm_packs_epi32(s3_30_6, s3_30_7);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x8(&step3[17], &step3[18], &step3[21],
-                                             &step3[22], &step3[25], &step3[26],
-                                             &step3[29], &step3[30]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        // Stage 7
-        {
-          const __m128i out_02_0 = _mm_unpacklo_epi16(step3[8], step3[15]);
-          const __m128i out_02_1 = _mm_unpackhi_epi16(step3[8], step3[15]);
-          const __m128i out_18_0 = _mm_unpacklo_epi16(step3[9], step3[14]);
-          const __m128i out_18_1 = _mm_unpackhi_epi16(step3[9], step3[14]);
-          const __m128i out_10_0 = _mm_unpacklo_epi16(step3[10], step3[13]);
-          const __m128i out_10_1 = _mm_unpackhi_epi16(step3[10], step3[13]);
-          const __m128i out_26_0 = _mm_unpacklo_epi16(step3[11], step3[12]);
-          const __m128i out_26_1 = _mm_unpackhi_epi16(step3[11], step3[12]);
-          const __m128i out_02_2 = _mm_madd_epi16(out_02_0, k__cospi_p30_p02);
-          const __m128i out_02_3 = _mm_madd_epi16(out_02_1, k__cospi_p30_p02);
-          const __m128i out_18_2 = _mm_madd_epi16(out_18_0, k__cospi_p14_p18);
-          const __m128i out_18_3 = _mm_madd_epi16(out_18_1, k__cospi_p14_p18);
-          const __m128i out_10_2 = _mm_madd_epi16(out_10_0, k__cospi_p22_p10);
-          const __m128i out_10_3 = _mm_madd_epi16(out_10_1, k__cospi_p22_p10);
-          const __m128i out_26_2 = _mm_madd_epi16(out_26_0, k__cospi_p06_p26);
-          const __m128i out_26_3 = _mm_madd_epi16(out_26_1, k__cospi_p06_p26);
-          const __m128i out_06_2 = _mm_madd_epi16(out_26_0, k__cospi_m26_p06);
-          const __m128i out_06_3 = _mm_madd_epi16(out_26_1, k__cospi_m26_p06);
-          const __m128i out_22_2 = _mm_madd_epi16(out_10_0, k__cospi_m10_p22);
-          const __m128i out_22_3 = _mm_madd_epi16(out_10_1, k__cospi_m10_p22);
-          const __m128i out_14_2 = _mm_madd_epi16(out_18_0, k__cospi_m18_p14);
-          const __m128i out_14_3 = _mm_madd_epi16(out_18_1, k__cospi_m18_p14);
-          const __m128i out_30_2 = _mm_madd_epi16(out_02_0, k__cospi_m02_p30);
-          const __m128i out_30_3 = _mm_madd_epi16(out_02_1, k__cospi_m02_p30);
-          // dct_const_round_shift
-          const __m128i out_02_4 =
-              _mm_add_epi32(out_02_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_02_5 =
-              _mm_add_epi32(out_02_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_18_4 =
-              _mm_add_epi32(out_18_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_18_5 =
-              _mm_add_epi32(out_18_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_10_4 =
-              _mm_add_epi32(out_10_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_10_5 =
-              _mm_add_epi32(out_10_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_26_4 =
-              _mm_add_epi32(out_26_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_26_5 =
-              _mm_add_epi32(out_26_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_06_4 =
-              _mm_add_epi32(out_06_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_06_5 =
-              _mm_add_epi32(out_06_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_22_4 =
-              _mm_add_epi32(out_22_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_22_5 =
-              _mm_add_epi32(out_22_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_14_4 =
-              _mm_add_epi32(out_14_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_14_5 =
-              _mm_add_epi32(out_14_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_30_4 =
-              _mm_add_epi32(out_30_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_30_5 =
-              _mm_add_epi32(out_30_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_02_6 = _mm_srai_epi32(out_02_4, DCT_CONST_BITS);
-          const __m128i out_02_7 = _mm_srai_epi32(out_02_5, DCT_CONST_BITS);
-          const __m128i out_18_6 = _mm_srai_epi32(out_18_4, DCT_CONST_BITS);
-          const __m128i out_18_7 = _mm_srai_epi32(out_18_5, DCT_CONST_BITS);
-          const __m128i out_10_6 = _mm_srai_epi32(out_10_4, DCT_CONST_BITS);
-          const __m128i out_10_7 = _mm_srai_epi32(out_10_5, DCT_CONST_BITS);
-          const __m128i out_26_6 = _mm_srai_epi32(out_26_4, DCT_CONST_BITS);
-          const __m128i out_26_7 = _mm_srai_epi32(out_26_5, DCT_CONST_BITS);
-          const __m128i out_06_6 = _mm_srai_epi32(out_06_4, DCT_CONST_BITS);
-          const __m128i out_06_7 = _mm_srai_epi32(out_06_5, DCT_CONST_BITS);
-          const __m128i out_22_6 = _mm_srai_epi32(out_22_4, DCT_CONST_BITS);
-          const __m128i out_22_7 = _mm_srai_epi32(out_22_5, DCT_CONST_BITS);
-          const __m128i out_14_6 = _mm_srai_epi32(out_14_4, DCT_CONST_BITS);
-          const __m128i out_14_7 = _mm_srai_epi32(out_14_5, DCT_CONST_BITS);
-          const __m128i out_30_6 = _mm_srai_epi32(out_30_4, DCT_CONST_BITS);
-          const __m128i out_30_7 = _mm_srai_epi32(out_30_5, DCT_CONST_BITS);
-          // Combine
-          out[2] = _mm_packs_epi32(out_02_6, out_02_7);
-          out[18] = _mm_packs_epi32(out_18_6, out_18_7);
-          out[10] = _mm_packs_epi32(out_10_6, out_10_7);
-          out[26] = _mm_packs_epi32(out_26_6, out_26_7);
-          out[6] = _mm_packs_epi32(out_06_6, out_06_7);
-          out[22] = _mm_packs_epi32(out_22_6, out_22_7);
-          out[14] = _mm_packs_epi32(out_14_6, out_14_7);
-          out[30] = _mm_packs_epi32(out_30_6, out_30_7);
-#if DCT_HIGH_BIT_DEPTH
-          overflow =
-              check_epi16_overflow_x8(&out[2], &out[18], &out[10], &out[26],
-                                      &out[6], &out[22], &out[14], &out[30]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          step1[16] = ADD_EPI16(step3[17], step2[16]);
-          step1[17] = SUB_EPI16(step2[16], step3[17]);
-          step1[18] = SUB_EPI16(step2[19], step3[18]);
-          step1[19] = ADD_EPI16(step3[18], step2[19]);
-          step1[20] = ADD_EPI16(step3[21], step2[20]);
-          step1[21] = SUB_EPI16(step2[20], step3[21]);
-          step1[22] = SUB_EPI16(step2[23], step3[22]);
-          step1[23] = ADD_EPI16(step3[22], step2[23]);
-          step1[24] = ADD_EPI16(step3[25], step2[24]);
-          step1[25] = SUB_EPI16(step2[24], step3[25]);
-          step1[26] = SUB_EPI16(step2[27], step3[26]);
-          step1[27] = ADD_EPI16(step3[26], step2[27]);
-          step1[28] = ADD_EPI16(step3[29], step2[28]);
-          step1[29] = SUB_EPI16(step2[28], step3[29]);
-          step1[30] = SUB_EPI16(step2[31], step3[30]);
-          step1[31] = ADD_EPI16(step3[30], step2[31]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = check_epi16_overflow_x16(
-              &step1[16], &step1[17], &step1[18], &step1[19], &step1[20],
-              &step1[21], &step1[22], &step1[23], &step1[24], &step1[25],
-              &step1[26], &step1[27], &step1[28], &step1[29], &step1[30],
-              &step1[31]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        // Final stage --- outputs indices are bit-reversed.
-        {
-          const __m128i out_01_0 = _mm_unpacklo_epi16(step1[16], step1[31]);
-          const __m128i out_01_1 = _mm_unpackhi_epi16(step1[16], step1[31]);
-          const __m128i out_17_0 = _mm_unpacklo_epi16(step1[17], step1[30]);
-          const __m128i out_17_1 = _mm_unpackhi_epi16(step1[17], step1[30]);
-          const __m128i out_09_0 = _mm_unpacklo_epi16(step1[18], step1[29]);
-          const __m128i out_09_1 = _mm_unpackhi_epi16(step1[18], step1[29]);
-          const __m128i out_25_0 = _mm_unpacklo_epi16(step1[19], step1[28]);
-          const __m128i out_25_1 = _mm_unpackhi_epi16(step1[19], step1[28]);
-          const __m128i out_01_2 = _mm_madd_epi16(out_01_0, k__cospi_p31_p01);
-          const __m128i out_01_3 = _mm_madd_epi16(out_01_1, k__cospi_p31_p01);
-          const __m128i out_17_2 = _mm_madd_epi16(out_17_0, k__cospi_p15_p17);
-          const __m128i out_17_3 = _mm_madd_epi16(out_17_1, k__cospi_p15_p17);
-          const __m128i out_09_2 = _mm_madd_epi16(out_09_0, k__cospi_p23_p09);
-          const __m128i out_09_3 = _mm_madd_epi16(out_09_1, k__cospi_p23_p09);
-          const __m128i out_25_2 = _mm_madd_epi16(out_25_0, k__cospi_p07_p25);
-          const __m128i out_25_3 = _mm_madd_epi16(out_25_1, k__cospi_p07_p25);
-          const __m128i out_07_2 = _mm_madd_epi16(out_25_0, k__cospi_m25_p07);
-          const __m128i out_07_3 = _mm_madd_epi16(out_25_1, k__cospi_m25_p07);
-          const __m128i out_23_2 = _mm_madd_epi16(out_09_0, k__cospi_m09_p23);
-          const __m128i out_23_3 = _mm_madd_epi16(out_09_1, k__cospi_m09_p23);
-          const __m128i out_15_2 = _mm_madd_epi16(out_17_0, k__cospi_m17_p15);
-          const __m128i out_15_3 = _mm_madd_epi16(out_17_1, k__cospi_m17_p15);
-          const __m128i out_31_2 = _mm_madd_epi16(out_01_0, k__cospi_m01_p31);
-          const __m128i out_31_3 = _mm_madd_epi16(out_01_1, k__cospi_m01_p31);
-          // dct_const_round_shift
-          const __m128i out_01_4 =
-              _mm_add_epi32(out_01_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_01_5 =
-              _mm_add_epi32(out_01_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_17_4 =
-              _mm_add_epi32(out_17_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_17_5 =
-              _mm_add_epi32(out_17_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_09_4 =
-              _mm_add_epi32(out_09_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_09_5 =
-              _mm_add_epi32(out_09_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_25_4 =
-              _mm_add_epi32(out_25_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_25_5 =
-              _mm_add_epi32(out_25_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_07_4 =
-              _mm_add_epi32(out_07_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_07_5 =
-              _mm_add_epi32(out_07_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_23_4 =
-              _mm_add_epi32(out_23_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_23_5 =
-              _mm_add_epi32(out_23_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_15_4 =
-              _mm_add_epi32(out_15_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_15_5 =
-              _mm_add_epi32(out_15_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_31_4 =
-              _mm_add_epi32(out_31_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_31_5 =
-              _mm_add_epi32(out_31_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_01_6 = _mm_srai_epi32(out_01_4, DCT_CONST_BITS);
-          const __m128i out_01_7 = _mm_srai_epi32(out_01_5, DCT_CONST_BITS);
-          const __m128i out_17_6 = _mm_srai_epi32(out_17_4, DCT_CONST_BITS);
-          const __m128i out_17_7 = _mm_srai_epi32(out_17_5, DCT_CONST_BITS);
-          const __m128i out_09_6 = _mm_srai_epi32(out_09_4, DCT_CONST_BITS);
-          const __m128i out_09_7 = _mm_srai_epi32(out_09_5, DCT_CONST_BITS);
-          const __m128i out_25_6 = _mm_srai_epi32(out_25_4, DCT_CONST_BITS);
-          const __m128i out_25_7 = _mm_srai_epi32(out_25_5, DCT_CONST_BITS);
-          const __m128i out_07_6 = _mm_srai_epi32(out_07_4, DCT_CONST_BITS);
-          const __m128i out_07_7 = _mm_srai_epi32(out_07_5, DCT_CONST_BITS);
-          const __m128i out_23_6 = _mm_srai_epi32(out_23_4, DCT_CONST_BITS);
-          const __m128i out_23_7 = _mm_srai_epi32(out_23_5, DCT_CONST_BITS);
-          const __m128i out_15_6 = _mm_srai_epi32(out_15_4, DCT_CONST_BITS);
-          const __m128i out_15_7 = _mm_srai_epi32(out_15_5, DCT_CONST_BITS);
-          const __m128i out_31_6 = _mm_srai_epi32(out_31_4, DCT_CONST_BITS);
-          const __m128i out_31_7 = _mm_srai_epi32(out_31_5, DCT_CONST_BITS);
-          // Combine
-          out[1] = _mm_packs_epi32(out_01_6, out_01_7);
-          out[17] = _mm_packs_epi32(out_17_6, out_17_7);
-          out[9] = _mm_packs_epi32(out_09_6, out_09_7);
-          out[25] = _mm_packs_epi32(out_25_6, out_25_7);
-          out[7] = _mm_packs_epi32(out_07_6, out_07_7);
-          out[23] = _mm_packs_epi32(out_23_6, out_23_7);
-          out[15] = _mm_packs_epi32(out_15_6, out_15_7);
-          out[31] = _mm_packs_epi32(out_31_6, out_31_7);
-#if DCT_HIGH_BIT_DEPTH
-          overflow =
-              check_epi16_overflow_x8(&out[1], &out[17], &out[9], &out[25],
-                                      &out[7], &out[23], &out[15], &out[31]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          const __m128i out_05_0 = _mm_unpacklo_epi16(step1[20], step1[27]);
-          const __m128i out_05_1 = _mm_unpackhi_epi16(step1[20], step1[27]);
-          const __m128i out_21_0 = _mm_unpacklo_epi16(step1[21], step1[26]);
-          const __m128i out_21_1 = _mm_unpackhi_epi16(step1[21], step1[26]);
-          const __m128i out_13_0 = _mm_unpacklo_epi16(step1[22], step1[25]);
-          const __m128i out_13_1 = _mm_unpackhi_epi16(step1[22], step1[25]);
-          const __m128i out_29_0 = _mm_unpacklo_epi16(step1[23], step1[24]);
-          const __m128i out_29_1 = _mm_unpackhi_epi16(step1[23], step1[24]);
-          const __m128i out_05_2 = _mm_madd_epi16(out_05_0, k__cospi_p27_p05);
-          const __m128i out_05_3 = _mm_madd_epi16(out_05_1, k__cospi_p27_p05);
-          const __m128i out_21_2 = _mm_madd_epi16(out_21_0, k__cospi_p11_p21);
-          const __m128i out_21_3 = _mm_madd_epi16(out_21_1, k__cospi_p11_p21);
-          const __m128i out_13_2 = _mm_madd_epi16(out_13_0, k__cospi_p19_p13);
-          const __m128i out_13_3 = _mm_madd_epi16(out_13_1, k__cospi_p19_p13);
-          const __m128i out_29_2 = _mm_madd_epi16(out_29_0, k__cospi_p03_p29);
-          const __m128i out_29_3 = _mm_madd_epi16(out_29_1, k__cospi_p03_p29);
-          const __m128i out_03_2 = _mm_madd_epi16(out_29_0, k__cospi_m29_p03);
-          const __m128i out_03_3 = _mm_madd_epi16(out_29_1, k__cospi_m29_p03);
-          const __m128i out_19_2 = _mm_madd_epi16(out_13_0, k__cospi_m13_p19);
-          const __m128i out_19_3 = _mm_madd_epi16(out_13_1, k__cospi_m13_p19);
-          const __m128i out_11_2 = _mm_madd_epi16(out_21_0, k__cospi_m21_p11);
-          const __m128i out_11_3 = _mm_madd_epi16(out_21_1, k__cospi_m21_p11);
-          const __m128i out_27_2 = _mm_madd_epi16(out_05_0, k__cospi_m05_p27);
-          const __m128i out_27_3 = _mm_madd_epi16(out_05_1, k__cospi_m05_p27);
-          // dct_const_round_shift
-          const __m128i out_05_4 =
-              _mm_add_epi32(out_05_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_05_5 =
-              _mm_add_epi32(out_05_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_21_4 =
-              _mm_add_epi32(out_21_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_21_5 =
-              _mm_add_epi32(out_21_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_13_4 =
-              _mm_add_epi32(out_13_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_13_5 =
-              _mm_add_epi32(out_13_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_29_4 =
-              _mm_add_epi32(out_29_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_29_5 =
-              _mm_add_epi32(out_29_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_03_4 =
-              _mm_add_epi32(out_03_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_03_5 =
-              _mm_add_epi32(out_03_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_19_4 =
-              _mm_add_epi32(out_19_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_19_5 =
-              _mm_add_epi32(out_19_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_11_4 =
-              _mm_add_epi32(out_11_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_11_5 =
-              _mm_add_epi32(out_11_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_27_4 =
-              _mm_add_epi32(out_27_2, k__DCT_CONST_ROUNDING);
-          const __m128i out_27_5 =
-              _mm_add_epi32(out_27_3, k__DCT_CONST_ROUNDING);
-          const __m128i out_05_6 = _mm_srai_epi32(out_05_4, DCT_CONST_BITS);
-          const __m128i out_05_7 = _mm_srai_epi32(out_05_5, DCT_CONST_BITS);
-          const __m128i out_21_6 = _mm_srai_epi32(out_21_4, DCT_CONST_BITS);
-          const __m128i out_21_7 = _mm_srai_epi32(out_21_5, DCT_CONST_BITS);
-          const __m128i out_13_6 = _mm_srai_epi32(out_13_4, DCT_CONST_BITS);
-          const __m128i out_13_7 = _mm_srai_epi32(out_13_5, DCT_CONST_BITS);
-          const __m128i out_29_6 = _mm_srai_epi32(out_29_4, DCT_CONST_BITS);
-          const __m128i out_29_7 = _mm_srai_epi32(out_29_5, DCT_CONST_BITS);
-          const __m128i out_03_6 = _mm_srai_epi32(out_03_4, DCT_CONST_BITS);
-          const __m128i out_03_7 = _mm_srai_epi32(out_03_5, DCT_CONST_BITS);
-          const __m128i out_19_6 = _mm_srai_epi32(out_19_4, DCT_CONST_BITS);
-          const __m128i out_19_7 = _mm_srai_epi32(out_19_5, DCT_CONST_BITS);
-          const __m128i out_11_6 = _mm_srai_epi32(out_11_4, DCT_CONST_BITS);
-          const __m128i out_11_7 = _mm_srai_epi32(out_11_5, DCT_CONST_BITS);
-          const __m128i out_27_6 = _mm_srai_epi32(out_27_4, DCT_CONST_BITS);
-          const __m128i out_27_7 = _mm_srai_epi32(out_27_5, DCT_CONST_BITS);
-          // Combine
-          out[5] = _mm_packs_epi32(out_05_6, out_05_7);
-          out[21] = _mm_packs_epi32(out_21_6, out_21_7);
-          out[13] = _mm_packs_epi32(out_13_6, out_13_7);
-          out[29] = _mm_packs_epi32(out_29_6, out_29_7);
-          out[3] = _mm_packs_epi32(out_03_6, out_03_7);
-          out[19] = _mm_packs_epi32(out_19_6, out_19_7);
-          out[11] = _mm_packs_epi32(out_11_6, out_11_7);
-          out[27] = _mm_packs_epi32(out_27_6, out_27_7);
-#if DCT_HIGH_BIT_DEPTH
-          overflow =
-              check_epi16_overflow_x8(&out[5], &out[21], &out[13], &out[29],
-                                      &out[3], &out[19], &out[11], &out[27]);
-          if (overflow) {
-            if (pass == 0)
-              HIGH_FDCT32x32_2D_C(input, output_org, stride);
-            else
-              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-#if FDCT32x32_HIGH_PRECISION
-      } else {
-        __m128i lstep1[64], lstep2[64], lstep3[64];
-        __m128i u[32], v[32], sign[16];
-        const __m128i K32One = _mm_set_epi32(1, 1, 1, 1);
-        // start using 32-bit operations
-        // stage 3
-        {
-          // expanding to 32-bit length priori to addition operations
-          lstep2[0] = _mm_unpacklo_epi16(step2[0], kZero);
-          lstep2[1] = _mm_unpackhi_epi16(step2[0], kZero);
-          lstep2[2] = _mm_unpacklo_epi16(step2[1], kZero);
-          lstep2[3] = _mm_unpackhi_epi16(step2[1], kZero);
-          lstep2[4] = _mm_unpacklo_epi16(step2[2], kZero);
-          lstep2[5] = _mm_unpackhi_epi16(step2[2], kZero);
-          lstep2[6] = _mm_unpacklo_epi16(step2[3], kZero);
-          lstep2[7] = _mm_unpackhi_epi16(step2[3], kZero);
-          lstep2[8] = _mm_unpacklo_epi16(step2[4], kZero);
-          lstep2[9] = _mm_unpackhi_epi16(step2[4], kZero);
-          lstep2[10] = _mm_unpacklo_epi16(step2[5], kZero);
-          lstep2[11] = _mm_unpackhi_epi16(step2[5], kZero);
-          lstep2[12] = _mm_unpacklo_epi16(step2[6], kZero);
-          lstep2[13] = _mm_unpackhi_epi16(step2[6], kZero);
-          lstep2[14] = _mm_unpacklo_epi16(step2[7], kZero);
-          lstep2[15] = _mm_unpackhi_epi16(step2[7], kZero);
-          lstep2[0] = _mm_madd_epi16(lstep2[0], kOne);
-          lstep2[1] = _mm_madd_epi16(lstep2[1], kOne);
-          lstep2[2] = _mm_madd_epi16(lstep2[2], kOne);
-          lstep2[3] = _mm_madd_epi16(lstep2[3], kOne);
-          lstep2[4] = _mm_madd_epi16(lstep2[4], kOne);
-          lstep2[5] = _mm_madd_epi16(lstep2[5], kOne);
-          lstep2[6] = _mm_madd_epi16(lstep2[6], kOne);
-          lstep2[7] = _mm_madd_epi16(lstep2[7], kOne);
-          lstep2[8] = _mm_madd_epi16(lstep2[8], kOne);
-          lstep2[9] = _mm_madd_epi16(lstep2[9], kOne);
-          lstep2[10] = _mm_madd_epi16(lstep2[10], kOne);
-          lstep2[11] = _mm_madd_epi16(lstep2[11], kOne);
-          lstep2[12] = _mm_madd_epi16(lstep2[12], kOne);
-          lstep2[13] = _mm_madd_epi16(lstep2[13], kOne);
-          lstep2[14] = _mm_madd_epi16(lstep2[14], kOne);
-          lstep2[15] = _mm_madd_epi16(lstep2[15], kOne);
-
-          lstep3[0] = _mm_add_epi32(lstep2[14], lstep2[0]);
-          lstep3[1] = _mm_add_epi32(lstep2[15], lstep2[1]);
-          lstep3[2] = _mm_add_epi32(lstep2[12], lstep2[2]);
-          lstep3[3] = _mm_add_epi32(lstep2[13], lstep2[3]);
-          lstep3[4] = _mm_add_epi32(lstep2[10], lstep2[4]);
-          lstep3[5] = _mm_add_epi32(lstep2[11], lstep2[5]);
-          lstep3[6] = _mm_add_epi32(lstep2[8], lstep2[6]);
-          lstep3[7] = _mm_add_epi32(lstep2[9], lstep2[7]);
-          lstep3[8] = _mm_sub_epi32(lstep2[6], lstep2[8]);
-          lstep3[9] = _mm_sub_epi32(lstep2[7], lstep2[9]);
-          lstep3[10] = _mm_sub_epi32(lstep2[4], lstep2[10]);
-          lstep3[11] = _mm_sub_epi32(lstep2[5], lstep2[11]);
-          lstep3[12] = _mm_sub_epi32(lstep2[2], lstep2[12]);
-          lstep3[13] = _mm_sub_epi32(lstep2[3], lstep2[13]);
-          lstep3[14] = _mm_sub_epi32(lstep2[0], lstep2[14]);
-          lstep3[15] = _mm_sub_epi32(lstep2[1], lstep2[15]);
-        }
-        {
-          const __m128i s3_10_0 = _mm_unpacklo_epi16(step2[13], step2[10]);
-          const __m128i s3_10_1 = _mm_unpackhi_epi16(step2[13], step2[10]);
-          const __m128i s3_11_0 = _mm_unpacklo_epi16(step2[12], step2[11]);
-          const __m128i s3_11_1 = _mm_unpackhi_epi16(step2[12], step2[11]);
-          const __m128i s3_10_2 = _mm_madd_epi16(s3_10_0, k__cospi_p16_m16);
-          const __m128i s3_10_3 = _mm_madd_epi16(s3_10_1, k__cospi_p16_m16);
-          const __m128i s3_11_2 = _mm_madd_epi16(s3_11_0, k__cospi_p16_m16);
-          const __m128i s3_11_3 = _mm_madd_epi16(s3_11_1, k__cospi_p16_m16);
-          const __m128i s3_12_2 = _mm_madd_epi16(s3_11_0, k__cospi_p16_p16);
-          const __m128i s3_12_3 = _mm_madd_epi16(s3_11_1, k__cospi_p16_p16);
-          const __m128i s3_13_2 = _mm_madd_epi16(s3_10_0, k__cospi_p16_p16);
-          const __m128i s3_13_3 = _mm_madd_epi16(s3_10_1, k__cospi_p16_p16);
-          // dct_const_round_shift
-          const __m128i s3_10_4 = _mm_add_epi32(s3_10_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_10_5 = _mm_add_epi32(s3_10_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_11_4 = _mm_add_epi32(s3_11_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_11_5 = _mm_add_epi32(s3_11_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_12_4 = _mm_add_epi32(s3_12_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_12_5 = _mm_add_epi32(s3_12_3, k__DCT_CONST_ROUNDING);
-          const __m128i s3_13_4 = _mm_add_epi32(s3_13_2, k__DCT_CONST_ROUNDING);
-          const __m128i s3_13_5 = _mm_add_epi32(s3_13_3, k__DCT_CONST_ROUNDING);
-          lstep3[20] = _mm_srai_epi32(s3_10_4, DCT_CONST_BITS);
-          lstep3[21] = _mm_srai_epi32(s3_10_5, DCT_CONST_BITS);
-          lstep3[22] = _mm_srai_epi32(s3_11_4, DCT_CONST_BITS);
-          lstep3[23] = _mm_srai_epi32(s3_11_5, DCT_CONST_BITS);
-          lstep3[24] = _mm_srai_epi32(s3_12_4, DCT_CONST_BITS);
-          lstep3[25] = _mm_srai_epi32(s3_12_5, DCT_CONST_BITS);
-          lstep3[26] = _mm_srai_epi32(s3_13_4, DCT_CONST_BITS);
-          lstep3[27] = _mm_srai_epi32(s3_13_5, DCT_CONST_BITS);
-        }
-        {
-          lstep2[40] = _mm_unpacklo_epi16(step2[20], kZero);
-          lstep2[41] = _mm_unpackhi_epi16(step2[20], kZero);
-          lstep2[42] = _mm_unpacklo_epi16(step2[21], kZero);
-          lstep2[43] = _mm_unpackhi_epi16(step2[21], kZero);
-          lstep2[44] = _mm_unpacklo_epi16(step2[22], kZero);
-          lstep2[45] = _mm_unpackhi_epi16(step2[22], kZero);
-          lstep2[46] = _mm_unpacklo_epi16(step2[23], kZero);
-          lstep2[47] = _mm_unpackhi_epi16(step2[23], kZero);
-          lstep2[48] = _mm_unpacklo_epi16(step2[24], kZero);
-          lstep2[49] = _mm_unpackhi_epi16(step2[24], kZero);
-          lstep2[50] = _mm_unpacklo_epi16(step2[25], kZero);
-          lstep2[51] = _mm_unpackhi_epi16(step2[25], kZero);
-          lstep2[52] = _mm_unpacklo_epi16(step2[26], kZero);
-          lstep2[53] = _mm_unpackhi_epi16(step2[26], kZero);
-          lstep2[54] = _mm_unpacklo_epi16(step2[27], kZero);
-          lstep2[55] = _mm_unpackhi_epi16(step2[27], kZero);
-          lstep2[40] = _mm_madd_epi16(lstep2[40], kOne);
-          lstep2[41] = _mm_madd_epi16(lstep2[41], kOne);
-          lstep2[42] = _mm_madd_epi16(lstep2[42], kOne);
-          lstep2[43] = _mm_madd_epi16(lstep2[43], kOne);
-          lstep2[44] = _mm_madd_epi16(lstep2[44], kOne);
-          lstep2[45] = _mm_madd_epi16(lstep2[45], kOne);
-          lstep2[46] = _mm_madd_epi16(lstep2[46], kOne);
-          lstep2[47] = _mm_madd_epi16(lstep2[47], kOne);
-          lstep2[48] = _mm_madd_epi16(lstep2[48], kOne);
-          lstep2[49] = _mm_madd_epi16(lstep2[49], kOne);
-          lstep2[50] = _mm_madd_epi16(lstep2[50], kOne);
-          lstep2[51] = _mm_madd_epi16(lstep2[51], kOne);
-          lstep2[52] = _mm_madd_epi16(lstep2[52], kOne);
-          lstep2[53] = _mm_madd_epi16(lstep2[53], kOne);
-          lstep2[54] = _mm_madd_epi16(lstep2[54], kOne);
-          lstep2[55] = _mm_madd_epi16(lstep2[55], kOne);
-
-          lstep1[32] = _mm_unpacklo_epi16(step1[16], kZero);
-          lstep1[33] = _mm_unpackhi_epi16(step1[16], kZero);
-          lstep1[34] = _mm_unpacklo_epi16(step1[17], kZero);
-          lstep1[35] = _mm_unpackhi_epi16(step1[17], kZero);
-          lstep1[36] = _mm_unpacklo_epi16(step1[18], kZero);
-          lstep1[37] = _mm_unpackhi_epi16(step1[18], kZero);
-          lstep1[38] = _mm_unpacklo_epi16(step1[19], kZero);
-          lstep1[39] = _mm_unpackhi_epi16(step1[19], kZero);
-          lstep1[56] = _mm_unpacklo_epi16(step1[28], kZero);
-          lstep1[57] = _mm_unpackhi_epi16(step1[28], kZero);
-          lstep1[58] = _mm_unpacklo_epi16(step1[29], kZero);
-          lstep1[59] = _mm_unpackhi_epi16(step1[29], kZero);
-          lstep1[60] = _mm_unpacklo_epi16(step1[30], kZero);
-          lstep1[61] = _mm_unpackhi_epi16(step1[30], kZero);
-          lstep1[62] = _mm_unpacklo_epi16(step1[31], kZero);
-          lstep1[63] = _mm_unpackhi_epi16(step1[31], kZero);
-          lstep1[32] = _mm_madd_epi16(lstep1[32], kOne);
-          lstep1[33] = _mm_madd_epi16(lstep1[33], kOne);
-          lstep1[34] = _mm_madd_epi16(lstep1[34], kOne);
-          lstep1[35] = _mm_madd_epi16(lstep1[35], kOne);
-          lstep1[36] = _mm_madd_epi16(lstep1[36], kOne);
-          lstep1[37] = _mm_madd_epi16(lstep1[37], kOne);
-          lstep1[38] = _mm_madd_epi16(lstep1[38], kOne);
-          lstep1[39] = _mm_madd_epi16(lstep1[39], kOne);
-          lstep1[56] = _mm_madd_epi16(lstep1[56], kOne);
-          lstep1[57] = _mm_madd_epi16(lstep1[57], kOne);
-          lstep1[58] = _mm_madd_epi16(lstep1[58], kOne);
-          lstep1[59] = _mm_madd_epi16(lstep1[59], kOne);
-          lstep1[60] = _mm_madd_epi16(lstep1[60], kOne);
-          lstep1[61] = _mm_madd_epi16(lstep1[61], kOne);
-          lstep1[62] = _mm_madd_epi16(lstep1[62], kOne);
-          lstep1[63] = _mm_madd_epi16(lstep1[63], kOne);
-
-          lstep3[32] = _mm_add_epi32(lstep2[46], lstep1[32]);
-          lstep3[33] = _mm_add_epi32(lstep2[47], lstep1[33]);
-
-          lstep3[34] = _mm_add_epi32(lstep2[44], lstep1[34]);
-          lstep3[35] = _mm_add_epi32(lstep2[45], lstep1[35]);
-          lstep3[36] = _mm_add_epi32(lstep2[42], lstep1[36]);
-          lstep3[37] = _mm_add_epi32(lstep2[43], lstep1[37]);
-          lstep3[38] = _mm_add_epi32(lstep2[40], lstep1[38]);
-          lstep3[39] = _mm_add_epi32(lstep2[41], lstep1[39]);
-          lstep3[40] = _mm_sub_epi32(lstep1[38], lstep2[40]);
-          lstep3[41] = _mm_sub_epi32(lstep1[39], lstep2[41]);
-          lstep3[42] = _mm_sub_epi32(lstep1[36], lstep2[42]);
-          lstep3[43] = _mm_sub_epi32(lstep1[37], lstep2[43]);
-          lstep3[44] = _mm_sub_epi32(lstep1[34], lstep2[44]);
-          lstep3[45] = _mm_sub_epi32(lstep1[35], lstep2[45]);
-          lstep3[46] = _mm_sub_epi32(lstep1[32], lstep2[46]);
-          lstep3[47] = _mm_sub_epi32(lstep1[33], lstep2[47]);
-          lstep3[48] = _mm_sub_epi32(lstep1[62], lstep2[48]);
-          lstep3[49] = _mm_sub_epi32(lstep1[63], lstep2[49]);
-          lstep3[50] = _mm_sub_epi32(lstep1[60], lstep2[50]);
-          lstep3[51] = _mm_sub_epi32(lstep1[61], lstep2[51]);
-          lstep3[52] = _mm_sub_epi32(lstep1[58], lstep2[52]);
-          lstep3[53] = _mm_sub_epi32(lstep1[59], lstep2[53]);
-          lstep3[54] = _mm_sub_epi32(lstep1[56], lstep2[54]);
-          lstep3[55] = _mm_sub_epi32(lstep1[57], lstep2[55]);
-          lstep3[56] = _mm_add_epi32(lstep2[54], lstep1[56]);
-          lstep3[57] = _mm_add_epi32(lstep2[55], lstep1[57]);
-          lstep3[58] = _mm_add_epi32(lstep2[52], lstep1[58]);
-          lstep3[59] = _mm_add_epi32(lstep2[53], lstep1[59]);
-          lstep3[60] = _mm_add_epi32(lstep2[50], lstep1[60]);
-          lstep3[61] = _mm_add_epi32(lstep2[51], lstep1[61]);
-          lstep3[62] = _mm_add_epi32(lstep2[48], lstep1[62]);
-          lstep3[63] = _mm_add_epi32(lstep2[49], lstep1[63]);
-        }
-
-        // stage 4
-        {
-          // expanding to 32-bit length priori to addition operations
-          lstep2[16] = _mm_unpacklo_epi16(step2[8], kZero);
-          lstep2[17] = _mm_unpackhi_epi16(step2[8], kZero);
-          lstep2[18] = _mm_unpacklo_epi16(step2[9], kZero);
-          lstep2[19] = _mm_unpackhi_epi16(step2[9], kZero);
-          lstep2[28] = _mm_unpacklo_epi16(step2[14], kZero);
-          lstep2[29] = _mm_unpackhi_epi16(step2[14], kZero);
-          lstep2[30] = _mm_unpacklo_epi16(step2[15], kZero);
-          lstep2[31] = _mm_unpackhi_epi16(step2[15], kZero);
-          lstep2[16] = _mm_madd_epi16(lstep2[16], kOne);
-          lstep2[17] = _mm_madd_epi16(lstep2[17], kOne);
-          lstep2[18] = _mm_madd_epi16(lstep2[18], kOne);
-          lstep2[19] = _mm_madd_epi16(lstep2[19], kOne);
-          lstep2[28] = _mm_madd_epi16(lstep2[28], kOne);
-          lstep2[29] = _mm_madd_epi16(lstep2[29], kOne);
-          lstep2[30] = _mm_madd_epi16(lstep2[30], kOne);
-          lstep2[31] = _mm_madd_epi16(lstep2[31], kOne);
-
-          lstep1[0] = _mm_add_epi32(lstep3[6], lstep3[0]);
-          lstep1[1] = _mm_add_epi32(lstep3[7], lstep3[1]);
-          lstep1[2] = _mm_add_epi32(lstep3[4], lstep3[2]);
-          lstep1[3] = _mm_add_epi32(lstep3[5], lstep3[3]);
-          lstep1[4] = _mm_sub_epi32(lstep3[2], lstep3[4]);
-          lstep1[5] = _mm_sub_epi32(lstep3[3], lstep3[5]);
-          lstep1[6] = _mm_sub_epi32(lstep3[0], lstep3[6]);
-          lstep1[7] = _mm_sub_epi32(lstep3[1], lstep3[7]);
-          lstep1[16] = _mm_add_epi32(lstep3[22], lstep2[16]);
-          lstep1[17] = _mm_add_epi32(lstep3[23], lstep2[17]);
-          lstep1[18] = _mm_add_epi32(lstep3[20], lstep2[18]);
-          lstep1[19] = _mm_add_epi32(lstep3[21], lstep2[19]);
-          lstep1[20] = _mm_sub_epi32(lstep2[18], lstep3[20]);
-          lstep1[21] = _mm_sub_epi32(lstep2[19], lstep3[21]);
-          lstep1[22] = _mm_sub_epi32(lstep2[16], lstep3[22]);
-          lstep1[23] = _mm_sub_epi32(lstep2[17], lstep3[23]);
-          lstep1[24] = _mm_sub_epi32(lstep2[30], lstep3[24]);
-          lstep1[25] = _mm_sub_epi32(lstep2[31], lstep3[25]);
-          lstep1[26] = _mm_sub_epi32(lstep2[28], lstep3[26]);
-          lstep1[27] = _mm_sub_epi32(lstep2[29], lstep3[27]);
-          lstep1[28] = _mm_add_epi32(lstep3[26], lstep2[28]);
-          lstep1[29] = _mm_add_epi32(lstep3[27], lstep2[29]);
-          lstep1[30] = _mm_add_epi32(lstep3[24], lstep2[30]);
-          lstep1[31] = _mm_add_epi32(lstep3[25], lstep2[31]);
-        }
-        {
-          // to be continued...
-          //
-          const __m128i k32_p16_p16 = pair_set_epi32(cospi_16_64, cospi_16_64);
-          const __m128i k32_p16_m16 = pair_set_epi32(cospi_16_64, -cospi_16_64);
-
-          u[0] = _mm_unpacklo_epi32(lstep3[12], lstep3[10]);
-          u[1] = _mm_unpackhi_epi32(lstep3[12], lstep3[10]);
-          u[2] = _mm_unpacklo_epi32(lstep3[13], lstep3[11]);
-          u[3] = _mm_unpackhi_epi32(lstep3[13], lstep3[11]);
-
-          // TODO(jingning): manually inline k_madd_epi32_ to further hide
-          // instruction latency.
-          v[0] = k_madd_epi32(u[0], k32_p16_m16);
-          v[1] = k_madd_epi32(u[1], k32_p16_m16);
-          v[2] = k_madd_epi32(u[2], k32_p16_m16);
-          v[3] = k_madd_epi32(u[3], k32_p16_m16);
-          v[4] = k_madd_epi32(u[0], k32_p16_p16);
-          v[5] = k_madd_epi32(u[1], k32_p16_p16);
-          v[6] = k_madd_epi32(u[2], k32_p16_p16);
-          v[7] = k_madd_epi32(u[3], k32_p16_p16);
-#if DCT_HIGH_BIT_DEPTH
-          overflow = k_check_epi32_overflow_8(&v[0], &v[1], &v[2], &v[3], &v[4],
-                                              &v[5], &v[6], &v[7], &kZero);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-          u[0] = k_packs_epi64(v[0], v[1]);
-          u[1] = k_packs_epi64(v[2], v[3]);
-          u[2] = k_packs_epi64(v[4], v[5]);
-          u[3] = k_packs_epi64(v[6], v[7]);
-
-          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
-          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
-          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
-          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
-
-          lstep1[10] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
-          lstep1[11] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
-          lstep1[12] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
-          lstep1[13] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
-        }
-        {
-          const __m128i k32_m08_p24 = pair_set_epi32(-cospi_8_64, cospi_24_64);
-          const __m128i k32_m24_m08 = pair_set_epi32(-cospi_24_64, -cospi_8_64);
-          const __m128i k32_p24_p08 = pair_set_epi32(cospi_24_64, cospi_8_64);
-
-          u[0] = _mm_unpacklo_epi32(lstep3[36], lstep3[58]);
-          u[1] = _mm_unpackhi_epi32(lstep3[36], lstep3[58]);
-          u[2] = _mm_unpacklo_epi32(lstep3[37], lstep3[59]);
-          u[3] = _mm_unpackhi_epi32(lstep3[37], lstep3[59]);
-          u[4] = _mm_unpacklo_epi32(lstep3[38], lstep3[56]);
-          u[5] = _mm_unpackhi_epi32(lstep3[38], lstep3[56]);
-          u[6] = _mm_unpacklo_epi32(lstep3[39], lstep3[57]);
-          u[7] = _mm_unpackhi_epi32(lstep3[39], lstep3[57]);
-          u[8] = _mm_unpacklo_epi32(lstep3[40], lstep3[54]);
-          u[9] = _mm_unpackhi_epi32(lstep3[40], lstep3[54]);
-          u[10] = _mm_unpacklo_epi32(lstep3[41], lstep3[55]);
-          u[11] = _mm_unpackhi_epi32(lstep3[41], lstep3[55]);
-          u[12] = _mm_unpacklo_epi32(lstep3[42], lstep3[52]);
-          u[13] = _mm_unpackhi_epi32(lstep3[42], lstep3[52]);
-          u[14] = _mm_unpacklo_epi32(lstep3[43], lstep3[53]);
-          u[15] = _mm_unpackhi_epi32(lstep3[43], lstep3[53]);
-
-          v[0] = k_madd_epi32(u[0], k32_m08_p24);
-          v[1] = k_madd_epi32(u[1], k32_m08_p24);
-          v[2] = k_madd_epi32(u[2], k32_m08_p24);
-          v[3] = k_madd_epi32(u[3], k32_m08_p24);
-          v[4] = k_madd_epi32(u[4], k32_m08_p24);
-          v[5] = k_madd_epi32(u[5], k32_m08_p24);
-          v[6] = k_madd_epi32(u[6], k32_m08_p24);
-          v[7] = k_madd_epi32(u[7], k32_m08_p24);
-          v[8] = k_madd_epi32(u[8], k32_m24_m08);
-          v[9] = k_madd_epi32(u[9], k32_m24_m08);
-          v[10] = k_madd_epi32(u[10], k32_m24_m08);
-          v[11] = k_madd_epi32(u[11], k32_m24_m08);
-          v[12] = k_madd_epi32(u[12], k32_m24_m08);
-          v[13] = k_madd_epi32(u[13], k32_m24_m08);
-          v[14] = k_madd_epi32(u[14], k32_m24_m08);
-          v[15] = k_madd_epi32(u[15], k32_m24_m08);
-          v[16] = k_madd_epi32(u[12], k32_m08_p24);
-          v[17] = k_madd_epi32(u[13], k32_m08_p24);
-          v[18] = k_madd_epi32(u[14], k32_m08_p24);
-          v[19] = k_madd_epi32(u[15], k32_m08_p24);
-          v[20] = k_madd_epi32(u[8], k32_m08_p24);
-          v[21] = k_madd_epi32(u[9], k32_m08_p24);
-          v[22] = k_madd_epi32(u[10], k32_m08_p24);
-          v[23] = k_madd_epi32(u[11], k32_m08_p24);
-          v[24] = k_madd_epi32(u[4], k32_p24_p08);
-          v[25] = k_madd_epi32(u[5], k32_p24_p08);
-          v[26] = k_madd_epi32(u[6], k32_p24_p08);
-          v[27] = k_madd_epi32(u[7], k32_p24_p08);
-          v[28] = k_madd_epi32(u[0], k32_p24_p08);
-          v[29] = k_madd_epi32(u[1], k32_p24_p08);
-          v[30] = k_madd_epi32(u[2], k32_p24_p08);
-          v[31] = k_madd_epi32(u[3], k32_p24_p08);
-
-#if DCT_HIGH_BIT_DEPTH
-          overflow = k_check_epi32_overflow_32(
-              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
-              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &v[16],
-              &v[17], &v[18], &v[19], &v[20], &v[21], &v[22], &v[23], &v[24],
-              &v[25], &v[26], &v[27], &v[28], &v[29], &v[30], &v[31], &kZero);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-          u[0] = k_packs_epi64(v[0], v[1]);
-          u[1] = k_packs_epi64(v[2], v[3]);
-          u[2] = k_packs_epi64(v[4], v[5]);
-          u[3] = k_packs_epi64(v[6], v[7]);
-          u[4] = k_packs_epi64(v[8], v[9]);
-          u[5] = k_packs_epi64(v[10], v[11]);
-          u[6] = k_packs_epi64(v[12], v[13]);
-          u[7] = k_packs_epi64(v[14], v[15]);
-          u[8] = k_packs_epi64(v[16], v[17]);
-          u[9] = k_packs_epi64(v[18], v[19]);
-          u[10] = k_packs_epi64(v[20], v[21]);
-          u[11] = k_packs_epi64(v[22], v[23]);
-          u[12] = k_packs_epi64(v[24], v[25]);
-          u[13] = k_packs_epi64(v[26], v[27]);
-          u[14] = k_packs_epi64(v[28], v[29]);
-          u[15] = k_packs_epi64(v[30], v[31]);
-
-          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
-          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
-          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
-          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
-          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
-          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
-          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
-          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
-          v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
-          v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
-          v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
-          v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
-          v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
-          v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
-          v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
-          v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);
-
-          lstep1[36] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
-          lstep1[37] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
-          lstep1[38] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
-          lstep1[39] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
-          lstep1[40] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
-          lstep1[41] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
-          lstep1[42] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
-          lstep1[43] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
-          lstep1[52] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
-          lstep1[53] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
-          lstep1[54] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
-          lstep1[55] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
-          lstep1[56] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
-          lstep1[57] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
-          lstep1[58] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
-          lstep1[59] = _mm_srai_epi32(v[15], DCT_CONST_BITS);
-        }
-        // stage 5
-        {
-          lstep2[8] = _mm_add_epi32(lstep1[10], lstep3[8]);
-          lstep2[9] = _mm_add_epi32(lstep1[11], lstep3[9]);
-          lstep2[10] = _mm_sub_epi32(lstep3[8], lstep1[10]);
-          lstep2[11] = _mm_sub_epi32(lstep3[9], lstep1[11]);
-          lstep2[12] = _mm_sub_epi32(lstep3[14], lstep1[12]);
-          lstep2[13] = _mm_sub_epi32(lstep3[15], lstep1[13]);
-          lstep2[14] = _mm_add_epi32(lstep1[12], lstep3[14]);
-          lstep2[15] = _mm_add_epi32(lstep1[13], lstep3[15]);
-        }
-        {
-          const __m128i k32_p16_p16 = pair_set_epi32(cospi_16_64, cospi_16_64);
-          const __m128i k32_p16_m16 = pair_set_epi32(cospi_16_64, -cospi_16_64);
-          const __m128i k32_p24_p08 = pair_set_epi32(cospi_24_64, cospi_8_64);
-          const __m128i k32_m08_p24 = pair_set_epi32(-cospi_8_64, cospi_24_64);
-
-          u[0] = _mm_unpacklo_epi32(lstep1[0], lstep1[2]);
-          u[1] = _mm_unpackhi_epi32(lstep1[0], lstep1[2]);
-          u[2] = _mm_unpacklo_epi32(lstep1[1], lstep1[3]);
-          u[3] = _mm_unpackhi_epi32(lstep1[1], lstep1[3]);
-          u[4] = _mm_unpacklo_epi32(lstep1[4], lstep1[6]);
-          u[5] = _mm_unpackhi_epi32(lstep1[4], lstep1[6]);
-          u[6] = _mm_unpacklo_epi32(lstep1[5], lstep1[7]);
-          u[7] = _mm_unpackhi_epi32(lstep1[5], lstep1[7]);
-
-          // TODO(jingning): manually inline k_madd_epi32_ to further hide
-          // instruction latency.
-          v[0] = k_madd_epi32(u[0], k32_p16_p16);
-          v[1] = k_madd_epi32(u[1], k32_p16_p16);
-          v[2] = k_madd_epi32(u[2], k32_p16_p16);
-          v[3] = k_madd_epi32(u[3], k32_p16_p16);
-          v[4] = k_madd_epi32(u[0], k32_p16_m16);
-          v[5] = k_madd_epi32(u[1], k32_p16_m16);
-          v[6] = k_madd_epi32(u[2], k32_p16_m16);
-          v[7] = k_madd_epi32(u[3], k32_p16_m16);
-          v[8] = k_madd_epi32(u[4], k32_p24_p08);
-          v[9] = k_madd_epi32(u[5], k32_p24_p08);
-          v[10] = k_madd_epi32(u[6], k32_p24_p08);
-          v[11] = k_madd_epi32(u[7], k32_p24_p08);
-          v[12] = k_madd_epi32(u[4], k32_m08_p24);
-          v[13] = k_madd_epi32(u[5], k32_m08_p24);
-          v[14] = k_madd_epi32(u[6], k32_m08_p24);
-          v[15] = k_madd_epi32(u[7], k32_m08_p24);
-
-#if DCT_HIGH_BIT_DEPTH
-          overflow = k_check_epi32_overflow_16(
-              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
-              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &kZero);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-          u[0] = k_packs_epi64(v[0], v[1]);
-          u[1] = k_packs_epi64(v[2], v[3]);
-          u[2] = k_packs_epi64(v[4], v[5]);
-          u[3] = k_packs_epi64(v[6], v[7]);
-          u[4] = k_packs_epi64(v[8], v[9]);
-          u[5] = k_packs_epi64(v[10], v[11]);
-          u[6] = k_packs_epi64(v[12], v[13]);
-          u[7] = k_packs_epi64(v[14], v[15]);
-
-          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
-          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
-          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
-          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
-          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
-          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
-          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
-          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
-
-          u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
-          u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
-          u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
-          u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
-          u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
-          u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
-          u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
-          u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
-
-          sign[0] = _mm_cmplt_epi32(u[0], kZero);
-          sign[1] = _mm_cmplt_epi32(u[1], kZero);
-          sign[2] = _mm_cmplt_epi32(u[2], kZero);
-          sign[3] = _mm_cmplt_epi32(u[3], kZero);
-          sign[4] = _mm_cmplt_epi32(u[4], kZero);
-          sign[5] = _mm_cmplt_epi32(u[5], kZero);
-          sign[6] = _mm_cmplt_epi32(u[6], kZero);
-          sign[7] = _mm_cmplt_epi32(u[7], kZero);
-
-          u[0] = _mm_sub_epi32(u[0], sign[0]);
-          u[1] = _mm_sub_epi32(u[1], sign[1]);
-          u[2] = _mm_sub_epi32(u[2], sign[2]);
-          u[3] = _mm_sub_epi32(u[3], sign[3]);
-          u[4] = _mm_sub_epi32(u[4], sign[4]);
-          u[5] = _mm_sub_epi32(u[5], sign[5]);
-          u[6] = _mm_sub_epi32(u[6], sign[6]);
-          u[7] = _mm_sub_epi32(u[7], sign[7]);
-
-          u[0] = _mm_add_epi32(u[0], K32One);
-          u[1] = _mm_add_epi32(u[1], K32One);
-          u[2] = _mm_add_epi32(u[2], K32One);
-          u[3] = _mm_add_epi32(u[3], K32One);
-          u[4] = _mm_add_epi32(u[4], K32One);
-          u[5] = _mm_add_epi32(u[5], K32One);
-          u[6] = _mm_add_epi32(u[6], K32One);
-          u[7] = _mm_add_epi32(u[7], K32One);
-
-          u[0] = _mm_srai_epi32(u[0], 2);
-          u[1] = _mm_srai_epi32(u[1], 2);
-          u[2] = _mm_srai_epi32(u[2], 2);
-          u[3] = _mm_srai_epi32(u[3], 2);
-          u[4] = _mm_srai_epi32(u[4], 2);
-          u[5] = _mm_srai_epi32(u[5], 2);
-          u[6] = _mm_srai_epi32(u[6], 2);
-          u[7] = _mm_srai_epi32(u[7], 2);
-
-          // Combine
-          out[0] = _mm_packs_epi32(u[0], u[1]);
-          out[16] = _mm_packs_epi32(u[2], u[3]);
-          out[8] = _mm_packs_epi32(u[4], u[5]);
-          out[24] = _mm_packs_epi32(u[6], u[7]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow =
-              check_epi16_overflow_x4(&out[0], &out[16], &out[8], &out[24]);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          const __m128i k32_m08_p24 = pair_set_epi32(-cospi_8_64, cospi_24_64);
-          const __m128i k32_m24_m08 = pair_set_epi32(-cospi_24_64, -cospi_8_64);
-          const __m128i k32_p24_p08 = pair_set_epi32(cospi_24_64, cospi_8_64);
-
-          u[0] = _mm_unpacklo_epi32(lstep1[18], lstep1[28]);
-          u[1] = _mm_unpackhi_epi32(lstep1[18], lstep1[28]);
-          u[2] = _mm_unpacklo_epi32(lstep1[19], lstep1[29]);
-          u[3] = _mm_unpackhi_epi32(lstep1[19], lstep1[29]);
-          u[4] = _mm_unpacklo_epi32(lstep1[20], lstep1[26]);
-          u[5] = _mm_unpackhi_epi32(lstep1[20], lstep1[26]);
-          u[6] = _mm_unpacklo_epi32(lstep1[21], lstep1[27]);
-          u[7] = _mm_unpackhi_epi32(lstep1[21], lstep1[27]);
-
-          v[0] = k_madd_epi32(u[0], k32_m08_p24);
-          v[1] = k_madd_epi32(u[1], k32_m08_p24);
-          v[2] = k_madd_epi32(u[2], k32_m08_p24);
-          v[3] = k_madd_epi32(u[3], k32_m08_p24);
-          v[4] = k_madd_epi32(u[4], k32_m24_m08);
-          v[5] = k_madd_epi32(u[5], k32_m24_m08);
-          v[6] = k_madd_epi32(u[6], k32_m24_m08);
-          v[7] = k_madd_epi32(u[7], k32_m24_m08);
-          v[8] = k_madd_epi32(u[4], k32_m08_p24);
-          v[9] = k_madd_epi32(u[5], k32_m08_p24);
-          v[10] = k_madd_epi32(u[6], k32_m08_p24);
-          v[11] = k_madd_epi32(u[7], k32_m08_p24);
-          v[12] = k_madd_epi32(u[0], k32_p24_p08);
-          v[13] = k_madd_epi32(u[1], k32_p24_p08);
-          v[14] = k_madd_epi32(u[2], k32_p24_p08);
-          v[15] = k_madd_epi32(u[3], k32_p24_p08);
-
-#if DCT_HIGH_BIT_DEPTH
-          overflow = k_check_epi32_overflow_16(
-              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
-              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &kZero);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-          u[0] = k_packs_epi64(v[0], v[1]);
-          u[1] = k_packs_epi64(v[2], v[3]);
-          u[2] = k_packs_epi64(v[4], v[5]);
-          u[3] = k_packs_epi64(v[6], v[7]);
-          u[4] = k_packs_epi64(v[8], v[9]);
-          u[5] = k_packs_epi64(v[10], v[11]);
-          u[6] = k_packs_epi64(v[12], v[13]);
-          u[7] = k_packs_epi64(v[14], v[15]);
-
-          u[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
-          u[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
-          u[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
-          u[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
-          u[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
-          u[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
-          u[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
-          u[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
-
-          lstep2[18] = _mm_srai_epi32(u[0], DCT_CONST_BITS);
-          lstep2[19] = _mm_srai_epi32(u[1], DCT_CONST_BITS);
-          lstep2[20] = _mm_srai_epi32(u[2], DCT_CONST_BITS);
-          lstep2[21] = _mm_srai_epi32(u[3], DCT_CONST_BITS);
-          lstep2[26] = _mm_srai_epi32(u[4], DCT_CONST_BITS);
-          lstep2[27] = _mm_srai_epi32(u[5], DCT_CONST_BITS);
-          lstep2[28] = _mm_srai_epi32(u[6], DCT_CONST_BITS);
-          lstep2[29] = _mm_srai_epi32(u[7], DCT_CONST_BITS);
-        }
-        {
-          lstep2[32] = _mm_add_epi32(lstep1[38], lstep3[32]);
-          lstep2[33] = _mm_add_epi32(lstep1[39], lstep3[33]);
-          lstep2[34] = _mm_add_epi32(lstep1[36], lstep3[34]);
-          lstep2[35] = _mm_add_epi32(lstep1[37], lstep3[35]);
-          lstep2[36] = _mm_sub_epi32(lstep3[34], lstep1[36]);
-          lstep2[37] = _mm_sub_epi32(lstep3[35], lstep1[37]);
-          lstep2[38] = _mm_sub_epi32(lstep3[32], lstep1[38]);
-          lstep2[39] = _mm_sub_epi32(lstep3[33], lstep1[39]);
-          lstep2[40] = _mm_sub_epi32(lstep3[46], lstep1[40]);
-          lstep2[41] = _mm_sub_epi32(lstep3[47], lstep1[41]);
-          lstep2[42] = _mm_sub_epi32(lstep3[44], lstep1[42]);
-          lstep2[43] = _mm_sub_epi32(lstep3[45], lstep1[43]);
-          lstep2[44] = _mm_add_epi32(lstep1[42], lstep3[44]);
-          lstep2[45] = _mm_add_epi32(lstep1[43], lstep3[45]);
-          lstep2[46] = _mm_add_epi32(lstep1[40], lstep3[46]);
-          lstep2[47] = _mm_add_epi32(lstep1[41], lstep3[47]);
-          lstep2[48] = _mm_add_epi32(lstep1[54], lstep3[48]);
-          lstep2[49] = _mm_add_epi32(lstep1[55], lstep3[49]);
-          lstep2[50] = _mm_add_epi32(lstep1[52], lstep3[50]);
-          lstep2[51] = _mm_add_epi32(lstep1[53], lstep3[51]);
-          lstep2[52] = _mm_sub_epi32(lstep3[50], lstep1[52]);
-          lstep2[53] = _mm_sub_epi32(lstep3[51], lstep1[53]);
-          lstep2[54] = _mm_sub_epi32(lstep3[48], lstep1[54]);
-          lstep2[55] = _mm_sub_epi32(lstep3[49], lstep1[55]);
-          lstep2[56] = _mm_sub_epi32(lstep3[62], lstep1[56]);
-          lstep2[57] = _mm_sub_epi32(lstep3[63], lstep1[57]);
-          lstep2[58] = _mm_sub_epi32(lstep3[60], lstep1[58]);
-          lstep2[59] = _mm_sub_epi32(lstep3[61], lstep1[59]);
-          lstep2[60] = _mm_add_epi32(lstep1[58], lstep3[60]);
-          lstep2[61] = _mm_add_epi32(lstep1[59], lstep3[61]);
-          lstep2[62] = _mm_add_epi32(lstep1[56], lstep3[62]);
-          lstep2[63] = _mm_add_epi32(lstep1[57], lstep3[63]);
-        }
-        // stage 6
-        {
-          const __m128i k32_p28_p04 = pair_set_epi32(cospi_28_64, cospi_4_64);
-          const __m128i k32_p12_p20 = pair_set_epi32(cospi_12_64, cospi_20_64);
-          const __m128i k32_m20_p12 = pair_set_epi32(-cospi_20_64, cospi_12_64);
-          const __m128i k32_m04_p28 = pair_set_epi32(-cospi_4_64, cospi_28_64);
-
-          u[0] = _mm_unpacklo_epi32(lstep2[8], lstep2[14]);
-          u[1] = _mm_unpackhi_epi32(lstep2[8], lstep2[14]);
-          u[2] = _mm_unpacklo_epi32(lstep2[9], lstep2[15]);
-          u[3] = _mm_unpackhi_epi32(lstep2[9], lstep2[15]);
-          u[4] = _mm_unpacklo_epi32(lstep2[10], lstep2[12]);
-          u[5] = _mm_unpackhi_epi32(lstep2[10], lstep2[12]);
-          u[6] = _mm_unpacklo_epi32(lstep2[11], lstep2[13]);
-          u[7] = _mm_unpackhi_epi32(lstep2[11], lstep2[13]);
-          u[8] = _mm_unpacklo_epi32(lstep2[10], lstep2[12]);
-          u[9] = _mm_unpackhi_epi32(lstep2[10], lstep2[12]);
-          u[10] = _mm_unpacklo_epi32(lstep2[11], lstep2[13]);
-          u[11] = _mm_unpackhi_epi32(lstep2[11], lstep2[13]);
-          u[12] = _mm_unpacklo_epi32(lstep2[8], lstep2[14]);
-          u[13] = _mm_unpackhi_epi32(lstep2[8], lstep2[14]);
-          u[14] = _mm_unpacklo_epi32(lstep2[9], lstep2[15]);
-          u[15] = _mm_unpackhi_epi32(lstep2[9], lstep2[15]);
-
-          v[0] = k_madd_epi32(u[0], k32_p28_p04);
-          v[1] = k_madd_epi32(u[1], k32_p28_p04);
-          v[2] = k_madd_epi32(u[2], k32_p28_p04);
-          v[3] = k_madd_epi32(u[3], k32_p28_p04);
-          v[4] = k_madd_epi32(u[4], k32_p12_p20);
-          v[5] = k_madd_epi32(u[5], k32_p12_p20);
-          v[6] = k_madd_epi32(u[6], k32_p12_p20);
-          v[7] = k_madd_epi32(u[7], k32_p12_p20);
-          v[8] = k_madd_epi32(u[8], k32_m20_p12);
-          v[9] = k_madd_epi32(u[9], k32_m20_p12);
-          v[10] = k_madd_epi32(u[10], k32_m20_p12);
-          v[11] = k_madd_epi32(u[11], k32_m20_p12);
-          v[12] = k_madd_epi32(u[12], k32_m04_p28);
-          v[13] = k_madd_epi32(u[13], k32_m04_p28);
-          v[14] = k_madd_epi32(u[14], k32_m04_p28);
-          v[15] = k_madd_epi32(u[15], k32_m04_p28);
-
-#if DCT_HIGH_BIT_DEPTH
-          overflow = k_check_epi32_overflow_16(
-              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
-              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &kZero);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-          u[0] = k_packs_epi64(v[0], v[1]);
-          u[1] = k_packs_epi64(v[2], v[3]);
-          u[2] = k_packs_epi64(v[4], v[5]);
-          u[3] = k_packs_epi64(v[6], v[7]);
-          u[4] = k_packs_epi64(v[8], v[9]);
-          u[5] = k_packs_epi64(v[10], v[11]);
-          u[6] = k_packs_epi64(v[12], v[13]);
-          u[7] = k_packs_epi64(v[14], v[15]);
-
-          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
-          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
-          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
-          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
-          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
-          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
-          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
-          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
-
-          u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
-          u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
-          u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
-          u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
-          u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
-          u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
-          u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
-          u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
-
-          sign[0] = _mm_cmplt_epi32(u[0], kZero);
-          sign[1] = _mm_cmplt_epi32(u[1], kZero);
-          sign[2] = _mm_cmplt_epi32(u[2], kZero);
-          sign[3] = _mm_cmplt_epi32(u[3], kZero);
-          sign[4] = _mm_cmplt_epi32(u[4], kZero);
-          sign[5] = _mm_cmplt_epi32(u[5], kZero);
-          sign[6] = _mm_cmplt_epi32(u[6], kZero);
-          sign[7] = _mm_cmplt_epi32(u[7], kZero);
-
-          u[0] = _mm_sub_epi32(u[0], sign[0]);
-          u[1] = _mm_sub_epi32(u[1], sign[1]);
-          u[2] = _mm_sub_epi32(u[2], sign[2]);
-          u[3] = _mm_sub_epi32(u[3], sign[3]);
-          u[4] = _mm_sub_epi32(u[4], sign[4]);
-          u[5] = _mm_sub_epi32(u[5], sign[5]);
-          u[6] = _mm_sub_epi32(u[6], sign[6]);
-          u[7] = _mm_sub_epi32(u[7], sign[7]);
-
-          u[0] = _mm_add_epi32(u[0], K32One);
-          u[1] = _mm_add_epi32(u[1], K32One);
-          u[2] = _mm_add_epi32(u[2], K32One);
-          u[3] = _mm_add_epi32(u[3], K32One);
-          u[4] = _mm_add_epi32(u[4], K32One);
-          u[5] = _mm_add_epi32(u[5], K32One);
-          u[6] = _mm_add_epi32(u[6], K32One);
-          u[7] = _mm_add_epi32(u[7], K32One);
-
-          u[0] = _mm_srai_epi32(u[0], 2);
-          u[1] = _mm_srai_epi32(u[1], 2);
-          u[2] = _mm_srai_epi32(u[2], 2);
-          u[3] = _mm_srai_epi32(u[3], 2);
-          u[4] = _mm_srai_epi32(u[4], 2);
-          u[5] = _mm_srai_epi32(u[5], 2);
-          u[6] = _mm_srai_epi32(u[6], 2);
-          u[7] = _mm_srai_epi32(u[7], 2);
-
-          out[4] = _mm_packs_epi32(u[0], u[1]);
-          out[20] = _mm_packs_epi32(u[2], u[3]);
-          out[12] = _mm_packs_epi32(u[4], u[5]);
-          out[28] = _mm_packs_epi32(u[6], u[7]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow =
-              check_epi16_overflow_x4(&out[4], &out[20], &out[12], &out[28]);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          lstep3[16] = _mm_add_epi32(lstep2[18], lstep1[16]);
-          lstep3[17] = _mm_add_epi32(lstep2[19], lstep1[17]);
-          lstep3[18] = _mm_sub_epi32(lstep1[16], lstep2[18]);
-          lstep3[19] = _mm_sub_epi32(lstep1[17], lstep2[19]);
-          lstep3[20] = _mm_sub_epi32(lstep1[22], lstep2[20]);
-          lstep3[21] = _mm_sub_epi32(lstep1[23], lstep2[21]);
-          lstep3[22] = _mm_add_epi32(lstep2[20], lstep1[22]);
-          lstep3[23] = _mm_add_epi32(lstep2[21], lstep1[23]);
-          lstep3[24] = _mm_add_epi32(lstep2[26], lstep1[24]);
-          lstep3[25] = _mm_add_epi32(lstep2[27], lstep1[25]);
-          lstep3[26] = _mm_sub_epi32(lstep1[24], lstep2[26]);
-          lstep3[27] = _mm_sub_epi32(lstep1[25], lstep2[27]);
-          lstep3[28] = _mm_sub_epi32(lstep1[30], lstep2[28]);
-          lstep3[29] = _mm_sub_epi32(lstep1[31], lstep2[29]);
-          lstep3[30] = _mm_add_epi32(lstep2[28], lstep1[30]);
-          lstep3[31] = _mm_add_epi32(lstep2[29], lstep1[31]);
-        }
-        {
-          const __m128i k32_m04_p28 = pair_set_epi32(-cospi_4_64, cospi_28_64);
-          const __m128i k32_m28_m04 = pair_set_epi32(-cospi_28_64, -cospi_4_64);
-          const __m128i k32_m20_p12 = pair_set_epi32(-cospi_20_64, cospi_12_64);
-          const __m128i k32_m12_m20 =
-              pair_set_epi32(-cospi_12_64, -cospi_20_64);
-          const __m128i k32_p12_p20 = pair_set_epi32(cospi_12_64, cospi_20_64);
-          const __m128i k32_p28_p04 = pair_set_epi32(cospi_28_64, cospi_4_64);
-
-          u[0] = _mm_unpacklo_epi32(lstep2[34], lstep2[60]);
-          u[1] = _mm_unpackhi_epi32(lstep2[34], lstep2[60]);
-          u[2] = _mm_unpacklo_epi32(lstep2[35], lstep2[61]);
-          u[3] = _mm_unpackhi_epi32(lstep2[35], lstep2[61]);
-          u[4] = _mm_unpacklo_epi32(lstep2[36], lstep2[58]);
-          u[5] = _mm_unpackhi_epi32(lstep2[36], lstep2[58]);
-          u[6] = _mm_unpacklo_epi32(lstep2[37], lstep2[59]);
-          u[7] = _mm_unpackhi_epi32(lstep2[37], lstep2[59]);
-          u[8] = _mm_unpacklo_epi32(lstep2[42], lstep2[52]);
-          u[9] = _mm_unpackhi_epi32(lstep2[42], lstep2[52]);
-          u[10] = _mm_unpacklo_epi32(lstep2[43], lstep2[53]);
-          u[11] = _mm_unpackhi_epi32(lstep2[43], lstep2[53]);
-          u[12] = _mm_unpacklo_epi32(lstep2[44], lstep2[50]);
-          u[13] = _mm_unpackhi_epi32(lstep2[44], lstep2[50]);
-          u[14] = _mm_unpacklo_epi32(lstep2[45], lstep2[51]);
-          u[15] = _mm_unpackhi_epi32(lstep2[45], lstep2[51]);
-
-          v[0] = k_madd_epi32(u[0], k32_m04_p28);
-          v[1] = k_madd_epi32(u[1], k32_m04_p28);
-          v[2] = k_madd_epi32(u[2], k32_m04_p28);
-          v[3] = k_madd_epi32(u[3], k32_m04_p28);
-          v[4] = k_madd_epi32(u[4], k32_m28_m04);
-          v[5] = k_madd_epi32(u[5], k32_m28_m04);
-          v[6] = k_madd_epi32(u[6], k32_m28_m04);
-          v[7] = k_madd_epi32(u[7], k32_m28_m04);
-          v[8] = k_madd_epi32(u[8], k32_m20_p12);
-          v[9] = k_madd_epi32(u[9], k32_m20_p12);
-          v[10] = k_madd_epi32(u[10], k32_m20_p12);
-          v[11] = k_madd_epi32(u[11], k32_m20_p12);
-          v[12] = k_madd_epi32(u[12], k32_m12_m20);
-          v[13] = k_madd_epi32(u[13], k32_m12_m20);
-          v[14] = k_madd_epi32(u[14], k32_m12_m20);
-          v[15] = k_madd_epi32(u[15], k32_m12_m20);
-          v[16] = k_madd_epi32(u[12], k32_m20_p12);
-          v[17] = k_madd_epi32(u[13], k32_m20_p12);
-          v[18] = k_madd_epi32(u[14], k32_m20_p12);
-          v[19] = k_madd_epi32(u[15], k32_m20_p12);
-          v[20] = k_madd_epi32(u[8], k32_p12_p20);
-          v[21] = k_madd_epi32(u[9], k32_p12_p20);
-          v[22] = k_madd_epi32(u[10], k32_p12_p20);
-          v[23] = k_madd_epi32(u[11], k32_p12_p20);
-          v[24] = k_madd_epi32(u[4], k32_m04_p28);
-          v[25] = k_madd_epi32(u[5], k32_m04_p28);
-          v[26] = k_madd_epi32(u[6], k32_m04_p28);
-          v[27] = k_madd_epi32(u[7], k32_m04_p28);
-          v[28] = k_madd_epi32(u[0], k32_p28_p04);
-          v[29] = k_madd_epi32(u[1], k32_p28_p04);
-          v[30] = k_madd_epi32(u[2], k32_p28_p04);
-          v[31] = k_madd_epi32(u[3], k32_p28_p04);
-
-#if DCT_HIGH_BIT_DEPTH
-          overflow = k_check_epi32_overflow_32(
-              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
-              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &v[16],
-              &v[17], &v[18], &v[19], &v[20], &v[21], &v[22], &v[23], &v[24],
-              &v[25], &v[26], &v[27], &v[28], &v[29], &v[30], &v[31], &kZero);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-          u[0] = k_packs_epi64(v[0], v[1]);
-          u[1] = k_packs_epi64(v[2], v[3]);
-          u[2] = k_packs_epi64(v[4], v[5]);
-          u[3] = k_packs_epi64(v[6], v[7]);
-          u[4] = k_packs_epi64(v[8], v[9]);
-          u[5] = k_packs_epi64(v[10], v[11]);
-          u[6] = k_packs_epi64(v[12], v[13]);
-          u[7] = k_packs_epi64(v[14], v[15]);
-          u[8] = k_packs_epi64(v[16], v[17]);
-          u[9] = k_packs_epi64(v[18], v[19]);
-          u[10] = k_packs_epi64(v[20], v[21]);
-          u[11] = k_packs_epi64(v[22], v[23]);
-          u[12] = k_packs_epi64(v[24], v[25]);
-          u[13] = k_packs_epi64(v[26], v[27]);
-          u[14] = k_packs_epi64(v[28], v[29]);
-          u[15] = k_packs_epi64(v[30], v[31]);
-
-          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
-          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
-          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
-          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
-          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
-          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
-          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
-          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
-          v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
-          v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
-          v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
-          v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
-          v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
-          v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
-          v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
-          v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);
-
-          lstep3[34] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
-          lstep3[35] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
-          lstep3[36] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
-          lstep3[37] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
-          lstep3[42] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
-          lstep3[43] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
-          lstep3[44] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
-          lstep3[45] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
-          lstep3[50] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
-          lstep3[51] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
-          lstep3[52] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
-          lstep3[53] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
-          lstep3[58] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
-          lstep3[59] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
-          lstep3[60] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
-          lstep3[61] = _mm_srai_epi32(v[15], DCT_CONST_BITS);
-        }
-        // stage 7
-        {
-          const __m128i k32_p30_p02 = pair_set_epi32(cospi_30_64, cospi_2_64);
-          const __m128i k32_p14_p18 = pair_set_epi32(cospi_14_64, cospi_18_64);
-          const __m128i k32_p22_p10 = pair_set_epi32(cospi_22_64, cospi_10_64);
-          const __m128i k32_p06_p26 = pair_set_epi32(cospi_6_64, cospi_26_64);
-          const __m128i k32_m26_p06 = pair_set_epi32(-cospi_26_64, cospi_6_64);
-          const __m128i k32_m10_p22 = pair_set_epi32(-cospi_10_64, cospi_22_64);
-          const __m128i k32_m18_p14 = pair_set_epi32(-cospi_18_64, cospi_14_64);
-          const __m128i k32_m02_p30 = pair_set_epi32(-cospi_2_64, cospi_30_64);
-
-          u[0] = _mm_unpacklo_epi32(lstep3[16], lstep3[30]);
-          u[1] = _mm_unpackhi_epi32(lstep3[16], lstep3[30]);
-          u[2] = _mm_unpacklo_epi32(lstep3[17], lstep3[31]);
-          u[3] = _mm_unpackhi_epi32(lstep3[17], lstep3[31]);
-          u[4] = _mm_unpacklo_epi32(lstep3[18], lstep3[28]);
-          u[5] = _mm_unpackhi_epi32(lstep3[18], lstep3[28]);
-          u[6] = _mm_unpacklo_epi32(lstep3[19], lstep3[29]);
-          u[7] = _mm_unpackhi_epi32(lstep3[19], lstep3[29]);
-          u[8] = _mm_unpacklo_epi32(lstep3[20], lstep3[26]);
-          u[9] = _mm_unpackhi_epi32(lstep3[20], lstep3[26]);
-          u[10] = _mm_unpacklo_epi32(lstep3[21], lstep3[27]);
-          u[11] = _mm_unpackhi_epi32(lstep3[21], lstep3[27]);
-          u[12] = _mm_unpacklo_epi32(lstep3[22], lstep3[24]);
-          u[13] = _mm_unpackhi_epi32(lstep3[22], lstep3[24]);
-          u[14] = _mm_unpacklo_epi32(lstep3[23], lstep3[25]);
-          u[15] = _mm_unpackhi_epi32(lstep3[23], lstep3[25]);
-
-          v[0] = k_madd_epi32(u[0], k32_p30_p02);
-          v[1] = k_madd_epi32(u[1], k32_p30_p02);
-          v[2] = k_madd_epi32(u[2], k32_p30_p02);
-          v[3] = k_madd_epi32(u[3], k32_p30_p02);
-          v[4] = k_madd_epi32(u[4], k32_p14_p18);
-          v[5] = k_madd_epi32(u[5], k32_p14_p18);
-          v[6] = k_madd_epi32(u[6], k32_p14_p18);
-          v[7] = k_madd_epi32(u[7], k32_p14_p18);
-          v[8] = k_madd_epi32(u[8], k32_p22_p10);
-          v[9] = k_madd_epi32(u[9], k32_p22_p10);
-          v[10] = k_madd_epi32(u[10], k32_p22_p10);
-          v[11] = k_madd_epi32(u[11], k32_p22_p10);
-          v[12] = k_madd_epi32(u[12], k32_p06_p26);
-          v[13] = k_madd_epi32(u[13], k32_p06_p26);
-          v[14] = k_madd_epi32(u[14], k32_p06_p26);
-          v[15] = k_madd_epi32(u[15], k32_p06_p26);
-          v[16] = k_madd_epi32(u[12], k32_m26_p06);
-          v[17] = k_madd_epi32(u[13], k32_m26_p06);
-          v[18] = k_madd_epi32(u[14], k32_m26_p06);
-          v[19] = k_madd_epi32(u[15], k32_m26_p06);
-          v[20] = k_madd_epi32(u[8], k32_m10_p22);
-          v[21] = k_madd_epi32(u[9], k32_m10_p22);
-          v[22] = k_madd_epi32(u[10], k32_m10_p22);
-          v[23] = k_madd_epi32(u[11], k32_m10_p22);
-          v[24] = k_madd_epi32(u[4], k32_m18_p14);
-          v[25] = k_madd_epi32(u[5], k32_m18_p14);
-          v[26] = k_madd_epi32(u[6], k32_m18_p14);
-          v[27] = k_madd_epi32(u[7], k32_m18_p14);
-          v[28] = k_madd_epi32(u[0], k32_m02_p30);
-          v[29] = k_madd_epi32(u[1], k32_m02_p30);
-          v[30] = k_madd_epi32(u[2], k32_m02_p30);
-          v[31] = k_madd_epi32(u[3], k32_m02_p30);
-
-#if DCT_HIGH_BIT_DEPTH
-          overflow = k_check_epi32_overflow_32(
-              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
-              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &v[16],
-              &v[17], &v[18], &v[19], &v[20], &v[21], &v[22], &v[23], &v[24],
-              &v[25], &v[26], &v[27], &v[28], &v[29], &v[30], &v[31], &kZero);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-          u[0] = k_packs_epi64(v[0], v[1]);
-          u[1] = k_packs_epi64(v[2], v[3]);
-          u[2] = k_packs_epi64(v[4], v[5]);
-          u[3] = k_packs_epi64(v[6], v[7]);
-          u[4] = k_packs_epi64(v[8], v[9]);
-          u[5] = k_packs_epi64(v[10], v[11]);
-          u[6] = k_packs_epi64(v[12], v[13]);
-          u[7] = k_packs_epi64(v[14], v[15]);
-          u[8] = k_packs_epi64(v[16], v[17]);
-          u[9] = k_packs_epi64(v[18], v[19]);
-          u[10] = k_packs_epi64(v[20], v[21]);
-          u[11] = k_packs_epi64(v[22], v[23]);
-          u[12] = k_packs_epi64(v[24], v[25]);
-          u[13] = k_packs_epi64(v[26], v[27]);
-          u[14] = k_packs_epi64(v[28], v[29]);
-          u[15] = k_packs_epi64(v[30], v[31]);
-
-          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
-          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
-          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
-          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
-          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
-          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
-          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
-          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
-          v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
-          v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
-          v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
-          v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
-          v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
-          v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
-          v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
-          v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);
-
-          u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
-          u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
-          u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
-          u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
-          u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
-          u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
-          u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
-          u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
-          u[8] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
-          u[9] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
-          u[10] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
-          u[11] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
-          u[12] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
-          u[13] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
-          u[14] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
-          u[15] = _mm_srai_epi32(v[15], DCT_CONST_BITS);
-
-          v[0] = _mm_cmplt_epi32(u[0], kZero);
-          v[1] = _mm_cmplt_epi32(u[1], kZero);
-          v[2] = _mm_cmplt_epi32(u[2], kZero);
-          v[3] = _mm_cmplt_epi32(u[3], kZero);
-          v[4] = _mm_cmplt_epi32(u[4], kZero);
-          v[5] = _mm_cmplt_epi32(u[5], kZero);
-          v[6] = _mm_cmplt_epi32(u[6], kZero);
-          v[7] = _mm_cmplt_epi32(u[7], kZero);
-          v[8] = _mm_cmplt_epi32(u[8], kZero);
-          v[9] = _mm_cmplt_epi32(u[9], kZero);
-          v[10] = _mm_cmplt_epi32(u[10], kZero);
-          v[11] = _mm_cmplt_epi32(u[11], kZero);
-          v[12] = _mm_cmplt_epi32(u[12], kZero);
-          v[13] = _mm_cmplt_epi32(u[13], kZero);
-          v[14] = _mm_cmplt_epi32(u[14], kZero);
-          v[15] = _mm_cmplt_epi32(u[15], kZero);
-
-          u[0] = _mm_sub_epi32(u[0], v[0]);
-          u[1] = _mm_sub_epi32(u[1], v[1]);
-          u[2] = _mm_sub_epi32(u[2], v[2]);
-          u[3] = _mm_sub_epi32(u[3], v[3]);
-          u[4] = _mm_sub_epi32(u[4], v[4]);
-          u[5] = _mm_sub_epi32(u[5], v[5]);
-          u[6] = _mm_sub_epi32(u[6], v[6]);
-          u[7] = _mm_sub_epi32(u[7], v[7]);
-          u[8] = _mm_sub_epi32(u[8], v[8]);
-          u[9] = _mm_sub_epi32(u[9], v[9]);
-          u[10] = _mm_sub_epi32(u[10], v[10]);
-          u[11] = _mm_sub_epi32(u[11], v[11]);
-          u[12] = _mm_sub_epi32(u[12], v[12]);
-          u[13] = _mm_sub_epi32(u[13], v[13]);
-          u[14] = _mm_sub_epi32(u[14], v[14]);
-          u[15] = _mm_sub_epi32(u[15], v[15]);
-
-          v[0] = _mm_add_epi32(u[0], K32One);
-          v[1] = _mm_add_epi32(u[1], K32One);
-          v[2] = _mm_add_epi32(u[2], K32One);
-          v[3] = _mm_add_epi32(u[3], K32One);
-          v[4] = _mm_add_epi32(u[4], K32One);
-          v[5] = _mm_add_epi32(u[5], K32One);
-          v[6] = _mm_add_epi32(u[6], K32One);
-          v[7] = _mm_add_epi32(u[7], K32One);
-          v[8] = _mm_add_epi32(u[8], K32One);
-          v[9] = _mm_add_epi32(u[9], K32One);
-          v[10] = _mm_add_epi32(u[10], K32One);
-          v[11] = _mm_add_epi32(u[11], K32One);
-          v[12] = _mm_add_epi32(u[12], K32One);
-          v[13] = _mm_add_epi32(u[13], K32One);
-          v[14] = _mm_add_epi32(u[14], K32One);
-          v[15] = _mm_add_epi32(u[15], K32One);
-
-          u[0] = _mm_srai_epi32(v[0], 2);
-          u[1] = _mm_srai_epi32(v[1], 2);
-          u[2] = _mm_srai_epi32(v[2], 2);
-          u[3] = _mm_srai_epi32(v[3], 2);
-          u[4] = _mm_srai_epi32(v[4], 2);
-          u[5] = _mm_srai_epi32(v[5], 2);
-          u[6] = _mm_srai_epi32(v[6], 2);
-          u[7] = _mm_srai_epi32(v[7], 2);
-          u[8] = _mm_srai_epi32(v[8], 2);
-          u[9] = _mm_srai_epi32(v[9], 2);
-          u[10] = _mm_srai_epi32(v[10], 2);
-          u[11] = _mm_srai_epi32(v[11], 2);
-          u[12] = _mm_srai_epi32(v[12], 2);
-          u[13] = _mm_srai_epi32(v[13], 2);
-          u[14] = _mm_srai_epi32(v[14], 2);
-          u[15] = _mm_srai_epi32(v[15], 2);
-
-          out[2] = _mm_packs_epi32(u[0], u[1]);
-          out[18] = _mm_packs_epi32(u[2], u[3]);
-          out[10] = _mm_packs_epi32(u[4], u[5]);
-          out[26] = _mm_packs_epi32(u[6], u[7]);
-          out[6] = _mm_packs_epi32(u[8], u[9]);
-          out[22] = _mm_packs_epi32(u[10], u[11]);
-          out[14] = _mm_packs_epi32(u[12], u[13]);
-          out[30] = _mm_packs_epi32(u[14], u[15]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow =
-              check_epi16_overflow_x8(&out[2], &out[18], &out[10], &out[26],
-                                      &out[6], &out[22], &out[14], &out[30]);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          lstep1[32] = _mm_add_epi32(lstep3[34], lstep2[32]);
-          lstep1[33] = _mm_add_epi32(lstep3[35], lstep2[33]);
-          lstep1[34] = _mm_sub_epi32(lstep2[32], lstep3[34]);
-          lstep1[35] = _mm_sub_epi32(lstep2[33], lstep3[35]);
-          lstep1[36] = _mm_sub_epi32(lstep2[38], lstep3[36]);
-          lstep1[37] = _mm_sub_epi32(lstep2[39], lstep3[37]);
-          lstep1[38] = _mm_add_epi32(lstep3[36], lstep2[38]);
-          lstep1[39] = _mm_add_epi32(lstep3[37], lstep2[39]);
-          lstep1[40] = _mm_add_epi32(lstep3[42], lstep2[40]);
-          lstep1[41] = _mm_add_epi32(lstep3[43], lstep2[41]);
-          lstep1[42] = _mm_sub_epi32(lstep2[40], lstep3[42]);
-          lstep1[43] = _mm_sub_epi32(lstep2[41], lstep3[43]);
-          lstep1[44] = _mm_sub_epi32(lstep2[46], lstep3[44]);
-          lstep1[45] = _mm_sub_epi32(lstep2[47], lstep3[45]);
-          lstep1[46] = _mm_add_epi32(lstep3[44], lstep2[46]);
-          lstep1[47] = _mm_add_epi32(lstep3[45], lstep2[47]);
-          lstep1[48] = _mm_add_epi32(lstep3[50], lstep2[48]);
-          lstep1[49] = _mm_add_epi32(lstep3[51], lstep2[49]);
-          lstep1[50] = _mm_sub_epi32(lstep2[48], lstep3[50]);
-          lstep1[51] = _mm_sub_epi32(lstep2[49], lstep3[51]);
-          lstep1[52] = _mm_sub_epi32(lstep2[54], lstep3[52]);
-          lstep1[53] = _mm_sub_epi32(lstep2[55], lstep3[53]);
-          lstep1[54] = _mm_add_epi32(lstep3[52], lstep2[54]);
-          lstep1[55] = _mm_add_epi32(lstep3[53], lstep2[55]);
-          lstep1[56] = _mm_add_epi32(lstep3[58], lstep2[56]);
-          lstep1[57] = _mm_add_epi32(lstep3[59], lstep2[57]);
-          lstep1[58] = _mm_sub_epi32(lstep2[56], lstep3[58]);
-          lstep1[59] = _mm_sub_epi32(lstep2[57], lstep3[59]);
-          lstep1[60] = _mm_sub_epi32(lstep2[62], lstep3[60]);
-          lstep1[61] = _mm_sub_epi32(lstep2[63], lstep3[61]);
-          lstep1[62] = _mm_add_epi32(lstep3[60], lstep2[62]);
-          lstep1[63] = _mm_add_epi32(lstep3[61], lstep2[63]);
-        }
-        // stage 8
-        {
-          const __m128i k32_p31_p01 = pair_set_epi32(cospi_31_64, cospi_1_64);
-          const __m128i k32_p15_p17 = pair_set_epi32(cospi_15_64, cospi_17_64);
-          const __m128i k32_p23_p09 = pair_set_epi32(cospi_23_64, cospi_9_64);
-          const __m128i k32_p07_p25 = pair_set_epi32(cospi_7_64, cospi_25_64);
-          const __m128i k32_m25_p07 = pair_set_epi32(-cospi_25_64, cospi_7_64);
-          const __m128i k32_m09_p23 = pair_set_epi32(-cospi_9_64, cospi_23_64);
-          const __m128i k32_m17_p15 = pair_set_epi32(-cospi_17_64, cospi_15_64);
-          const __m128i k32_m01_p31 = pair_set_epi32(-cospi_1_64, cospi_31_64);
-
-          u[0] = _mm_unpacklo_epi32(lstep1[32], lstep1[62]);
-          u[1] = _mm_unpackhi_epi32(lstep1[32], lstep1[62]);
-          u[2] = _mm_unpacklo_epi32(lstep1[33], lstep1[63]);
-          u[3] = _mm_unpackhi_epi32(lstep1[33], lstep1[63]);
-          u[4] = _mm_unpacklo_epi32(lstep1[34], lstep1[60]);
-          u[5] = _mm_unpackhi_epi32(lstep1[34], lstep1[60]);
-          u[6] = _mm_unpacklo_epi32(lstep1[35], lstep1[61]);
-          u[7] = _mm_unpackhi_epi32(lstep1[35], lstep1[61]);
-          u[8] = _mm_unpacklo_epi32(lstep1[36], lstep1[58]);
-          u[9] = _mm_unpackhi_epi32(lstep1[36], lstep1[58]);
-          u[10] = _mm_unpacklo_epi32(lstep1[37], lstep1[59]);
-          u[11] = _mm_unpackhi_epi32(lstep1[37], lstep1[59]);
-          u[12] = _mm_unpacklo_epi32(lstep1[38], lstep1[56]);
-          u[13] = _mm_unpackhi_epi32(lstep1[38], lstep1[56]);
-          u[14] = _mm_unpacklo_epi32(lstep1[39], lstep1[57]);
-          u[15] = _mm_unpackhi_epi32(lstep1[39], lstep1[57]);
-
-          v[0] = k_madd_epi32(u[0], k32_p31_p01);
-          v[1] = k_madd_epi32(u[1], k32_p31_p01);
-          v[2] = k_madd_epi32(u[2], k32_p31_p01);
-          v[3] = k_madd_epi32(u[3], k32_p31_p01);
-          v[4] = k_madd_epi32(u[4], k32_p15_p17);
-          v[5] = k_madd_epi32(u[5], k32_p15_p17);
-          v[6] = k_madd_epi32(u[6], k32_p15_p17);
-          v[7] = k_madd_epi32(u[7], k32_p15_p17);
-          v[8] = k_madd_epi32(u[8], k32_p23_p09);
-          v[9] = k_madd_epi32(u[9], k32_p23_p09);
-          v[10] = k_madd_epi32(u[10], k32_p23_p09);
-          v[11] = k_madd_epi32(u[11], k32_p23_p09);
-          v[12] = k_madd_epi32(u[12], k32_p07_p25);
-          v[13] = k_madd_epi32(u[13], k32_p07_p25);
-          v[14] = k_madd_epi32(u[14], k32_p07_p25);
-          v[15] = k_madd_epi32(u[15], k32_p07_p25);
-          v[16] = k_madd_epi32(u[12], k32_m25_p07);
-          v[17] = k_madd_epi32(u[13], k32_m25_p07);
-          v[18] = k_madd_epi32(u[14], k32_m25_p07);
-          v[19] = k_madd_epi32(u[15], k32_m25_p07);
-          v[20] = k_madd_epi32(u[8], k32_m09_p23);
-          v[21] = k_madd_epi32(u[9], k32_m09_p23);
-          v[22] = k_madd_epi32(u[10], k32_m09_p23);
-          v[23] = k_madd_epi32(u[11], k32_m09_p23);
-          v[24] = k_madd_epi32(u[4], k32_m17_p15);
-          v[25] = k_madd_epi32(u[5], k32_m17_p15);
-          v[26] = k_madd_epi32(u[6], k32_m17_p15);
-          v[27] = k_madd_epi32(u[7], k32_m17_p15);
-          v[28] = k_madd_epi32(u[0], k32_m01_p31);
-          v[29] = k_madd_epi32(u[1], k32_m01_p31);
-          v[30] = k_madd_epi32(u[2], k32_m01_p31);
-          v[31] = k_madd_epi32(u[3], k32_m01_p31);
-
-#if DCT_HIGH_BIT_DEPTH
-          overflow = k_check_epi32_overflow_32(
-              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
-              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &v[16],
-              &v[17], &v[18], &v[19], &v[20], &v[21], &v[22], &v[23], &v[24],
-              &v[25], &v[26], &v[27], &v[28], &v[29], &v[30], &v[31], &kZero);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-          u[0] = k_packs_epi64(v[0], v[1]);
-          u[1] = k_packs_epi64(v[2], v[3]);
-          u[2] = k_packs_epi64(v[4], v[5]);
-          u[3] = k_packs_epi64(v[6], v[7]);
-          u[4] = k_packs_epi64(v[8], v[9]);
-          u[5] = k_packs_epi64(v[10], v[11]);
-          u[6] = k_packs_epi64(v[12], v[13]);
-          u[7] = k_packs_epi64(v[14], v[15]);
-          u[8] = k_packs_epi64(v[16], v[17]);
-          u[9] = k_packs_epi64(v[18], v[19]);
-          u[10] = k_packs_epi64(v[20], v[21]);
-          u[11] = k_packs_epi64(v[22], v[23]);
-          u[12] = k_packs_epi64(v[24], v[25]);
-          u[13] = k_packs_epi64(v[26], v[27]);
-          u[14] = k_packs_epi64(v[28], v[29]);
-          u[15] = k_packs_epi64(v[30], v[31]);
-
-          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
-          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
-          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
-          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
-          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
-          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
-          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
-          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
-          v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
-          v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
-          v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
-          v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
-          v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
-          v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
-          v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
-          v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);
-
-          u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
-          u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
-          u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
-          u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
-          u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
-          u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
-          u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
-          u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
-          u[8] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
-          u[9] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
-          u[10] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
-          u[11] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
-          u[12] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
-          u[13] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
-          u[14] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
-          u[15] = _mm_srai_epi32(v[15], DCT_CONST_BITS);
-
-          v[0] = _mm_cmplt_epi32(u[0], kZero);
-          v[1] = _mm_cmplt_epi32(u[1], kZero);
-          v[2] = _mm_cmplt_epi32(u[2], kZero);
-          v[3] = _mm_cmplt_epi32(u[3], kZero);
-          v[4] = _mm_cmplt_epi32(u[4], kZero);
-          v[5] = _mm_cmplt_epi32(u[5], kZero);
-          v[6] = _mm_cmplt_epi32(u[6], kZero);
-          v[7] = _mm_cmplt_epi32(u[7], kZero);
-          v[8] = _mm_cmplt_epi32(u[8], kZero);
-          v[9] = _mm_cmplt_epi32(u[9], kZero);
-          v[10] = _mm_cmplt_epi32(u[10], kZero);
-          v[11] = _mm_cmplt_epi32(u[11], kZero);
-          v[12] = _mm_cmplt_epi32(u[12], kZero);
-          v[13] = _mm_cmplt_epi32(u[13], kZero);
-          v[14] = _mm_cmplt_epi32(u[14], kZero);
-          v[15] = _mm_cmplt_epi32(u[15], kZero);
-
-          u[0] = _mm_sub_epi32(u[0], v[0]);
-          u[1] = _mm_sub_epi32(u[1], v[1]);
-          u[2] = _mm_sub_epi32(u[2], v[2]);
-          u[3] = _mm_sub_epi32(u[3], v[3]);
-          u[4] = _mm_sub_epi32(u[4], v[4]);
-          u[5] = _mm_sub_epi32(u[5], v[5]);
-          u[6] = _mm_sub_epi32(u[6], v[6]);
-          u[7] = _mm_sub_epi32(u[7], v[7]);
-          u[8] = _mm_sub_epi32(u[8], v[8]);
-          u[9] = _mm_sub_epi32(u[9], v[9]);
-          u[10] = _mm_sub_epi32(u[10], v[10]);
-          u[11] = _mm_sub_epi32(u[11], v[11]);
-          u[12] = _mm_sub_epi32(u[12], v[12]);
-          u[13] = _mm_sub_epi32(u[13], v[13]);
-          u[14] = _mm_sub_epi32(u[14], v[14]);
-          u[15] = _mm_sub_epi32(u[15], v[15]);
-
-          v[0] = _mm_add_epi32(u[0], K32One);
-          v[1] = _mm_add_epi32(u[1], K32One);
-          v[2] = _mm_add_epi32(u[2], K32One);
-          v[3] = _mm_add_epi32(u[3], K32One);
-          v[4] = _mm_add_epi32(u[4], K32One);
-          v[5] = _mm_add_epi32(u[5], K32One);
-          v[6] = _mm_add_epi32(u[6], K32One);
-          v[7] = _mm_add_epi32(u[7], K32One);
-          v[8] = _mm_add_epi32(u[8], K32One);
-          v[9] = _mm_add_epi32(u[9], K32One);
-          v[10] = _mm_add_epi32(u[10], K32One);
-          v[11] = _mm_add_epi32(u[11], K32One);
-          v[12] = _mm_add_epi32(u[12], K32One);
-          v[13] = _mm_add_epi32(u[13], K32One);
-          v[14] = _mm_add_epi32(u[14], K32One);
-          v[15] = _mm_add_epi32(u[15], K32One);
-
-          u[0] = _mm_srai_epi32(v[0], 2);
-          u[1] = _mm_srai_epi32(v[1], 2);
-          u[2] = _mm_srai_epi32(v[2], 2);
-          u[3] = _mm_srai_epi32(v[3], 2);
-          u[4] = _mm_srai_epi32(v[4], 2);
-          u[5] = _mm_srai_epi32(v[5], 2);
-          u[6] = _mm_srai_epi32(v[6], 2);
-          u[7] = _mm_srai_epi32(v[7], 2);
-          u[8] = _mm_srai_epi32(v[8], 2);
-          u[9] = _mm_srai_epi32(v[9], 2);
-          u[10] = _mm_srai_epi32(v[10], 2);
-          u[11] = _mm_srai_epi32(v[11], 2);
-          u[12] = _mm_srai_epi32(v[12], 2);
-          u[13] = _mm_srai_epi32(v[13], 2);
-          u[14] = _mm_srai_epi32(v[14], 2);
-          u[15] = _mm_srai_epi32(v[15], 2);
-
-          out[1] = _mm_packs_epi32(u[0], u[1]);
-          out[17] = _mm_packs_epi32(u[2], u[3]);
-          out[9] = _mm_packs_epi32(u[4], u[5]);
-          out[25] = _mm_packs_epi32(u[6], u[7]);
-          out[7] = _mm_packs_epi32(u[8], u[9]);
-          out[23] = _mm_packs_epi32(u[10], u[11]);
-          out[15] = _mm_packs_epi32(u[12], u[13]);
-          out[31] = _mm_packs_epi32(u[14], u[15]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow =
-              check_epi16_overflow_x8(&out[1], &out[17], &out[9], &out[25],
-                                      &out[7], &out[23], &out[15], &out[31]);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-        {
-          const __m128i k32_p27_p05 = pair_set_epi32(cospi_27_64, cospi_5_64);
-          const __m128i k32_p11_p21 = pair_set_epi32(cospi_11_64, cospi_21_64);
-          const __m128i k32_p19_p13 = pair_set_epi32(cospi_19_64, cospi_13_64);
-          const __m128i k32_p03_p29 = pair_set_epi32(cospi_3_64, cospi_29_64);
-          const __m128i k32_m29_p03 = pair_set_epi32(-cospi_29_64, cospi_3_64);
-          const __m128i k32_m13_p19 = pair_set_epi32(-cospi_13_64, cospi_19_64);
-          const __m128i k32_m21_p11 = pair_set_epi32(-cospi_21_64, cospi_11_64);
-          const __m128i k32_m05_p27 = pair_set_epi32(-cospi_5_64, cospi_27_64);
-
-          u[0] = _mm_unpacklo_epi32(lstep1[40], lstep1[54]);
-          u[1] = _mm_unpackhi_epi32(lstep1[40], lstep1[54]);
-          u[2] = _mm_unpacklo_epi32(lstep1[41], lstep1[55]);
-          u[3] = _mm_unpackhi_epi32(lstep1[41], lstep1[55]);
-          u[4] = _mm_unpacklo_epi32(lstep1[42], lstep1[52]);
-          u[5] = _mm_unpackhi_epi32(lstep1[42], lstep1[52]);
-          u[6] = _mm_unpacklo_epi32(lstep1[43], lstep1[53]);
-          u[7] = _mm_unpackhi_epi32(lstep1[43], lstep1[53]);
-          u[8] = _mm_unpacklo_epi32(lstep1[44], lstep1[50]);
-          u[9] = _mm_unpackhi_epi32(lstep1[44], lstep1[50]);
-          u[10] = _mm_unpacklo_epi32(lstep1[45], lstep1[51]);
-          u[11] = _mm_unpackhi_epi32(lstep1[45], lstep1[51]);
-          u[12] = _mm_unpacklo_epi32(lstep1[46], lstep1[48]);
-          u[13] = _mm_unpackhi_epi32(lstep1[46], lstep1[48]);
-          u[14] = _mm_unpacklo_epi32(lstep1[47], lstep1[49]);
-          u[15] = _mm_unpackhi_epi32(lstep1[47], lstep1[49]);
-
-          v[0] = k_madd_epi32(u[0], k32_p27_p05);
-          v[1] = k_madd_epi32(u[1], k32_p27_p05);
-          v[2] = k_madd_epi32(u[2], k32_p27_p05);
-          v[3] = k_madd_epi32(u[3], k32_p27_p05);
-          v[4] = k_madd_epi32(u[4], k32_p11_p21);
-          v[5] = k_madd_epi32(u[5], k32_p11_p21);
-          v[6] = k_madd_epi32(u[6], k32_p11_p21);
-          v[7] = k_madd_epi32(u[7], k32_p11_p21);
-          v[8] = k_madd_epi32(u[8], k32_p19_p13);
-          v[9] = k_madd_epi32(u[9], k32_p19_p13);
-          v[10] = k_madd_epi32(u[10], k32_p19_p13);
-          v[11] = k_madd_epi32(u[11], k32_p19_p13);
-          v[12] = k_madd_epi32(u[12], k32_p03_p29);
-          v[13] = k_madd_epi32(u[13], k32_p03_p29);
-          v[14] = k_madd_epi32(u[14], k32_p03_p29);
-          v[15] = k_madd_epi32(u[15], k32_p03_p29);
-          v[16] = k_madd_epi32(u[12], k32_m29_p03);
-          v[17] = k_madd_epi32(u[13], k32_m29_p03);
-          v[18] = k_madd_epi32(u[14], k32_m29_p03);
-          v[19] = k_madd_epi32(u[15], k32_m29_p03);
-          v[20] = k_madd_epi32(u[8], k32_m13_p19);
-          v[21] = k_madd_epi32(u[9], k32_m13_p19);
-          v[22] = k_madd_epi32(u[10], k32_m13_p19);
-          v[23] = k_madd_epi32(u[11], k32_m13_p19);
-          v[24] = k_madd_epi32(u[4], k32_m21_p11);
-          v[25] = k_madd_epi32(u[5], k32_m21_p11);
-          v[26] = k_madd_epi32(u[6], k32_m21_p11);
-          v[27] = k_madd_epi32(u[7], k32_m21_p11);
-          v[28] = k_madd_epi32(u[0], k32_m05_p27);
-          v[29] = k_madd_epi32(u[1], k32_m05_p27);
-          v[30] = k_madd_epi32(u[2], k32_m05_p27);
-          v[31] = k_madd_epi32(u[3], k32_m05_p27);
-
-#if DCT_HIGH_BIT_DEPTH
-          overflow = k_check_epi32_overflow_32(
-              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
-              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &v[16],
-              &v[17], &v[18], &v[19], &v[20], &v[21], &v[22], &v[23], &v[24],
-              &v[25], &v[26], &v[27], &v[28], &v[29], &v[30], &v[31], &kZero);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-          u[0] = k_packs_epi64(v[0], v[1]);
-          u[1] = k_packs_epi64(v[2], v[3]);
-          u[2] = k_packs_epi64(v[4], v[5]);
-          u[3] = k_packs_epi64(v[6], v[7]);
-          u[4] = k_packs_epi64(v[8], v[9]);
-          u[5] = k_packs_epi64(v[10], v[11]);
-          u[6] = k_packs_epi64(v[12], v[13]);
-          u[7] = k_packs_epi64(v[14], v[15]);
-          u[8] = k_packs_epi64(v[16], v[17]);
-          u[9] = k_packs_epi64(v[18], v[19]);
-          u[10] = k_packs_epi64(v[20], v[21]);
-          u[11] = k_packs_epi64(v[22], v[23]);
-          u[12] = k_packs_epi64(v[24], v[25]);
-          u[13] = k_packs_epi64(v[26], v[27]);
-          u[14] = k_packs_epi64(v[28], v[29]);
-          u[15] = k_packs_epi64(v[30], v[31]);
-
-          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
-          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
-          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
-          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
-          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
-          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
-          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
-          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
-          v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
-          v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
-          v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
-          v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
-          v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
-          v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
-          v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
-          v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);
-
-          u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
-          u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
-          u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
-          u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
-          u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
-          u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
-          u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
-          u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
-          u[8] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
-          u[9] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
-          u[10] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
-          u[11] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
-          u[12] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
-          u[13] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
-          u[14] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
-          u[15] = _mm_srai_epi32(v[15], DCT_CONST_BITS);
-
-          v[0] = _mm_cmplt_epi32(u[0], kZero);
-          v[1] = _mm_cmplt_epi32(u[1], kZero);
-          v[2] = _mm_cmplt_epi32(u[2], kZero);
-          v[3] = _mm_cmplt_epi32(u[3], kZero);
-          v[4] = _mm_cmplt_epi32(u[4], kZero);
-          v[5] = _mm_cmplt_epi32(u[5], kZero);
-          v[6] = _mm_cmplt_epi32(u[6], kZero);
-          v[7] = _mm_cmplt_epi32(u[7], kZero);
-          v[8] = _mm_cmplt_epi32(u[8], kZero);
-          v[9] = _mm_cmplt_epi32(u[9], kZero);
-          v[10] = _mm_cmplt_epi32(u[10], kZero);
-          v[11] = _mm_cmplt_epi32(u[11], kZero);
-          v[12] = _mm_cmplt_epi32(u[12], kZero);
-          v[13] = _mm_cmplt_epi32(u[13], kZero);
-          v[14] = _mm_cmplt_epi32(u[14], kZero);
-          v[15] = _mm_cmplt_epi32(u[15], kZero);
-
-          u[0] = _mm_sub_epi32(u[0], v[0]);
-          u[1] = _mm_sub_epi32(u[1], v[1]);
-          u[2] = _mm_sub_epi32(u[2], v[2]);
-          u[3] = _mm_sub_epi32(u[3], v[3]);
-          u[4] = _mm_sub_epi32(u[4], v[4]);
-          u[5] = _mm_sub_epi32(u[5], v[5]);
-          u[6] = _mm_sub_epi32(u[6], v[6]);
-          u[7] = _mm_sub_epi32(u[7], v[7]);
-          u[8] = _mm_sub_epi32(u[8], v[8]);
-          u[9] = _mm_sub_epi32(u[9], v[9]);
-          u[10] = _mm_sub_epi32(u[10], v[10]);
-          u[11] = _mm_sub_epi32(u[11], v[11]);
-          u[12] = _mm_sub_epi32(u[12], v[12]);
-          u[13] = _mm_sub_epi32(u[13], v[13]);
-          u[14] = _mm_sub_epi32(u[14], v[14]);
-          u[15] = _mm_sub_epi32(u[15], v[15]);
-
-          v[0] = _mm_add_epi32(u[0], K32One);
-          v[1] = _mm_add_epi32(u[1], K32One);
-          v[2] = _mm_add_epi32(u[2], K32One);
-          v[3] = _mm_add_epi32(u[3], K32One);
-          v[4] = _mm_add_epi32(u[4], K32One);
-          v[5] = _mm_add_epi32(u[5], K32One);
-          v[6] = _mm_add_epi32(u[6], K32One);
-          v[7] = _mm_add_epi32(u[7], K32One);
-          v[8] = _mm_add_epi32(u[8], K32One);
-          v[9] = _mm_add_epi32(u[9], K32One);
-          v[10] = _mm_add_epi32(u[10], K32One);
-          v[11] = _mm_add_epi32(u[11], K32One);
-          v[12] = _mm_add_epi32(u[12], K32One);
-          v[13] = _mm_add_epi32(u[13], K32One);
-          v[14] = _mm_add_epi32(u[14], K32One);
-          v[15] = _mm_add_epi32(u[15], K32One);
-
-          u[0] = _mm_srai_epi32(v[0], 2);
-          u[1] = _mm_srai_epi32(v[1], 2);
-          u[2] = _mm_srai_epi32(v[2], 2);
-          u[3] = _mm_srai_epi32(v[3], 2);
-          u[4] = _mm_srai_epi32(v[4], 2);
-          u[5] = _mm_srai_epi32(v[5], 2);
-          u[6] = _mm_srai_epi32(v[6], 2);
-          u[7] = _mm_srai_epi32(v[7], 2);
-          u[8] = _mm_srai_epi32(v[8], 2);
-          u[9] = _mm_srai_epi32(v[9], 2);
-          u[10] = _mm_srai_epi32(v[10], 2);
-          u[11] = _mm_srai_epi32(v[11], 2);
-          u[12] = _mm_srai_epi32(v[12], 2);
-          u[13] = _mm_srai_epi32(v[13], 2);
-          u[14] = _mm_srai_epi32(v[14], 2);
-          u[15] = _mm_srai_epi32(v[15], 2);
-
-          out[5] = _mm_packs_epi32(u[0], u[1]);
-          out[21] = _mm_packs_epi32(u[2], u[3]);
-          out[13] = _mm_packs_epi32(u[4], u[5]);
-          out[29] = _mm_packs_epi32(u[6], u[7]);
-          out[3] = _mm_packs_epi32(u[8], u[9]);
-          out[19] = _mm_packs_epi32(u[10], u[11]);
-          out[11] = _mm_packs_epi32(u[12], u[13]);
-          out[27] = _mm_packs_epi32(u[14], u[15]);
-#if DCT_HIGH_BIT_DEPTH
-          overflow =
-              check_epi16_overflow_x8(&out[5], &out[21], &out[13], &out[29],
-                                      &out[3], &out[19], &out[11], &out[27]);
-          if (overflow) {
-            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
-            return;
-          }
-#endif  // DCT_HIGH_BIT_DEPTH
-        }
-      }
-#endif  // FDCT32x32_HIGH_PRECISION
-      // Transpose the results, do it as four 8x8 transposes.
-      {
-        int transpose_block;
-        int16_t *output0 = &intermediate[column_start * 32];
-        tran_low_t *output1 = &output_org[column_start * 32];
-        for (transpose_block = 0; transpose_block < 4; ++transpose_block) {
-          __m128i *this_out = &out[8 * transpose_block];
-          // 00 01 02 03 04 05 06 07
-          // 10 11 12 13 14 15 16 17
-          // 20 21 22 23 24 25 26 27
-          // 30 31 32 33 34 35 36 37
-          // 40 41 42 43 44 45 46 47
-          // 50 51 52 53 54 55 56 57
-          // 60 61 62 63 64 65 66 67
-          // 70 71 72 73 74 75 76 77
-          const __m128i tr0_0 = _mm_unpacklo_epi16(this_out[0], this_out[1]);
-          const __m128i tr0_1 = _mm_unpacklo_epi16(this_out[2], this_out[3]);
-          const __m128i tr0_2 = _mm_unpackhi_epi16(this_out[0], this_out[1]);
-          const __m128i tr0_3 = _mm_unpackhi_epi16(this_out[2], this_out[3]);
-          const __m128i tr0_4 = _mm_unpacklo_epi16(this_out[4], this_out[5]);
-          const __m128i tr0_5 = _mm_unpacklo_epi16(this_out[6], this_out[7]);
-          const __m128i tr0_6 = _mm_unpackhi_epi16(this_out[4], this_out[5]);
-          const __m128i tr0_7 = _mm_unpackhi_epi16(this_out[6], this_out[7]);
-          // 00 10 01 11 02 12 03 13
-          // 20 30 21 31 22 32 23 33
-          // 04 14 05 15 06 16 07 17
-          // 24 34 25 35 26 36 27 37
-          // 40 50 41 51 42 52 43 53
-          // 60 70 61 71 62 72 63 73
-          // 54 54 55 55 56 56 57 57
-          // 64 74 65 75 66 76 67 77
-          const __m128i tr1_0 = _mm_unpacklo_epi32(tr0_0, tr0_1);
-          const __m128i tr1_1 = _mm_unpacklo_epi32(tr0_2, tr0_3);
-          const __m128i tr1_2 = _mm_unpackhi_epi32(tr0_0, tr0_1);
-          const __m128i tr1_3 = _mm_unpackhi_epi32(tr0_2, tr0_3);
-          const __m128i tr1_4 = _mm_unpacklo_epi32(tr0_4, tr0_5);
-          const __m128i tr1_5 = _mm_unpacklo_epi32(tr0_6, tr0_7);
-          const __m128i tr1_6 = _mm_unpackhi_epi32(tr0_4, tr0_5);
-          const __m128i tr1_7 = _mm_unpackhi_epi32(tr0_6, tr0_7);
-          // 00 10 20 30 01 11 21 31
-          // 40 50 60 70 41 51 61 71
-          // 02 12 22 32 03 13 23 33
-          // 42 52 62 72 43 53 63 73
-          // 04 14 24 34 05 15 21 36
-          // 44 54 64 74 45 55 61 76
-          // 06 16 26 36 07 17 27 37
-          // 46 56 66 76 47 57 67 77
-          __m128i tr2_0 = _mm_unpacklo_epi64(tr1_0, tr1_4);
-          __m128i tr2_1 = _mm_unpackhi_epi64(tr1_0, tr1_4);
-          __m128i tr2_2 = _mm_unpacklo_epi64(tr1_2, tr1_6);
-          __m128i tr2_3 = _mm_unpackhi_epi64(tr1_2, tr1_6);
-          __m128i tr2_4 = _mm_unpacklo_epi64(tr1_1, tr1_5);
-          __m128i tr2_5 = _mm_unpackhi_epi64(tr1_1, tr1_5);
-          __m128i tr2_6 = _mm_unpacklo_epi64(tr1_3, tr1_7);
-          __m128i tr2_7 = _mm_unpackhi_epi64(tr1_3, tr1_7);
-          // 00 10 20 30 40 50 60 70
-          // 01 11 21 31 41 51 61 71
-          // 02 12 22 32 42 52 62 72
-          // 03 13 23 33 43 53 63 73
-          // 04 14 24 34 44 54 64 74
-          // 05 15 25 35 45 55 65 75
-          // 06 16 26 36 46 56 66 76
-          // 07 17 27 37 47 57 67 77
-          if (0 == pass) {
-            // output[j] = (output[j] + 1 + (output[j] > 0)) >> 2;
-            // TODO(cd): see quality impact of only doing
-            //           output[j] = (output[j] + 1) >> 2;
-            //           which would remove the code between here ...
-            __m128i tr2_0_0 = _mm_cmpgt_epi16(tr2_0, kZero);
-            __m128i tr2_1_0 = _mm_cmpgt_epi16(tr2_1, kZero);
-            __m128i tr2_2_0 = _mm_cmpgt_epi16(tr2_2, kZero);
-            __m128i tr2_3_0 = _mm_cmpgt_epi16(tr2_3, kZero);
-            __m128i tr2_4_0 = _mm_cmpgt_epi16(tr2_4, kZero);
-            __m128i tr2_5_0 = _mm_cmpgt_epi16(tr2_5, kZero);
-            __m128i tr2_6_0 = _mm_cmpgt_epi16(tr2_6, kZero);
-            __m128i tr2_7_0 = _mm_cmpgt_epi16(tr2_7, kZero);
-            tr2_0 = _mm_sub_epi16(tr2_0, tr2_0_0);
-            tr2_1 = _mm_sub_epi16(tr2_1, tr2_1_0);
-            tr2_2 = _mm_sub_epi16(tr2_2, tr2_2_0);
-            tr2_3 = _mm_sub_epi16(tr2_3, tr2_3_0);
-            tr2_4 = _mm_sub_epi16(tr2_4, tr2_4_0);
-            tr2_5 = _mm_sub_epi16(tr2_5, tr2_5_0);
-            tr2_6 = _mm_sub_epi16(tr2_6, tr2_6_0);
-            tr2_7 = _mm_sub_epi16(tr2_7, tr2_7_0);
-            //           ... and here.
-            //           PS: also change code in vp10/encoder/dct.c
-            tr2_0 = _mm_add_epi16(tr2_0, kOne);
-            tr2_1 = _mm_add_epi16(tr2_1, kOne);
-            tr2_2 = _mm_add_epi16(tr2_2, kOne);
-            tr2_3 = _mm_add_epi16(tr2_3, kOne);
-            tr2_4 = _mm_add_epi16(tr2_4, kOne);
-            tr2_5 = _mm_add_epi16(tr2_5, kOne);
-            tr2_6 = _mm_add_epi16(tr2_6, kOne);
-            tr2_7 = _mm_add_epi16(tr2_7, kOne);
-            tr2_0 = _mm_srai_epi16(tr2_0, 2);
-            tr2_1 = _mm_srai_epi16(tr2_1, 2);
-            tr2_2 = _mm_srai_epi16(tr2_2, 2);
-            tr2_3 = _mm_srai_epi16(tr2_3, 2);
-            tr2_4 = _mm_srai_epi16(tr2_4, 2);
-            tr2_5 = _mm_srai_epi16(tr2_5, 2);
-            tr2_6 = _mm_srai_epi16(tr2_6, 2);
-            tr2_7 = _mm_srai_epi16(tr2_7, 2);
-          }
-          // Note: even though all these stores are aligned, using the aligned
-          //       intrinsic make the code slightly slower.
-          if (pass == 0) {
-            _mm_storeu_si128((__m128i *)(output0 + 0 * 32), tr2_0);
-            _mm_storeu_si128((__m128i *)(output0 + 1 * 32), tr2_1);
-            _mm_storeu_si128((__m128i *)(output0 + 2 * 32), tr2_2);
-            _mm_storeu_si128((__m128i *)(output0 + 3 * 32), tr2_3);
-            _mm_storeu_si128((__m128i *)(output0 + 4 * 32), tr2_4);
-            _mm_storeu_si128((__m128i *)(output0 + 5 * 32), tr2_5);
-            _mm_storeu_si128((__m128i *)(output0 + 6 * 32), tr2_6);
-            _mm_storeu_si128((__m128i *)(output0 + 7 * 32), tr2_7);
-            // Process next 8x8
-            output0 += 8;
-          } else {
-            storeu_output(&tr2_0, (output1 + 0 * 32));
-            storeu_output(&tr2_1, (output1 + 1 * 32));
-            storeu_output(&tr2_2, (output1 + 2 * 32));
-            storeu_output(&tr2_3, (output1 + 3 * 32));
-            storeu_output(&tr2_4, (output1 + 4 * 32));
-            storeu_output(&tr2_5, (output1 + 5 * 32));
-            storeu_output(&tr2_6, (output1 + 6 * 32));
-            storeu_output(&tr2_7, (output1 + 7 * 32));
-            // Process next 8x8
-            output1 += 8;
-          }
-        }
-      }
-    }
-  }
-}  // NOLINT
-
-#undef ADD_EPI16
-#undef SUB_EPI16
-#undef HIGH_FDCT32x32_2D_C
-#undef HIGH_FDCT32x32_2D_ROWS_C
diff --git a/vpxdec.c b/vpxdec.c
index cd6d7ed..5650049 100644
--- a/vpxdec.c
+++ b/vpxdec.c
@@ -24,12 +24,12 @@
 #include "./args.h"
 #include "./ivfdec.h"
 
-#include "vpx/vpx_decoder.h"
-#include "vpx_ports/mem_ops.h"
-#include "vpx_ports/vpx_timer.h"
+#include "aom/vpx_decoder.h"
+#include "aom_ports/mem_ops.h"
+#include "aom_ports/vpx_timer.h"
 
 #if CONFIG_VP10_DECODER
-#include "vpx/vp8dx.h"
+#include "aom/vp8dx.h"
 #endif
 
 #include "./md5_utils.h"
@@ -344,7 +344,7 @@
   struct ExternalFrameBuffer *ext_fb;
 };
 
-// Callback used by libvpx to request an external frame buffer. |cb_priv|
+// Callback used by libaom to request an external frame buffer. |cb_priv|
 // Application private data passed into the set function. |min_size| is the
 // minimum size in bytes needed to decode the next frame. |fb| pointer to the
 // frame buffer.
@@ -379,7 +379,7 @@
   return 0;
 }
 
-// Callback used by libvpx when there are no references to the frame buffer.
+// Callback used by libaom when there are no references to the frame buffer.
 // |cb_priv| user private data passed into the set function. |fb| pointer
 // to the frame buffer.
 static int release_vp9_frame_buffer(void *cb_priv,
diff --git a/vpxenc.c b/vpxenc.c
index c4d4296..32cb12f 100644
--- a/vpxenc.c
+++ b/vpxenc.c
@@ -23,9 +23,9 @@
 #include "third_party/libyuv/include/libyuv/scale.h"
 #endif
 
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_encoder.h"
 #if CONFIG_DECODERS
-#include "vpx/vpx_decoder.h"
+#include "aom/vpx_decoder.h"
 #endif
 
 #include "./args.h"
@@ -33,15 +33,15 @@
 #include "./tools_common.h"
 
 #if CONFIG_VP10_ENCODER
-#include "vpx/vp8cx.h"
+#include "aom/vp8cx.h"
 #endif
 #if CONFIG_VP10_DECODER
-#include "vpx/vp8dx.h"
+#include "aom/vp8dx.h"
 #endif
 
-#include "vpx/vpx_integer.h"
-#include "vpx_ports/mem_ops.h"
-#include "vpx_ports/vpx_timer.h"
+#include "aom/vpx_integer.h"
+#include "aom_ports/mem_ops.h"
+#include "aom_ports/vpx_timer.h"
 #include "./rate_hist.h"
 #include "./vpxstats.h"
 #include "./warnings.h"
@@ -432,11 +432,6 @@
 
 static const arg_def_t tune_content = ARG_DEF_ENUM(
     NULL, "tune-content", 1, "Tune content type", tune_content_enum);
-
-static const arg_def_t target_level = ARG_DEF(
-    NULL, "target-level", 1,
-    "Target level (255: off (default); 0: only keep level stats; 10: level 1.0;"
-    " 11: level 1.1; ... 62: level 6.2)");
 #endif
 
 #if CONFIG_VP10_ENCODER
diff --git a/vpxenc.h b/vpxenc.h
index d867e9d..eee00d0 100644
--- a/vpxenc.h
+++ b/vpxenc.h
@@ -10,7 +10,7 @@
 #ifndef VPXENC_H_
 #define VPXENC_H_
 
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_encoder.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/vpxstats.h b/vpxstats.h
index 5c9ea34..0ea7ce4 100644
--- a/vpxstats.h
+++ b/vpxstats.h
@@ -13,7 +13,7 @@
 
 #include <stdio.h>
 
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_encoder.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/warnings.c b/warnings.c
index a3e4926..eea6abc 100644
--- a/warnings.c
+++ b/warnings.c
@@ -15,7 +15,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_encoder.h"
 
 #include "./tools_common.h"
 #include "./vpxenc.h"
diff --git a/webmenc.h b/webmenc.h
index 1ae7786..df46a78 100644
--- a/webmenc.h
+++ b/webmenc.h
@@ -14,7 +14,7 @@
 #include <stdlib.h>
 
 #include "tools_common.h"
-#include "vpx/vpx_encoder.h"
+#include "aom/vpx_encoder.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/y4menc.h b/y4menc.h
index 69d5904..bd92e02 100644
--- a/y4menc.h
+++ b/y4menc.h
@@ -13,7 +13,7 @@
 
 #include "./tools_common.h"
 
-#include "vpx/vpx_decoder.h"
+#include "aom/vpx_decoder.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/y4minput.c b/y4minput.c
index 7de859f..0a923c1 100644
--- a/y4minput.c
+++ b/y4minput.c
@@ -14,7 +14,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "vpx/vpx_integer.h"
+#include "aom/vpx_integer.h"
 #include "y4minput.h"
 
 // Reads 'size' bytes from 'file' into 'buf' with some fault tolerance.
@@ -1101,7 +1101,7 @@
     We don't use vpx_img_wrap() because it forces padding for odd picture
      sizes, which would require a separate fread call for every row.*/
   memset(_img, 0, sizeof(*_img));
-  /*Y4M has the planes in Y'CbCr order, which libvpx calls Y, U, and V.*/
+  /*Y4M has the planes in Y'CbCr order, which libaom calls Y, U, and V.*/
   _img->fmt = _y4m->vpx_fmt;
   _img->w = _img->d_w = _y4m->pic_w;
   _img->h = _img->d_h = _y4m->pic_h;
diff --git a/y4minput.h b/y4minput.h
index 9e69ceb..2037449 100644
--- a/y4minput.h
+++ b/y4minput.h
@@ -15,7 +15,7 @@
 #define Y4MINPUT_H_
 
 #include <stdio.h>
-#include "vpx/vpx_image.h"
+#include "aom/vpx_image.h"
 
 #ifdef __cplusplus
 extern "C" {
