Observed since 20 Oct, 16:19 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Python bindings for the GeneralPlus A1800 audio codec
A Rust encoder and decoder for the GeneralPlus A1800 audio codec, reverse-engineered from A1800.DLL.
The A1800 is a fixed-point subband audio codec that splits 320-sample frames (20 ms at 16 kHz) into 32 subbands using a 5-stage butterfly filterbank. It supports bitrates from 4800 to 32000 bps in steps of 800. All arithmetic uses ITU-T G.729-style saturating i16/i32 operations.
See Codec.md for the full technical reference, including the decode/encode pipelines, constant tables, DLL function map, and known differences between this implementation and the original DLL.
This code was co-developed with Claude Opus 4.6 and made use of Ghidra 12.0.2 and ghidra-mcp v2.0.0
cargo build --release
No external dependencies.
# Decode .a18 to WAV
a1800_codec decode input.a18 output.wav [--sample-rate 16000]
# Encode WAV to .a18
a1800_codec encode input.wav output.a18 [--bitrate 16000]
Input WAV files must be mono 16-bit PCM. The default sample rate is 16000 Hz and the default bitrate is 16000 bps.
| Offset | Size | Type | Description |
|---|---|---|---|
| 0x00 | 4 | LE u32 | Byte count of frame data |
| 0x04 | 2 | LE u16 | Bitrate |
| 0x06 | ... | bytes | Frames, each (bitrate/800) x 2 bytes |
At 16 kHz / 16 kbps:
Bitrates 4800-24000 bps are supported for encoding. Decoding works at all bitrates.
See Testing.md for more information about non-synthetic tests.
cargo test
52 tests cover fixed-point arithmetic, bitstream I/O, encoder/decoder round-trips at multiple bitrates, filterbank invertibility, and a 5-second WAV round-trip.
This is an independent clean-room reimplementation based on static analysis of the original DLL. No original source code or proprietary headers were used.
A1800.DLL FurbyDownload counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.1.0 | 8 Feb 2026 | 0 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 16:19 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:ed13f1188d4582c06e4e2e92e718b8eacd637136da3ece9609e2fa898980a8f6