1. 02 Apr, 2019 4 commits
    • Luca Barbato's avatar
      Refactor the Context · 1c37de93
      Luca Barbato authored
      Move all the internal details in an inner struct pending the actual
    • Luca Barbato's avatar
      Store only the EncoderConfig in the context · f62926d6
      Luca Barbato authored
      And document what is Config and what is EncoderConfig
    • Romain Vimont's avatar
      Pass CDFContext by reference in ContextWriter · 265889fa
      Romain Vimont authored
      With tiling, the lifetime of CDFContext will exceed that of
      ContextWriter (which will exist only during tile encoding).
      The resulting CDFContext must be read to be (possibly) copied into the
      Therefore, make ContextWriter only reference it (instead of taking
    • Romain Vimont's avatar
      Move FrameBlocks out of BlockContext · 8e063aaf
      Romain Vimont authored
      With tiling, the lifetime of FrameBlocks will exceed that of
      BlockContext (which will exist only during tile encoding).
      Therefore, create it separately, and make BlockContext reference it.
  2. 30 Mar, 2019 9 commits
  3. 29 Mar, 2019 2 commits
    • Romain Vimont's avatar
      Remove cols and rows from BlockContext · 1b33845c
      Romain Vimont authored
      They are redundant with those of FrameBlocks.
    • Romain Vimont's avatar
      Pass FrameBlocks instead of BlockContext · 3c29f358
      Romain Vimont authored
      FrameBlocks is part of the BlockContext structure. Many functions which
      used only the FrameBlocks (but not the other BlockContext fields)
      received a reference to the whole BlockContext as parameter.
      FrameBlocks will survive tiles-encoding: it will be accessed through a
      tiled version for each tile, then frame-wise after all tiles are
      However, BlockContext will only be used tile-wise: there will be one
      instance per tile, destroyed once the tile is encoded. Therefore,
      frame-wise functions may not receive the whole BlockContext anymore
      (all tile-specific BlockContext instances won't exist anymore).
  4. 28 Mar, 2019 10 commits
    • Romain Vimont's avatar
      Remove "superframe anti emulation" byte · 7debdde3
      Romain Vimont authored
      TD-Linux on IRC:
      > superframe anti emulation was dropped from the spec mid development
    • Thomas Daede's avatar
    • Romain Vimont's avatar
      Use operator[] instead of at() and at_mut() · 9aa21995
      Romain Vimont authored
      Now that Index and IndexMut are implemented with BlockOffset index for
      FrameBlocks, remove at() and at_mut().
    • 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.
  5. 27 Mar, 2019 1 commit
    • Yushin Cho's avatar
      RDO of transform size for intra block · 6f320b1c
      Yushin Cho authored and Yushin Cho's avatar Yushin Cho committed
      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%.
  6. 26 Mar, 2019 12 commits
  7. 25 Mar, 2019 1 commit
  8. 23 Mar, 2019 1 commit