README.options.md 15.1 KB
Newer Older
David Flynn's avatar
David Flynn committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
General options
---------------

### `--help`
Print a list of available command line (and configuration file) options
along with their default values and exit.

### `--config=FILE`, `-c`
This specifies a configuration file to be immediately loaded.

### `--mode=VALUE`
This option selects the codec's mode of operation.  A value of 0 enables
encoding functionality.  A value of 1 switches to decoding mode.


I/O parameters
--------------

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
### `--firstFrameNum=INT-VALUE`
The initial frame number of the input or output sequence.
The software replaces any instance of a '%d' printf format directive
with the current frame number when evaluating the following options:

- uncompressedDataPath
- reconstructedDataPath
- postRecolourPath
- preInvScalePath

NB: When decoding, this option relates only to the output file names.

In order to have the decoder produce identically numbered output ply
files as the encoder input, specify the same value of firstFrameNum for
the decoder.

### `--frameCount=INT-VALUE`
(Encoder only)
The number of frames to be encoded.

David Flynn's avatar
David Flynn committed
39
40
### `--uncompressedDataPath=FILE`
(Encoder only)
41
42
The input source point cloud to be compressed.  The first instance of
'%d' in FILE will be expanded with the current frame number.
David Flynn's avatar
David Flynn committed
43
44
45
46
47
48
49
50
51

### `--compressedStreamPath=FILE`
The compressed bitstream file output when encoding or input when decoding.

### `--reconstructedDataPath=FILE`
The reconstructed point cloud file.  When encoding, the output is the
locally decoded picture.  It is expected that the reconstructed output
of the encoder and decoder match exactly.

52
53
54
The first instance of '%d' in FILE will be expanded with the current
frame number.

David Flynn's avatar
David Flynn committed
55
56
57
58
59
60
61
### `--postRecolourPath=FILE`
(Encoder only)
As part of the encoding process, it may be necessary to re-colour the
point cloud if the point geometry is altered.  This diagnostic output
file corresponds to the re-coloured point cloud prior to attribute
coding without output geometry scaling.

62
63
64
The first instance of '%d' in FILE will be expanded with the current
frame number.

David Flynn's avatar
David Flynn committed
65
66
67
68
69
70
71
72
73
### `--preInvScalePath=FILE`
(Decoder only)
This diagnostic output corresponds to the decoded point cloud (geometry
and attributes) prior to output geometry scaling.

When compared to the output of `postRecolourPath`, the performance of
attribute coding may be directly measured without being confounded
by any geometry losses.

74
75
76
The first instance of '%d' in FILE will be expanded with the current
frame number.

David Flynn's avatar
David Flynn committed
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
### `--outputBinaryPly=0|1`
Sets the output format of PLY files (Binary=1, ASCII=0).  Reading and
writing binary PLY files is more efficient than the ASCII variant,
but are less suited to simple scripts and direct human inspection.

If outputting non-integer point co-ordinates (eg, due to the output
geometry scaling), the precision of the binary and ASCII versions are
not identical.

### `--colourTransform=0|1`
Controls the use of a colour space transformation before attribute
coding and after decoding.

  | Value | Description            |
  |:-----:| ---------------------- |
  | 0     | none                   |
  | 1     | RGB to YCbCr (Rec.709) |

### `--hack.reflectanceScale=0|1`
Some input data uses 8-bit reflectance data scaled by 255 and represented
using 16-bit attributes.  This option enables a conversion of 16-bit to
8-bit at the encoder, and the corresponding conversion from 8-bit back to
16-bit at the decoder.  If the original data has been scaled by 255, the
conversion process is lossless.


Decoder-specific options
========================

106
107
108
109
### `--minGeomNodeSizeLog2=INT-VALUE`
The option indicates the number of skipped lod layers from leaf lod.
If aps.scalable_enable_flag is 1, the option is valid.
Otherwise, the option is ignored.
David Flynn's avatar
David Flynn committed
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133

Encoder-specific options
========================

### `--positionQuantizationScale=REAL-FACTOR`
Prior to encoding, scale the point cloud geometry by multiplying each
co-ordinate by the real *FACTOR* and rounding to integer precision.  The
scale factor is written to the bitstream and a decoder may use it to
provide output at the original scale.

NB: when using trisoup geometry coding, use `triSoupIntToOrigScale`
instead of this option.

### `--positionQuantizationScaleAdjustsDist2=0|1`
This option simplifies the specification of the per-attribute `dist2`
parameter.

The squared distance threshold used for generating levels-of-detail in
attribute coding is dependent on the point cloud density and is therefore
affected by geometry quantization.  When this parameter is enabled,
`dist2` values are scaled by `positionQuantizationScale` squared, thereby
allowing `dist2` to be specified as an intrinsic property of the source
sequence.

134
135
136
137
138
139
140
141
142
143
144
145
146
147
### `--seq_bounding_box_xyz0=x,y,z`
Explicitly sets the origin of the sequence-level bounding box in
unscaled integer coordinates.

NB: This option has no effect if `seq_bounding_box_whd`=0,0,0.

### `--seq_bounding_box_whd=w,h,d`
Explicitly sets the size of the sequence-level bounding box in
unscaled integer coordinates.

When $w,h,d$ not equal to 0,0,0, the sequence-level bounding box
origin is set according to `seq_bounding_box_xyz0`.  Otherwise,
the sequence-level bounding box is determined by the encoder.

David Flynn's avatar
David Flynn committed
148
149
150
151
152
### `--mergeDuplicatedPoints=0|1`
Controls the ability to code duplicate points.  When duplicate point
merging is enabled, bitstream syntax related to duplicate points is
disabled and a pre-filtering process is used to remove co-located points.

153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
### `--geometry_axis_order=INT-VALUE`
Configures the order in which axes are internally coded.  Changing
the axis order does not change the orientation of the reconstructed
point cloud.

  | Value | Coding order |
  |:-----:| -------------|
  | 0     | z, y, x      |
  | 1     | x, y, z      |
  | 2     | x, z, y      |
  | 3     | y, z, x      |
  | 4     | z, y, x      |
  | 5     | z, x, y      |
  | 6     | y, x, z      |
  | 7     | x, y, z      |

David Flynn's avatar
David Flynn committed
169
170
171
172
### `--disableAttributeCoding=0|1`
This option instructs the encoder to ignore all options relating to
attribute coding, as if they had never been configured.

173
### `--partitionMethod=0|2|3`
174
175
Selects the partitioning method to map points to tiles and slices:

176
177
178
179
  | Value | Description                             |
  |:-----:| ----------------------------------------|
  | 0     | none (single slice)                     |
  | 2     | uniform partitioning along longest edge |
180
  | 3     | uniform octree partitions               |
181
182
183
184
185

### `--partitionNumUniformGeom=INT-VALUE`
Sets the number of slices to generate using `partitionMethod=2`.
If equal to zero, the number of slices is the integer ratio of the
longest to shortest edges of the point cloud bounding box.
186

187
188
189
190
191
192
### `--partitionOctreeDepth=INT-VALUE`
Sets the depth of the octree for slice generation using
`partitionMethod=3`.

The input point cloud is decomposed using an octree with the configured
depth.  Each occupied leaf of the octree represents a single slice.
David Flynn's avatar
David Flynn committed
193

194
195
196
197
198
199
200
201
202
203
204
205
### `--sliceMaxPoints=INT-VALUE`
Upper limit to the number of in each slice.  Slices are split until
this contraint is satisfied.

### `--sliceMinPoints=INT-VALUE`
Minimum number of points in each slice.  This soft limit is used to
merge small slices together.

### `--tileSize=INT-VALUE`
Tile dimension to use when performing initial partitioning.  A value of zero
disables tile partitioning.

206
207
208
209
210
211
212
213
214
### `--cabac_bypass_stream_enabled_flag=0|1`
Controls the entropy coding method used for equi-probable (bypass) bins:

  | Value | Description                           |
  |:-----:| --------------------------------------|
  | 0     | bypass bins coded using CABAC         |
  | 1     | bypass bins coded in bypass substream |


David Flynn's avatar
David Flynn committed
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
Geometry coding
---------------

### `--bitwiseOccupancyCoding=0|1`
In octree geometry coding, there are both byte-wise and bit-wise tools to
encode the occupancy data.  This option selects between the two methods.

### `--neighbourContextRestriction=0|1`
Octree occupancy coding is contextualised in part by the occupancy of
neighbouring octree nodes.  The neighbour context restriction limits
the use of neighbouring nodes to direct octree siblings.

NB: This option conflicts with `neighbourAvailBoundaryLog2`.  It is
necessary to set `neighbourAvailBoundaryLog2`=0 when
`neighbourContextRestriction`=1.

### `--neighbourAvailBoundaryLog2=INT-VALUE`
Defines the volume within which octree nodes are considered available
for use in occupancy contextualisation and intra occupancy prediction.

A value of 0 indicates that no constraint is applied.

The software currently supports a maximum value of 8 or 9 when
intra occupancy prediction prediction is enabled or disabled
respectively.

### `--inferredDirectCodingMode=0|1`
Controls the use of early termination of the geometry octree for
isolated points.

245
246
247
248
### `--adjacentChildContextualization=0|1`
Controls the contextualization of occupancy bits according to the
state of adjacent children of neighbouring nodes.

David Flynn's avatar
David Flynn committed
249
250
251
252
253
254
255
256
257
258
259
260
### `--intra_pred_max_node_size_log2=INT-VALUE`
Intra occupancy prediction uses an octree node's neighbours to predict
its occupancy.  The prediction mode is enabled for octree nodes smaller
than or equal to the configured size.  A value of 0 disables intra
occupancy prediction.

### `--ctxOccupancyReductionFactor=INT-VALUE`
Adjusts the number of contexts used in bit-wise occupancy coding.
The total number of contexts used is 256 >> *VALUE*.

NB: the final standard is expected to define this factor as a constant.

261
262
263
264
265
### `--trisoup_node_size_log2=INT-VALUE`
Controls the use of trisoup by setting the node size for triangle
based surface reconstruction.  The trisoup method terminates the
octree coding at the given node size and continues by encoding
triangles which are subsequently voxelised to produce points.
David Flynn's avatar
David Flynn committed
266

267
A value of 0 disables the use of trisoup.
David Flynn's avatar
David Flynn committed
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305


Attribute coding
----------------

The codec may be configured to represent one or more attributes.
The configuration of each attribute is independent from all others.
To configure coding of an attribute, first set the attribute options,
then save the configuration using the `attribute` option.

### `--attribute=NAME`
Saves the current attribute configuration for coding the named attribute.

  | Name        | Description |
  |:----------- |---|
  | colour      | r, g, and b properties as a tri-stimulus attribute |
  | reflectance | refc or reflectance property as a single-stimulus attribute |

This option must be specified after the options corresponding to
the attribute.

### `--bitdepth=INT-VALUE`
The bitdepth of the attribute data.  NB, this is not necessarily the
same as the bitdepth of the PLY property.  

### `--transformType=0|1|2`
Coding method to use for the current attribute:

  | Value | Description                                                |
  |:-----:| ---------------------------------------------------------- |
  | 0     | Hierarchical neighbourhood prediction                      |
  | 1     | Region Adaptive Hierarchical Transform (RAHT)              |
  | 2     | Hierarchical neighbourhood prediction as lifting transform |

### `--rahtDepth=INT-VALUE`
Number of bits for Morton representation of RAHT co-ordinate
components.

306
307
308
309
310
### `--rahtPredictionEnabled=0|1`
Controls the use of transform domain prediction of RAHT coefficients
from spatially upsampling the DC values of neighbouring parent nodes
in the transform tree.

David Flynn's avatar
David Flynn committed
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
### `--numberOfNearestNeighboursInPrediction=INT-VALUE`
Attribute's maximum number of nearest neighbours to be used for
prediction.

### `--adaptivePredictionThreshold=INT-VALUE`
Neighbouring attribute value difference that enables choice of
single|multi predictors. Applies to transformType=2 only.
A value of -1 is replaced by 2**(bitdepth-2).

### `--attributeSearchRange=INT-VALUE`
Range for nearest neighbour search.

### `--max_num_direct_predictors=INT-VALUE`
Maximum number of nearest neighbour candidates used in direct
attribute prediction.

327
328
329
330
331
332
333
334
### `--lodDecimation=0|1`
Controls the level-of-detail generation method:

  | Value | Description                     |
  |:-----:| ------------------------------- |
  | 0     | Euclidean distance thresholding |
  | 1     | Decimation by 1:3               |

335
336
337
338
### `--intraLodPredictionEnabled=0|1`
Part of LoD attribute coding.  Permits (1) points to be predicted from
previously reconstructed points within the same LoD.

339
340
341
342
343
### `--aps_scalable_enabled_flag=0|1`
Enable spatially scalable attribute encoding.
The option is only valid when `transformType=2`, `lodDecimation=0`,
and `trisoup_node_size_log2=0`.

David Flynn's avatar
David Flynn committed
344
345
346
347
348
349
### `--levelOfDetailCount=INT-VALUE`
Attribute's number of levels of detail.

### `--dist2=INT-VALUE|INT-VALUE-LIST`
Attribute's list of squared distances, or initial value for automatic
derivation.
350

351
352
353
354
355
### `--lod_neigh_bias=INT-VALUE-LIST`
A set of three bias factors corresponding to the first, second and third
geometry axes used to weight nearest neighbours during the LoD generation
and weighting processes.  The value `1,1,1` implies no bias.

356
357
358
359
360
361
### `--qp=INT-VALUE`
Attribute's luma quantization parameter.

### `--qpChromaOffset=INT-VALUE`
Attribute's chroma quantization quantization parameter relative to luma.
Only applies when `attribute=colour`.
362
363
364

### `--aps_slice_qp_deltas_present_flag=0|1`
Enables signalling of per-slice QP values.
365

366
367
368
369
370
371
372
373
### `--qpLayerOffsetsLuma=INT-VALUE-LIST`
Attribute's per layer luma QP offsets.  A layer is corresponds to a
level-of-detail or RAHT transform block.

### `--qpLayerOffsetsChroma=INT-VALUE-LIST`
Attribute's per layer chroma QP offsets.  A layer is corresponds to a
level-of-detail or RAHT transform block.
Only applies when `attribute=colour`.
374
375
376
377
378
379
380

Attribute recolouring (encoder only)
------------------------------------

The following options configure the recolouring module, used when resampling
a point cloud, or if the geometry coding process invents new points.

381
### `--recolourSearchRange=INT-VALUE`
382
383
Attribute space search range for optimal attribute transfer.

384
### `--recolourNumNeighboursFwd=INT-VALUE`
385
386
387
Number of source points used at the neighborhood of a target point to create
the forward points list.

388
### `--recolourNumNeighboursBwd=INT-VALUE`
389
390
391
Number of target points used at the neighborhood of a source point to create
the backward points list.

392
### `--recolourUseDistWeightedAvgFwd=0|1`
393
394
Use distance-weighted average for forward list.

395
### `--recolourUseDistWeightedAvgBwd=0|1`
396
397
Use distance-weighted average for backward list.

398
### `--recolourSkipAvgIfIdenticalSourcePointPresentFwd=0|1`
399
400
Do not use forward points list if an identical source point exists.

401
### `--recolourSkipAvgIfIdenticalSourcePointPresentBwd=0|1`
402
403
Do not use backward points list if an identical source point exists.

404
### `--recolourDistOffsetFwd=REAL-VALUE`
405
406
407
Distance offset to avoid infinite weight when distance between a forward
list point and the target is zero.

408
### `--recolourDistOffsetBwd=REAL-VALUE`
409
410
411
Distance offset to avoid infinite weight when distance between a backward
list point and target is zero.

412
### `--recolourMaxGeometryDist2Fwd=REAL-VALUE`
413
414
415
Maximum allowed squared distance of a source point from target to get into
the forward list.

416
### `--recolourMaxGeometryDist2Bwd=REAL-VALUE`
417
418
419
Maximum allowed squared distance of a source point from target to get into
the backward list.

420
### `--recolourMaxAttributeDist2Fwd=REAL-VALUE`
421
422
423
Maximum allowed squared attribute value difference of a source point for
inclusion in the forward list.

424
### `--recolourMaxAttributeDist2Bwd=REAL-VALUE`
425
426
Maximum allowed squared attribute value difference of a source point for
inclusion in the backward list.