1. 16 Apr, 2019 7 commits
  2. 06 Feb, 2019 1 commit
  3. 05 Feb, 2019 1 commit
    • Jungsun Kim's avatar
      attr/m44899: add attribute prediction without LoD · 81b3c8b8
      Jungsun Kim authored and David Flynn's avatar David Flynn committed
      This simplified attribute prediction scheme avoids computing the
      LoD structure in order to reduce the computational complexity of
      both the encoder and the decoder.  It is activated by setting
      NB: this is only configured for lossless/near-lossless predictive
      attribute coding of cat3 sequences.
  4. 01 Nov, 2018 2 commits
    • Khaled Mammou's avatar
      attr/m43781: fast lifting for lossy attributes · 441b6b45
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
      Replace the k-d tree based nearest neighbour search with an approximate
      search based upon the points in Morton order.
    • Toshiyasu Sugio's avatar
      attr/m43665: configurable number of direct neighbour predictors · dce92811
      Toshiyasu Sugio authored and David Flynn's avatar David Flynn committed
      This commit provides an ability to vary the number of direct neighbours
      used in the predicting transform.  Mode 0 corresponds to the existing
      averaging, and mode n selects the n-th nearest neighbour for direct
      The provided code has been reworked to:
       - rewrite unary coding to be a little more obvious
       - tidy the mode decision path
       - add configuration for max_num_direct_predictors (renamed from
       - now counts the number of single predictors, rather than prediction
  5. 31 Oct, 2018 3 commits
  6. 29 Aug, 2018 6 commits
  7. 20 Aug, 2018 7 commits
    • David Flynn's avatar
      m43953/hls: implement sps, gps, aps syntax structures and tlv fileformat · faf569e8
      David Flynn authored
      This commit rewrites the codec high-level syntax:
       - the bitstream is divided into "bricks" (akin to an AVC/HEVC
       - sequence, geometry and attribute parameter sets describe the coding
         parameters in use generally and for a specific brick.
       - marshalling the bitstream payloads to a file format is achieved using
         a type-length-value encoding scheme.
      Additionally, the triSoup bitstream scale and translation values have
      been unified with (replaced by) the octree counterparts.  For
      compatibility, existing command line parameters continue to function
      as before.
      NB: this commit does not incorporate flexibility in the decoding order.
      The decoder requires the bitstream to be presented in a fixed order.
    • Khaled Mammou's avatar
      m42640/attr: lifting scheme for lossy attribute encoding · 5eee0d72
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
      This commit implements a lifting scheme optimized for lossy attribute
      compression, consisting of predict/update operators, and an adaptive
      quantization strategy.
    • Khaled Mammou's avatar
      m42642/attr: adaptive distance-based prediction · 85474147
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
      Adaptively pick the number of neighbours considered during the
      prediction based on analysis of the reconstructed attribute values of
      the neighbours.
      From m42642, this is performed by computing the maximum difference
      between any two reconstructed attribute values of a points neighbours.
      If the variability is higher than a threshold, then apply a
      rate-distortion optimization procedure to choose between using either
      a single neighbour or all neighbours. The index of the best prediction
      strategy is arithmetically encoded.
      This commit:
       - implements the m42642 method
       - moves buildPredictors into transform-specific attribute encoding/decoding
       - adds quantizationStepsChroma
       - renames quantizationSteps -> quantizationStepsLuma
      df: fixed incorrect application of quantizationStepsLuma|Chroma
      df: updated cat3 cfg to specify quantizationStepsChroma
      df: fixed header encoding if quantizationStepsChroma missing
    • Khaled Mammou's avatar
      m43591/geometry: look-ahead for neighbour occupancy retrieval · 9d11f9fd
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
    • David Flynn's avatar
      style: fix spelling of parent · 06f95885
      David Flynn authored
    • David Flynn's avatar
      m43662/geometry: replace neighb=0 with sibling neighbour constraint · 17e89a3f
      David Flynn authored
      In the contextualisation of occupancy coding using neighbour patterns,
      this commit replaces the case when neighbour contextualisation is
      disabled with a constraint that restricts neighbour contextualisation
      only examine the direct siblings of a node.
      The restriction ensures that at most three neighbours may be present
      for a node.
      The configuration option "neighbourContextualisation=1" is replaced with
    • David Flynn's avatar
      m42522/geometry: code occupancy using a binary arithmetic codec · 7d62e7ca
      David Flynn authored
      This commit provides an implementation of m42522 to code occupancy
      using a binary context model rather than a 255-ary model.  A total of
      581 binary contexts are used compared to the previous 10 255-ary
  8. 23 Jul, 2018 1 commit
  9. 29 Jun, 2018 1 commit
    • David Flynn's avatar
      m42239/geometry: fix missing neighbourhood check for idcm eligibility · 1cd9938e
      David Flynn authored
      The original integration of IDCM implemented only the parent based
      eligibility check of m42239 and erroneously omitted the six-neighbour
      This commit adds the six-neighbour check, making use of the neighbour
      calculation from m42239 neighbour contextualised coding of occupancy.
  10. 05 Jun, 2018 3 commits
  11. 17 May, 2018 1 commit
  12. 16 May, 2018 3 commits
  13. 10 May, 2018 4 commits
    • David Flynn's avatar
      m42239/geometry: inferred direct position coding mode · 76d35c23
      David Flynn authored
      This commit provides an implementation of m42239, permitting early
      coding termination of sub-trees that contain few points:
       - the so-called IDCM feature uses an eligibility criteria prior
         to permitting an encoder mode decision.
       - the feature may be controlled via the command line / config file
         using the --inferredDirectCodingMode=1|0 option
    • David Flynn's avatar
      m42238/geometry: neighbour contextualised coding of occupancy · ca4ac3f9
      David Flynn authored
      This commit provides an implementation of m42238 to code occupancy:
       - a node's child occupancy is contextualised based on the adjacent
         neighbours of the parent node.
       - when an isolated node is occupied by only a single child, the
         sub-node address [0,7] is directly coded instead of the 8-bit
         occupancy word.
       - collection of neighbour occupancy is performed using a scatter/
         gather operation upon the insertion of each child node into the
         fifo queue.
       - the feature may be controlled via the command line / config file
         using the --neighbourContextualisation=1|0 option
    • David Flynn's avatar
      geometry: reduce size of node by 8 bytes (size_t -> uint32_t) · 53d86425
      David Flynn authored
      This commit replaces the use of size_t (the index type of the input
      point list) with an explicit uint32_t type on the basis that it is
      not currently feasible to consider a point cloud with more than
      2**32 points.
      uint32_t is used to follow the STL convention of a vector's size_type
      being unsigned.
    • David Flynn's avatar
      geometry: replace bounding box with position and current tree depth · c60edc6e
      David Flynn authored
      This optimisation reduces the size of the PCCOctree3Node structure
      by replacing the per-node bounding box with the node's position (which
      is the same as the bounding box minimums).  The contribution of the
      bounding box maximums can be deduced from the initial bounding box
      and the current tree depth.
      Counters are used to track the transition from one depth to the next
      during breadth-first traversal.