From: Kostya Shishkov Date: Thu, 11 Oct 2018 15:57:31 +0000 (+0200) Subject: format: add channel map conversion from M$ WAVE bitmask X-Git-Url: https://git.nihav.org/?p=nihav.git;a=commitdiff_plain;h=62b334873ca1ccad05c389a0cb3dedb21b05652c format: add channel map conversion from M$ WAVE bitmask --- diff --git a/src/formats.rs b/src/formats.rs index 5481c76..b72cd1a 100644 --- a/src/formats.rs +++ b/src/formats.rs @@ -175,6 +175,20 @@ pub struct NAChannelMap { ids: Vec, } +const MS_CHANNEL_MAP: [NAChannelType; 11] = [ + NAChannelType::L, + NAChannelType::R, + NAChannelType::C, + NAChannelType::LFE, + NAChannelType::Ls, + NAChannelType::Rs, + NAChannelType::Lss, + NAChannelType::Rss, + NAChannelType::Cs, + NAChannelType::Lc, + NAChannelType::Rc, +]; + impl NAChannelMap { pub fn new() -> Self { NAChannelMap { ids: Vec::new() } } pub fn add_channel(&mut self, ch: NAChannelType) { @@ -197,6 +211,15 @@ impl NAChannelMap { } None } + pub fn from_ms_mapping(chmap: u32) -> Self { + let mut cm = NAChannelMap::new(); + for i in 0..MS_CHANNEL_MAP.len() { + if ((chmap >> i) & 1) != 0 { + cm.add_channel(MS_CHANNEL_MAP[i]); + } + } + cm + } } impl fmt::Display for NAChannelMap {