1. 21 Nov, 2019 7 commits
    • David Flynn's avatar
      attr/m49601: add support to signal chroma (secondary) bitdepth · 20d66c65
      David Flynn authored
      Some imput formats and colour spaces have a different bitdepth
      for their chroma (non-primary) component.  This commit adds
      support to signal their bitdepth as described by the codec
      independent code points.
      20d66c65
    • David Flynn's avatar
      attr: refactor colourspace conversion to support other formats · a8f27566
      David Flynn authored
      This commit enables signalling a colour matrix index using
      cicp_matrix_coefficients_idx (ISO/IEC 23001-8 codec independent code
      points).
      
      It adds the following options that replace the existing colorTransform
      option:
      
       - colourMatrix: The coded representation according to ISO/IEC 23001-8.
      
       - convertPlyColourspace: Enables conversion to/from RGB using the
         indicated matrix.
      
      Configuration files are updated to use the new option and to
      signal the identity matrix in the case of direct GBR coding.
      a8f27566
    • Sehoon Yea's avatar
      attr/m49605: add inter component prediction for predicting coder · 0a90edeb
      Sehoon Yea authored and David Flynn's avatar David Flynn committed
      This adoption permits prediction of residuals between components of
      the same attribute, coding the residual resulting from this second
      prediction.
      0a90edeb
    • Yiting Shao's avatar
      attr/m48894: introduce neighbour bias LoD predictor construction · 9d34012b
      Yiting Shao authored and David Flynn's avatar David Flynn committed
      This adoption allows determining the weights of each point's
      predicting neighbours with a reduced influence of the, for
      instance, z component.
      9d34012b
    • David Flynn's avatar
      hls/m51027: signal geometry axis order · d96e5851
      David Flynn authored
      This adoption permits encoding the geometry positions in an order other
      than {x,y,z}.  The --geometry_axis_order option causes the encoder to
      load data from the ply file in a different order.  The order is
      signalled in the SPS and the decoder will label the output axis as
      appropriate.
      d96e5851
    • David Flynn's avatar
      hls/m51025: support multi-frame sequences · 105120bd
      David Flynn authored
      This adds:
       - a frame_idx syntax element to every geometry slice header.
       - (decoder) handling of a frame boundary data unit.
      
      Frame boundaries are represented by changes in the value of frame_idx
      or by the presence of a frame boundary data unit.
      105120bd
    • 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 4 commits
  3. 16 Apr, 2019 8 commits
  4. 06 Feb, 2019 1 commit
  5. 05 Feb, 2019 5 commits
    • 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
      hls/m45867: add tile inventory writer/parser · d2892504
      David Flynn authored
      d2892504
    • 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
  6. 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
  7. 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
  8. 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
  9. 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