- 21 Nov, 2019 21 commits
-
-
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
-
A per-slice region may be defined with a qp offset. Points within the region have an offset applied to the per-level QP.
-
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.
-
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.
-
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.
-
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.
-
David Flynn authored
-
David Flynn authored
None of these methods need to be inlined.
-
This adoption permits prediction of residuals between components of the same attribute, coding the residual resulting from this second prediction.
-
David Flynn authored
The GBR coding order matches the description in ISO/IEC 23001-8 for the identity matrix (MatrixCoefficients=0).
-
This adoption allows determining the weights of each point's predicting neighbours with a reduced influence of the, for instance, z component.
-
This adoption implements a different context selection method for the isOne syntax element in attribute coding.
-
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.
-
David Flynn authored
This commit migrates PCCPointSet3::read and write to ply::read and write.
-
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 firstFrameNum option.
-
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.
-
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.
-
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.
-
David Flynn authored
-
David Flynn authored
This commit refactors calling the LoD generation routines to pass the aps rather than a long list of syntax variables.
-
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.
-
- 12 Nov, 2019 4 commits
-
-
David Flynn authored
This commit extends the operating range of the forward and inverse quantization tables in order to reduce distortion at low bit rates.
-
David Flynn authored
Consider candidates that are tied according to distance with the current worst predictor in order to consistently use the lowest indexed candidate and to prefer neighbours in coarser LoD to neighbours in current LoD.
-
David Flynn authored
This fixes an issue when during predictor construction, when lodIndex == levelOfDetailCount causing the retained set to be empty.
-
David Flynn authored
The clang indent rules used to tidy the code cause undue indentation when used with include guards. This commit switches the only remaining instance to use pgrama once.
-
- 26 Aug, 2019 4 commits
-
-
David Flynn authored
-
David Flynn authored
-
David Flynn authored
-
This commit provides a set of MPEG::PCC perl modules that may be used to parse TMC13 log files. An example script collect-tmc13.pl demonstrates their use.
-
- 14 Aug, 2019 1 commit
-
-
David Flynn authored
-
- 12 Aug, 2019 10 commits
-
-
David Flynn authored
basketball_player_vox11 and dancer_vox11 are reduced to 64 frames.
-
This avoids artefacts during trisoup generation by checking whether the original slice partition interval is an integer multiple of the block size W=2^(trisoup_node_size_log2). If not, the partition interval is rounded up to the nearest integer that is exactly divisible by the block size.
-
This commit adds a process to limit the number of points per slice to be within a hard upper limit and soft lower limit.
-
Adjust the operation sequence of slice partition and geometry quantization. We do geometry quantization first and then do the slice partition, so that the point number of each slice would be kept in the predefined range under lossless/lossy geometry coding conditions.
-
Rather than code bypass bins using a simplified mode of the arithmetic coder, this commit adds the ability to signal bypass bins in a separate byte-reversed sub-stream.
-
In order to implement the reversed bypass stream, it is necessary that the arithmetic encoder outputs an independently decodable stream that does not rely upon bounded read operations that insert 0xff bytes when the entire aec sub-stream input is consumed (since there will be no indication of the sub-stream length).
-
This commit allow individual QP offsets to be specified for each LoD/RAHT layer in attribute coding.
-
David Flynn authored
This placeholder is for any encoder-specific per-attribute parameters that do not belong in the SPS, APS, etc.,
-
This commit implements the recolouring method described in m47800, which notably uses a distance-weighted average rather than the previous unweighted average.
-
This commit exploits the use of fixed quantisation step sizes (due to QP) to perform quantisation using multiplication by the reciprocal step size.
-