-
Notifications
You must be signed in to change notification settings - Fork 32
/
Copy pathwhisper.conf
461 lines (461 loc) · 26.5 KB
/
whisper.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
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
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
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
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
{
"analysis.EnableLowConfidenceReports" : {
"public" : true,
"type" : "Boolean",
"description" : "Low-confidence reporting flag\n\nScan reports include information related to confidence - a confidence factor (from 0->infinity) as well as a flag determining if a report is low confidence or high confidence (see 'analysisMinimumConfidenceFactorThreshold' and 'analysisHighConfidenceFactorThreshold'.)\n\nThis flag enables the delivery of low-confidence reports. Setting it to `false` will cause low-confidence reports to be ignored and only high-confidence reports will be delivered.\n\nLow-confidence reports can provide some value. They can provide reports when poor conditions reduce the ability to provide high-confidence reports.",
"value" : true
},
"analysis.HighConfidenceFactorThreshold" : {
"description" : "Threshold for the a confidence factor to be considered as being high confidence\n\nConfidence factors range from 0.0 to 100.0.",
"type" : "Real",
"value" : 90.0,
"public" : true
},
"analysis.MissingCardPopularity" : {
"value" : 0.9,
"public" : true,
"type" : "FixedPoint",
"description" : "History analysis includes a process to find missing cards by analyzing historic entries to find those that contain the card. If enough entries contain the missing card, it is added to the remaining historic entries where the card was missed. This value represents a ratio of the total history entries that must contain the card in order for it to be considered truly found."
},
"analysis.MaxHistoryAgeMS" : {
"type" : "Integer",
"description" : "Max history age for recent results. This value is used to determine how much time we have to collect our minimum number of history entries (see minHistoryEntries)\n\nLarger values here will allow more time to collect historic results. Having enough historic results is important because these are the data points used by the statistical analysis for determining probabilistic correctness.\n\nThe drawback to larger values is that it will take longer to build up enough history to satisfy `minHistoryEntries` in order to begin returning results. In addition to this, when a new deck begins scanning, it will take time for old history values to purge the system enough for the new deck to be considered correct.",
"value" : 4000,
"public" : true
},
"analysis.MinHistoryEntries" : {
"value" : 15,
"public" : true,
"type" : "Integer",
"description" : "The amount of historic entries represents the number of data points available to determine the correctness of a result. More data points will increase our overall confidence. Therefore, this value plays a key role in our ability to determine if a result is probabilistically correct."
},
"analysis.MinimumConfidenceFactorThreshold" : {
"value" : 70.0,
"type" : "Real",
"public" : true,
"description" : "Threshold for the minimum confidence required to consider a scan to be correct.\n\nConfidence factors range from 0.0 to 100.0."
},
"capture.FrameHeight" : {
"public" : true,
"type" : "Integer",
"description" : "The camera's capture height",
"value" : 1080
},
"capture.FrameRateHz" : {
"public" : true,
"description" : "The camera's capture rate in frames per second",
"type" : "Integer",
"value" : 30
},
"capture.FrameWidth" : {
"type" : "Integer",
"value" : 1920,
"description" : "The camera's capture width",
"public" : true
},
"capture.ViewportFrequencyFrames" : {
"type" : "Integer",
"public" : true,
"value" : 1,
"description" : "If this value is greater than zero, a video thumbnail will be sent to wifi clients every `ViewportFrequencyFrames` frames."
},
"capture.ViewportType" : {
"description" : "Specifies the type of viewport to send. Possible values are one of:\n\n 0 (.LumaResampledToViewportSize): Luminance image resampled to viewport size\n 1 (.LumaCenterViewportRect): Center portion of luminance image of viewport size (useful for checking focus)\n\nIf an unsupported value is provided, `0` should be used\n\nSee `capture.ViewportFrequencyFrames` to ensure that the viewport is enabled.",
"value" : 0,
"type" : "Integer",
"public" : true
},
"debug.BreakpointEnabled" : {
"value" : false,
"public" : false,
"description" : "Localized breakpoint that can be triggered by a key press (see checkBreakpoint())",
"type" : "Boolean"
},
"debug.DrawAllMarks" : {
"type" : "Boolean",
"value" : false,
"public" : true,
"description" : "Enable to draw all marks found, not just those that result in a MatchResult"
},
"debug.DrawBitPatternHistogram" : {
"value" : false,
"public" : true,
"type" : "Boolean",
"description" : "Enable to draw histogram of the bit pattern usage"
},
"debug.DrawDeckExtents" : {
"description" : "Enable to draw the deck extents (top\/bottom lines of the deck)",
"type" : "Boolean",
"public" : true,
"value" : true
},
"debug.DrawDeckMatchResults" : {
"value" : false,
"description" : "Enable to draw DeckMatchResults for found decks",
"public" : true,
"type" : "Boolean"
},
"debug.DrawEdges" : {
"value" : false,
"type" : "Boolean",
"description" : "Causes the detected image edges to be drawn",
"public" : true
},
"debug.DrawFullSearchGrid" : {
"description" : "Enable to draw the full search grid",
"value" : false,
"public" : true,
"type" : "Boolean"
},
"debug.DrawMarkHistogram" : {
"public" : true,
"value" : false,
"description" : "Enable to draw histogram of the mark widths",
"type" : "Boolean"
},
"debug.DrawMarkLines" : {
"description" : "Enable to draw markers that represent bit ranges in the found deck",
"value" : true,
"public" : true,
"type" : "Boolean"
},
"debug.DrawMatchedDeckLocationDiscards" : {
"description" : "Enable to draw DeckLocations that were discarded",
"public" : true,
"type" : "Boolean",
"value" : false
},
"debug.DrawMatchedDeckLocations" : {
"description" : "Enable to draw DeckLocations that were found",
"value" : false,
"public" : true,
"type" : "Boolean"
},
"debug.DrawMouseEdgeDetection" : {
"type" : "Boolean",
"public" : false,
"description" : "Enable to draw edge detection detail charts along the lines where the edges detected (using the mouse drag to select the edge)",
"value" : false
},
"debug.DrawScanResults" : {
"type" : "Boolean",
"value" : false,
"description" : "Enable to draw the scanning results (the outlines on the image frame)",
"public" : true
},
"debug.DrawSearchedLines" : {
"public" : true,
"type" : "Boolean",
"description" : "Enable to draw lines that were searched",
"value" : false
},
"debug.DrawSequencedEdgeDetection" : {
"public" : false,
"type" : "Boolean",
"description" : "Enable to draw edge detection detail charts along the lines where the edges detected (using sequencing to select the edge)",
"value" : false
},
"debug.DrawSequentialSearchLineOrder" : {
"description" : "Enable to draw the line order sequentially in order to view search ordering",
"public" : false,
"type" : "Boolean",
"value" : false
},
"debug.DrawSharpnessGraphs" : {
"public" : true,
"value" : false,
"description" : "Enable drawing the sharpness graphs above all SampleLines where it is calculated (see decode.EnableSharpnessDetection)",
"type" : "Boolean"
},
"debug.DrawTraceMarks" : {
"public" : true,
"value" : false,
"type" : "Boolean",
"description" : "Enable to draw the trace marks (tracing landmarks to find deck extents)"
},
"debug.PauseOnCorrectDecode" : {
"value" : false,
"public" : false,
"description" : "Causes the processing to pause as soon as we fail to find a deck",
"type" : "Boolean"
},
"debug.PauseOnIncorrectDecode" : {
"description" : "Causes the processing to pause as soon as we find and process a deck",
"public" : false,
"type" : "Boolean",
"value" : false
},
"debug.RotateFrame" : {
"type" : "Boolean",
"description" : "Causes the input video to be rotated by 180 degrees to test upside-down inputs",
"public" : true,
"value" : false
},
"debug.ValidateResults": {
"type" : "Boolean",
"value" : true,
"public" : false,
"description" : "Causes the results to be validated (for internal debug use only)"
},
"debug.ViewportDebugView" : {
"value" : true,
"type" : "Boolean",
"description" : "Specifies if the viewport should be based on the debug buffer.\n\nSee `capture.ViewportFrequencyFrames` to ensure that the viewport is enabled.",
"public" : true
},
"deck.MinSamplesPerCard" : {
"type" : "Real",
"description" : "Minimum number of samples per card edge\n\nA test value of 2.0 is seriously challenging\n\nA value of 2.5 is nice, but limiting\n\nI generally tend to stick with 2.2.",
"value" : 2.0,
"public" : true
},
"decode.EnableSharpnessDetection" : {
"value" : true,
"type" : "Boolean",
"public" : true,
"description" : "Enables sharpness detection, which is used to determine if a frame is worth attempting to decode.\n\nFrames that are not sharp enough for reliable decoding can pollute the history. Therefore, decoding and the subsequent history pollution can be avoided if the frame is determined to be out of focus.\n\nA possible caveat to this is that codes that use error correction can reducde the need for sharpness detection. In fact, a frame that might be out of focus could potentially be decoded using error correction. This reduces the number of frames needed (i.e., shortens the time) for the confident result."
},
"decode.MarkLineAverageOffsetMultiplier" : {
"public" : true,
"type" : "FixedPoint",
"description" : "Denotes the relative intensity of a printed mark in order to be detected. Based on the min\/max range of a column of printed marks, a value of 0.5 will use the center of the min\/max range as the threshold. Smaller values (toward 0.0) will require more intense marks (Black under normal and IR light, bright under UV). Larger values (toward 1.0) will allow for less intense marks.\n\nA good starting point is 0.5.",
"value" : 0.5
},
"decode.MinimumSharpnessUnitScalarThreshold" : {
"description" : "Before attempting to decode a deck, the mark lines are used to perform sharpness calculations from sets of samples in the image data where the bits are known to be. These values represent the average across all mark lines maximum sharpness unit scalar values. If that calculated average falls below this threshold will not be scanned as they are assumed to be too blurry to scan reliably.\n\nThis value is only use if decode.EnableSharpnessDetection is also enabled.\n\nA value of 0 represents a deck that is fully blurred, while a value of 1.0 represents a deck that is in perfect sharpness.",
"type" : "FixedPoint",
"value" : 0.69999999999999996,
"public" : true
},
"decode.ResampleBitColumnLengthMultiplier" : {
"value" : 5.0,
"public" : true,
"description" : "Bit columns, when resampled, are resampled to this multiple of the maximum deck card count",
"type" : "FixedPoint"
},
"diagnostic.LumaFilePath" : {
"public" : false,
"description" : "When writing diagnostic LUMA files, where to store them",
"value" : "",
"type" : "String"
},
"edge.MinimumThreshold" : {
"type" : "RollValue",
"value" : 10.0,
"public" : true,
"description" : "Minimum amount of variance in the data needed for reliable edge detection\n\nIf the threshold is calculated to be less than this value, then there isn't enough variance in the source data (specifically, the slopes) for reliable edge detection. In this case, the threshold is clamped to this value, likely resulting in few or no edges detected."
},
"log.FileLocations" : {
"value" : [
"\/var\/log\/whisper.log",
"\/tmp\/whisper.log",
"whisper.log",
"~\/whisper.log"
],
"public" : false,
"description" : "Array of possible locations for the log file. The first value that can be written to will be used. If no value can be written, then no log file will be generated. Absolute and relative paths are allowed. If the path begins with a tilde ('~') then the path will be relative to the user's home directory.",
"type" : "PathArray"
},
"log.Masks" : {
"type" : "StringMap",
"description" : "Log file masks (see `Logger` for details)",
"public" : false,
"value" : {
"Console" : "!all !debug info warn error severe fatal !trace !perf !status !frame !search !decode !resolve !badresolve !correct !incorrect !result !badreport !network",
"UI" : "!all !debug info warn error severe fatal !trace !perf !status !frame !search !decode !resolve !badresolve !correct !incorrect !result !badreport !network",
"File" : "!all !debug info warn error severe fatal !trace !perf !status !frame !search !decode !resolve !badresolve !correct !incorrect !result !badreport !network"
}
},
"log.ResetOnStart" : {
"description" : "Should the log be emptied on startup?",
"value" : false,
"public" : false,
"type" : "Boolean"
},
"resolve.GenocideScaleFactor" : {
"description" : "The Genocide challenge compares two non-overlapping instances of a card to decide if one card's instance should simply go away. This is effectively throwing away a card's instance, assuming it is simply wrong. This should be a high-confidence challenge. To that end, we don't simply compare the raw counts. Rather, we scale the smaller count up by a scale factor and if the larger count is still greater than the smaller count, the instance with the greater count is considered the clear winner of the challenge.\n\nThis value should be chosen carefully. Under normal circumstances, using properly encoded cards with high Hamming distances, the need for a Genocide challenge should be very rare as it should only arise if a card is mis-read as a different card. Therefore, if a challenge does arise, there should be a great difference between the mis-read instance and the actual.\n\nSetting this value to less than 1.0 or less will always return a clear winner to the instance with the higher count. As this value increases above 1.0, the challenge becomes more difficult. This is a good thing, as this increases the confidence of the challenge. However, setting this value too high can provide a confidence level that is impossible to to obtain causing all challenges to fail and resulting in duplicate cards returned in the set.",
"type" : "FixedPoint",
"value" : 1.0,
"public" : true
},
"search.BaseMaxEdgeTraceMisses" : {
"public" : true,
"description" : "Do not use this value directly - instead, use `kMaxEdgeTraceMisses`",
"value" : 5,
"type" : "Integer"
},
"search.BatterySaverIntervalMS" : {
"value" : 250,
"type" : "Integer",
"description" : "If a deck is not found within the period of time specified by `search.BatterySaverStartMS`, the battery saver is initiated. \n\nDuring battery saver scanning is performed for one frame every `search.BatterySaverIntervalMS` milliseconds until a deck is found, at which point battery saver is disabled again.",
"public" : true
},
"search.BatterySaverStartMS" : {
"public" : true,
"value" : 600000,
"type" : "Integer",
"description" : "If a deck is not found within the period of time specified by `search.BatterySaverStartMS`, the battery saver is initiated. \n\nDuring battery saver scanning is performed for one frame every `search.BatterySaverIntervalMS` milliseconds until a deck is found, at which point battery saver is disabled again."
},
"search.CodeDefinition" : {
"value" : "mds12-54r",
"public" : false,
"type" : "CodeDefinition",
"description" : "The name of the code definition to search for"
},
"search.EdgeDetectionDeckEdgeSensitivity" : {
"value" : 0.20000000000000001,
"public" : true,
"description" : "Edge sensitivity used for edge detection when searching for the deck\n\nFor details, see EdgeDetection.detectEdges",
"type" : "FixedPoint"
},
"search.EdgeDetectionDeckPeakRollingAverageOverlap" : {
"value" : 0,
"public" : true,
"type" : "Integer",
"description" : "Rolling average overlap used for edge detection when searching for the deck\n\nFor details, see EdgeDetection.detectEdges"
},
"search.EdgeDetectionDeckRollingMinMaxWindowMultiplier" : {
"value" : 6.7699999999999996,
"public" : true,
"type" : "Real",
"description" : "Rolling min\/max window size multiplier (relative to the rolling average window size) used for edge detection when searching for the deck\n\nFor details, see EdgeDetection.detectEdges\n\nThe rolling average window size is calculated by the narrowest landmark. This value is a multiple of that calculated rolling window size in order to provide an overall min\/max of the pixels around that window. If the rolling average window is calculated as being 13 and the multiplier is 6, then the final min\/max rolling window size would be 78."
},
"search.LineBidirectional" : {
"value" : false,
"public" : true,
"type" : "Boolean",
"description" : "If true, a set of bi-directional search lines will be generated, capable of locating decks that are upside-down in frame."
},
"search.LineHorizontalWeightAdjustment" : {
"public" : true,
"type" : "Real",
"description" : "Specifies the priority of scanning horizontal (offset) versus rotated (angle) search lines\n\nLarger numbers increase priority to horizontal scanning early in the scanning process",
"value" : 0.46999999999999997
},
"search.LineLinearDensity" : {
"description" : "Specifies the linear density of search lines, used to search for the deck in each frame of video. \n\nSearch lines can be clustered near the origin (i.e., the last known place where the deck was found, or the center of the frame of video if no deck has been found recently.) This is to account for for the higher likelihood of the deck being close to where it was last found or near the center of the frame. Some clustering is recommended. \n\nA value of 1.0 would indicate no clustering with the number of search lines (see `search.LineLinearSteps`) being evenly distributed through the image. A value of 2.0 will distribute the search lines such that there are more near the origin, with fewer search lines spreading out from the origin. Higher values increase this clustering even more, but be careful - this is an exponential value. \n\nGeneraly speaking, a value of 2.0 would provide moderate clustering, a value of 3.0 would provide a high amount of clustering, with values of 4.0 and higher being exponentially increasing extremes. \n\nNote that there is an internal limit placed on the search lines, such that no two search lines can be too similar. Therefore, extreme amounts of clustering would result in fewer search lines because the lines would be so clustered near the origin that they would be considered duplicates and filtered out.",
"public" : true,
"value" : 3.0,
"type" : "Real"
},
"search.LineLinearLimitScalar" : {
"public" : true,
"value" : 0.3,
"description" : "Scales the search line offset. Generally, this should be a value from 0..1. A value of 0.5 would limit the search lines to within half the distance from the center to the widest dimension of the screen.",
"type" : "Real"
},
"search.LineLinearSteps" : {
"description" : "Specifies the number of search lines between spreading out from the origin of the search grid.. For example, a value of 5 would represent 5 search lines to cover the area from the origin to the height or width of the video image. \n\nThe search lines are not expected to be evenly distributed - see `search.LineLinearDensity` for more information. \n\nNote that there is an internal limit placed on the search lines, such that no two search lines can be too similar. Therefore, extreme amounts of clustering would result in fewer search lines because the lines would be so clustered near the origin that they would be considered duplicates and filtered out. \n\nAlso note that higher larger numbers cause initial searches to take longer, which could cause more battery use.",
"value" : 3.0,
"public" : true,
"type" : "Real"
},
"search.LineMaxAngleCutoff" : {
"description" : "Search lines will not exist with a larger angle than this value (relative to the horizontal direction of a video frame.)This value probably should be set to anything larger than 90.",
"type" : "Real",
"value" : 10.0,
"public" : true
},
"search.LineMinAngleCutoff" : {
"value" : -10.0,
"public" : true,
"type" : "Real",
"description" : "Search lines will not exist with a smaller angle than this value (relative to the horizontal direction of a video frame.) This value probably shouldn't be set to anything smaller than 0."
},
"search.LineRotationDensity" : {
"value" : 3.0,
"public" : true,
"description" : "Specifies the rotational density of search lines, used to search for the deck in each frame of video. \n\nSearch lines can be clustered near 90-degree orientations to accommodate for the higher likelihood of the deck being either perfectly vertical or horizontal. Some clustering is recommended. \n\nA value of 1.0 would indicate no clustering with the number of rotational search lines (see `search.LineRotationSteps`) being evenly distributed from 0-90 degrees. A value of 2.0 will distribute the search lines such that there are more search lines near the 0-degree and 90-degree angles, with fewer near the 45-degree angle. Higher values increase this clustering even more, but be careful - this is an exponential value.\n\nGeneraly speaking, a value of 2.0 would provide moderate clustering, a value of 3.0 would provide a high amount of clustering, with values of 4.0 and higher being exponentially increasing extremes. \n\nNote that there is an internal limit placed on the search lines, such that no two search lines can be too similar. Therefore, extreme amounts of clustering would result in fewer search lines because the lines would be so clustered near the 90-degree angles that they would be considered duplicates and filtered out.",
"type" : "Real"
},
"search.LineRotationSteps" : {
"description" : "Specifies the number of rotational search lines between the 0- and 90-degree rotations. For example, a value of 5 would represent 5 rotations between 0 and 90. \n\nThe search lines are not expected to be evenly distributed - see `search.LineRotationDensity` for more information. \n\nNote that there is an internal limit placed on the search lines, such that no two search lines can be too similar. Therefore, extreme amounts of clustering would result in fewer search lines because the lines would be so clustered near the 90-degree angles that they would be considered duplicates and filtered out. \n\nAlso note that higher larger numbers cause initial searches to take longer, which could cause more battery use.",
"value" : 80.0,
"type" : "Real",
"public" : true
},
"search.MaxDeckMatchError" : {
"public" : true,
"value" : 1.5,
"description" : "Do not match decks with this much (or more) error",
"type" : "Real"
},
"search.TemporalExpirationMS" : {
"value" : 200.0,
"description" : "Temporal coherence tracks the deck in the frame. If our temporal state is older than this, it is considered to be expired.",
"public" : true,
"type" : "Time"
},
"search.TraceMarkBackupDistance" : {
"description" : "How much to backup (after reaching an extent) in order to find extents with higher detail",
"value" : 10,
"public" : true,
"type" : "Integer"
},
"search.TraceMarksEdgeSensitivity" : {
"public" : true,
"description" : "Edge sensitivity used for tracing landmarks\n\nThis value represents the sensitivity of detecting the top\/bottom edge of Landmarks in the deck in order to determine the top\/bottom edges of the deck. This value ranges from [0,1] with smaller increasing sensitivity. Be careful with this, as the ratio being used here will trend above 0.5.",
"value" : 0.59999999999999998,
"type" : "FixedPoint"
},
"search.TraceMarksMaxStray" : {
"public" : true,
"value" : 0.5,
"description" : "Amount a trace mark is allowed to stray from center, allowing for imperfectly squared decks.\n\nThis value represents a ratio of the width of a mark. A value of 0.5 allows a stray of half the width of the mark. A value of 1.0 would allow the mark to stray its full width.\n\nNote that this value is dependent upon the width of the traced mark.",
"type" : "FixedPoint"
},
"search.UseLandmarkContours" : {
"value" : true,
"public" : false,
"description" : "Performs interpolation along MarkLines using the contour of the bit-neighboring LandMarks rather than the top\/bottom line",
"type" : "Boolean"
},
"system.ReservedDiskSpaceMB" : {
"type" : "Integer",
"value" : 500,
"public" : false,
"description" : "The application will reserve this much space on the system, failing to write data to the disk if it causes the system to have this less than this much space"
},
"testbed.DrawViewport" : {
"description" : "Enable drawing the video output to the testbed viewport.\n\nNote that for this to work, debug.ViewportDebugView also needs to be enabled.",
"type" : "Boolean",
"value" : true,
"public" : false
},
"testbed.FilterInputBoxFilter" : {
"type" : "Boolean",
"description" : "Enable\/disable a box filter on the input video",
"value" : false,
"public" : false
},
"testbed.FilterInputContrastEnhance" : {
"public" : false,
"description" : "Enable\/disable contrast enhancement on the input video",
"type" : "Boolean",
"value" : false
},
"testbed.FilterInputHackMap" : {
"value" : false,
"type" : "Boolean",
"description" : "Enable\/disable a hack-map on the input video (this is generally used to test out various hacks at various times)",
"public" : false
},
"testbed.FilterInputHistogramNormalization" : {
"type" : "Boolean",
"public" : false,
"description" : "Enable\/disable histogram normalization on the input video",
"value" : false
},
"testbed.FilterInputLowPass" : {
"value" : false,
"type" : "Boolean",
"description" : "Enable\/disable a low-pass filter on the input video",
"public" : false
},
"testbed.ViewInterpolation" : {
"type" : "Boolean",
"public" : false,
"value" : false,
"description" : "Disables output interpolation (faster and more sample-accurate, but bad for detailed debug info on high-rez images)"
}
}