Macro audio::interleaved
source · macro_rules! interleaved { ([$sample:expr; $frames:expr]; $channels:expr) => { ... }; ([$($value:expr),* $(,)?]; $channels:expr) => { ... }; ($($channel:expr),* $(,)?) => { ... }; }
Expand description
Construct an interleaved audio buffer.
This is useful for testing.
Examples
let buf = audio::interleaved![[0; 64]; 2];
let mut expected = vec![0; 64];
assert!(buf.get_channel(0).unwrap().iter().eq(expected.iter().copied()));
assert!(buf.get_channel(1).unwrap().iter().eq(expected.iter().copied()));
Calling the macro with a template channel.
let buf = audio::interleaved![[0, 1, 2, 3]; 2];
assert_eq!(buf.as_slice(), &[0, 0, 1, 1, 2, 2, 3, 3])
Using an exact topology of channels.
let buf = audio::interleaved![[0, 1, 2, 3], [4, 5, 6, 7]];
assert_eq!(buf.as_slice(), &[0, 4, 1, 5, 2, 6, 3, 7])