redlux

Crates.ioredlux
lib.rsredlux
version0.7.0
sourcesrc
created_at2021-02-01 22:58:28.979865
updated_at2023-06-04 18:47:37.960474
descriptionAAC decoder for MPEG-4 (MP4, M4A etc) and AAC files, with rodio support
homepagehttps://github.com/probablykasper/redlux#readme
repositoryhttps://github.com/probablykasper/redlux
max_upload_size
id349429
size254,705
Kasper (probablykasper)

documentation

https://docs.rs/redlux

README

redlux

Crates.io Documentation

AAC decoder for MPEG-4 (MP4, M4A etc) and AAC files, with rodio support

Reads MPEG-4 containers using rust-mp4, and then constructs ADTS headers for it. Decodes AAC to PCM using fdk-aac c-bindings. Check the examples for usage with rodio.

Supports AAC-LC, HE-AAC v1 (SBR) and HE-AAC v2 (PS).

Caveats

Would appreciate any help with figuring these out:

  1. It only decodes the first AAC track it finds in an MPEG-4 container.
  2. MPEG files with CRC are probably not supported.
  3. According to this MultimediaWiki page, 13 bits of the ADTS header is for specifying the frame length, and this number must include the ADTS header itself. For 8 channel audio, I would assume the frame length could be 8192 bytes, and if we add the header bytes on top of that, it would exceed what 13 bits can carry. Is this a potential issue?
  4. Not sure about the licensing situation. Is fdk-aac free to use? Are AAC patent licenses needed?

Dev instructions

Get started

Install Rust.

Run tests:

cargo test

Build:

cargo build

Releasing a new version

  1. Update CHANGELOG.md
  2. Bump the version number in Cargo.toml
  3. Run cargo test
  4. Run cargo publish
  5. Create a git tag in format v#.#.#
  6. Create GitHub release with release notes
Commit count: 31

cargo fmt