1. 21 Nov, 2019 3 commits
    • David Flynn's avatar
      geom: use single level based tree position representation · a8e8d3e6
      David Flynn authored
      The geometry tree nodes contain a position element (pos) that identifies
      the spatial position of the node.  At internal nodes this node position
      is the partial position of a point and may either be represented using
      the magnitude of the decoded points, or the magnitude of the current
      depth.
      
      The first form equates to:
       nextPos = curPos | (xyz << currentNodeSize)
      
      The second:
       nextPos = (curPos << 1) | xyz
      
      Where xyz represents a position bit from the coded occupancy.
      
      In order to use the first form to determine neighbour relationships,
      curPos must be shifted down to represent position within the current
      depth.  This repeated shifting, along with the introduction of
      simultaneous quantised and unquantised positions becomes increasingly
      difficult to follow when adding non-cubic nodes (via OtQtBt).
      
      This commit switches the representation to the second form above,
      eliminating various shifted forms and duplicate state.  A decoded
      positions is inverse quantised when reaching a leaf node.
      a8e8d3e6
    • Xiang Zhang's avatar
      geom/m49232: octree node geometry quantisation · 4d0d1e66
      Xiang Zhang authored and David Flynn's avatar David Flynn committed
      This introduces a quantization scheme into the octree coding process,
      enables adaptive geometry quantization for different regions of the
      point cloud.  This in-loop scheme is independent of the any quantisation
      performed in non-normative pre-processing at the input to the encoder.
      
      At a particular depth of the octree, the remaining (uncoded) position
      bits of each point are quantised according to a per-node (or rather,
      per-subtree) QP.  The QP itself is signalled as an offset to a base QP.
      
      The following configuration parameters are added:
        positionQuantisationEnabled
        positionBaseQp
        positionQuantisationOctreeDepth
      4d0d1e66
    • Satoru KUMA's avatar
      attr/m47352: permit partial geometry and attribute reconstruction · 10a4eb36
      Satoru KUMA authored and David Flynn's avatar David Flynn committed
      This provides a means to achieve spatial scalability for a G-PCC
      bitstream.  For bitstreams encoded with aps_scalable_enabled_flag set,
      the decoder may partially decode the geometry octree
      (minGeomNodeSizeLog2) and the corresponding point attributes.  The
      functionality is achieved by constraining the LoD generation process to
      align with partial geometry decoding.
      10a4eb36
  2. 12 Aug, 2019 1 commit
  3. 16 Apr, 2019 2 commits
  4. 05 Feb, 2019 1 commit
  5. 31 Oct, 2018 7 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
    • chi wang's avatar
      geom/m44811: 64-to-6 neighbour reduction table · d3560c60
      chi wang authored and David Flynn's avatar David Flynn committed
      When restricted neighbour contextualisation is used, this modification
      introduces an alternative neighbour reduction table.
      
      NB: the integrated table has been updated to remove the need to add
      additional remapping tables.  This is a non-normative change.
      d3560c60
    • 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
    • David Flynn's avatar
      entropy: introduce o3dgc::Adaptive_Bit_Model_Fast abstraction · 12619176
      David Flynn authored
      This commit provides an encapsulated interface to the fast update option
      of the o3dgc context models with a statistic halving period of 128
      symbols (max_count).
      12619176
    • 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 occupancy (de)coding · a03dc25d
      David Flynn authored
      This commit replaces some repetitive code with a loop.
      a03dc25d
    • David Flynn's avatar
      geom: refactor octree coding into seperate files · e7f8c7fc
      David Flynn authored
      The geometry coder is quite large, especially with trisoup and has no
      benefit to being a header only implementation.  This commit moves the
      geometry octree coder out of the header files and into
      geometry_octree_{en,de}coder.cpp.
      e7f8c7fc
  6. 23 Jul, 2018 1 commit
  7. 06 May, 2018 1 commit
  8. 27 Feb, 2018 1 commit
  9. 20 Feb, 2018 1 commit