- 12 Nov, 2019 2 commits
-
-
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.
-
- 12 Aug, 2019 6 commits
-
-
David Flynn authored
In order to simplify the introduction of quantisation using the multiplicative inverse, the existing quantiser state is refactored into a Quantizer class that represents the current step size.
-
David Flynn authored
The quantization functions are applied to both fixed-point and unitary precision data using the same QP. This commit moves the implicit conversion adjustment out of the quantiser and into the calling code.
-
This functionality is now handled by the unified generation process.
-
This adoption permits the unification of the single and multi level-of-detail generation processes by always solving ties in sorting predictors with identical weights according to relative buffer position.
-
David Flynn authored
A 64 bit integer can represent a three dimensional 21 bit position with one spare bit. In order te allow the computation of abs(a-b), a signed representation should be used, making use of the full 64 bits.
-
This commit makes all lod layers order points in a consistent, ascending, morton order.
-
- 05 Aug, 2019 1 commit
-
-
This adoption fixes an issue whereby intra lod prediction is not applied to the top layer. By fixing this, intra lod prediction will be used for the single-layer case.
-
- 16 Apr, 2019 9 commits
-
-
This commit introduces prediction by previously coded points within the same level of detail using the predicting attribute coder. The feature is controlled using --intraLodPredictionEnabled=0|1.
-
David Flynn authored
This method has been replaced by an LoD decimation method.
-
This LoD generation (subsampling) method uses the Morton-based ordering of points that is used to determine prediction neighbours. Each LoD level comprises 3/4 of the points of the previous.
-
This commit introduces zero run length coding for attribute residual value along with an eq1 flag which indicates if residual value is equal to 1 based on the current residual coding specification. In zero run length coding, the number of zeros prior to each residual value is counted as zerorun, and then zerorun is encoded instead of encoding sequence of 0s
-
This commit introduces control of the quantisation step size using the familiar HEVC | AVC quantisation parameter.
-
-
David Flynn authored
This function has never been used.
-
David Flynn authored
This is part of a series attempting to remove unhelpful typedefs. The old typedefs (PCCBox3D) is retained for compatibility, but marked as deprecated.
-
David Flynn authored
This is part of a series attempting to remove unhelpful typedefs. The old typedefs (PCCVector3D, PCCPoint3D, PCCColor3B) are retained for compatibility, but marked as deprecated.
-
- 06 Feb, 2019 1 commit
-
-
This uses a binary-tree to generate the levels-of-details for the lifting/predicting transforms as an alternative to Euclidean distance thresholding methods.
-
- 05 Feb, 2019 1 commit
-
-
This simplified attribute prediction scheme avoids computing the LoD structure in order to reduce the computational complexity of both the encoder and the decoder. It is activated by setting levelOfDetailCount=0. NB: this is only configured for lossless/near-lossless predictive attribute coding of cat3 sequences.
-
- 01 Nov, 2018 2 commits
-
-
Replace the k-d tree based nearest neighbour search with an approximate search based upon the points in Morton order.
-
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.
-
- 31 Oct, 2018 3 commits
-
-
David Flynn authored
This commit removes unnecessary include directives.
-
David Flynn authored
This commit moves various constants from PCCTMC3Common.h to a new constants.h. Hard coded values of constants have been replaced with their symbolic name.
-
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.
-
- 29 Aug, 2018 6 commits
-
-
This functionality is unnecessary given a uniform quant_step size.
-
This commit removes PCCBuildLevelOfDetail2()
-
This commit updates the hard coded limit and default values, and updates the master configuration template.
-
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.
-
This commit modifies PCCBuildLevelOfDetail to use the direct dist2 value, rather than attempting to derive dist2. This unifies the behaviour of the two PCCBuildLevelOfDetail*() implementations.
-
David Flynn authored
-
- 20 Aug, 2018 7 commits
-
-
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.
-
This commit implements a lifting scheme optimized for lossy attribute compression, consisting of predict/update operators, and an adaptive quantization strategy.
-
Adaptively pick the number of neighbours considered during the prediction based on analysis of the reconstructed attribute values of the neighbours. From m42642, this is performed by computing the maximum difference between any two reconstructed attribute values of a points neighbours. If the variability is higher than a threshold, then apply a rate-distortion optimization procedure to choose between using either a single neighbour or all neighbours. The index of the best prediction strategy is arithmetically encoded. This commit: - implements the m42642 method - moves buildPredictors into transform-specific attribute encoding/decoding - adds quantizationStepsChroma - renames quantizationSteps -> quantizationStepsLuma df: fixed incorrect application of quantizationStepsLuma|Chroma df: updated cat3 cfg to specify quantizationStepsChroma df: fixed header encoding if quantizationStepsChroma missing
-
-
David Flynn authored
-
David Flynn authored
In the contextualisation of occupancy coding using neighbour patterns, this commit replaces the case when neighbour contextualisation is disabled with a constraint that restricts neighbour contextualisation only examine the direct siblings of a node. The restriction ensures that at most three neighbours may be present for a node. The configuration option "neighbourContextualisation=1" is replaced with "neighbourContextRestriction=0".
-
David Flynn authored
This commit provides an implementation of m42522 to code occupancy using a binary context model rather than a 255-ary model. A total of 581 binary contexts are used compared to the previous 10 255-ary contexts.
-
- 23 Jul, 2018 1 commit
-
-
David Flynn authored
-
- 29 Jun, 2018 1 commit
-
-
David Flynn authored
The original integration of IDCM implemented only the parent based eligibility check of m42239 and erroneously omitted the six-neighbour check. This commit adds the six-neighbour check, making use of the neighbour calculation from m42239 neighbour contextualised coding of occupancy.
-