1. 31 Aug, 2017 3 commits
    • hui su's avatar
      Remove probablity model for coeffecient tokens · b53682f5
      hui su authored
      Remove the token prob tables and counters.
      
      Change-Id: Ic63d52d80bb922fc10b586c27a20f2378618168c
      b53682f5
    • Jingning Han's avatar
      Enable motion field estimation in DRL · ffbb0f91
      Jingning Han authored
      Enable the use of motion field estimation in the dynamic motion
      vector referencing system. With default experiments on, it improves
      the compression performance:
      
      lowres 1.2%
      midres 1.5%
      
      Change-Id: Ifc5b15a7239b5c3212ea50f326ab99d372034658
      ffbb0f91
    • Jingning Han's avatar
      Add frame index to the decoded frames · c723b348
      Jingning Han authored
      Add frame index to the deocded frames. Store such information to
      the reference frame buffer pool. This design allows each frame
      to know its index in natural order, as well as its reference
      frames positions.
      
      Change-Id: I5bb36928dc5750a4fdcc582dca0d244d6482f400
      c723b348
  2. 30 Aug, 2017 1 commit
  3. 29 Aug, 2017 2 commits
  4. 25 Aug, 2017 1 commit
    • David Barker's avatar
      Fix tile boundary calculation · 5c06a646
      David Barker authored
      Fix a rare case in which the tile boundary information was not
      set up properly in the decoder when using LOOPFILTERING_ACROSS_TILES
      
      The situation was:
      * One frame uses loop filtering across tiles. Then its tile
        boundary information is not needed, so is not calculated.
      * The next frame (in decode order) has the same size and the
        same tile layout, but doesn't use loop filtering across tiles.
      * Now the tile boundary information *is* needed, but we weren't
        recalculating it. This resulted in the loop filter being
        applied across tile boundaries even though we signalled not to.
      
      Since the conditions on when we can reuse the previous frame's
      boundary information are complex, and the overhead of calculating
      the tile boundaries is low, we avoid this issue by simply
      recalculating the boundary information each frame.
      
      Change-Id: I1f3cbb0537535bf38faaed4c21c07142e747f962
      5c06a646
  5. 24 Aug, 2017 2 commits
  6. 23 Aug, 2017 2 commits
  7. 22 Aug, 2017 5 commits
    • Yaowu Xu's avatar
      Revert "Prevent access of array using -1 index" · 03dc6799
      Yaowu Xu authored
      This reverts commit 38cdce8e.
      
      Reason for revert: <INSERT REASONING HERE>
      
      It is reported that this introduced a segment fault, revert now to investigate. 
      
      Change-Id: I229dcdc09462ae4eb9cf2a3da4ce59aa9eafe65e
      03dc6799
    • Cheng Chen's avatar
      Silence warnings when warped_motion is disabled · 811bba79
      Cheng Chen authored
      Change-Id: I5da893be07b3b9aa4351b5bb1af987f4992370ef
      811bba79
    • Lester Lu's avatar
      Refactor lgt · 918fe698
      Lester Lu authored
      Change get_lgt in order to integrate a later experiment
      lgt_from_pred with lgt. There are two main changes.
      
      The main purpose for this change is to unify get_fwd_lgt and
      get_inv_lgt functions into a get_lgt function so the lgt basis
      functions can always be selected through the same function in
      both forward and inverse transform paths. The structure of those
      functions will also be consistent with the get_lgt_from_pred
      functions that will be added in the lgt-from-pred experiment.
      
      These changes have no impact on the bitstream.
      
      Change-Id: Ifd3dfc1a9e1a250495830ddbf42c201e80aa913e
      918fe698
    • Jingning Han's avatar
      Make lv-map decoding support per symbol cdf update · bb72cafa
      Jingning Han authored
      Support the per symbol cdf update at the level map syntax element
      decoding process.
      
      Change-Id: Id58bf86fb1c7c72dd14ddaa3781caaa27f446ef7
      bb72cafa
    • Debargha Mukherjee's avatar
      Adds the option to use 5x5 Wiener for chroma · 1cb757cb
      Debargha Mukherjee authored
      Change-Id: I1b789acc18f1e69fb5db069ccd8bd17815938e9d
      1cb757cb
  8. 21 Aug, 2017 2 commits
  9. 19 Aug, 2017 4 commits
    • Cheng Chen's avatar
      Change experimental flag name · 13fc8194
      Cheng Chen authored
      CONFIG_UV_LVL --> CONFIG_LOOPFILTER_LEVEL
      Change name because the experiment combines filter level search
      in U, V plane, and horizontal, vertical search in Y plane.
      
      Change-Id: Ia05b8f80cd93b60a0305eb94e5783559ef904c13
      13fc8194
    • Cheng Chen's avatar
      Dual deblocking filter strength thresholds · 179479fe
      Cheng Chen authored
      A new experiment for deblocking filter that separates vertical
      and horizontal filter strengths. This experiment is based on the
      assumption that non-flatness characteristics of vertical and
      horizontal direction may differ. Therefore selecting different
      filter strengths for vertical and horizontal can improve deblocking
      performance.
      
      The process of finding proper filter strength:
      1. Search through the filter level under the constraint that
         (vertical == horizontal), and find the best solution.
      2. Fix vertical level as the best solution found in step 1 and vary
         horizontal level to find the best value.
      3. Fix the selected horizontal level, vary vertical level to find
         its best value.
      
      The experiment is working with UV_LVL, sharing the same config flag.
      The searching for horizontal and vertical filter strength only applies
      on Y plane for now.
      
      The experimental flag should be changed to filter_level later.
      
      Change-Id: I164eec8d3ccb3da7ff109c5c55f4b52c1536ddf1
      179479fe
    • Sarah Parker's avatar
      Prevent bitstream from signaling illegal compound types · 680b9b17
      Sarah Parker authored
      Currently nothing forbids wedge from being signalled when
      the block is > 32X32, even though there is no corresponding wedge
      mask for that block size.
      
      BUG=aomedia:640
      BUG=aomedia:636
      
      Change-Id: I538be0229a12b5ef01b2e5a950c9f16ef9a5c51e
      680b9b17
    • Jonathan Matthews's avatar
      Palette Throughput - don't copy garbage · be984ebb
      Jonathan Matthews authored
      BUG=aomedia:697
      
      Change-Id: Id7e971e515c9faa3df32e162befd57907278549d
      be984ebb
  10. 18 Aug, 2017 1 commit
    • Hui Su's avatar
      Remove dpcm-intra experiment · 400bf651
      Hui Su authored
      Coding gain becomes tiny on top of other experiments.
      
      Change-Id: Ia89b1c2a2653f3833dff8ac8bb612eaa3ba18446
      400bf651
  11. 17 Aug, 2017 1 commit
    • Yushin Cho's avatar
      cdef-dist and daala-dist is runtime switchable · e30a47ca
      Yushin Cho authored
      Use --tune=[cdef-dist|daala-dist] to enable them.
      
      Also, this commit set the use_activity_masking of PVQ as 0 by deafult,
      which means that PVQ assumes daala-dist is not used by default.
      
      Since we're currently not signaling which metric the encoder did use
      in the bitstream, the compile flag AV1_PVQ_ENABLE_ACTIVITY_MASKING will tell PVQ
      whether daala-dist is used or not.
      
      This commit is the last part of prep-work to remove DIST_8X8, CDEF_DIST,
      and DAALA_DIST experimental flags.
      
      Change-Id: Ia465b4d6fe64aac7f04852c8f9f4bac3409d2435
      e30a47ca
  12. 16 Aug, 2017 2 commits
    • Frederic Barbier's avatar
      Fix memory corruption · 94e3856e
      Frederic Barbier authored
      Fix a memory corruption introduced by commit
      f190a165
      
      On some cases, when empty tiles are present,
      av1_set_across_tile_boundary_info() writes beyond mode info array.
      
      Sanity check added.
      
      BUG=aomedia:690
      
      Change-Id: I8d87a2e183c69d0ed039c8b2f77b30434f837974
      94e3856e
    • Zoe Liu's avatar
      Add dependency of ext-comp-refs on one-sided-compound · 5a978838
      Zoe Liu authored
      When ext-comp-refs is enabled, one-sided-compound is enabled by default,
      which ensures the use of ext-comp-refs is an extension of
      one-sided-compound. Both coding tools allow the use of same-sided
      reference frame pairs for compound prediction.
      
      Also, remove the dependency of ext-comp-refs on var-refs, i.e. these two
      coding tools can be independently enabled. They can still work together
      if both are enabled simultaneously.
      
      Change-Id: I3134e7e2956dc35d557fe814f5d801d473683650
      5a978838
  13. 15 Aug, 2017 3 commits
    • David Barker's avatar
      A few fixes for ext-inter · 9b75e210
      David Barker authored
      * When wedge and compound-segment are disabled, we don't use
        compound_type_cdf, but it still gets copied around, averaged, etc.
        It's slightly nicer to avoid that when it isn't necessary.
      
      * Fix an anomaly with cb4x4: We had (schematically)
        'if (bsize < 8X8 && CB4X4)', which is backwards when compared to
        other similar conditions elsewhere in the code.
        Change this to 'if (bsize < 8X8 && !CB4X4)" to match other code.
      
      Change-Id: If802cf4f305c30cd642d0d5dd6610b547b52a027
      9b75e210
    • Debargha Mukherjee's avatar
      Miscellaneous fixes for resize/frame-superres · 17e7b081
      Debargha Mukherjee authored
      1. Fixes logic for disabling global motion w/ resize. Turns off
      conditional write/read of global parameters since it does not
      work currenlty. To be fixed later.
      2. Fixes call for av1_scale_if_required in encoder_frame_with_resize
      function
      3. Remove asserts for the scaled convolve functions
      
      Change-Id: I6a0f18b5ab5cc819bc27ef9fc2f28b0e391643a0
      17e7b081
    • Thomas Davies's avatar
      AOM_QM: enable by default · 181fc08f
      Thomas Davies authored
      No change to metrics, as quantization matrices are not used
      unless --enable-qm=1 is set on the command line.
      
      Fix no highbitdepth compilation, and fix compile errors and
      warnings for PVQ and NEW_QUANT experiments.
      
      Change-Id: I49aceb5acf6ca6790c81e760e5b208788f87086d
      181fc08f
  14. 12 Aug, 2017 1 commit
  15. 11 Aug, 2017 1 commit
    • Steinar Midtskogen's avatar
      Add experiment CONFIG_CDEF_SINGLEPASS: Make CDEF single pass · 5978212b
      Steinar Midtskogen authored
      Low latency, cpu-used=0:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.3162 | -0.6719 | -0.6535 |   0.0089 | -0.3890 | -0.1515 |    -0.6682
      
      High latency, cpu-used=0:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0293 | -0.3556 | -0.5505 |   0.0684 | -0.0862 |  0.0513 |    -0.2765
      
      Low latency, cpu-used=4:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.2248 | -0.7764 | -0.6630 |  -0.2109 | -0.3240 | -0.2532 |    -0.6980
      
      High latency, cpu-used=4:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.1118 | -0.5841 | -0.7406 |  -0.0463 | -0.2442 | -0.1064 |    -0.4187
      
      Change-Id: I9ca8399c8f45489541a66f535fb3d771eb1d59ab
      5978212b
  16. 10 Aug, 2017 2 commits
    • Urvang Joshi's avatar
      Remove PALETTE flag · c6300aa1
      Urvang Joshi authored
      This experiment is now adopted as it was cleared by Tapas.
      
      Note: Palette use can still be controlled by command-line option
      "--tune-content=..." in 'aomenc'.
      
      Change-Id: I832f49f20f60c34bdef5b424755849c496687e87
      c6300aa1
    • Urvang Joshi's avatar
      Make palette work correctly with chroma sub8x8 blocks. · c9e71d4d
      Urvang Joshi authored
      The problem was that some functions were using scale_chroma_bsize()
      function to turn sub-8x8 'bsize' to 8x8 'bsize', and then the modified
      'bsize' was being passed to rd_pick_intra_sbuv_mode() for example.
      
      In such cases, we cannot rely on the 'bsize' value passed to the
      function; instead, we need to look at the original mbmi->sb_type
      directly.
      
      Also:
      - Added created a common function can_use_palette() to refactor this
      logic into one place.
      - Added more asserts to easily catch such coding errors in future.
      
      BUG=aomedia:688
      
      Change-Id: I2e9f20c8c5fbc4b3ff41b703a91a02758c3c632f
      c9e71d4d
  17. 09 Aug, 2017 1 commit
    • Rupert Swarbrick's avatar
      ext-partition-types: Don't allow 4:1 blocks to use palettes · 6f9cd946
      Rupert Swarbrick authored
      Since there are no CDFs set up for palettes for 4:1/1:4 blocks, we
      should make sure we don't try to use them. Without this patch,
      write_palette_mode_info gets called with a bsize of BLOCK_32X8 and
      reads (and writes) off the end of the palette_y_size_cdf array.
      
      This patch avoids calling it in this context and adds an assertion to
      make sure we don't read off the end of the array in future.
      
      The patch also adds the corresponding logic to rdopt.c.
      
      Change-Id: I4d9aea982d057e305a6b578f35457eada819d38f
      6f9cd946
  18. 08 Aug, 2017 1 commit
    • Thomas Davies's avatar
      AOM_QM: use SIMD for flat matrices and re-enable tests. · 1870382c
      Thomas Davies authored
      When AOM_QM is enabled, by default quantization matrices are
      flat unless enabled with --enable-qm=1. Re-use existing SIMD
      functions when a flat matrix is used, so that there is no
      speed deficit when AOM_QM is enabled.
      
      SIMD for the non-flat case is TBC.
      
      Change-Id: I1bb8da70d3dd5858dac15099610ddf61662e3d0d
      1870382c
  19. 07 Aug, 2017 1 commit
  20. 04 Aug, 2017 1 commit
    • Steinar Midtskogen's avatar
      CDEF cleanup · 94de0aaa
      Steinar Midtskogen authored
      Name changes and code moves to bring code more in line with the
      design doc and an upcoming single-pass patch.  No functional changes.
      
      Change-Id: I2bccd58c644e534b139f420b623390aa971fbdb0
      94de0aaa
  21. 02 Aug, 2017 1 commit
  22. 01 Aug, 2017 2 commits
    • Thomas Daede's avatar
      Frame context signaling: Remove reset symbols from the bitstream. · a6a854b1
      Thomas Daede authored
      Because frame contexts now follow reference frames, explicit resets
      are no longer necessary, but can simply happen at the same time
      as reference frame resets.
      
      Change-Id: Idbed3794e3ed52fa298346943a3014fa1ca23897
      a6a854b1
    • Zoe Liu's avatar
      Add encoder support to ALTREF2 · e9b15e2b
      Zoe Liu authored
      This CL adds the use of ALTREF2_FRAME to both single / comp reference
      prediction at the encoder side. In particular, the encoder keeps the
      distant altref as ALTREF, and uses the internal extra altrefs to
      refresh ALTREF2.
      
      Compared with the baseline (ext_tx and global_motion disabled simply
      for speed concern):
      (a) lowres: avg_psnr -0.395% ovr_psnr -0.393% ssim -0.329%
      (b) midres: avg_psnr -0.419% ovr_psnr -0.431% ssim -0.444%
      (c) AWCY High Latency:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.6661 | -0.5988 | -0.6669 |  -0.6993 | -0.6988 | -0.7303 | -0.6051
      (d) AWCY Low Latency:
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0720 | -0.0505 |  0.1501 |   0.0670 | 0.0842 |  0.0517 |     0.0158
      
      TODO list:
      (1) To have altref2 incorporated with ext-comp-refs;
      (2) To have altref2 fully work with new-multisymbol;
      (3) To re-collect the initial default probs/cdfs;
      (4) To tune the encoder gf group structure design for altref2.
      
      Change-Id: I6ad63fd65afa903d3bba20acdb68e3b67acf7fdf
      e9b15e2b