- 16 Apr, 2019 9 commits
-
-
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
-
David Flynn authored
This commit permits signalling a per-slice delta QP for luma and chroma attribute components. The delta is relative to the base value derived from the APS. NB: while syntax support and derivation processes are provided, this commit does not contain any method to control the delta QP value at the encoder.
-
This commit introduces control of the quantisation step size using the familiar HEVC | AVC quantisation parameter.
-
-
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.
-
David Flynn authored
This is part of a series attempting to remove unhelpful typedefs.
-
David Flynn authored
This is part of a series that implements a single method of Cartesian to Morton code conversion.
-
David Flynn authored
-
- 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 2 commits
-
-
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.
-
This replaces the previous floating point transform implementation with a fixed-point alternative with essentially identical compression performance.
-
- 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 4 commits
-
-
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.
-
This commit replaces the m-ary coding of transform coefficient values with a binary coding using the dual-lut coder. Reworked to include a bug fix where the maximum attribute symbol value used by the dual lut coder is 64 rather than 255
-
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.
-
- 03 Sep, 2018 1 commit
-
-
- 29 Aug, 2018 4 commits
-
-
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
-
This commit removes PCCBuildLevelOfDetail2()
-
This commit replaces the hard coded threshold values with APS signalling. The default configuration maintains the hard-coded threshold values based on bitdepth.
-
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.
-
- 20 Aug, 2018 5 commits
-
-
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.
-
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.
-
David Flynn authored
The IntegerLift name is misleading in light of a separate coding method that uses lifting predict and update operators. This commit renames the method to specify it is a prediction-only scheme.
-
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
-
- 23 Jul, 2018 1 commit
-
-
David Flynn authored
-
- 05 Jun, 2018 6 commits
-
-
David Flynn authored
Little is gained from the return type checks, it mostly serves to clutter the code.
-
David Flynn authored
Rather than coding all syntax elements for both transform types irrespective of the in-use type, this commit codes only those that are necessary for a given transform type.
-
This commit introduces the rahtLeafDecimationDepth parameter to allow chroma sub-sampling by decimating the coefficients in the bottom n levels of the tree. The default value of 3 provides chroma sub-sampling by a factor of 2 in each dimension.
-
This commit ports the Region Adaptive Hierarchical Transform for attribute coding with colour and reflectance variants.
-
This commit reorganises the attribute coders to allow integration of the RAHT variant.
-
David Flynn authored
In order to support multiple different attribute compression schemes, this commit moves the existing attribute compression code into a self-contained class.
-