RAU history
RAU grew from a small predictive audio codec into a memory-only codec with streaming, parallel encoding and five quality profiles. These milestones follow the PureBasic reference's recorded changelog. Version numbers below identify development revisions.
Foundation
- 1.0: Fixed-order linear prediction, Rice/Golomb residual coding, stereo decorrelation and Constant/Repeat shortcuts.
- 1.1: Larger frames reduced header overhead.
- 1.2: Frames reached 1,024 samples per channel; Rice block candidates expanded to 64, 128, 256 and 512 residuals.
- 1.3: Added a sign-sign LMS filter for lossless residuals and weighted stereo prediction.
- 1.4: Bulk bit-reader refill and combined Rice decoding accelerated the decoder.
- 1.5: The encoder began choosing whether LMS helps each frame.
- 1.6: A fixed-width Rice escape bounded unary runs for outliers.
Encoding and streaming
- 1.7: Candidate ranking by absolute residual sum reduced expensive Rice searches.
- 1.8: Table-based parameter lookups simplified the implementation.
- 1.9: Independent packet encoding allowed parallel workers; parameters were resolved once for the entire track.
- 1.10: Mutex protection made error-message updates safe during concurrent encoding.
- 2.0: An explicit sample-rate field preserved the exact source rate for Lossless. Five profiles received fixed targets: Lossless, High, Mid, Low and Crappy.
- 2.1: Approximately one-second packets became independent of worker count. Whole-track resampling before packet splitting preserved continuity. Serial encoding remained available without thread-safe compilation.
Decoder refinement
- 2.2: Output scaling moved outside the per-sample decoder loop.
- 2.3: Stereo transform loops switched to linear memory offsets.
- 2.4: Constant-frame decoding selected mono/stereo once and wrote linearly.
- 2.5: Header, packet metadata, length and sample-count validation were hardened; public helpers gained input validation.
- 2.6: Incremental decoding consumed packets through the existing stream decoder, without preparing an entire track's PCM in advance. Whole-buffer decoding retained a single public entry point.
Website implementations
The C and JavaScript implementations reproduce the reference codec. JavaScript adds local WAV import/export for the browser converter. The downloadable PureBasic module packages the same reference implementation without project-specific includes. All three implementations use RA26 streams and RC26 packet containers.
The C and JavaScript ports were checked against the reference PCM corpus. Lossless, Mid and Crappy encodings of “Theorie” matched the PureBasic output byte for byte. The ports also passed 120 cross-language conformance cases.