#![allow(unreachable_pub)]
use std::{io::Cursor, panic};
use wasm_bindgen::prelude::*;
use crate::remuxer::{
ogg_to_ogg::{OggToOgg as OggToOggRemuxer, OggVorbisStreamPassthroughMangler},
Remuxer
};
#[wasm_bindgen(start)]
pub fn main() {
#[cfg(feature = "wasm-web-bindings")]
{
panic::set_hook(Box::new(console_error_panic_hook::hook));
console_log::init().ok();
}
}
#[wasm_bindgen]
pub struct OggToOgg {
inner: OggToOggRemuxer<OggVorbisStreamPassthroughMangler>
}
#[wasm_bindgen]
impl OggToOgg {
#[wasm_bindgen(constructor)]
pub fn new_with_defaults() -> Self {
Self {
inner: OggToOggRemuxer::new_with_defaults()
}
}
pub fn remux(&self, buf: &[u8]) -> Result<Box<[u8]>, String> {
let mut sink = Vec::with_capacity(buf.len() / 2);
self.inner
.remux(Cursor::new(buf), &mut sink)
.map_err(|err| err.to_string())?;
Ok(sink.into_boxed_slice())
}
}