A FLAC encoder and decoder for Zig, written against RFC 9639, for native FLAC streams and FLAC in Ogg
README.md

The example files from RFC 9639 #

The three files here are Appendix D of RFC 9639, Free Lossless Audio Codec (FLAC), transcribed byte for byte from the hexadecimal listings the appendix prints:

File Bytes What it is
example1.flac 57 Two channels of one sample each, both verbatim subframes with wasted bits (Appendix D.1).
example2.flac 227 Nineteen samples of stereo, fixed predictors, and a seek table, a Vorbis comment and a padding block besides (Appendix D.2).
example3.flac 73 Twenty-four samples of 8-bit mono, a linear predictor, and a coded residual of more than one partition (Appendix D.3).

Between them they exercise every subframe type, both stereo layouts that turn up in such short files, wasted bits, an escaped Rice partition and a coded residual split across partitions. The appendix walks each one through field by field, which is why the tests that read them cite it by section: where a test asserts a sample value or a CRC, the number is one the RFC prints rather than one this implementation produced.

Every file carries an MD5 of its unencoded audio in its streaminfo block, so decoding one and comparing that digest is a complete check of the decoder against a reference encoder's output.

The appendix is informational and its files are code components of the RFC, which the IETF Trust licenses under the Revised BSD License; REUSE.toml records that.