// wasm_api.mbt
//
// 供浏览器 WASM demo 调用的导出接口:base64 OGG → base64 WAV。
// 用 base64 字符串跨 JS 边界,避免直接操作线性内存。

///|
/// 解码 base64 编码的 OGG 数据,返回 base64 编码的 16-bit PCM WAV。
/// 解码失败返回空字符串,调用方据此判断是否成功。
pub fn decode_ogg_base64(ogg_b64 : String) -> String {
  try {
    let ogg = @base64.decode(ogg_b64)
    let stream = match decode_ogg(ogg) {
      Ok(s) => s
      Err(_) => return ""
    }
    if !stream.is_ready() {
      return ""
    }
    let wav = wav_encode_pcm16(stream.pcm(), stream.sample_rate())
    @base64.encode(wav)
  } catch {
    _ => ""
  }
}