1. 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
  2. 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
  3. 09 Nov, 2016 1 commit
  4. 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
  5. 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
  6. 25 Oct, 2016 2 commits
  7. 24 Oct, 2016 1 commit
    • Jingning Han's avatar
      Prevent potential token buffer overflow in format 444 · 7f76d476
      Jingning Han authored
      For a 16x16 pixel block, one needs to allocate 16x16 coefficient
      tokens, plus up to 16 eob tokens, per plane. This commit increases
      the token allocation size to cover the case where all the transform
      blocks are of size 4x4 in format 444.
      
      Change-Id: I5755e6a53771053d51163d01ec1d62e670c5009e
      7f76d476
  8. 20 Oct, 2016 1 commit
  9. 19 Oct, 2016 4 commits
  10. 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
  11. 14 Oct, 2016 1 commit
    • Urvang Joshi's avatar
      Wrap palette code inside CONFIG_PALETTE flag. · b100db7c
      Urvang Joshi authored
      This flag was already added to aomedia/master, so bringing it back to
      webm/nextgenv2, as part of an effort to get the two codebases in sync.
      
      Change-Id: I2b933a6a160e4210d1411a9e7978149eb8553205
      b100db7c
  12. 13 Oct, 2016 1 commit
    • 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
  13. 30 Sep, 2016 1 commit
  14. 19 Sep, 2016 1 commit
    • Alex Converse's avatar
      Move ANS to aom_dsp. · 1ac1ae73
      Alex Converse authored
      That's where it lives in aom/master.
      
      Change-Id: I38f405827d9c2d0b06ef5f3bfd7cadc35d5991ef
      1ac1ae73
  15. 17 Sep, 2016 2 commits
    • clang-format's avatar
      apply clang-format · f9562aea
      clang-format authored and James Zern's avatar James Zern committed
      Change-Id: I863fc85c7dc1b4f4e5740ac086fe1a852c62d26e
      f9562aea
    • Debargha Mukherjee's avatar
      Enable tile-adaptive restoration · 5cd2ab95
      Debargha Mukherjee authored
      Includes a major refactoring/enhancement to support
      tile-adaptive switchable restoration. The framework can be
      readily extended to add more restoration schemes in the
      future. Also includes various cleanups and fixes.
      
      Specifically the framework allows restoration to be conducted
      on tiles such that each tile can be either left unrestored, or
      use bilateral or wiener filtering.
      
      There is a modest improvemnt in coding efficiency (0.1 - 0.2%).
      
      Further enhancements will be added subsequently to improve coding
      efficiency and complexity.
      
      Change-Id: I5ebedb04785ce1ef6f324abe209e925c2d6cbe8a
      5cd2ab95
  16. 15 Sep, 2016 2 commits
  17. 01 Sep, 2016 2 commits
  18. 25 Aug, 2016 1 commit
    • Wei-ting Lin's avatar
      Separate EXT_ARFs' frame context index · 4c7e1cd9
      Wei-ting Lin authored
      This commit separate the frame index of EXT_ARFs' from other frame
      types in the ext-refs setting.
      
      It improves the average RD performance by
      
      0.206% in the lowres, and
      0.173% in the midres.
      
      The overall gains for the ext-refs compared to the baseline are
      
      5.665% in the lowres, and
      4.883% in the midres.
      
      Change-Id: I6591ad29120880c1aef0bd0b7cf15238c3f3b8f3
      4c7e1cd9
  19. 19 Aug, 2016 1 commit
    • Wei-ting Lin's avatar
      Insert extra ARFs' in a gf group · 41d5d52d
      Wei-ting Lin authored
      Insert multiple arfs in a gf group to emulate multi-layer backward
      reference frames structure. At maximum, two extra ARF's are inserted
      in a gf group.
      
      It improves the RD performance by 0.317% in Avg in lowres dataset.
      
      Change-Id: I62c32e1b0f25b978484dd113b319bebcd959bf60
      41d5d52d
  20. 16 Aug, 2016 1 commit
    • Yaowu Xu's avatar
      Port commits related to clpf and qm experiments · 0818a7c8
      Yaowu Xu authored
      Manually cherry-picked following commits from AOMedia git repository:
      bb2727c2 Sort includess for "clpf.h"
      c297fd00 Add quantisation matrix range parameters.
      0527894f Add encoder option and signaling for quant matrix control.
      4106232b Turn off trellis coding for quantization matrices.
      4017fca3 Modify tests to allow quantization matrices.
      1c122c24 Add quant and dequant functions for new quant matrices.
      95a89994 Enable CLPF
      f72782bb Fix a build issue
      73bae509 Add quantisation matrices and selection functions
      33208d20 Added support for constrained low pass filter (CLPF)
      
      Change-Id: I60fc1ee1ac40e6b9d1d00affd97547ee5d5dd6be
      0818a7c8
  21. 12 Aug, 2016 1 commit
  22. 04 Aug, 2016 2 commits
    • Yaowu Xu's avatar
      Replace variants of 'vp8' and 'vp9' with 'vpx' · fe291b64
      Yaowu Xu authored
      Change-Id: Id6cb96b0b15efdda63348d8bfe59fc0533c85ba1
      fe291b64
    • Zoe Liu's avatar
      Code refactoring on Macros related to ref frame numbers · 1af28f02
      Zoe Liu authored
      We have renamed following Macros to avoid name confusion:
      
      REFS_PER_FRAME --> INTER_REFS_PER_FRAME
      (= ALTREF_FRAME - LAST_FRAME + 1)
      MAX_REF_FRAMES --> TOTAL_REFS_PER_FRAME
      (= ALTREF_FRAME - INTRA_FRAME + 1)
      
      INTER_REFS_PER_FRAME specifies the maximum number of reference frames
      that each Inter frame may use.
      TOTAL_REFS_PER_FRAME is equal to INTER_REFS_PER_FRAME + 1, which
      counts the INTRA_FRAME.
      
      Further, at the encoder side, since REF_FRAMES specifies the maximum
      number of the reference frames that the encoder may store, REF_FRAMES
      is usually larger than INTER_REFS_PER_FRAME. For example, in the
      ext-refs experiment, REF_FRAMES == 8, which allows the encoder to
      store maximum 8 reference frames in the buffer, but
      INTER_REFS_PER_FRAME equals to 6, which allows each Inter frame may
      use up to 6 frames out of the 8 buffered frames as its references.
      Hence, in order to explore the possibility to store more reference
      frames in future patches, we modified a couple of array sizes to
      accomodate the case that the number of buffered reference frames is
      not always equal to the number of the references that are being used
      by each Inter frame.
      
      Change-Id: I19e42ef608946cc76ebfd3e965a05f4b9b93a0b3
      1af28f02
  23. 02 Aug, 2016 2 commits
  24. 29 Jul, 2016 1 commit
  25. 27 Jul, 2016 1 commit
    • Jingning Han's avatar
      Separate frame context index for different frame types · 8915eb8e
      Jingning Han authored
      This commit makes the encoder to use different frame context index
      for different frame types. In the baseline setting, it sets the
      frame context index of the overlay frame to be different from other
      regular inter frames. In the ext-refs setting, it further allows
      the backward reference frame to use a different index.
      
      It improves the compression performance for both settings.
      
      Baseline
      lowres  0.12%
      
      ext-refs
      lowres  0.50%
      midres  0.56%
      
      Change-Id: I7c63ddec9fc296c56a86353cf2c661a740b97a97
      8915eb8e
  26. 19 Jul, 2016 2 commits
    • Sarah Parker's avatar
      Add global motion parameters to compressed header · 5fa46c0b
      Sarah Parker authored
      Currently nothing is implemented to compute GM parameters, this
      just adds the capability to send them in the bitstream if they
      were computed. Still need to implement the reconstruction
      based on the parameters in reconinter.
      
      Change-Id: I72aea3c6a9de9f5a40f96da76c82b54a52781fe2
      5fa46c0b
    • Wei-ting Lin's avatar
      Allow OVERLAY frames to use the show_exsiting_frame flag · ccc9e7cf
      Wei-ting Lin authored
      ARF with zero strength temporal filter can be reused by setting the
      show_existing_frame = 1, and in this case, there is no need to
      refresh the reference frame buffer. However, we used the flag
      "refresh_golden_frame" as the identifier for the starting point of a gf
      group.
      
      A new flags "is_arf_filter_off" is used to record if the filter with
      strengrh zero is used.
      
      Change-Id: I25971a760f6e1638d5147fe30488c48125512b1a
      ccc9e7cf
  27. 13 Jul, 2016 1 commit
    • hui su's avatar
      Refactor codes about motion search · 581636d7
      hui su authored
      1. Add "best_mv" in MACROBLOCK to store the best motion vector
      during motion search, so that we don't need to pass its pointer
      to various motion search functions.
      
      2. Declare some functions as static when possible.
      
      3. Fix some indents.
      
      Change-Id: I0778146c0866cbc55e245988c59222577ea8260e
      581636d7
  28. 24 Jun, 2016 1 commit
  29. 17 Jun, 2016 1 commit
    • Zoe Liu's avatar
      Merge bi-predictive frames to EXT_REFS · 5805a14c
      Zoe Liu authored
      This patch removed the experiment of BIDIR_PRED and merged the feature
      into the experiment of EXT_REFS:
      
      (1) Each frame now has up to 6 reference frames, namely
          LAST_FRAME, LAST2_FRAME, LAST3_FRAME, GOLDEN_FRAME, (forward) and
          BWDREF_FRAME, ALTREF_FRAME (backward);
          LAST4_FRAME has been removed;
      (2) First pass still keeps the 8 updates:
          KF_UPDATE, LF_UPDATE, GF_UPDATE, ARF_UPDATE, OVERLAY_UPDATE, and
          BRF_UPDATE, LAST_BIPRED_UPDATE, BI_PRED_UPDATE;
      (3) show_existing_frame==1 is supported in the experiment of EXT_REFS;
      (4) New encoding modes are added for both single-ref and compound cases,
          through the use of the 2 extra forward references (LAST2 & LAST3)
          and the 1 extra backward reference (BWDREF).
      
      RD performance wise, using Overall PSNR: Avg/BDRate
              Bipred only      Prev EXT_REFS    Current EXT_REFS with bipred
      lowres: -3.474/-3.324    -1.748/-1.586    -4.613/-4.387
      derflr: -2.097/-1.353    -1.439/-1.215    -3.120/-2.252
      midres: -2.129/-1.901    -1.345/-1.185    -2.898/-2.636
      
      If in vp10/encoder/firstpass.h, change BFG_INTERVAL from 2 to 3, i.e. to
      use 2 bi-predictive frames than 1, a further improvement may be
      obtained:
                       Current EXT_REFS with bipred
              1 bi-predictive frame    2 bi-predictive frames
      lowres: -4.613/-4.387            -4.675/-4.465
      derflr: -3.120/-2.252            -3.333/-2.516
      midres: -2.898/-2.636            -3.406/-3.095
      
      Change-Id: Ib06fe9ea0a5cfd7418a1d79b978ee9d80bf191cb
      5805a14c
  30. 14 Jun, 2016 1 commit
    • Geza Lore's avatar
      Refactor variance aq. · d60523bc
      Geza Lore authored
      Explicitly signal when the segment map is being refreshed when
      using VARIANE_AQ. This simplifies decisions about when the segment id
      needs to be set from the previous segment map vs based on the current
      variance.
      
      Change-Id: Ieb12c950e9cfbc3f53f4d184880071dea805563c
      d60523bc