1. 22 Feb, 2019 4 commits
  2. 21 Feb, 2019 1 commit
    • Romain Vimont's avatar
      Make plane generic over pixel component type · 8057ee7c
      Romain Vimont authored
      In order to support both u8 and u16 for plane components, make the Plane
      structure generic over the component type. As a consequence, many other
      structures and functions also become generic.
      
      Some functions are not u8-compatible yet, although they have been make
      generic over the component type to make the compilation work. They
      assert that the size of the generic parameter is 16 bits wide.
      
      For this reason, the root context structure is unconditionally created
      as Context<u16> for now.
      8057ee7c
  3. 11 Feb, 2019 1 commit
  4. 08 Feb, 2019 2 commits
  5. 22 Jan, 2019 1 commit
    • Monty's avatar
      Fix to LRF cropping · 7c158f82
      Monty authored and Monty Montgomery's avatar Monty Montgomery committed
      Recent simplification that eliminated clipped_cfg broke the loop
      restoration filters and I didn't notice as it's not enabled by default yet.
      This fixes the cropping for chroma in the SGR and Wiener filters.
      7c158f82
  6. 15 Jan, 2019 1 commit
  7. 14 Jan, 2019 2 commits
  8. 13 Jan, 2019 1 commit
    • Romain Vimont's avatar
      Store restoration units contiguously · 8503cea4
      Romain Vimont authored
      The "matrix" of restoration units was stored in a vector of vectors.
      
      To avoids an additional indirection for each row, store them in a
      contiguous array instead. Besides the (theoretical) performance benerit
      for every access, this will simplify the implementation of tiled-views
      which have to expose non-overlapping parts of the "matrix" via unsafe
      code.
      
      Also, since its size is constant (although not known at compile-time),
      replace the vector by a boxed slice.
      8503cea4
  9. 11 Jan, 2019 2 commits
    • Romain Vimont's avatar
      Remove clipped_cfg from RestorationState · 07032e6b
      Romain Vimont authored
      A RestorationState stores a matrix of restoration units per plane. The
      restoration unit associated to a superblock may be retrieved from a
      superblock offset.
      
      Although this mapping is independant of subsampling, the superblock
      offsets were always converted to plane coordinates, which required to
      handle subsampling nonetheless. As a consequence, a PlaneConfig instance
      associated to RestorationPlane was necessary to find a restoration unit
      from a superblock offset.
      
      Instead, store the (log2) number of superblocks per restoration unit, to
      be able to retrieve a restoration unit from a superblock with a simple
      shift (without any subsampling information).
      
      That way, we can remove the PlaneConfig associated to RestorationPlane,
      which will simplify tiling.
      07032e6b
    • Romain Vimont's avatar
      Use non-padded dimensions from FrameInvariants · 54526343
      Romain Vimont authored
      The loop restoration filter needs the dimensions of the non-padded
      frame, that only FrameInvariants knows.
      
      On construction, RestorationState created a clipped version of the
      PlaneConfigs, that was used in lrf_filter_frame() to get the non-padded
      dimensions.
      
      Instead, directly pass &FrameInvariants to lrf_filter_frame().
      
      This paves the way to remove clipped_cfg from RestorationState entirely,
      to simplify tiling.
      54526343
  10. 10 Jan, 2019 2 commits
  11. 09 Jan, 2019 2 commits
    • Romain Vimont's avatar
      Make RestorationState derive Debug · 37a62634
      Romain Vimont authored
      FrameState is Debug. In order to embed RestorationState into FrameState,
      make it Debug too.
      37a62634
    • Romain Vimont's avatar
      Do not borrow full FrameState for LRF · 90bed0bf
      Romain Vimont authored
      Once RestorationState will be stored into FrameState, it will not be
      possible to borrow a FrameState while its RestorationState is mutably
      borrowed.
      
      In particular, this prevents passing a FrameState to a non-const
      RestorationState method.
      
      For lrf_optimize_superblock(), which is not implemented yet, just remove
      the FrameState parameter.
      
      For lrf_filter_frame(), only borrow the "rec" field instead of the whole
      FrameState.
      90bed0bf
  12. 08 Jan, 2019 1 commit
    • Romain Vimont's avatar
      Remove duplicate fields · d92d9a2a
      Romain Vimont authored
      lrf_type and unit_size are per-plane values, there is no need to
      duplicate them as arrays in RestorationState.
      d92d9a2a
  13. 07 Jan, 2019 2 commits
  14. 11 Dec, 2018 1 commit
  15. 06 Dec, 2018 1 commit
  16. 25 Oct, 2018 2 commits
  17. 24 Sep, 2018 1 commit
  18. 06 Sep, 2018 1 commit
  19. 28 Aug, 2018 2 commits
  20. 23 Aug, 2018 1 commit
    • David Michael Barr's avatar
      Implement Chroma-from-Luma (#492) · 1e639ba3
      David Michael Barr authored
      * Add the chroma-from-luma predictor and a test
      * Add benchmarks for CfL predictor
      * Implement CfL signalling
      * Plumb from predict_intra to pred_cfl
      * Add struct for CfL parameters
      * Compute subsampled luma AC and plumb it with CfL alpha
      * Plumb CfL parameters up to RDO
      * Add CfL to RDO loop, no parameter search
      1e639ba3
  21. 02 Aug, 2018 1 commit
    • rzumer's avatar
      Add optional comparative benchmarks · 6db4fd68
      rzumer authored and Thomas Daede's avatar Thomas Daede committed
      Run with --features=comparative_bench
      Applies to intra prediction tests and disables native function inlining
      Also refactor benchmarks and reduce code duplication
      6db4fd68