Awesome
SELA
SimplE Lossless Audio
A lossless audio codec which aims to be as simple as possible while still having good enough compression ratios.
Code Quality Metrics
Build Requirements
- cmake
- MSVC/GCC/CLANG/INTEL (Any compiler supporting C++11 should work)
- libao-dev (linux/bsd) / On windows you can skip this dependency
Current status
Task | Status |
---|---|
Encoder | DONE |
Decoder | DONE |
Reading and Writing WAV files | DONE |
Reading and Writing SELA files | DONE |
Multithreaded Encoding & Decoding | DONE |
Player | DONE |
Metadata support | TODO |
Seektable support | TODO |
Support for 24 bit audio | TODO |
Optimization | TODO |
Block Diagrams
To understand the core algorithm, see code in frame namespace, frame namespace utilizes maths which is implemented in lpc and rice namespaces.
References
- Linear Prediction
- Golomb-Rice lossless compression algorithm
- FLAC overview
- Paper on shorten, the original open source lossless codec
- ISO/IEC 14496 Part 3, Subpart 11 (Audio Lossless Coding)
NOTE: You can get the legacy C code by switching to legacy
branch.
Also, check out the Java version of this codec at https://github.com/sahaRatul/sela-java