2022-06-14 v3.4.0
  This release includes compression efficiency and perceptual quality
  improvements, speedup and memory optimizations, and some new features.
  There are no ABI or API breaking changes in this release.

  - New Features
    * New --dist-metric flag with "qm-psnr" value to use quantization
      matrices in the distortion computation for RD search. The default
      value is "psnr".
    * New command line option "--auto-intra-tools-off=1" to make
      all-intra encoding faster for high bit rate under
      "--deltaq-mode=3" mode.
    * New rate control library aom_av1_rc for real-time hardware
      encoders. Supports CBR for both one spatial layer and SVC.
    * New image format AOM_IMG_FMT_NV12 can be used as input to the
      encoder. The presence of AOM_IMG_FMT_NV12 can be detected at
      compile time by checking if the macro AOM_HAVE_IMG_FMT_NV12 is
      defined.
    * New codec controls for the encoder:
      o AV1E_SET_AUTO_INTRA_TOOLS_OFF. Only in effect if
        --deltaq-mode=3.
      o AV1E_SET_RTC_EXTERNAL_RC
      o AV1E_SET_FP_MT. Only supported if libaom is built with
        -DCONFIG_FRAME_PARALLEL_ENCODE=1.
      o AV1E_GET_TARGET_SEQ_LEVEL_IDX
    * New key-value pairs for the key-value API:
      o --auto-intra-tools-off=0 (default) or 1. Only in effect if
        --deltaq-mode=3.
      o --strict-level-conformance=0 (default) or 1
      o --fp-mt=0 (default) or 1. Only supported if libaom is built
        with -DCONFIG_FRAME_PARALLEL_ENCODE=1.
    * New aomenc options (not supported by the key-value API):
      o --nv12

  - Compression Efficiency Improvements
    * Correctly calculate SSE for high bitdepth in skip mode, 0.2% to
      0.6% coding gain.
    * RTC at speed 9/10: BD-rate gain of ~4/5% and speedup of ~10/5%
    * RTC screen content coding: many improvements for real-time screen
      at speed 10 (quality, speedup, and rate control), up to high
      resolutions (1080p).
    * RTC-SVC: fixes to make intra-only frames work for spatial layers.
    * RTC-SVC: quality improvements for temporal layers.
    * AV1 RT: A new passive rate control strategy for screen content, an
      average of 7.5% coding gain, with some clips of 20+%. The feature
      is turned off by default due to higher bit rate variation.

  - Perceptual Quality Improvements
    * RTC: Visual quality improvements for high speeds (9/10)

  - Speedup and Memory Optimizations
    * Ongoing improvements to intra-frame encoding performance on Arm
    * Faster encoding speed for "--deltaq-mode=3" mode.

  - Bug Fixes
    * b/204460717: README.md: replace master with main
    * b/210677928: libaom disable_order is surprising for
      max_reference_frames=3
    * b/222461449: -DCONFIG_TUNE_BUTTERAUGLI=1 broken
    * b/227207606: write_greyscale writes incorrect chroma in highbd
      mode
    * b/229955363: Integer-overflow in linsolve_wiener
    * https://crbug.com/aomedia/2032
    * https://crbug.com/aomedia/2397
    * https://crbug.com/aomedia/2563
    * https://crbug.com/aomedia/2815
    * https://crbug.com/aomedia/3009
    * https://crbug.com/aomedia/3018
    * https://crbug.com/aomedia/3045
    * https://crbug.com/aomedia/3101
    * https://crbug.com/aomedia/3130
    * https://crbug.com/aomedia/3173
    * https://crbug.com/aomedia/3184
    * https://crbug.com/aomedia/3187
    * https://crbug.com/aomedia/3190
    * https://crbug.com/aomedia/3195
    * https://crbug.com/aomedia/3197
    * https://crbug.com/aomedia/3201
    * https://crbug.com/aomedia/3202
    * https://crbug.com/aomedia/3204
    * https://crbug.com/aomedia/3205
    * https://crbug.com/aomedia/3207
    * https://crbug.com/aomedia/3208
    * https://crbug.com/aomedia/3209
    * https://crbug.com/aomedia/3213
    * https://crbug.com/aomedia/3214
    * https://crbug.com/aomedia/3219
    * https://crbug.com/aomedia/3222
    * https://crbug.com/aomedia/3223
    * https://crbug.com/aomedia/3225
    * https://crbug.com/aomedia/3226
    * https://crbug.com/aomedia/3228
    * https://crbug.com/aomedia/3232
    * https://crbug.com/aomedia/3236
    * https://crbug.com/aomedia/3237
    * https://crbug.com/aomedia/3238
    * https://crbug.com/aomedia/3240
    * https://crbug.com/aomedia/3243
    * https://crbug.com/aomedia/3244
    * https://crbug.com/aomedia/3246
    * https://crbug.com/aomedia/3248
    * https://crbug.com/aomedia/3250
    * https://crbug.com/aomedia/3251
    * https://crbug.com/aomedia/3252
    * https://crbug.com/aomedia/3255
    * https://crbug.com/aomedia/3257
    * https://crbug.com/aomedia/3259
    * https://crbug.com/aomedia/3260
    * https://crbug.com/aomedia/3267
    * https://crbug.com/aomedia/3268
    * https://crbug.com/aomedia/3269
    * https://crbug.com/aomedia/3276
    * https://crbug.com/aomedia/3278
    * https://crbug.com/chromium/1290068
    * https://crbug.com/chromium/1303237
    * https://crbug.com/chromium/1304990
    * https://crbug.com/chromium/1321141
    * https://crbug.com/chromium/1321388
    * https://crbug.com/oss-fuzz/44846
    * https://crbug.com/oss-fuzz/44856
    * https://crbug.com/oss-fuzz/44862
    * https://crbug.com/oss-fuzz/44904
    * https://crbug.com/oss-fuzz/45056

2022-01-28 v3.3.0
  This release includes compression efficiency and perceptual quality
  improvements, speedup and memory optimizations, some new features, and
  several bug fixes.

  - New Features
    * AV1 RT: Introducing CDEF search level 5
    * Changed real time speed 4 to behave the same as real time speed 5
    * Add --deltaq-strength
    * rtc: Allow scene-change and overshoot detection for svc
    * rtc: Intra-only frame for svc
    * AV1 RT: Option 2 for codec control AV1E_SET_ENABLE_CDEF to disable
      CDEF on non-ref frames
    * New codec controls AV1E_SET_LOOPFILTER_CONTROL and
      AOME_GET_LOOPFILTER_LEVEL
    * Improvements to three pass encoding

  - Compression Efficiency Improvements
    * Overall compression gains: 0.6%

  - Perceptual Quality Improvements
    * Improves the perceptual quality of high QP encoding for delta-q mode 4
    * Auto select noise synthesis level for all intra

  - Speedup and Memory Optimizations
    * Added many SSE2 optimizations.
    * Good quality 2-pass encoder speedups:
      o Speed 2: 9%
      o Speed 3: 12.5%
      o Speed 4: 8%
      o Speed 5: 3%
      o Speed 6: 4%
    * Real time mode encoder speedups:
      o Speed 5: 2.6% BDRate gain, 4% speedup
      o Speed 6: 3.5% BDRate gain, 4% speedup
      o Speed 9: 1% BDRate gain, 3% speedup
      o Speed 10: 3% BDRate gain, neutral speedup
    * All intra encoding speedups (AVIF):
      o Single thread - speed 6: 8%
      o Single thread - speed 9: 15%
      o Multi thread(8) - speed 6: 14%
      o Multi thread(8) - speed 9: 34%

  - Bug Fixes
    * Issue 3163: Segmentation fault when using --enable-keyframe-filtering=2
    * Issue 2436: Integer overflow in av1_warp_affine_c()
    * Issue 3226: armv7 build failure due to gcc-11
    * Issue 3195: Bug report on libaom (AddressSanitizer: heap-buffer-overflow)
    * Issue 3191: Bug report on libaom (AddressSanitizer: SEGV on unknown
      address)
    * Issue 3176: Some SSE2/SADx4AvgTest.* tests fail on Windows
    * Issue 3175: Some SSE2/SADSkipTest.* tests fail on Windows

2021-10-13 v3.2.0
  This release includes compression efficiency and perceptual quality
  improvements, speedup and memory optimizations, as well as some new
  features.

  - New Features
    * Introduced speeds 7, 8, and 9 for all intra mode.
    * Introduced speed 10 for real time mode.
    * Introduced an API that allows external partition decisions.
    * SVC: added support for compound prediction.
    * SVC: added support for fixed SVC modes.

  - Compression Efficiency Improvements
    * Intra-mode search improvement.
    * Improved real time (RT) mode BDrate savings by ~5% (RT speed 5)
      and ~12% (RT speed 6). The improvement was measured on the video
      conference set.
    * Improved real time mode for nonrd path (speed 7, 8, 9): BDrate
      gains of ~3-5%.
    * Rate control and RD adjustments based on ML research in VP9.
      Gains of ~0.5-1.0% for HD.

  - Perceptual Quality Improvements
    * Added a new mode --deltaq-mode=3 to improve perceptual quality
      based on a differential contrast model for still images.
    * Added a new mode –deltaq-mode=4 to improve perceptual quality
      based on user rated cq_level data set for still images.
    * Weighting of some intra mode and partition size choices to better
      manage and retain texture.

  - Speedup and Memory Optimizations
    * Further improved 2-pass good quality encoder speed:
      o Speed 2 speedup: 18%
      o Speed 3 speedup: 22%
      o Speed 4 speedup: 37%
      o Speed 5 speedup: 30%
      o Speed 6 speedup: 20%
    * Optimized the real time encoder (measured on the video conference
      set):
      o RT speed 5 speedup: 110%
      o RT speed 6 speedup: 77%

  - Bug Fixes
    * Issue 3069: Fix one-pass mode keyframe placement off-by-one error.
    * Issue 3156: Fix a bug in av1_quantize_lp AVX2 optimization.

2021-09-29 v3.1.3
  This release includes several bug fixes.

  - Bug fixes:
    The following four cmake changes should help the people building
    libaom using MSVC.
      1. exports: use CMAKE_SHARED_LIBRARY_PREFIX to determine lib name
         https://aomedia-review.googlesource.com/c/aom/+/142342
      2. aom_install: Install lib dlls to bindir
         https://aomedia-review.googlesource.com/c/aom/+/146546
      3. aom_install: use relpath for install
         https://aomedia-review.googlesource.com/c/aom/+/146550
      4. aom_install: don't exclude msvc from install
         https://aomedia-review.googlesource.com/c/aom/+/146547

    aom/aom_encoder.h: remove configure option reference
    https://aomedia-review.googlesource.com/c/aom/+/146743

    Issue 3113: Tests for detecting chroma subsampling in
    av1_copy_and_extend_frame() do not work when y_width or y_height is
    1

    Issue 3115: image2yuvconfig() should calculate uv_crop_width and
    uv_crop_height from y_crop_width and y_crop_height

    Issue 3140: rc_overshoot_pct is documented as having a range of
    0-1000, but is range checked against 0-100

    Issue 3147: Build failure on Apple M1 arm64

2021-07-20 v3.1.2
  This release includes several bug fixes.

  - Bug fixes:
    exports.cmake: use APPLE and WIN32 and use def for mingw-w64
    https://aomedia-review.googlesource.com/c/aom/+/139882

    Issue 2993: Incorrect spatial_id when decoding base layer of
    multi-layer stream

    Issue 3080: Chroma Resampling by Encoder on Y4M Inputs Files Tagged
    as C420mpeg2

    Issue 3081: Use of uninitialized value $version_extra in
    concatenation (.) or string at aom/build/cmake/version.pl line 88.

2021-06-08 v3.1.1
  This release includes several bug fixes.

  - Bug fixes:
    Issue 2965: Cherry-picked the following four commits for the
    tune=butteraugli mode.
      1. Add libjxl to pkg_config if enabled:
         https://aomedia-review.googlesource.com/c/aom/+/136044
      2. Declare set_mb_butteraugli_rdmult_scaling static:
         https://aomedia-review.googlesource.com/c/aom/+/134506
      3. Add color range detection in tune=butteraugli mode:
         https://aomedia-review.googlesource.com/c/aom/+/135521
      4. Enable tune=butteraugli in all-intra mode:
         https://aomedia-review.googlesource.com/c/aom/+/136082

    Issue 3021: Fix vmaf model initialization error when not set to
    tune=vmaf

    Issue 3050: Compilation fails with -DCONFIG_TUNE_VMAF=1

    Issue 3054: Consistent crash on near-static screen content, keyframe
    related

2021-05-03 v3.1.0
  This release adds an "all intra" mode to the encoder, which significantly
  speeds up the encoding of AVIF still images at speed 6.

  - Upgrading:
    All intra mode for encoding AVIF still images and AV1 all intra videos:
    AOM_USAGE_ALL_INTRA (2) can be passed as the 'usage' argument to
    aom_codec_enc_config_default().

    New encoder control IDs added:
      - AV1E_SET_ENABLE_DIAGONAL_INTRA: Enable diagonal (D45 to D203) intra
        prediction modes (0: false, 1: true (default)). Also available as
        "enable-diagonal-intra" for the aom_codec_set_option() function.

    New aom_tune_metric enum value: AOM_TUNE_BUTTERAUGLI. The new aomenc option
    --tune=butteraugli was added to optimize the encoder’s perceptual quality by
    optimizing the Butteraugli metric. Install libjxl (JPEG XL) and then pass
    -DCONFIG_TUNE_BUTTERAUGLI=1 to the cmake command to enable it.

    Addition of support for libvmaf 2.x.

  - Enhancements:
    Heap memory consumption for encoding AVIF still images is significantly
    reduced.

  - Bug fixes:
    Issue 2601: third_party/libaom fails licensecheck

    Issue 2950: Conditional expression for rc->this_key_frame_forced is always
    true in find_next_key_frame()

    Issue 2988: "make install" installs the aom.h header twice

    Issue 2992: Incorrectly printing the temporal_id twice in dump_obu tool

    Issue 2998:

    Issue 2999:

    Issue 3000:

2021-02-24 v3.0.0
  This release includes compression efficiency improvement, speed improvement
  for realtime mode, as well as some new APIs.

  - Upgrading:
    Support for PSNR calculation based on stream bit-depth.

    New encoder control IDs added:
      - AV1E_SET_ENABLE_RECT_TX
      - AV1E_SET_VBR_CORPUS_COMPLEXITY_LAP
      - AV1E_GET_BASELINE_GF_INTERVAL
      - AV1E_SET_ENABLE_DNL_DENOISING

    New decoder control IDs added:
      - AOMD_GET_FWD_KF_PRESENT
      - AOMD_GET_FRAME_FLAGS
      - AOMD_GET_ALTREF_PRESENT
      - AOMD_GET_TILE_INFO
      - AOMD_GET_SCREEN_CONTENT_TOOLS_INFO
      - AOMD_GET_STILL_PICTURE
      - AOMD_GET_SB_SIZE
      - AOMD_GET_SHOW_EXISTING_FRAME_FLAG
      - AOMD_GET_S_FRAME_INFO

    New aom_tune_content enum value: AOM_CONTENT_FILM

    New aom_tune_metric enum value: AOM_TUNE_VMAF_NEG_MAX_GAIN

    Coefficient and mode update can be turned off via
    AV1E_SET_{COEFF/MODE}_COST_UPD_FREQ.

    New key & value API added, available with aom_codec_set_option() function.

    Scaling API expanded to include 1/4, 3/4 and 1/8.

  - Enhancements:
    Better multithreading performance with realtime mode.

    New speed 9 setting for faster realtime encoding.

    Smaller binary size with low bitdepth and realtime only build.

    Temporal denoiser and its optimizations on x86 and Neon.

    Optimizations for scaling.

    Faster encoding with speed settings 2 to 6 for good encoding mode.

    Improved documentation throughout the library, with function level
    documentation, tree view and support for the dot tool.

  - Bug fixes:
    Aside from those mentioned in v2.0.1 and v2.0.2, this release includes the
    following bug fixes:

    Issue 2940: Segfault when encoding with --use-16bit-internal and --limit > 1

    Issue 2941: Decoder mismatch with --rt --bit-depth=10 and --cpu-used=8

    Issue 2895: mingw-w64 i686 gcc fails to build

    Issue 2874: Separate ssse3 functions from sse2 file.

2021-02-09 v2.0.2
  This release includes several bug fixes.

  - Bug fixes:
    Issue 2643: Modify the assertion in temporal filter intrinsics.

    Issue 2648: Fix unit test ThreadTestLarge.EncoderResultTest/49
    assertion failure.

    Issue 2869: Add -Wimplicit-function-declaration as C flag only.

    Issue 2878: Avoid memset in the av1_filter_intra_predictor module
    functions.

    Issue 2903: Fix a typo bug in apply_temporal_filter_planewise.

    Call av1_setup_frame_size() when dropping a frame in the
    encode_frame_to_data_rate() function in av1/encoder/encoder.c.

2020-11-25 v2.0.1
  This release includes two bug fixes.

  - Bug fixes:
    Issue 2723: Fix crash in chroma_check() when generating a monochrome
    encoded stream in real-time mode.

    Issue 2833: Fix crash on some input when reduced still picture header is
    used in real-time mode and speed >=7.

2020-05-07 v2.0.0 "Applejack"
  First official release of libaom.
  This release includes new real-time mode and SVC support.

  - Upgrading:
    AOM_SET_POSTPROC, AOM_CODEC_CAP_POSTPROC and AOM_CODEC_USE_POSTPROC are
    removed.

    AOM_SET_DBG_* is removed.

    Multi-resolution encoding is removed.

    put_frame and put_slice callbacks are removed.

  - Enhancements:
    Full-sweep document update for codec controls.

2018-06-28 v1.0.0
  AOMedia Codec Workgroup Approved version 1.0

2016-04-07 v0.1.0 "AOMedia Codec 1"
  This release is the first Alliance for Open Media codec.
