mirror of
https://github.com/rustdesk/magnum-opus.git
synced 2025-07-03 00:05:33 +00:00
67 lines
2.1 KiB
Rust
67 lines
2.1 KiB
Rust
extern crate opus;
|
|
|
|
#[test]
|
|
fn version_ascii() {
|
|
println!("Opus version: {}", opus::version());
|
|
}
|
|
|
|
// 48000Hz * 1 channel * 20 ms / 1000
|
|
const MONO_20MS: usize = 48000 * 1 * 20 / 1000;
|
|
|
|
#[test]
|
|
fn encode_mono() {
|
|
let mut encoder = opus::Encoder::new(48000, opus::Channels::Mono, opus::CodingMode::Audio).unwrap();
|
|
|
|
let mut output = [0; 256];
|
|
let len = encoder.encode(&[0_i16; MONO_20MS], &mut output).unwrap();
|
|
assert_eq!(&output[..len], &[244, 255, 254]);
|
|
|
|
let len = encoder.encode(&[0_i16; MONO_20MS], &mut output).unwrap();
|
|
assert_eq!(&output[..len], &[244, 255, 254]);
|
|
|
|
let len = encoder.encode(&[1_i16; MONO_20MS], &mut output).unwrap();
|
|
assert!(len > 190 && len < 220);
|
|
|
|
let len = encoder.encode(&[0_i16; MONO_20MS], &mut output).unwrap();
|
|
assert!(len > 170 && len < 190);
|
|
}
|
|
|
|
#[test]
|
|
fn encode_stereo() {
|
|
let mut encoder = opus::Encoder::new(48000, opus::Channels::Stereo, opus::CodingMode::Audio).unwrap();
|
|
|
|
let mut output = [0; 512];
|
|
let len = encoder.encode(&[0_i16; 2 * MONO_20MS], &mut output).unwrap();
|
|
assert_eq!(&output[..len], &[249, 255, 254, 255, 254]);
|
|
|
|
let len = encoder.encode(&[0_i16; 2 * MONO_20MS], &mut output).unwrap();
|
|
assert_eq!(&output[..len], &[249, 255, 254, 255, 254]);
|
|
|
|
let len = encoder.encode(&[17_i16; 2 * MONO_20MS], &mut output).unwrap();
|
|
assert!(len > 240);
|
|
|
|
let len = encoder.encode(&[0_i16; 2 * MONO_20MS], &mut output).unwrap();
|
|
assert!(len > 240);
|
|
|
|
// Very small buffer should still succeed
|
|
let len = encoder.encode(&[95_i16; 2 * MONO_20MS], &mut [0; 20]).unwrap();
|
|
assert!(len < 20);
|
|
}
|
|
|
|
#[test]
|
|
fn encode_bad_rate() {
|
|
match opus::Encoder::new(48001, opus::Channels::Mono, opus::CodingMode::Audio) {
|
|
Ok(_) => panic!("Encoder::new did not return BadArg"),
|
|
Err(err) => assert_eq!(err.code(), opus::ErrorCode::BadArg),
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn encode_bad_buffer() {
|
|
let mut encoder = opus::Encoder::new(48000, opus::Channels::Stereo, opus::CodingMode::Audio).unwrap();
|
|
match encoder.encode(&[1_i16; 2 * MONO_20MS], &mut [0; 0]) {
|
|
Ok(_) => panic!("encode with 0-length buffer did not return BadArg"),
|
|
Err(err) => assert_eq!(err.code(), opus::ErrorCode::BadArg),
|
|
}
|
|
}
|