mirror of
https://github.com/iluvcapra/bwavfile.git
synced 2025-12-31 08:50:44 +00:00
09a9413ff2880e6e7958d0d9b482060165d5852a
bwavfile
Rust Wave File Reader/Writer with Broadcast-WAV, MBWF and RF64 Support
This is currently a work-in-progress!
Features
- Read standard WAV, Broadcast-Wave, and 64-bit RF64 and BW64 wave files with one interface for all types with transparent format detection.
- Unified format definition interface for standard and extended-format wave files.
- Read channel/speaker map metadata.
- Read standard EBU Broadcast-Wave metadata and decode to fields, including timestamp and SMPTE UMID.
- Validate the compatibility of a given wave file for certain regimes.
- Metadata support for ambisonic B-format.
In Progress
- Wave/RF64 file writing.
- iXML and ADM XML metadata reading/writing.
Use Examples
Reading Audio Frames From a File
use bwavfile::WaveReader;
let mut r = WaveReader::open("tests/media/ff_silence.wav").unwrap();
let format = r.format().unwrap();
assert_eq!(format.sample_rate, 44100);
assert_eq!(format.channel_count, 1);
let mut frame_reader = r.audio_frame_reader().unwrap();
let mut buffer = frame_reader.create_frame_buffer();
let read = frame_reader.read_integer_frame(&mut buffer).unwrap();
assert_eq!(buffer, [0i32]);
assert_eq!(read, 1);
Note on Testing
All of the media for the integration tests is committed to the respository
in zipped form. Before you can run tests, you need to cd into the tests
directory and run the create_test_media.sh script. Note that one of the
test files (the RF64 test case) is over four gigs in size.
Description
Languages
Rust
98.3%
Shell
1.7%