Skip to main content

Crate ww2ogg

Crate ww2ogg 

Source
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:

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:

Re-exports§

pub use validator::validate;

Modules§

validator
Vorbis validation for converted audio streams.

Structs§

CodebookLibrary
Provides Vorbis codebook data for rebuilding audio streams from Wwise files.
ConversionOptions
Configuration options for Wwise to Ogg conversion.
WwiseRiffVorbis
Converts Wwise RIFF/RIFX Vorbis audio files (.wem) to standard Ogg Vorbis format.
WwiseRiffVorbisBuilder
Builder for creating WwiseRiffVorbis converters with custom options.

Enums§

ForcePacketFormat
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.