Expand description
§ww2ogg
Convert Wwise RIFF/RIFX Vorbis audio files (.wem) to standard Ogg Vorbis format.
This is a Rust port of ww2ogg, which converts Wwise audio containers back to standard Ogg Vorbis streams by rebuilding the Vorbis headers and converting the audio packets.
§Overview
Wwise (by Audiokinetic) is a popular audio middleware used in games. It stores audio in a modified Vorbis format that strips the standard headers and references external codebook libraries. This crate converts these files back to standard Ogg Vorbis that can be played by any audio player.
§Quick Start
use std::fs::File;
use std::io::{BufReader, BufWriter};
use ww2ogg::{WwiseRiffVorbis, CodebookLibrary};
fn main() -> Result<(), ww2ogg::WemError> {
// Open input .wem file
let input = BufReader::new(File::open("input.wem")?);
// Load the default codebook library
let codebooks = CodebookLibrary::default_codebooks()?;
// Create converter and parse the input
let mut converter = WwiseRiffVorbis::new(input, codebooks)?;
// Convert to Ogg Vorbis
let mut output = BufWriter::new(File::create("output.ogg")?);
converter.generate_ogg(&mut output)?;
Ok(())
}§Codebook Libraries
Wwise audio files reference external codebook libraries. Two are provided:
CodebookLibrary::default_codebooks()- Standard codebooks (try this first)CodebookLibrary::aotuv_codebooks()- aoTuV 6.03 codebooks (for some games)
If conversion produces garbled audio, try the other codebook library.
§Validation
Use validate() to verify the converted audio is valid:
use ww2ogg::validate;
fn check_output(ogg_data: &[u8]) -> Result<(), ww2ogg::WemError> {
validate(ogg_data)?;
println!("Audio is valid!");
Ok(())
}§Builder Pattern
For advanced configuration, use the builder pattern:
use std::fs::File;
use ww2ogg::{WwiseRiffVorbis, CodebookLibrary, ForcePacketFormat};
let input = File::open("input.wem")?;
let codebooks = CodebookLibrary::aotuv_codebooks()?;
let mut converter = WwiseRiffVorbis::builder(input, codebooks)
.inline_codebooks(false)
.full_setup(false)
.force_packet_format(ForcePacketFormat::NoForce)
.build()?;§Error Handling
All operations return WemResult<T>, which is an alias for Result<T, WemError>.
Common errors include:
WemError::Parse- Invalid or corrupted input fileWemError::SizeMismatch- Wrong codebook library (try the other one)WemError::InvalidCodebookId- Try--inline-codebooksoptionWemError::Codebook- Validation failed, likely wrong codebook
Re-exports§
pub use validator::validate;
Modules§
- validator
- Vorbis validation for converted audio streams.
Structs§
- Codebook
Library - Provides Vorbis codebook data for rebuilding audio streams from Wwise files.
- Conversion
Options - Configuration options for Wwise to Ogg conversion.
- Wwise
Riff Vorbis - Converts Wwise RIFF/RIFX Vorbis audio files (.wem) to standard Ogg Vorbis format.
- Wwise
Riff Vorbis Builder - Builder for creating
WwiseRiffVorbisconverters with custom options.
Enums§
- Force
Packet Format - Specifies how to handle Wwise modified Vorbis packet format.
- WemError
- Errors that can occur during Wwise audio conversion.
Type Aliases§
- WemResult
- Result type alias for ww2ogg operations.