tree ed8344018536ef4ed33ca445fa51ac94216a75f2
parent 7247e6413ff9742d58d8f601da6e262940695cca
parent c0f14141bd71414b004dccd66d48b27570299fa3
author Wan-Teh Chang <wtc@google.com> 1620082099 -0700
committer Wan-Teh Chang <wtc@google.com> 1620084752 -0700
mergetag object c0f14141bd71414b004dccd66d48b27570299fa3
 type commit
 tag v3.1.0
 tagger Wan-Teh Chang <wtc@google.com> 1620080498 -0700
 
 Release v3.1.0 Celestia
 
 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:
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEsALwi3ShSNqgH3EjpI6G2wuDBJgFAmCQd88ACgkQpI6G2wuD
 BJipRQ//T3bQECT3QzO90KAj8LxqOYkK4M9FZTqnjgNnZI8gZlb6lFs53RxvP015
 sEKT+6msrH2BanO9gkVIsYDv+Fal7cmJsjSSxz8bEOe7zWlT91F8pqyJinYKETxK
 rHc6YXIMfYSaHk+klcc1xoGpudrKc5AgM1cVkl+uoqdv3AtIwLvdtzliD1vW5SMg
 3YyQEpMYFd9XaJg0ziZkyljdpOjIEdW4JwIbQxkEnvoWzm+Ldrx9f7+Pz6E3K5/J
 KjAZB+a/Lnm1zXYgnkdVLE+w97otVB80tT27fXpglQrsikpjaOt74CPnKtLFdK+v
 ZM9cBVhioMTwgNeqnEjNvuZWXGD+I6KTExsdYzcUxJwKpwwit6/GaYz9cZ8LqIGn
 PiMeIOdfVY2Qe1ijMdO99DQN4ECLMWyUEpgb86hXBAa3DCtJtDv+BWvtwxinTruW
 jpXofPvlX8kHMJTkWt6fMO1NMGmkrm4/cDFWR4I7t8fBLHZJxbKmw/t7AthT3gc6
 WBdhvy+uAh8GoegT3ralN78miKe+wXE0qOsuuNIfzkhmKSbqaKXjynh03yfohkCH
 Rgq0HIh9voDm0E1lr2LunPBkL2/6QyCAdd5e1dkFPciTmAZ3iE1dL8qiQezeV/fF
 f4eQFRBhFWfW0JreF0QeNc5icwu68/S8MBmg1lTzl9/khNm9uTM=
 =FbTl
 -----END PGP SIGNATURE-----

Merge tag 'v3.1.0' into HEAD

Release v3.1.0 Celestia

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:

Bug: aomedia:3028
Change-Id: Ie483d165af0eed5c5906964304696998daa460ef
