1. 16 Apr, 2019 3 commits
  2. 25 Feb, 2019 2 commits
  3. 05 Feb, 2019 4 commits
    • David Flynn's avatar
      geom/m44753: contextualisation of occupancy using adjacency · 82a0c430
      David Flynn authored
      Each occupancy bit is contextualised based on the number of occupied
      (directly) adjacent child nodes in the (x-1), (y-1), and (z-1)
      neighbour nodes used to generate the neighbour pattern.
      
      Three contextualisation states are added:
       - no adjacent neighbours
       - one adjacent neigbour (=adjacencyGt0)
       - two adjacent neighoburs (=adjacencyGt1)
      82a0c430
    • David Flynn's avatar
      geom/m44752: false occupancy aware neighbour determination · 62b05926
      David Flynn authored
      The neighbour pattern for a node indicates occupied neighbouring nodes.
      
      This commit updates the definition of occupancy for the (x-1), (y-1),
      and (z-1) neighbours to be occupied if the neighbour's adjoining
      children (ie sharing a face with the current node) are occupied.
      
      In the 1-D figure below, at a depth d, the node 'X' has two occupied
      neighbours 'R' and 'L'.  When determining the neighbour pattern of X,
      the (x-1) state of the neighbour's adjoining child ('r') is used
      instead.  For completeness, nodes marked with '?' are not causally
      available.
      
        d+0:   R|X|L
        d+1:  Rr|??|??
      62b05926
    • 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
    • David Flynn's avatar
      geom/m46512: fix incorrect calculation of num_leaf_points_minus2 · 06d12e7a
      David Flynn authored
      A leaf node by definition contains at least one point.  Therefore the
      single point flag indicates if there are one or two points in the leaf.
      The remainder should be signalled as numpoints - 2 as per the working
      draft text.
      06d12e7a
  4. 31 Oct, 2018 12 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
    • 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/m43600: bit-wise occupancy prediction framework · 90e8646a
      David Flynn authored
      This commit provides the ability to contextualise occupancy bits using
      a prediction.  Three context sets cover the not predicted, predicted
      unoccupied and predicted occupied cases.
      90e8646a
    • 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
    • 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
    • David Flynn's avatar
      geom: refactor bitwise occupancy coding ready for bytewise option · d44baa86
      David Flynn authored
      This commit prepares for the introduction of selectable bitwise
      and bytewise occupancy coding methods.
      d44baa86
    • 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
      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 entropy coding methods · db638612
      David Flynn authored
      This commit refactors the storage and passing of entropy contexts in the
      geometry octree coder.  An encapsulating class with all entropy coding
      methods is used to store the context state.
      db638612
    • 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