From 96b5828c447c24db125778058abcc22963935f17 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Fri, 15 May 2026 18:24:54 +0200 Subject: [PATCH] mace: apparently MACE-3 decodes two byte packets per channel --- nihav-qt/src/codecs/mace.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/nihav-qt/src/codecs/mace.rs b/nihav-qt/src/codecs/mace.rs index d463764..14855a1 100644 --- a/nihav-qt/src/codecs/mace.rs +++ b/nihav-qt/src/codecs/mace.rs @@ -44,9 +44,17 @@ impl NADecoder for MaceDecoder { let dst = adata.get_data_mut().unwrap(); if !self.is_mace6 { - for src in pktbuf.chunks(channels) { + for src in pktbuf.chunks(channels * 2) { for ch in 0..channels { - let val = src[ch]; + let val = src[ch * 2]; + let idx0 = val & 7; + let idx1 = (val >> 3) & 3; + let idx2 = val >> 5; + dst[off[ch]] = self.ch_pred[ch].pred_mace3(idx0 as usize, false); + dst[off[ch] + 1] = self.ch_pred[ch].pred_mace3(idx1 as usize, true); + dst[off[ch] + 2] = self.ch_pred[ch].pred_mace3(idx2 as usize, false); + off[ch] += 3; + let val = src[ch * 2 + 1]; let idx0 = val & 7; let idx1 = (val >> 3) & 3; let idx2 = val >> 5; -- 2.39.5