1. 05 Feb, 2019 3 commits
    • David Flynn's avatar
      d5d4e366
    • David Flynn's avatar
      hls/m43953: signal geom_slice_id / attr_geom_slice_id · 70c904ff
      David Flynn authored
       - signal geom_slice_id / attr_geom_slice_id in geometry / attribute
         header.
      
       - attr_geom_slice_id set to current geom_slice_id to maintain
         relationship between attribute and geometry.
      
       - increment geom_slice_id after each round of encoding.
      
       - decoder checks that the attribute payload's attr_geom_slice_id
         corresponds to the most recently decoded geometry payload.
      70c904ff
    • David Flynn's avatar
      trisoup/m46530: replace trisoup hls with trisoup_node_size_log2 · 0d8f1119
      David Flynn authored
      This commit provides trisoup_node_size_log2 as a replacement for
      the following HLS syntax variables:
       - geom_codec_type (redundant wrt. triangle node size derivation)
       - trisoup_depth (redundant wrt. bounding box)
       - trisoup_triangle_level (semantics simplified)
      
      The following config options have been removed:
       - geometryCodec (redundant wrt. trisoup_node_size_log2)
       - triSoupLevel  (replaced by trisoup_node_size_log2)
       - triSoupDepth  (unnecessary)
       - triSoupIntToOrigScale (redundant wrt. positionQuantizationScale)
      0d8f1119
  2. 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.
      441b6b45
    • 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
      prediction.
      
      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
         MaxNumPredCand)
       - now counts the number of single predictors, rather than prediction
         modes.
      dce92811
  3. 31 Oct, 2018 3 commits
    • David Flynn's avatar
      geom/m43600: intra geometry occupancy prediction · 89fae502
      David Flynn authored
      This commit provides a method to predict the child occupancy bits of a
      node based on the node's 26 neighbours.  The prediction is used to
      contextualise coding of each occupancy bit.
      
      This tool requires the use of the occupancyAtlas for neighbour lookup.
      NB: a restriction in the current implementation requires that the
      atlas size is at most 8³.
      
      intra_pred_max_node_size_log2: 6
      89fae502
    • David Flynn's avatar
      geom/m44750: occupancy context maps with on-the-fly update · e9dd9ce0
      David Flynn authored
      Bitwise geometry occupancy coding uses a mapping table to select entropy
      contexts.  This commit employs a dynamic mapping which is updated after
      each coding operation, replacing the previous static mapping tables.
      
      NB: the proposed version used a context with a halving period
      (max_count) of 64 symbols.  However, this conflicts with another
      adoption (512 symbols), and a wholesale replacement of the arithmetic
      codec and context model.  To resolve the conflict, the existing halving
      period (128) is used.
      e9dd9ce0
    • Khaled Mammou's avatar
      geom/m43592: use dual lut coder for bytewise occupancy coding · 23ba6f71
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
      This commit allows bytewise encoding of occupancy symbols using the
      dual-lut coder.
      23ba6f71
  4. 29 Aug, 2018 4 commits
    • 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
      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
      hls: rename sps attr_count to attr_num_dimensions · 8b6ccbc7
      David Flynn authored
      This is an editorial change to improve naming clarity: attr_count
      represents the number of elements (dimensionality) in an attribute
      set rather than the total number of attributes.
      8b6ccbc7
    • Khaled Mammou's avatar
      hls: fix signalling of 64-bit dist2 values · 3465fa34
      Khaled Mammou authored and David Flynn's avatar David Flynn committed
      This commit fixes an error in the hls: dist2 is capable of being a
      64-bit value and must not be signalled as 32-bit.
      3465fa34
  5. 20 Aug, 2018 4 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