1. 28 Mar, 2019 7 commits
    • Romain Vimont's avatar
      Implement Index<BlockOffset> for FrameBlocks · 7c6ba687
      Romain Vimont authored
      For convenience, implement Index and IndexMut traits so that we can
      index a block directly by a BlockOffset instance.
    • Romain Vimont's avatar
      Factorize implementation of FrameBlocks setters · b14c663b
      Romain Vimont authored
      Some FrameBlocks setters used the local for_each() method, but some
      others reimplemented it manually. Make them also use for_each().
    • Romain Vimont's avatar
      Move methods from BlockContext to FrameBlocks · 2e9aacda
      Romain Vimont authored
      Some BlockContext methods are specific to FrameBlocks, so move them.
      With tiling, the lifetime of FrameBlocks will exceed that of
      BlockContext (which will exist only during tile encoding).
      This paves the way to move FrameBlocks out of BlockContext.
    • Romain Vimont's avatar
      Remove unused method · 38ae3a7d
      Romain Vimont authored
      BlockContext::get_mode() was never used. Remove it.
    • Romain Vimont's avatar
      Return blocks by reference, not by value · 86a74779
      Romain Vimont authored
      The methods above_of(), left_of() and above_left_of() returned the
      matching block by value, or a default block if the offset resulted in a
      block outside boundaries.
      The Block structure is quite big (std::mem::size_of::<Block>() == 120).
      For reading a field, it is probably not optimal to return a whole Block
      copy or a new default block (although the compiler might optimize such
      Moreover, the boundaries checks were often redundant, because already
      done by the callers.
      Instead, let the callers check boundaries and return a reference to the
      matching block.
    • Romain Vimont's avatar
      Simplify BlockContext logic · 18ad2b5e
      Romain Vimont authored
      Rewrite conditions to make them easier to read.
    • Thomas Daede's avatar
      Create RefType enum. · db58658a
      Thomas Daede authored
      Moves all functions that previously used usize to this type.
      Instead of direct conversions to a slot number, use a to_index fn.
      This also changes the size of the global mv state and context
      ref counting arrays as they don't need LAST_FRAME.
  2. 27 Mar, 2019 1 commit
    • Yushin Cho's avatar
      RDO of transform size for intra block · 6f320b1c
      Yushin Cho authored
      Enabled for speed <= 2, i.e. when
      fi.config.speed_settings.rdo_tx_decision == true.
      AWCY result for speed 2
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -1.3858 | -1.1944 | -0.8549 |  -0.9902 | -1.3141 | -0.9488 |    -1.1913
      With encoding time increased < ~5%.
  3. 26 Mar, 2019 12 commits
  4. 25 Mar, 2019 1 commit
  5. 23 Mar, 2019 1 commit
  6. 22 Mar, 2019 2 commits
  7. 21 Mar, 2019 6 commits
  8. 20 Mar, 2019 6 commits
  9. 19 Mar, 2019 3 commits
  10. 18 Mar, 2019 1 commit
    • David Michael Barr's avatar
      Inline often called and almost-trivial functions (#1124) · 7a479a0c
      David Michael Barr authored
      * Inline constrain and msb for cdef_filter_block
        This reduces its average time by around 42%.
      * Inline round_shift for pred_directional and others
        This reduces its average time by around 10%.
      * Inline sgrproj_sum_finish to its various callers
        It is at the lowest level of a hot call graph and almost trivial.
      * Inline get_mv_rate in motion estimation
        It is almost trivial and called often.