diff options
author | Ron Economos <w6rz@comcast.net> | 2016-09-18 20:52:24 -0700 |
---|---|---|
committer | Ron Economos <w6rz@comcast.net> | 2016-09-18 20:52:24 -0700 |
commit | 2f1dd2faf8e56d3049217531eeed59f2a63ad5af (patch) | |
tree | 604446db69e664950d81d823a0f2e0f83445ba46 /gr-dtv | |
parent | da0a102e9b076db83fe5a63b3730ac39b588eb92 (diff) |
dtv: Refactor DVB-T2 interleaver to match specification demux tables.
Diffstat (limited to 'gr-dtv')
-rw-r--r-- | gr-dtv/lib/dvbt2/dvbt2_interleaver_bb_impl.cc | 48 |
1 files changed, 18 insertions, 30 deletions
diff --git a/gr-dtv/lib/dvbt2/dvbt2_interleaver_bb_impl.cc b/gr-dtv/lib/dvbt2/dvbt2_interleaver_bb_impl.cc index 9ebfb143ed..1b250a7224 100644 --- a/gr-dtv/lib/dvbt2/dvbt2_interleaver_bb_impl.cc +++ b/gr-dtv/lib/dvbt2/dvbt2_interleaver_bb_impl.cc @@ -271,13 +271,10 @@ namespace gr { pack = 0; for (int e = 0; e < (mod * 2); e++) { offset = mux[e]; - pack |= tempu[index + offset]; - pack <<= 1; + pack |= tempu[index++] << (((mod * 2) - 1) - offset); } - pack >>= 1; out[produced++] = pack >> 4; out[produced++] = pack & 0xf; - index += (mod * 2); consumed += (mod * 2); } } @@ -356,13 +353,10 @@ namespace gr { pack = 0; for (int e = 0; e < (mod * 2); e++) { offset = mux[e]; - pack |= tempu[index + offset]; - pack <<= 1; + pack |= tempu[index++] << (((mod * 2) - 1) - offset); } - pack >>= 1; out[produced++] = pack >> 6; out[produced++] = pack & 0x3f; - index += (mod * 2); consumed += (mod * 2); } } @@ -442,13 +436,10 @@ namespace gr { pack = 0; for (int e = 0; e < (mod * 2); e++) { offset = mux[e]; - pack |= tempu[index + offset]; - pack <<= 1; + pack |= tempu[index++] << (((mod * 2) - 1) - offset); } - pack >>= 1; out[produced++] = pack >> 8; out[produced++] = pack & 0xff; - index += (mod * 2); consumed += (mod * 2); } } @@ -510,12 +501,9 @@ namespace gr { pack = 0; for (int e = 0; e < mod; e++) { offset = mux[e]; - pack |= tempu[index + offset]; - pack <<= 1; + pack |= tempu[index++] << ((mod - 1) - offset); } - pack >>= 1; out[produced++] = pack & 0xff; - index += mod; consumed += mod; } } @@ -563,72 +551,72 @@ namespace gr { const int dvbt2_interleaver_bb_impl::mux16[8] = { - 7, 1, 3, 5, 2, 4, 6, 0 + 7, 1, 4, 2, 5, 3, 6, 0 }; const int dvbt2_interleaver_bb_impl::mux64[12] = { - 11, 8, 5, 2, 10, 7, 4, 1, 9, 6, 3, 0 + 11, 7, 3, 10, 6, 2, 9, 5, 1, 8, 4, 0 }; const int dvbt2_interleaver_bb_impl::mux256[16] = { - 15, 1, 13, 3, 10, 7, 9, 11, 4, 6, 8, 5, 12, 2, 14, 0 + 15, 1, 13, 3, 8, 11, 9, 5, 10, 6, 4, 7, 12, 2, 14, 0 }; const int dvbt2_interleaver_bb_impl::mux16_35[8] = { - 0, 2, 3, 6, 4, 1, 7, 5 + 0, 5, 1, 2, 4, 7, 3, 6 }; const int dvbt2_interleaver_bb_impl::mux16_13[8] = { - 1, 6, 5, 2, 3, 4, 0, 7 + 6, 0, 3, 4, 5, 2, 1, 7 }; const int dvbt2_interleaver_bb_impl::mux16_25[8] = { - 3, 5, 6, 4, 2, 1, 7, 0 + 7, 5, 4, 0, 3, 1, 2, 6 }; const int dvbt2_interleaver_bb_impl::mux64_35[12] = { - 4, 6, 0, 5, 8, 10, 2, 1, 7, 3, 11, 9 + 2, 7, 6, 9, 0, 3, 1, 8, 4, 11, 5, 10 }; const int dvbt2_interleaver_bb_impl::mux64_13[12] = { - 2, 5, 1, 6, 0, 3, 4, 7, 8, 9, 10, 11 + 4, 2, 0, 5, 6, 1, 3, 7, 8, 9, 10, 11 }; const int dvbt2_interleaver_bb_impl::mux64_25[12] = { - 1, 2, 4, 5, 0, 6, 3, 8, 7, 10, 9, 11 + 4, 0, 1, 6, 2, 3, 5, 8, 7, 10, 9, 11 }; const int dvbt2_interleaver_bb_impl::mux256_35[16] = { - 4, 6, 0, 2, 3, 14, 12, 10, 7, 5, 8, 1, 15, 9, 11, 13 + 2, 11, 3, 4, 0, 9, 1, 8, 10, 13, 7, 14, 6, 15, 5, 12 }; const int dvbt2_interleaver_bb_impl::mux256_23[16] = { - 3, 15, 1, 7, 4, 11, 5, 0, 12, 2, 9, 14, 13, 6, 8, 10 + 7, 2, 9, 0, 4, 6, 13, 3, 14, 10, 15, 5, 8, 12, 11, 1 }; const int dvbt2_interleaver_bb_impl::mux256s[8] = { - 7, 2, 4, 1, 6, 3, 5, 0 + 7, 3, 1, 5, 2, 6, 4, 0 }; const int dvbt2_interleaver_bb_impl::mux256s_13[8] = { - 1, 2, 3, 5, 0, 4, 6, 7 + 4, 0, 1, 2, 5, 3, 6, 7 }; const int dvbt2_interleaver_bb_impl::mux256s_25[8] = { - 1, 3, 4, 5, 0, 2, 6, 7 + 4, 0, 5, 1, 2, 3, 6, 7 }; } /* namespace dtv */ |