You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Claxon is a FLAC decoder written in pure Rust. It has been fuzzed and verified
against the reference decoder for correctness. Its performance is similar to the
reference decoder.
Example
The following example computes the root mean square (RMS) of a FLAC file:
letmut reader = claxon::FlacReader::open("testsamples/pop.flac").unwrap();letmut sqr_sum = 0.0;letmut count = 0;for sample in reader.samples(){let s = sample.unwrap()asf64;
sqr_sum += s * s;
count += 1;}println!("RMS is {}",(sqr_sum / count asf64).sqrt());
More examples can be found in the examples directory. For a simple example
of decoding a FLAC file to wav with Claxon and Hound, see
decode_simple.rs. A more efficient way
of decoding requires dealing with a few details of the FLAC format.
See decode.rs for an example.
Performance
These are the times to decode 5 real-world FLAC files to wav, average and
standard deviation of 11 runs, normalized to version 1.3.2 of the reference
implementation. Measurements were done on a Skylake i7. Claxon was
compiled with Rust 1.26.0.
Decoder
Time / reference
Claxon
1.10 ± 0.01
libflac
1.00 ± 0.01
Note that for decent performance, Claxon should be compiled with
-C codegen-units=1 on Rust ≥ 1.24.0. Not passing this RUSTFLAG can
cause as much as a 45% increase in running time.
Contributing
Contributions in the form of bug reports, feature requests, or pull requests are
welcome. See contributing.md.
License
Claxon is licensed under the Apache 2.0 license. It may be used in
free software as well as closed-source applications, both for commercial and
non-commercial use under the conditions given in the license. If you want to
use Claxon in your GPLv2-licensed software, you can add an exception
to your copyright notice. Please do not open an issue if you disagree with the
choice of license.