Rate control: quantize → predict → entropy code

← codec comparison (index.html)

Window = one block group: a minute of 60 blocks, 5 consecutive seconds of each of the 12 signal kinds, every block rescaled to [0, 1], standing in for one sensor passing through different regimes. 5 groups (one per report seed); bits/sample are whole block groups, every byte counted. Errors are absolute, which equals % of each block's full scale; they are per block, summarized over all blocks (or a kind's blocks). Regenerate: cd experimental && uv run python make_rate_report.py.

Method

Summary

coderrate controlavg bits/sampleoverall RMSEmedian block RMSEworst block RMSEworst max |err|capped blocksencode µs/block
delta0123-ricewindow4.0000.0584%0.0570%0.214%0.367%171081
delta0123-ricefixed3.7060.2493%0.0633%3.554%6.246%—31880
delta0123-zstdwindow3.9960.0238%0.0185%0.236%0.403%3811883
delta0123-zstdfixed3.0350.2426%0.0402%2.703%4.818%—3706
delta0123-deflatewindow3.9990.0255%0.0214%0.230%0.399%3020437
delta0123-deflatefixed2.9720.2850%0.0422%3.335%5.729%—5921
flacwindow3.9420.0422%0.0396%0.208%0.356%12233
flacfixed3.4840.2654%0.0187%3.857%6.790%—1228
best: rice|zstdwindow3.9990.0206%0.0166%0.217%0.373%29122260
best: rice|zstdfixed2.9760.2059%0.0274%2.703%4.818%—37747
best: rice|zstd|flacwindow3.9900.0153%0.0078%0.205%0.359%74168849
best: rice|zstd|flacfixed3.1020.1994%0.0012%2.703%4.818%—40172
0-order entropywindow4.0000.0172%0.0162%0.103%0.183%26074
0-order entropyfixed3.0070.1720%0.0144%1.987%3.406%—2454
delta0123-zstd-8one-shot2.8260.1086%0.1128%0.226%0.393%16
delta0123-zstd-10one-shot3.8440.0313%0.0282%0.226%0.393%366
delta0123-zstd-12one-shot4.4130.0224%0.0071%0.226%0.393%1247
delta12-zstd-8one-shot2.9270.1086%0.1128%0.226%0.393%16
quant8-delta1-deflate (earlier codec)none3.0790.1080%0.1127%0.120%0.196%——

One-shot rows include each block's min and max, stored in the block group. Encode time is the full rate-control search for window/fixed rows (Python, single thread), per block; one-shot is a single pass. Every block spans [0, 1], so one-shot's per-block step and the shared window step mean the same thing.

Bits and error per signal kind

Per-kind bits and RMSE

Per signal kind: delta0123-zstd-10 / one-shot

Median over the kind's 25 blocks; bits/sample is the block coded on its own (inside the block group it only has a share of the total).

signalorder (most blocks)stepbits/sampleRMSEmean errmax errmin errmax |err|
linearB=10 order 10.0009780.430.0282%-0.0000%+0.0000%+0.0000%0.0487%
quadraticB=10 order 10.0009781.140.0289%-0.0009%+0.0000%+0.0000%0.0489%
sin-4.12hzB=10 order 20.0009782.340.0281%+0.0001%+0.0000%+0.0000%0.0488%
sin-9.87hzB=10 order 30.0009782.820.0280%+0.0004%+0.0000%+0.0000%0.0488%
sin-50.3hzB=10 order 30.0009785.580.0281%+0.0006%+0.0000%+0.0000%0.0489%
gauss-spikesB=10 order 20.0009786.470.0282%-0.0002%+0.0000%+0.0000%0.0488%
impulsesB=10 order 00.0009785.980.0289%-0.0007%+0.0000%+0.0000%0.0489%
square-2.24hzB=9 order 10.001960.450.0000%+0.0000%+0.0000%+0.0000%0.0000%
random-walkB=10 order 10.0009787.380.0282%+0.0000%+0.0000%+0.0000%0.0488%
chirpB=10 order 30.0009787.120.0280%+0.0001%+0.0000%+0.0000%0.0488%
noisy-sineB=10 order 10.0009788.020.0282%-0.0000%+0.0000%+0.0000%0.0488%
sensor-0.1B=10 order 10.0009782.980.0283%+0.0002%+0.0000%+0.0000%0.0489%

Per signal kind: delta0123-zstd / window

Block group Δ = 0.000679, 0.000635, 0.00063, 0.00063, 0.000655

Median over the kind's 25 blocks; bits/sample is the block coded on its own (inside the block group it only has a share of the total).

signalorder (most blocks)stepbits/sampleRMSEmean errmax errmin errmax |err|
linearorder 10.0006350.330.0183%-0.0001%+0.0090%+0.0000%0.0317%
quadraticorder 10.0006350.770.0184%+0.0001%+0.0090%+0.0000%0.0317%
sin-4.12hzorder 20.0006352.020.0183%+0.0001%+0.0090%+0.0000%0.0317%
sin-9.87hzorder 30.0006352.670.0183%+0.0001%+0.0090%+0.0000%0.0317%
sin-50.3hzorder 30.0006355.860.0184%+0.0000%+0.0090%+0.0000%0.0317%
gauss-spikesorder 20.0006356.780.0185%-0.0003%+0.0090%+0.0000%0.0317%
impulsesorder 00.0006356.530.0185%+0.0001%+0.0090%+0.0000%0.0317%
square-2.24hzorder 00.0006350.370.0063%+0.0044%+0.0090%+0.0000%0.0090%
random-walkorder 10.0006797.830.0197%+0.0000%+0.0052%+0.0000%0.0339%
chirporder 30.0006357.550.0185%+0.0003%+0.0090%+0.0000%0.0317%
noisy-sineorder 10.001057.890.0294%+0.0003%-0.0076%+0.0000%0.0523%
sensor-0.1order 10.0006352.720.0185%-0.0002%+0.0090%+0.0000%0.0316%

Per signal kind: best: rice|zstd|flac / window

Block group Δ = 0.000278, 0.000275, 0.000266, 0.000261, 0.000245

Median over the kind's 25 blocks; bits/sample is the block coded on its own (inside the block group it only has a share of the total).

signalorder (most blocks)stepbits/sampleRMSEmean errmax errmin errmax |err|
lineardelta0123-zstd order 10.0002660.420.0077%-0.0000%-0.0009%+0.0000%0.0133%
quadraticdelta0123-zstd order 10.0002660.990.0076%+0.0001%-0.0009%+0.0000%0.0133%
sin-4.12hzdelta0123-zstd order 20.0002662.340.0076%+0.0000%-0.0009%+0.0000%0.0133%
sin-9.87hzdelta0123-rice order 30.0002662.740.0077%-0.0001%-0.0009%+0.0000%0.0133%
sin-50.3hzflac LPC0.0002663.100.0077%+0.0001%-0.0009%+0.0000%0.0133%
gauss-spikesflac LPC0.0002667.530.0078%-0.0000%-0.0009%+0.0000%0.0133%
impulsesdelta0123-zstd order 00.0003167.700.0091%-0.0000%-0.0018%+0.0000%0.0158%
square-2.24hzdelta0123-zstd order 00.0002660.380.0028%-0.0004%-0.0009%+0.0000%0.0040%
random-walkdelta0123-rice order 10.000447.940.0126%-0.0000%+0.0049%+0.0000%0.0220%
chirpflac LPC0.0002664.630.0077%+0.0001%-0.0009%+0.0000%0.0133%
noisy-sinedelta0123-rice order 10.000697.960.0196%-0.0000%-0.0036%+0.0000%0.0345%
sensor-0.1delta0123-zstd order 10.0002662.730.0077%-0.0003%-0.0009%+0.0000%0.0131%

Per signal kind: best: rice|zstd|flac / fixed

Block group Δ = 9.31e-10, 9.31e-10, 9.31e-10, 9.31e-10, 9.31e-10

Median over the kind's 25 blocks; bits/sample is the block coded on its own (inside the block group it only has a share of the total).

signalorder (most blocks)stepbits/sampleRMSEmean errmax errmin errmax |err|
lineardelta0123-zstd order 19.31e-100.440.0000%-0.0000%-0.0000%+0.0000%0.0000%
quadraticdelta0123-zstd order 29.31e-101.320.0000%-0.0000%-0.0000%+0.0000%0.0000%
sin-4.12hzflac LPC1e-073.980.0000%+0.0000%-0.0000%+0.0000%0.0000%
sin-9.87hzflac LPC3.21e-063.980.0001%-0.0000%+0.0002%+0.0000%0.0002%
sin-50.3hzflac LPC1.66e-053.690.0005%+0.0000%+0.0001%+0.0000%0.0008%
gauss-spikesdelta0123-rice order 10.003583.940.1029%-0.0026%+0.0027%+0.0000%0.1786%
impulsesdelta0123-zstd order 00.004653.960.1378%-0.0055%-0.1252%+0.0000%0.2322%
square-2.24hzdelta0123-zstd order 09.31e-100.500.0000%-0.0000%-0.0000%+0.0000%0.0000%
random-walkdelta0123-rice order 10.007163.900.2051%-0.0034%-0.0107%+0.0000%0.3576%
chirpflac LPC0.001643.980.0472%+0.0000%+0.0207%+0.0000%0.0819%
noisy-sinedelta0123-rice order 10.0113.960.3188%-0.0036%+0.5417%+0.0000%0.5521%
sensor-0.1delta0123-zstd order 17.26e-053.290.0021%+0.0000%-0.0018%+0.0000%0.0036%