1. 24 Jan, 2018 1 commit
  2. 17 Jan, 2018 1 commit
  3. 16 Jan, 2018 1 commit
    • Yunqing Wang's avatar
      Store and use single_newmv correctly · 5f4f738e
      Yunqing Wang authored
      The motion vector search result at single reference frame mode is stored
      for later use. There are some issues in current implementation.
      1. single_newmv is only stored for 1st ref_mv, but not for other ref_mv
      values tested.
      2. If single reference mode is skipped and not tested, single_newmv is
      not available.
      3. Interintra mode always use single_newmv as its MV, which may not be
      available as mentioned above.
      To fix it, we store single_newmv for every ref_mv tested. In interintra
      mode, if single_newmv is not available, do motion search to find a MV.
      
      This was revealed by a motion vector unit test failure.
      
      BUG=aomedia:1190
      
      Change-Id: I3e690587644d4c8c31337f37380b796a3d71a3f6
      5f4f738e
  4. 05 Jan, 2018 1 commit
    • Jingning Han's avatar
      Replace full txfm rd search with luma writing · 159f72c3
      Jingning Han authored
      The cfl route needs the reconstructed luma pixels in the chroma
      RD search. Replace an extra route of txfm_rd_in_plane with the
      use of av1_encode_intra_block_plane to directly write out the
      needed luma pixels in the key frame rate-distortion optimization
      process.
      
      The compression stats remain identical. The key frame encoding
      speed is on average 3% faster for a few tested 1080p clips.
      
      Change-Id: I65760b657a6d4b45bed9c4f1eca0cff1a2c274a1
      159f72c3
  5. 04 Jan, 2018 1 commit
  6. 02 Jan, 2018 1 commit
  7. 27 Dec, 2017 1 commit
  8. 11 Dec, 2017 1 commit
  9. 07 Dec, 2017 2 commits
  10. 05 Dec, 2017 1 commit
  11. 22 Nov, 2017 1 commit
    • Frederic Barbier's avatar
      [idct] Fix initialization of tx_set_type · 33b39f01
      Frederic Barbier authored
      Previous assumption on reduced_tx_set_used=0 led to many assertion
      failures and prevented signalling reduced_tx_set_used equal to 1.
      
      BUG=aomedia:1053
      
      Change-Id: If9a9dff8d01ba3ec942e06559c153f06d34555f9
      33b39f01
  12. 14 Nov, 2017 1 commit
  13. 04 Nov, 2017 1 commit
  14. 31 Oct, 2017 1 commit
  15. 24 Oct, 2017 1 commit
  16. 21 Oct, 2017 1 commit
  17. 16 Oct, 2017 1 commit
  18. 09 Sep, 2017 1 commit
  19. 06 Sep, 2017 1 commit
  20. 05 Sep, 2017 1 commit
  21. 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
  22. 10 Aug, 2017 1 commit
    • 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
  23. 31 Jul, 2017 1 commit
    • Yue Chen's avatar
      Move mode costs that can be updated inside a frame to MACROBLOCK · b23d00a0
      Yue Chen authored
      It is a refactoring patch, which aims to make the code ready for
      implementation of in-frame mode cost update in RDO.
      Also add mode cost update per sb row, but it won't affect coding
      results because cdf update in RDO is not there.
      Mode cost arrays are moved to MACROBLOCK because in multi-thread
      coding, threads share the same AV1_COMP.
      
      This patch does not have impact on coding results.
      
      Change-Id: I2e8f7d7d066b23ebfbfc998269023781f359a6ff
      b23d00a0
  24. 20 Jul, 2017 1 commit
    • Yushin Cho's avatar
      New experiment DIST_8x8 · b7b60c57
      Yushin Cho authored
      A framework for computing a distortion at 8x8 luma block level
      during RDO-based mode decision search. New 8x8 distortion metric can
      be plugged in by way of this tool.
      
      Existing daala_dist now uses this experiment as well.
      Other possible applications that can make use of this experiment would be
      a distortion meric, which should apply at 8x8 pixels such as PSNR-HVS, SSIM, or etc.
      
      A rd_cost for final coding mode decision for a super block is
      computed for a partition size 8x8 or larger. For a block larger than 8x8,
      a distortion of each 8x8 block is independently computed then summed up.
      
      The rd_cost for 8x8 block with new 8x8 distortion metric is computed
      only when the mode decision of its sub8x8 blocks are completed.
      However, MSE distortion metric is used with sub8x8 mode decision. Thus,
      early termination is also determined with the MSE based rd_cost.
      Because the best rd_cost (i.e. the reference rd_cost) during sub8x8 prediction
      or sub8x8 tx is based on new 8x8 distortion while each sub8x8 uses MSE,
      the existing early termination cannot be used (And this can be the one of possible reason
      for the BD-Rate change with this revision).
      
      For a sub8x8 prediction, prediction mode for each sub8x8 block of a 8x8 block is
      decided with existing MSE and then av1_dist_8x8() is applied to the 8x8 pixels.
      (There is also av1_dist_8x8_diff, which can input diff signal directly)
      
      For a sub8x8 tx in a block larger than 8x8, instead of computing MSE distortion for
      each sub8x8 tx block, we wait until all sub8x8 tx blocks are encoded before av1_dist_8x8()
      is applied to 8x8 pixels.
      
      Sub8x8 prediction and transformas were most of tricky parts in this change.
      Two kind of distortions, for a) predicted pixels and b) decoded pixels
      (i.e. predicted + possible reconstructed residue), are always computed during RDO.
      In order to access those two signals a) and b) for a 8x8 block after
      its sub8x8 mode decision is finished, a) and b) need be properly stored for later retrieval.
      
      The CB4X4 makes the task of accessing a) and b) signals for sub8x8 block further difficult,
      since the intermediate data (i.e. a and/or b) for sub8x8 block
      are not easily accessible outside of current partition unless reconstruced
      with decided coding modes.
      
      Change-Id: If60301a890c0674a3de1d8206965bbd6a6495bb7
      b7b60c57
  25. 13 Jul, 2017 1 commit
  26. 12 Jul, 2017 1 commit
    • hui su's avatar
      Automatically turn on/off screen content tools · d9a812bd
      hui su authored
      Turn "allow_screen_content_tools" on when the source video has many blocks
      with only few different colors. The automatic detection is enabled by
      defualt (or with command line flag "--tune-content=default"). With
      "--tune-content=screen", the screen content tools are always turned on.
      
      On the screen_content test set, the "default" setting is less than 0.3%
      worse than the "screen" setting on keyframe encoding.
      
      Change-Id: Iac7ab8952c96531d1fae84da1823291f5987519c
      d9a812bd
  27. 26 Jun, 2017 2 commits
    • Yushin Cho's avatar
      daala-dist: high bit depth support · 8ab875d6
      Yushin Cho authored
      Change-Id: Idafef140d3425a9a9f66cb8864a804c4d2a89a70
      8ab875d6
    • Yushin Cho's avatar
      Fix daala_dist to handle visible pixels only · 75b01004
      Yushin Cho authored
      - If invisible pixels, av1_daala_dist() simply use source pixles for dst.
      - Added av1_daala_dist_diff() which inputs diff signal instead of dst.
      
      - Refactored daala_dist code so that av1_daala_dist() and _diff()
      is called inside av1's distortion calculation functions, pixel_sse() and
      sum_squares_visible().
      
      Change-Id: Id857db52fe19856d92c46a9e84ac2962c01ae045
      75b01004
  28. 02 Jun, 2017 1 commit
  29. 01 Jun, 2017 1 commit
    • Yushin Cho's avatar
      Fix daala-dist for cb4x4 · 63927c43
      Yushin Cho authored
      The place where av1_daala_dist() is applied for sub8x8 partition is
      moved from sub8x8 mode decision functions to rd_pick_partition().
      
      BD-Rate change by daala-dist with '--disable-var-tx' is:
      (AWCY, objective-1-fast, high delay mode)
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      15.1558 | 12.9585 | 14.4662 |  -3.8651 | -1.7102 | -9.2956 |    10.8686
      
      In MSE probe mode:
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0429 |  0.0435 |  0.1651 |  -0.0415 | 0.0850 |  0.0122 |     0.0546
      
      Change-Id: I3b2ea916d41c48e433eb641adf44552e4725c198
      63927c43
  30. 26 Apr, 2017 1 commit
  31. 16 Apr, 2017 1 commit
  32. 12 Apr, 2017 1 commit
  33. 11 Apr, 2017 1 commit
  34. 28 Mar, 2017 1 commit
  35. 25 Mar, 2017 1 commit
  36. 01 Mar, 2017 1 commit
  37. 28 Feb, 2017 1 commit
    • Yaowu Xu's avatar
      Move asserts into correct scope · cdf8a14e
      Yaowu Xu authored
      The macro used in assert is defined under CONFIG_VAR_TX. This fixes a
      build issuse when --enable-var-tx and --enable-rd-debug are both on.
      
      Change-Id: I497fe4a8b1fa6c7b05ac2b41c97522f7bdedc0ce
      cdf8a14e
  38. 23 Feb, 2017 1 commit
    • David Barker's avatar
      Change gm_get_motion_vector · 45390c18
      David Barker authored
      Since gm_get_motion_vector is trying to give a motion vector for
      "the frame as a whole", it makes more sense for it to calculate
      the motion of the *center* of the block rather than the top-left
      corner of the frame.
      
      In theory, this change should also help the encoder make better
      decisions on when to use global motion. It avoids an issue
      where, early in the frame, NEARESTMV looks like a good way to use
      the global motion vector *without* paying the rate cost applied
      to the first few global motion blocks in each frame. This seems
      to lead to a better overall result.
      
      Change-Id: Ia5c6259ceb8b4ff3d00a5d553e1d18bdb802da59
      45390c18