let mut opus_encoder = opus::Encoder::new(48000, opus::Channels::Stereo, opus::Application::Voip).unwrap();
let mut opus_decoder = opus::Decoder::new(48000, opus::Channels::Stereo).unwrap();
let pcm_raw_data = vec![0_i16; 960 * 2];
....//read pcm raw data
let mut encoded_opus = vec![0; 1500];
match opus_encoder.encode( &pcm_raw_data, &mut encoded_opus, ) {
Ok(size) =>{
let samples = opus_decoder.get_nb_samples(&encoded_opus).unwrap(); // why here got 960 samples, half of the primary raw PCM data.
let mut output = vec![0; 960 * 2];
if let Ok(size2) = opus_decoder.decode(&encoded_opus[..size],
&mut output,
false,
) {
// size2 is 960 but not 960*2
}
}
Err(err) =>{
}
}
Please look at the code above, why does the number of samples decrease by half after encoding?
Please look at the code above, why does the number of samples decrease by half after encoding?