1. 16 Apr, 2019 5 commits
  2. 06 Feb, 2019 4 commits
    • Yiting Shao's avatar
      slice/m44910: add octree slice partitioning scheme · 08a4a4e9
      Yiting Shao authored and David Flynn's avatar David Flynn committed
      This partitioning method (--partitionMethod=3) decomposes the input
      pointcloud into an octree of depth --partitionOctreeDepth=d, with
      each leaf node corresponding to a slice.
      08a4a4e9
    • Yiting Shao's avatar
      slice/m44910: add longest-edge slice partitioning scheme · 81bde409
      Yiting Shao authored and David Flynn's avatar David Flynn committed
      This partitioning method (--partitionMethod=2) finds the longest edge of
      the point cloud and divides it into --partitionNumUniformGeom=n slices
      along the longest edge.
      
      If n = 0, the ratio of longest edge to shortest edge determines
      the number of slices.
      81bde409
    • David Flynn's avatar
      hls: initial slice and partitioning framework · 693f8517
      David Flynn authored
      This commit provides a basic frame work for partitioning a frame into
      multiple slices, with the continued assumption of single-frame
      sequences.
      
      The decoder is modified to independently decode each slice and
      accumulate decoded points in a buffer for output.
      
      The encoder is updated to support partitioning the input point cloud
      into slices and to independently code each slice.  Points from
      reconstructed slices are accumulated and output at the end of the
      frame period.
      
      The partitioning process (partitioning methods are defined in
      partitioning.cpp) proceeds as follows:
      
       - quantise the input point cloud without duplicate point removal
         or reordering points.
      
       - apply the partitioning function to produce a list of tiles
         and slices, each slice having an origin, id, and list of point
         indexes that identify points in the input point cloud.
      
       - producing a source point cloud for each partition as a subset
         of the input point cloud.
      
       - compressing each partition (slice) as normal by quantising
         the partitioned input.  Recolouring is necessarily performed
         against the partitioned input since the recolouring method
         cannot correctly handle recolouring a partition from a complete
         point cloud.
      
      NB: this commit does not provide any partitioning methods.
      693f8517
    • David Flynn's avatar
      hls: preparation to encode per-slice geometry origin · 0d955732
      David Flynn authored
      This commit provides support for each slice to have an origin
      specified relative to the sequence bounding box.
      
      Reconstructed points are offset by the slice origin prior to inverse
      scaling and translation.
      0d955732
  3. 05 Feb, 2019 5 commits
    • David Flynn's avatar
      encoder/m43953: signal bounding box using SPS · 01394738
      David Flynn authored
       - calculates the sequence bounding box at the start of encoding
         (in original coordinates as a decoder may reconstruct it)
       - signals bounding box in SPS
       - disables signalling of geometry box origin (always 0)
      01394738
    • David Flynn's avatar
      encoder: allow external configuration of geometry bounding box · 8dbb5a7f
      David Flynn authored
      The configuration parameters seq_bounding_box_xyz0 and
      seq_bounding_box_whd allow overriding the automatic derivation of
      frame (sequence) bounding box, forcing the depth of the geometry
      tree.
      
      NB: seq_bounding_box_xyz0 and seq_bounding_box_whd are specified
          using unscaled co-ordinates.
      
      NB: this patch does not signal these parameters in the SPS.
      8dbb5a7f
    • 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
  4. 31 Oct, 2018 5 commits
    • David Flynn's avatar
      entropy: arithmetic codec wrapper to allow compile time selection · a3bc1ac4
      David Flynn authored
      This commit adds an arithmetic codec interface class that allows a
      compile time choice of arithmetic codec implementation.  Context types
      are renamed to support compile time selection, and existing support
      functions that were added to the third-party arithmetic codec are
      moved to the wrapper.
      a3bc1ac4
    • Philip A. Chou's avatar
      trisoup/m43786: initial import of c++ version of trisoup · 32137071
      Philip A. Chou authored and David Flynn's avatar David Flynn committed
      This commit integrates a c++ trisoup codec, replacing the previous matlab
      implementation.
      
      The provided code has been reworked to avoid duplicating code, dead code,
      and operate with the current HLS.
      32137071
    • David Flynn's avatar
      geom: refactor/isolate geometry brick coding · 952112c4
      David Flynn authored
      This commit splits the handling of the geometry brick header and octree
      geometry coding.  The encoder/decoder classes now take care of coding
      the header, while the geometry coder handles the geometry coding itself.
      952112c4
    • David Flynn's avatar
      octree/m43602: perform recolouring after geometry processing · a9d066e6
      David Flynn authored
      This commit prepares for the possibility that geometry coding itself is
      lossy.  Instead of performing recolouring just after input quantisation,
      it is deferred until after geometry processing.
      
      The recolouring functions are updated to handle differences in
      pointcloud scales rather than requiring the target pointcloud to be
      scaled identically to the source.
      a9d066e6
    • David Flynn's avatar
      refactor: move PCCTMC3Encoder definitions to cpp file · 5561887e
      David Flynn authored
      This commit moves method definitions out of a header file
      into a separate compilation unit.
      5561887e