1. 21 Nov, 2019 25 commits
• geom/m49231: add support for non-cubic nodes with implicit qtbt · 667f9209
Xiang Zhang authored and David Flynn committed
```This adoption permits coding geometry with non-cubic bounding boxes.
Since the depth of the tree remains constant for cubic and non-cubic
bounding boxes with identical largest dimensions, quad-tree and
binary-tree partitions are introduced to avoid coding 'fractional'
positions.

The following configuration options control the placement of non-octree
partitions within the coding tree:

--max_num_implicit_qtbt_before_ot
--min_implicit_qtbt_size_log2```
• geom: remove reconstructed position data from PCCPointSet3 · e156f8aa
David Flynn authored
```Geometry quantisation introduced an extra field to the point cloud
to hold scaled positions (to be restored after geometry coding is
complete).  This had a side effect of causing significant memory
increases since it applied to every instance of the point cloud.

Since it is not necessary to store both quantised and scaled positions
separately, this commit removes the extra storage and uses a method
similar to the decoder to represent partially quantised positions.```
• 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

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.```
• geom/m50927: slice-based geometry quantization · 220acf28
Xiang Zhang authored and David Flynn committed
```This extends the geometry based quantisation scheme to:
- add a per-slice QP offset, and
- permit uniform quantisation of the whole slice without
requiring signalling of an additional node QP offset.

Per node QP offset signalling is disabled by setting
positionQuantisationOctreeDepth=-1```
• geom/m49232: octree node geometry quantisation · 4d0d1e66
Xiang Zhang authored and 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```
• attr/m49626: add region-wise quantization support for LoD coding · 6b18730b
Noritaka Iguchi authored and David Flynn committed
```A per-slice region may be defined with a qp offset.  Points within
the region have an offset applied to the per-level QP.```
• attr/m49601: add YCgCoR colour transform support · 1654a45d
Sehoon Yea authored and David Flynn committed
```This commit adds the lossless YCgCoR colour transform.
The CTC configuration is updated to use YCgCoR for lossless
attribute coding instead of inter-component prediction on
GBR (colourMatrix=0) data.```
• 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.```
• 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.```
• attr/m49601: use attr_t (uint16_t) for all attributes · f5e788ec
Sehoon Yea authored and David Flynn committed
```In order to support bit depths higher than 8bit, this commit adds
an attr_t type to represent attribute data.  Existing uses of
uint8_t and uint16_t are converted to attr_t.```
• refactor: move pointset processing functions to compilation unit · d0e2ec04
David Flynn authored
`None of these methods need to be inlined.`
• attr/m49605: add inter component prediction for predicting coder · 0a90edeb
Sehoon Yea authored and David Flynn committed
```This adoption permits prediction of residuals between components of
the same attribute, coding the residual resulting from this second
prediction.```
• attr: change RGB coding order to GBR · c963fede
David Flynn authored
```The GBR coding order matches the description in ISO/IEC 23001-8 for
the identity matrix (MatrixCoefficients=0).```
• attr/m48894: introduce neighbour bias LoD predictor construction · 9d34012b
Yiting Shao authored and 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.```
• attr/m50669: adjust context derivation for zerorun · a96dda0c
ChenJiafeng authored and David Flynn committed
```This adoption implements a different context selection method for the
isOne syntax element in attribute coding.```
• 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.```
• ply: move ply io methods to separate compilation unit · 31d57093
David Flynn authored
`This commit migrates PCCPointSet3::read and write to ply::read and write.`
• cli: add support for encoding pointcloud sequences · ef9b47b9
David Flynn authored and David Flynn committed
```This commit enables the codec to encapsulate more than one frame in the
coded bitstream.  The number of frames to encode is controlled by the
frameCount option.

Support is added to encode multiple source frames from separate ply
files based on a template input file name.  A printf-like "%d" directive
acts as a placeholder for the current frame number.

Decoding functions in a similar way with a each frame decoded from the
bitstream being written to a separate ply file named according to a
template pattern.

The first frame number used for file I/O may be set using the
• 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.```
• attr: don't specialise k=0 case in (de/en)codeColorsPred · 8c37a777
David Flynn authored
```This converts an unrolled loop (with special case for the initial
iteration) to the rolled up form in order to improve readability.```
• hls/m50745: avoid signalling variables in meaningless cases · f38332a3
David Flynn authored
```For the lifting scheme, some APS parameters are always signalled.
However, some syntax elements are not needed depending upon the values
of attr_coding_type and lifting_scalability_enabled_flag.  This adoption
avoids signalling unnecessary syntax elements in these cases.```
• release: update version to 7.1 · 047cc958
David Flynn authored
• attr: pass aps reference rather than use many arguments in calls · 41bc63dc
David Flynn authored
```This commit refactors calling the LoD generation routines to pass
the aps rather than a long list of syntax variables.```
• attr/m47352: permit partial geometry and attribute reconstruction · 10a4eb36
Satoru KUMA authored and 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.```
2. 12 Nov, 2019 4 commits
3. 26 Aug, 2019 4 commits
4. 14 Aug, 2019 1 commit
5. 12 Aug, 2019 6 commits