- 31 Oct, 2018 2 commits
-
-
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
Sometimes it is useful to encode geometry without attributes. However, the common test condition configurations all enable attribute coding. In order to avoid rewriting the configuration files, the "disableAttributeCoding" option configures the encoder as if no attributes are specified.
-
- 05 Sep, 2018 1 commit
-
-
David Flynn authored
Reading and writing binary ply files is significantly faster than going via formatted I/O. This commit adds the --outputBinaryPly=1|0 option to select writing either binary or ascii ply files.
-
- 03 Sep, 2018 2 commits
-
-
Certain test sequences with 16-bit reflectance are actually 8-bit data that has been scaled by 255. This commit adds non-normative support to the encoder and decoder to convert between the two representations through the option "hack.reflectanceScale".
-
David Flynn authored
The dist2 values used by the pred/lift attribute coding schemes is dependent upon the distances between points in the point cloud. Using the --positionQuantizationScale option to scale the input point cloud therefore affects the required dist2 values. This commit adds the --positionQuantizationScaleAdjustsDist2=1|0 option to simplify the configuration of dist2. When enabled, the encoder will automatically scale any dist2 values by the squared position scale factor.
-
- 29 Aug, 2018 6 commits
-
-
This commit introduces automatic derivation of dist2 values by the frontend. Automatic derivation occurs if fewer than levelOfDetailCount values are provided. No syntax changes are made. cfg update: - use single dist2 values based on existing config - ford: 16383 -> 16384
-
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 updates the hard coded limit and default values, and updates the master configuration template.
-
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 option was added to use the original CfP response output position rounding after the switch to integer point clouds. It is not used and its effect is barely noticeable in the objective distortion metric. Furthermore, the encoder and decoder behaviour is different if the option is enabled.
-
David Flynn authored
-
- 20 Aug, 2018 11 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 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.
-
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.
-
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
-
David Flynn authored
This commit removes the searchRange option that was set to 0 by m42538.
-
-
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
-
- 23 Jul, 2018 2 commits
-
-
David Flynn authored
-
David Flynn authored
-
- 05 Jun, 2018 8 commits
-
-
David Flynn authored
This commit aims to reduce te amount of copy+paste code used to support the three different geometry coding modes by unifying them into a single flow.
-
David Flynn authored
This commit adds a DecoderParameters struct to reduce the overhead of adding extra parameters.
-
David Flynn authored
This commit aims to reduce the overload on the --mode option and to restore it to the previous encode/decode functionality. To this end, a new option (--geometryCodec=...) is added that selects the geometry codec. Version v1.0 use of --mode=... is supported.
-
This commit does not add the triangle soup geometry compressor to TMC3, rather. Rather, it adds a means to call out to TMC1 binaries to perform the compression, integrate the results into the bitstream. Attribute compression is performed natively by the TMC13 codec.
-
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.
-
David Flynn authored
-
- 16 May, 2018 2 commits
-
-
This commit reduces the number of nearest neighbours used in attribute prediction to 4 from 8 in order to reduce memory usage. Extracted-from: http://wg11.sc29.org/svn/repos/MPEG-I/Part5-PointCloudCompression/CE/CE0/CE0.1/trunk@1357 Reintegrated-by:
<dflynn@blackberry.com>
-
This commit removes the ability to control the quantization dead-zone parameters since they have always been identical to the step size. Rather than hard-coding the dead-zone size parameter to be the same as the step size, this commit: - Sets the dead-zone to be ±(2 * stepsize / 3) rather than ±stepsize - Does not narrow the interval following the dead-zone. Extracted-from: http://wg11.sc29.org/svn/repos/MPEG-I/Part5-PointCloudCompression/CE/CE0/CE0.1/trunk@1357 Reintegrated-by:
<dflynn@blackberry.com>
-
- 11 May, 2018 1 commit
-
-
This commit eliminates the blending of point attribute values during the attribute transfer process used in geometry quantisation by forcing the blending weight to be 0|1 (m42141). m42538 also recommends to disable the bounded search of the closest attribute from the contributing set by setting searchRange=0. This is reflected by a change to the software defaults and configuration.
-
- 10 May, 2018 2 commits
-
-
David Flynn authored
This commit provides an implementation of m42239, permitting early coding termination of sub-trees that contain few points: - the so-called IDCM feature uses an eligibility criteria prior to permitting an encoder mode decision. - the feature may be controlled via the command line / config file using the --inferredDirectCodingMode=1|0 option
-
David Flynn authored
This commit provides an implementation of m42238 to code occupancy: - a node's child occupancy is contextualised based on the adjacent neighbours of the parent node. - when an isolated node is occupied by only a single child, the sub-node address [0,7] is directly coded instead of the 8-bit occupancy word. - collection of neighbour occupancy is performed using a scatter/ gather operation upon the insertion of each child node into the fifo queue. - the feature may be controlled via the command line / config file using the --neighbourContextualisation=1|0 option
-
- 09 May, 2018 1 commit
-
-
David Flynn authored
-
- 06 May, 2018 1 commit
-
-
David Flynn authored
-
- 27 Feb, 2018 1 commit
-
-
David Flynn authored
git-svn-id: http://wg11.sc29.org/svn/repos/MPEG-I/Part5-PointCloudCompression/TM/TMC3/trunk@1341 94298a81-5874-47c9-aab8-bfb24faeed7f
-