Aurora.rs is a framework (with some DNA from Aurora.js, with some additional sprinkles of Media Foundation) that makes writing media pipelines in Rust easier.
It will handle common media tasks like binary data streams and building media decoding topologies. It doesn't support any of the high-level features of Aurora.js yet (and probably won't) and most of the low-level stuff is broken, but it does something Aurora.js doesn't, and that is that it supports encoders as well as decoders.
It is also intended to support video, which isn't really in the realm of JS performance right now, and Images, which we just didn't feel was a focus in Aurora.js.
- WAV mux, demux. (mostly, but it is brittle)
- Au mux.
- PCM transcoder (always round-trips via double, so while accurate, it might be slow)
To finish my thesis, I will need to implement at least
- Short-time Fourier Transforms (for generating spectrograms).
- MDCT.
- BMP encoder.
- Some orchestration of topologies, now you need to control each element manually.
- AIFF, MPEG-1, MPEG-2, Ogg, QuickTime, CAF, and MPEG-4 demuxers.
- MP3, AAC, Vorbis, and FLAC decoders.
- BMP, TIFF, JPEG, GIF and PNG decoders.
- Automatic setting of stream types, based on what is supported by a transform.
It would be really cool if this could be used in Servo for audio / video / img tags, but I doubt it will, mainly due to licensing reasons. It is also meant to support my thesis, since I am getting tired of working with Python.
You can make aurora
to build the library, or make all
to also build the example applications.
You should be able to run make examples
to build the examples, then run them.
bin/wav-to-wav-s16
convertsmedia/wav/test-float.wav
intooutput.wav
with 16-bit signed samples.bin/wav-to-au-s16
convertsmedia/wav/test-float.wav
to 16-bit signed samples and writes as a.au
to standard out.
Aurora.rs was written by @jensnockert, and you should check out the Audiocogs Github, where there is a lot of code related to media.
In addition Aurora.js is currently being developed by @devongovett and he is really awesome (and also a member of Audiocogs).
If you want to contact me about it, either tweet or poke me on #audiocogs (Freenode IRC) or #rust (Mozilla IRC).
Aurora.rs is released under the MIT license.