Merge tag 'v3.5.0' into main

2022-08-31 v3.5.0

  This release is ABI compatible with the last one, including speedup and memory
  optimizations, and new APIs and features.
  - New Features
    * Support for frame parallel encode for larger number of threads. --fp-mt
      flag is available for all build configurations.
    * New codec control AV1E_GET_NUM_OPERATING_POINTS
  - Speedup and Memory Optimizations
    * Speed-up multithreaded encoding for good quality mode for larger number of
      threads through frame parallel encoding:
      o 30-34% encode time reduction for 1080p, 16 threads, 1x1 tile
        configuration (tile_rows x tile_columns)
      o 18-28% encode time reduction for 1080p, 16 threads, 2x4 tile
        configuration
      o 18-20% encode time reduction for 2160p, 32 threads, 2x4 tile
        configuration
    * 16-20% speed-up for speed=6 to 8 in still-picture encoding mode
    * 5-6% heap memory reduction for speed=6 to 10 in real-time encoding mode
    * Improvements to the speed for speed=7, 8 in real-time encoding mode
    * Improvements to the speed for speed=9, 10 in real-time screen encoding
      mode
    * Optimizations to improve multi-thread efficiency in real-time encoding
      mode
    * 10-15% speed up for SVC with temporal layers
    * SIMD optimizations:
      o Improve av1_quantize_fp_32x32_neon() 1.05x to 1.24x faster
      o Add aom_highbd_quantize_b{,_32x32,_64x64}_adaptive_neon() 3.15x to 5.6x
        faster than "C"
      o Improve av1_quantize_fp_64x64_neon() 1.17x to 1.66x faster
      o Add aom_quantize_b_avx2() 1.4x to 1.7x faster than aom_quantize_b_avx()
      o Add aom_quantize_b_32x32_avx2() 1.4x to 2.3x faster than
        aom_quantize_b_32x32_avx()
      o Add aom_quantize_b_64x64_avx2() 2.0x to 2.4x faster than
        aom_quantize_b_64x64_ssse3()
      o Add aom_highbd_quantize_b_32x32_avx2() 9.0x to 10.5x faster than
        aom_highbd_quantize_b_32x32_c()
      o Add aom_highbd_quantize_b_64x64_avx2() 7.3x to 9.7x faster than
        aom_highbd_quantize_b_64x64_c()
      o Improve aom_highbd_quantize_b_avx2() 1.07x to 1.20x faster
      o Improve av1_quantize_fp_avx2() 1.13x to 1.49x faster
      o Improve av1_quantize_fp_32x32_avx2() 1.07x to 1.54x faster
      o Improve av1_quantize_fp_64x64_avx2()  1.03x to 1.25x faster
      o Improve av1_quantize_lp_avx2() 1.07x to 1.16x faster
  - Bug fixes including but not limited to
    * aomedia:3206 Assert that skip_width > 0 for deconvolve function
    * aomedia:3278 row_mt enc: Delay top-right sync when intraBC is enabled
    * aomedia:3282 blend_a64_*_neon: fix bus error in armv7
    * aomedia:3283 FRAME_PARALLEL: Propagate border size to all cpis
    * aomedia:3283 RESIZE_MODE: Fix incorrect strides being used for motion
      search
    * aomedia:3286 rtc-svc: Fix to dynamic_enable spatial layers
    * aomedia:3289 rtc-screen: Fix to skipping inter-mode test in nonrd
    * aomedia:3289 rtc-screen: Fix for skip newmv on flat blocks
    * aomedia:3299 Fix build failure with CONFIG_TUNE_VMAF=1
    * aomedia:3296 Fix the conflict --enable-tx-size-search=0 with nonrd mode
      --enable-tx-size-search will be ignored in non-rd pick mode
    * aomedia:3304 Fix off-by-one error of max w/h in validate_config
    * aomedia:3306 Do not use pthread_setname_np on GNU/Hurd
    * aomedia:3325 row-multithreading produces invalid bitstream in some cases
    * chromium:1346938, chromium:1338114
    * compiler_flags.cmake: fix flag detection w/cmake 3.17-3.18.2
    * tools/*.py: update to python3
    * aom_configure.cmake: detect PIE and set CONFIG_PIC
    * test/simd_cmp_impl: use explicit types w/CompareSimd*
    * rtc: Fix to disable segm for aq-mode=3
    * rtc: Fix to color_sensitivity in variance partition
    * rtc-screen: Fix bsize in model rd computation for intra chroma
    * Fixes to ensure the correct behavior of the encoder algorithms (like
      segmentation, computation of statistics, etc.)

Bug: aomedia:3313

Change-Id: I8c9bc4c709f3bf0157ec29c5af52f397ac33ec38
diff --git a/.mailmap b/.mailmap
index 1f21868..61adddb 100644
--- a/.mailmap
+++ b/.mailmap
@@ -40,6 +40,8 @@
 Johann Koenig <johannkoenig@google.com> <johannkoenig@chromium.org>
 John Koleszar <jkoleszar@google.com>
 Joshua Litt <joshualitt@google.com> <joshualitt@chromium.org>
+Kyle Siefring <siekyleb@amazon.com>
+Kyle Siefring <siekyleb@amazon.com> <kylesiefring@gmail.com>
 Lokeshwar Reddy B <lokeshwar.reddy@ittiam.com>
 Logan Goldberg <logangw@google.com>
 Luc Trudeau <luc@trud.ca>
diff --git a/AUTHORS b/AUTHORS
index 84ef6fb..0c2da8f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -134,7 +134,7 @@
 Kavi Ramamurthy <kavii@google.com>
 KO Myung-Hun <komh@chollian.net>
 Krishna Malladi <kmalladi@google.com>
-Kyle Siefring <kylesiefring@gmail.com>
+Kyle Siefring <siekyleb@amazon.com>
 Larisa Markeeva <lmarkeeva@google.com>
 Lauren Partin <lpartin@google.com>
 Lawrence Velázquez <larryv@macports.org>
@@ -222,6 +222,7 @@
 Sai Deng <sdeng@google.com>
 Sami Boukortt <sboukortt@google.com>
 Sami Pietilä <samipietila@google.com>
+Samuel Thibault <samuel.thibault@ens-lyon.org>
 Sarah Parker <sarahparker@google.com>
 Sasi Inguva <isasi@google.com>
 Satish Kumar Suman <satish.suman@ittiam.com>
diff --git a/CHANGELOG b/CHANGELOG
index 81f92b8..0df6a68 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,76 @@
+2022-08-31 v3.5.0
+  This release is ABI compatible with the last one, including speedup and memory
+  optimizations, and new APIs and features.
+
+  - New Features
+    * Support for frame parallel encode for larger number of threads. --fp-mt
+      flag is available for all build configurations.
+    * New codec control AV1E_GET_NUM_OPERATING_POINTS
+
+  - Speedup and Memory Optimizations
+    * Speed-up multithreaded encoding for good quality mode for larger number of
+      threads through frame parallel encoding:
+      o 30-34% encode time reduction for 1080p, 16 threads, 1x1 tile
+        configuration (tile_rows x tile_columns)
+      o 18-28% encode time reduction for 1080p, 16 threads, 2x4 tile
+        configuration
+      o 18-20% encode time reduction for 2160p, 32 threads, 2x4 tile
+        configuration
+    * 16-20% speed-up for speed=6 to 8 in still-picture encoding mode
+    * 5-6% heap memory reduction for speed=6 to 10 in real-time encoding mode
+    * Improvements to the speed for speed=7, 8 in real-time encoding mode
+    * Improvements to the speed for speed=9, 10 in real-time screen encoding
+      mode
+    * Optimizations to improve multi-thread efficiency in real-time encoding
+      mode
+    * 10-15% speed up for SVC with temporal layers
+    * SIMD optimizations:
+      o Improve av1_quantize_fp_32x32_neon() 1.05x to 1.24x faster
+      o Add aom_highbd_quantize_b{,_32x32,_64x64}_adaptive_neon() 3.15x to 5.6x
+        faster than "C"
+      o Improve av1_quantize_fp_64x64_neon() 1.17x to 1.66x faster
+      o Add aom_quantize_b_avx2() 1.4x to 1.7x faster than aom_quantize_b_avx()
+      o Add aom_quantize_b_32x32_avx2() 1.4x to 2.3x faster than
+        aom_quantize_b_32x32_avx()
+      o Add aom_quantize_b_64x64_avx2() 2.0x to 2.4x faster than
+        aom_quantize_b_64x64_ssse3()
+      o Add aom_highbd_quantize_b_32x32_avx2() 9.0x to 10.5x faster than
+        aom_highbd_quantize_b_32x32_c()
+      o Add aom_highbd_quantize_b_64x64_avx2() 7.3x to 9.7x faster than
+        aom_highbd_quantize_b_64x64_c()
+      o Improve aom_highbd_quantize_b_avx2() 1.07x to 1.20x faster
+      o Improve av1_quantize_fp_avx2() 1.13x to 1.49x faster
+      o Improve av1_quantize_fp_32x32_avx2() 1.07x to 1.54x faster
+      o Improve av1_quantize_fp_64x64_avx2()  1.03x to 1.25x faster
+      o Improve av1_quantize_lp_avx2() 1.07x to 1.16x faster
+
+  - Bug fixes including but not limited to
+    * aomedia:3206 Assert that skip_width > 0 for deconvolve function
+    * aomedia:3278 row_mt enc: Delay top-right sync when intraBC is enabled
+    * aomedia:3282 blend_a64_*_neon: fix bus error in armv7
+    * aomedia:3283 FRAME_PARALLEL: Propagate border size to all cpis
+    * aomedia:3283 RESIZE_MODE: Fix incorrect strides being used for motion
+      search
+    * aomedia:3286 rtc-svc: Fix to dynamic_enable spatial layers
+    * aomedia:3289 rtc-screen: Fix to skipping inter-mode test in nonrd
+    * aomedia:3289 rtc-screen: Fix for skip newmv on flat blocks
+    * aomedia:3299 Fix build failure with CONFIG_TUNE_VMAF=1
+    * aomedia:3296 Fix the conflict --enable-tx-size-search=0 with nonrd mode
+      --enable-tx-size-search will be ignored in non-rd pick mode
+    * aomedia:3304 Fix off-by-one error of max w/h in validate_config
+    * aomedia:3306 Do not use pthread_setname_np on GNU/Hurd
+    * aomedia:3325 row-multithreading produces invalid bitstream in some cases
+    * chromium:1346938, chromium:1338114
+    * compiler_flags.cmake: fix flag detection w/cmake 3.17-3.18.2
+    * tools/*.py: update to python3
+    * aom_configure.cmake: detect PIE and set CONFIG_PIC
+    * test/simd_cmp_impl: use explicit types w/CompareSimd*
+    * rtc: Fix to disable segm for aq-mode=3
+    * rtc: Fix to color_sensitivity in variance partition
+    * rtc-screen: Fix bsize in model rd computation for intra chroma
+    * Fixes to ensure the correct behavior of the encoder algorithms (like
+      segmentation, computation of statistics, etc.)
+
 2022-06-17 v3.4.0
   This release includes compression efficiency and perceptual quality
   improvements, speedup and memory optimizations, and some new features.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5620129..a0fa444 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,9 +51,9 @@
 # passed to libtool.
 #
 # We set SO_FILE_VERSION = [c-a].a.r
-set(LT_CURRENT 7)
+set(LT_CURRENT 8)
 set(LT_REVISION 0)
-set(LT_AGE 4)
+set(LT_AGE 5)
 math(EXPR SO_VERSION "${LT_CURRENT} - ${LT_AGE}")
 set(SO_FILE_VERSION "${SO_VERSION}.${LT_AGE}.${LT_REVISION}")
 unset(LT_CURRENT)