RustͰΤϯίʔυ͢Δ෦Λ࣮͢Δ
#[no_mangle]
pub extern "C" fn encode(data: *mut u8, length: u32) -> *const c_char {
unsafe {
let buf: &mut [u8] = core::slice::from_raw_parts_mut(data, length as usize);
let mut ptr = io::Cursor::new(buf);
let mut wav_reader = hound::WavReader::new(&mut ptr).unwrap();
let mut data = Vec::new();
for sample in wav_reader.samples() {
match sample {
Ok(smpl) => data.push(smpl),
_ => panic!("failed"),
}
}
let timestamp = Rational64::from_integer(0);
let raw_frame = RawFrame { timestamp, data };
let mut encoder = Encoder::new();
let output_file_name = encoder.encode(raw_frame);
return CString::new(output_file_name)
.expect("failed")
.into_raw();
}
}