1. 31 Oct, 2018 2 commits
    • David Flynn's avatar
      refactor: move common constants to constants.h · a298b199
      David Flynn authored
      This commit moves various constants from PCCTMC3Common.h to a new
      constants.h.  Hard coded values of constants have been replaced with
      their symbolic name.
      a298b199
    • David Flynn's avatar
      cli: add option to disable attribute coding · 0ddede25
      David Flynn authored
      Sometimes it is useful to encode geometry without attributes.  However,
      the common test condition configurations all enable attribute coding.
      In order to avoid rewriting the configuration files, the
      "disableAttributeCoding" option configures the encoder as if no
      attributes are specified.
      0ddede25
  2. 05 Sep, 2018 1 commit
  3. 03 Sep, 2018 2 commits
    • Khaled Mammou's avatar
      support 16b to 8b reflectance conversion by scaling src/output values · b82deac2
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
      Certain test sequences with 16-bit reflectance are actually 8-bit data that
      has been scaled by 255.  This commit adds non-normative support to the
      encoder and decoder to convert between the two representations through
      the option "hack.reflectanceScale".
      b82deac2
    • David Flynn's avatar
      cli: add cfg option to simplify dist2 specification · f805b3ce
      David Flynn authored
      The dist2 values used by the pred/lift attribute coding schemes is
      dependent upon the distances between points in the point cloud.  Using
      the --positionQuantizationScale option to scale the input point cloud
      therefore affects the required dist2 values.
      
      This commit adds the --positionQuantizationScaleAdjustsDist2=1|0 option
      to simplify the configuration of dist2.  When enabled, the encoder will
      automatically scale any dist2 values by the squared position scale
      factor.
      f805b3ce
  4. 29 Aug, 2018 6 commits
    • Khaled Mammou's avatar
      cfg: automatic derivation of dist2 series · 78a60bce
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
      This commit introduces automatic derivation of dist2 values by the
      frontend.  Automatic derivation occurs if fewer than levelOfDetailCount
      values are provided.  No syntax changes are made.
      
      cfg update:
       - use single dist2 values based on existing config
       - ford: 16383 -> 16384
      78a60bce
    • Khaled Mammou's avatar
      attr: use single quant_step_size_* for all LoDs in lift/pred · 51f21bcb
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
      This commit removes the ability to vary quant_step_size on a per-LoD
      basis.  This greatly simplifies the codec configuration, especially
      when used in conjunction with dist2 derivation.
      
      cfg update:
       - rename quantizationSteps* -> quantizationStep*
       - update quantizationStep* to single values:
         - lossless-geom lossy-attrs:        8, 16, 32, 64, 128, 256 [8bit]
         - lossless-geom nearlossless-attrs: no change
         - lossless-geom lossless-attrs:     no change
         - lossy-geom    lossy-attrs:        8                       [8bit]
      
       => 16-bit cat3 sequences are have 8-bit qs values multipled by 255
      51f21bcb
    • Khaled Mammou's avatar
      attr: restrict PCCTMC3MaxPredictionNearestNeighborCount to 3 · fec7f6d2
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
      This commit updates the hard coded limit and default values, and
      updates the master configuration template.
      fec7f6d2
    • Khaled Mammou's avatar
      m42642/attr: add hls signalling of adaptive prediction threshold · ee776724
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
      This commit replaces the hard coded threshold values with APS signalling.
      The default configuration maintains the hard-coded threshold values based
      on bitdepth.
      ee776724
    • David Flynn's avatar
      decoder: remove roundOutputPositions option · b3c5d0fa
      David Flynn authored
      This option was added to use the original CfP response output position
      rounding after the switch to integer point clouds.  It is not used and
      its effect is barely noticeable in the objective distortion metric.
      Furthermore, the encoder and decoder behaviour is different if the
      option is enabled.
      b3c5d0fa
    • David Flynn's avatar
      cli: fix reporting of geometry codec type · 322109ed
      David Flynn authored
      322109ed
  5. 20 Aug, 2018 11 commits
    • David Flynn's avatar
      m43387/hls: encode attribute bitdepth · 8a13140f
      David Flynn authored
      This commit allows the attribute codec to be parametrised by attribute
      bitdepth.  The attribute bitdepth is signalled in the attribute's sequence
      parameter set description.  The specified bitdepth affects cliping in the
      attribute prediction and reconstruction process.
      8a13140f
    • David Flynn's avatar
      m43953/hls: add more flexible decoder process · 9af74b63
      David Flynn authored
      This commit allows individual payloads to be inserted into the decoder
      rather than the decoder expecting to decode each payload in a fixed
      order.
      
      When an output pointcloud is ready, the decoder will call a user
      supplied callback with the conforming output pointcloud.  The user
      may choose to rescale this point cloud as necessary.
      9af74b63
    • David Flynn's avatar
      m43650/geometry: remove bypass coding mode · a21bbc04
      David Flynn authored
      This commit removes the "lossless" geometry bypass coding mode that simply
      skipped coding of geometry and required the decoder to read the geometry
      from the source video.  Bypass coding mode is replaced by octree coding.
      a21bbc04
    • 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
         slice/tile).
      
       - 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.
      faf569e8
    • David Flynn's avatar
      attr: rename "IntegerLift" coding method to "Pred" · 4d1d2ac6
      David Flynn authored
      The IntegerLift name is misleading in light of a separate coding method
      that uses lifting predict and update operators.  This commit renames
      the method to specify it is a prediction-only scheme.
      4d1d2ac6
    • 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.
      5eee0d72
    • 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
      85474147
    • David Flynn's avatar
      m42538/recolour: remove kUseM42141RecolourMethod2=0 case · 817c61d1
      David Flynn authored
      This commit removes the searchRange option that was set to 0 by m42538.
      817c61d1
    • Khaled Mammou's avatar
      m43591/geometry: look-ahead for neighbour occupancy retrieval · 9d11f9fd
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
      9d11f9fd
    • 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
      "neighbourContextRestriction=0".
      17e89a3f
    • David Flynn's avatar
      bee78272
  6. 23 Jul, 2018 2 commits
  7. 05 Jun, 2018 8 commits
  8. 16 May, 2018 2 commits
  9. 11 May, 2018 1 commit
    • Ohji Nakagami's avatar
      m42538/recolour: implement recolouring method of m42141 option 2 · 2c6f23ec
      Ohji Nakagami authored and David Flynn's avatar David Flynn committed
      This commit eliminates the blending of point attribute values during
      the attribute transfer process used in geometry quantisation by forcing
      the blending weight to be 0|1 (m42141).
      
      m42538 also recommends to disable the bounded search of the closest
      attribute from the contributing set by setting searchRange=0.  This is
      reflected by a change to the software defaults and configuration.
      2c6f23ec
  10. 10 May, 2018 2 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
      76d35c23
    • 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
      ca4ac3f9
  11. 09 May, 2018 1 commit
  12. 06 May, 2018 1 commit
  13. 27 Feb, 2018 1 commit