1. 15 Dec, 2016 1 commit
  2. 14 Dec, 2016 1 commit
  3. 13 Dec, 2016 1 commit
    • Yunqing Wang's avatar
      Not to call reset_use_upsampled_references() while encoding key frames · fe1e58ec
      Yunqing Wang authored
      A crash was reported while encoding >1080p file using best mode.
      (aom issue 107 and issue 108). The cause was that the speed features
      were initialized using good mode in AV1. The patch(commit f330ca)
      disabled the upsampled reference usage only for good mode, but not for
      best mode. So, for 1st key frame, the encoder incorrectly called
      reset_use_upsampled_references() that caused the segfault.
      
      The patch(commit e4e93b) disabled the upsampled reference usage for all
      encoding modes and resolved the issue. This patch fixed issue 108 and
      further made sure the upsampled references would be used correctly.
      
      BUG=aomedia:108
      
      Change-Id: I8362cc7cd82be324fd77f0bec315aeba509903bd
      fe1e58ec
  4. 12 Dec, 2016 1 commit
    • Debargha Mukherjee's avatar
      Refines the recode loop · 705544c2
      Debargha Mukherjee authored
      Uses number of 4x4 blocks using global motion as metric to
      decide whether to recode or not.
      
      Improves performance a little.
      lowres: -0.658%
      
      Change-Id: I6b1913b7bd31d7a25ca8ca5c75c9b6bb87151a78
      705544c2
  5. 09 Dec, 2016 1 commit
    • Debargha Mukherjee's avatar
      Support affine/homography models for global motion · b0f6bd44
      Debargha Mukherjee authored
      With this patch affine or homography models can be enabled
      by simply changing the value of the GLOBAL_TRANS_TYPES
      macro in common/mv.h to 4 and 5 respectively. Currently
      it is left at supporting only rotzoom. There is a small
      gain with enabling affine.
      
      Also refactors costing to change based on the model type.
      
      Change-Id: I46c1759de06c42c176c64ec21307ff347ddcc259
      b0f6bd44
  6. 07 Dec, 2016 2 commits
    • David Barker's avatar
      Fix segfault for reference-buffer&aom-highbitdepth · 49a76560
      David Barker authored
      The commit fixes the segfault shown in  test AV1/ActiveMapTestLarge
      when build with the following config:
      ../../aom/configure --disable-install-docs --enable-unit-tests
      --enable-debug --disable-optimizations --enable-aom-highbitdepth
      --enable-experimental --enable-ans --enable-bidir-pred
      --enable-dual-filter --enable-entropy --enable-ext-inter
      --enable-ext-interp --enable-ext-intra --enable-ext-partition
      --enable-ext-partition-types --enable-ext-refs --enable-ext-tx
      --enable-loop-restoration --enable-filter-intra --enable-motion-var
      --enable-new-quant --enable-ref-mv --enable-supertx --enable-var-tx
      
      BUG=aomedia:99
      
      Change-Id: I900d5e1d5458c482a1f0a3dde769c1ad93acdca7
      49a76560
    • Jingning Han's avatar
      Add 2x2 variance function · 9e7c49fc
      Jingning Han authored
      Change-Id: I73bcb8ab5727e2d07e34ca35e9e014f3c6f63d56
      9e7c49fc
  7. 02 Dec, 2016 1 commit
  8. 01 Dec, 2016 1 commit
  9. 18 Nov, 2016 1 commit
    • Debargha Mukherjee's avatar
      Add default 64x64 scan orders and entropy models · 153e1f86
      Debargha Mukherjee authored
      Adds 64x64 default scan orders
      Adds 64x64 coefficient entropy models (just copy the 32x32 ones)
      Entropy context updates for 64x64 transform
      Various misc. changes to support 64x64 transforms
      
      Change-Id: I2c0bc4ba540886dd196e87a78b205407ad3e866b
      153e1f86
  10. 17 Nov, 2016 1 commit
  11. 16 Nov, 2016 1 commit
    • Debargha Mukherjee's avatar
      Add recode loop test for global motion usage · b98a702d
      Debargha Mukherjee authored
      Adds a feature to recode if global motion is used for a reference but
      has very few blocks in the frame actually using it.
      
      lowres improves to -0.512% on average.
      
      Change-Id: I61a36770e1b7103b9a27706909443c3f14ee4e42
      b98a702d
  12. 11 Nov, 2016 1 commit
  13. 10 Nov, 2016 1 commit
    • Thomas Davies's avatar
      Add options setting number of tile groups or MTU. · af6df175
      Thomas Davies authored
      Default MTU size is 0, which implies a fixed number
      of tile groups. MTU matching overrides fixed tile
      group. MTU matching will succeed unless a single
      tile is bigger than the MTU.
      
      --mtu-size is in bytes, and includes headers but
      not transport/wrapper overheads
      
      Change-Id: I2b70bd41b175b54273b02d836f2a84011f617a7c
      af6df175
  14. 09 Nov, 2016 1 commit
  15. 07 Nov, 2016 1 commit
    • Yushin Cho's avatar
      New experiment: Perceptual Vector Quantization from Daala · 77bba8d3
      Yushin Cho authored
      PVQ replaces the scalar quantizer and coefficient coding with a new
      design originally developed in Daala. It currently depends on the
      Daala entropy coder although it could be adapted to work with another
      entropy coder if needed:
      ./configure --enable-experimental --enable-daala_ec --enable-pvq
      
      The version of PVQ in this commit is adapted from the following
      revision of Daala:
      https://github.com/xiph/daala/commit/fb51c1ade6a31b668a0157d89de8f0a4493162a8
      
      More information about PVQ:
      - https://people.xiph.org/~jm/daala/pvq_demo/
      - https://jmvalin.ca/papers/spie_pvq.pdf
      
      The following files are copied as-is from Daala with minimal
      adaptations, therefore we disable clang-format on those files
      to make it easier to synchronize the AV1 and Daala codebases in the future:
       av1/common/generic_code.c
       av1/common/generic_code.h
       av1/common/laplace_tables.c
       av1/common/partition.c
       av1/common/partition.h
       av1/common/pvq.c
       av1/common/pvq.h
       av1/common/state.c
       av1/common/state.h
       av1/common/zigzag.h
       av1/common/zigzag16.c
       av1/common/zigzag32.c
       av1/common/zigzag4.c
       av1/common/zigzag64.c
       av1/common/zigzag8.c
       av1/decoder/decint.h
       av1/decoder/generic_decoder.c
       av1/decoder/laplace_decoder.c
       av1/decoder/pvq_decoder.c
       av1/decoder/pvq_decoder.h
       av1/encoder/daala_compat_enc.c
       av1/encoder/encint.h
       av1/encoder/generic_encoder.c
       av1/encoder/laplace_encoder.c
       av1/encoder/pvq_encoder.c
       av1/encoder/pvq_encoder.h
      
      Known issues:
      - Lossless mode is not supported, '--lossless=1' will give the same result as
      '--end-usage=q --cq-level=1'.
      - High bit depth is not supported by PVQ.
      
      Change-Id: I1ae0d6517b87f4c1ccea944b2e12dc906979f25e
      77bba8d3
  16. 04 Nov, 2016 1 commit
    • Yushin Cho's avatar
      New experiment: Perceptual Vector Quantization from Daala · 09705fe7
      Yushin Cho authored
      PVQ replaces the scalar quantizer and coefficient coding with a new
      design originally developed in Daala. It currently depends on the
      Daala entropy coder although it could be adapted to work with another
      entropy coder if needed:
      ./configure --enable-experimental --enable-daala_ec --enable-pvq
      
      The version of PVQ in this commit is adapted from the following
      revision of Daala:
      https://github.com/xiph/daala/commit/fb51c1ade6a31b668a0157d89de8f0a4493162a8
      
      More information about PVQ:
      - https://people.xiph.org/~jm/daala/pvq_demo/
      - https://jmvalin.ca/papers/spie_pvq.pdf
      
      The following files are copied as-is from Daala with minimal
      adaptations, therefore we disable clang-format on those files
      to make it easier to synchronize the AV1 and Daala codebases in the future:
       av1/common/generic_code.c
       av1/common/generic_code.h
       av1/common/laplace_tables.c
       av1/common/partition.c
       av1/common/partition.h
       av1/common/pvq.c
       av1/common/pvq.h
       av1/common/state.c
       av1/common/state.h
       av1/common/zigzag.h
       av1/common/zigzag16.c
       av1/common/zigzag32.c
       av1/common/zigzag4.c
       av1/common/zigzag64.c
       av1/common/zigzag8.c
       av1/decoder/decint.h
       av1/decoder/generic_decoder.c
       av1/decoder/laplace_decoder.c
       av1/decoder/pvq_decoder.c
       av1/decoder/pvq_decoder.h
       av1/encoder/daala_compat_enc.c
       av1/encoder/encint.h
       av1/encoder/generic_encoder.c
       av1/encoder/laplace_encoder.c
       av1/encoder/pvq_encoder.c
       av1/encoder/pvq_encoder.h
      
      Known issues:
      - Lossless mode is not supported, '--lossless=1' will give the same result as
      '--end-usage=q --cq-level=1'.
      - High bit depth is not supported by PVQ.
      
      Change-Id: I1ae0d6517b87f4c1ccea944b2e12dc906979f25e
      09705fe7
  17. 31 Oct, 2016 1 commit
    • Steinar Midtskogen's avatar
      Reverse order of CLPF and dering · 5d56f4d6
      Steinar Midtskogen authored
      Low latency:
      PSNR YCbCr:     -0.15%      0.11%      0.12%
         PSNRHVS:     -0.25%
            SSIM:     -0.26%
          MSSSIM:     -0.26%
       CIEDE2000:     -0.03%
      
      High latency:
      PSNR YCbCr:     -0.18%      0.18%      0.07%
         PSNRHVS:     -0.20%
            SSIM:     -0.21%
          MSSSIM:     -0.21%
       CIEDE2000:     -0.03%
      
      Change-Id: Ieb86d9ba353220de6454bdc15cea825944b6385b
      5d56f4d6
  18. 30 Oct, 2016 1 commit
  19. 28 Oct, 2016 2 commits
    • Thomas Daede's avatar
      Upsample reference frames after size dependent speed features are calculated. · c266df05
      Thomas Daede authored
      This prevents a crash if the upsample_refs speed feature is
      changed as part of set_size_dependent_vars, when the recode
      loop is enabled.
      
      Change-Id: I645e389bfe961879dd2001439a34fde2993868d9
      c266df05
    • Thomas Davies's avatar
      Encode and decode multiple tile groups · 80188d15
      Thomas Davies authored
      This is a manual adaptation of the following commit from aom/master:
      ce12003d
      
      The original commit message:
      
      A tile group is a set of tiles in scan order.
      
      Each tile group has a version of uncompressed and compressed headers,
      identical apart from tile group parameters.
      Encoding probability updates takes account of the number of
      headers to control overheads.
      
      The decoder supports arbitrary numbers of tile groups with
      arbitrary number of tiles. The number of tiles in a TG is
      signalled in the uncompressed header for that TG.
      
      The encoder currently only supports a fixed number
      of TGs (3, when error resilient mode is on) of equal size
      (except possibly for the last one).
      
      The average BDR performnce with 3 tile groups versus
      anchor with error resilient mode and up to 16 tiles is:
      
      NR YCbCr:      3.02%      3.04%      3.05%
      PSNRHVS:      3.09%
      SSIM:      3.06%
      MSSSIM:      3.05%
      CIEDE2000:      3.04%
      
      Change-Id: I9b97c5ed733103b9160a3a5d4370de5322c00c0b
      80188d15
  20. 25 Oct, 2016 2 commits
  21. 22 Oct, 2016 1 commit
    • Angie Chiang's avatar
      Align frame contexts. · a5d96c4a
      Angie Chiang authored
      This will allow for aligned cdfs and scan orders inside.
      
      Change-Id: I8ebcd64d55e41da20f518a39ae6ef192def70109
      a5d96c4a
  22. 20 Oct, 2016 2 commits
    • Urvang Joshi's avatar
      Declare some array sizes to be constants (known at compile time). · bffc0b57
      Urvang Joshi authored
      This reduces some memcpys and callocs.
      
      Cherry-picked from aomedia/master: 40810138
      
      Change-Id: If04580af4c63892c8af8ac5b405c7d6aabe5af89
      bffc0b57
    • Zoe Liu's avatar
      Sync with aom branch for ext-refs · 6cfaff95
      Zoe Liu authored
      Plus a small code clean up. The experiment of EXT_REFS, compared against
      the baseline, using Overall PSNR, now obtains a gain on lowres as:
      Avg: -5.818; BDRate: -5.653
      
      Compared against the previous EXT_REFS results on lowres, a tiny gain is
      obtained as:
      Avg: -0.047, BDRate: -0.063
      
      (1) 780952 Add encoder first pass support to bi-prediction in EXT_REFS
      (2) f91498 Add pred prob handling for new references in EXT_REFS
      (3) e91472 Add decoder support for bi-direct prediction in EXT_REFS
      (4) 0dbac9 Add encoder support to new references in EXT_REFS
      (5) ad70cc Remove hard-coded number for EXT_REFS
      (6) 9c1e2f Add the use of new reference frames at encoder in EXT_REFS
      (7) 6d4fde Add the experiment flag of EXT_REFS
      
      Change-Id: I26f7ca45b9ede7579fdb9d0d6a1a91f4334599bd
      6cfaff95
  23. 19 Oct, 2016 2 commits
    • Urvang Joshi's avatar
      Fix warnings reported by -Wshadow: Part2: av1 directory · 454280da
      Urvang Joshi authored
      While we are at it:
      - Rename some variables to more meaningful names
      - Reuse some common consts from a header instead of redefining them.
      
      Cherry-picked from aomedia/master: 863b0499
      
      Change-Id: Ida5de713156dc0126a27f90fdd36d29a398a3c88
      454280da
    • Urvang Joshi's avatar
      Move STAT_TYPE enum to source file. · b5ed3500
      Urvang Joshi authored
      In the header, all we need is number of stat types, not the names for actual
      types.
      
      Removing it avoids names like 'Y', 'U', 'V' and 'ALL' being visible
      in all files that include the encoder.h header.
      
      Change-Id: I874a73a3cfe6bcb29aedea102077a52addc49af6
      b5ed3500
  24. 18 Oct, 2016 1 commit
    • Urvang Joshi's avatar
      Remove unused array 'last_frame_seg_map_copy'. · 8a02d76a
      Urvang Joshi authored
      This array was allocated and used to save and restore segmentation map,
      however the original segmentation map was never modified between the
      calls to save and restore.
      
      Change-Id: Iaf0fbfed733c097e84cf44d2aa6b8f35d2fb456b
      8a02d76a
  25. 14 Oct, 2016 3 commits
  26. 13 Oct, 2016 3 commits
    • Steinar Midtskogen's avatar
      Move CLPF block signals from frame to SB level. · 97535038
      Steinar Midtskogen authored
      These signals were in the uncompressed frame header (as a temporary
      hack), which caused two problems:
      
      * We don't want that header to be duplicated in the slice header
      * It was necessary to signal the number of bits to transmit up front
      
      However, the filter size can be 128x128 which is greater than the SB
      size, and a decoder wouldn't be able to know whether to read a bit or
      not until the final SB of that 128x128 block has been decoded
      (depending on whether the 128x128 is all skip or not).  Therefore the
      signalling was changed for 128x128 blocks so that every top left SB of
      a 128x128 filter block contains a signal regardless of whether the
      block is all skip or not.  Also, all the MB's of 128x128 block are
      filtered even if they are skip MB's.  This gives the signal a purpose
      even when the 128x128 block is all skip, and it also gives a slight
      coding gain as it leaves a way to filter skip blocks, which was
      previously forbidden.
      
      Low latency:
      PSNR YCbCr:     -0.19%     -0.14%     -0.06%
         PSNRHVS:     -0.15%
            SSIM:     -0.13%
          MSSSIM:     -0.15%
       CIEDE2000:     -0.19%
      
      High latency:
      PSNR YCbCr:     -0.03%     -0.01%     -0.09%
         PSNRHVS:      0.04%
            SSIM:      0.00%
          MSSSIM:      0.02%
       CIEDE2000:     -0.02%
      
      Change-Id: I69ba7144d07d388b4f0968f6a53558f480979171
      97535038
    • Yue Chen's avatar
      Renamings for OBMC experiment · cb60b185
      Yue Chen authored
      To get ready for pulling AV1 to nextgenv2
      Replace the experimental flag by MOTION_VAR. Rename major variables.
      
      Change-Id: If6cf4f37b9319c46d8f90df551cc7295d66ca205
      cb60b185
    • Zoe Liu's avatar
      Clean code a bit and fix a couple of small bugs in ext-refs · f0e4669e
      Zoe Liu authored
      Currently the patch does not have any impact on the RD performance. The
      fix could however potentially help on the next step of work, especially
      when the extra altref frames allow non-zero temporal filtering strength
      and their corresponding OVERLAY frames, i.e. the INTNL_OVERLAY frames
      are being added.
      
      Change-Id: I2e07fb3d0aa547a0b5dd05bb4ba865cd46309076
      f0e4669e
  27. 11 Oct, 2016 3 commits
  28. 10 Oct, 2016 2 commits
    • Steinar Midtskogen's avatar
      Extend CLPF to chroma. · ecf9a0c8
      Steinar Midtskogen authored
      Objective quality impact (low latency):
      
      PSNR YCbCr:      0.13%     -1.37%     -1.79%
         PSNRHVS:      0.03%
            SSIM:      0.24%
          MSSSIM:      0.10%
       CIEDE2000:     -0.83%
      
      Change-Id: I8ddf0def569286775f0f9d4d4005932766a7fc27
      ecf9a0c8
    • Steinar Midtskogen's avatar
      Remove some dead code in CLPF. · 9021d09f
      Steinar Midtskogen authored
      av1_clpf_frame() was always called with the same src and dst,
      so we only need one argument and the code supporting different
      src and dst was removed.
      
      Change-Id: I70919f50e5cfb19c22eb4dff9ee7c0fa2697fad3
      9021d09f