diff options
Diffstat (limited to 'gr-dtv/lib/dvbt/dvbt_inner_coder_impl.cc')
-rw-r--r-- | gr-dtv/lib/dvbt/dvbt_inner_coder_impl.cc | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/gr-dtv/lib/dvbt/dvbt_inner_coder_impl.cc b/gr-dtv/lib/dvbt/dvbt_inner_coder_impl.cc index 54d25e49ea..9d0c93c35c 100644 --- a/gr-dtv/lib/dvbt/dvbt_inner_coder_impl.cc +++ b/gr-dtv/lib/dvbt/dvbt_inner_coder_impl.cc @@ -30,21 +30,16 @@ namespace gr { namespace dtv { - void + inline void dvbt_inner_coder_impl::generate_codeword(unsigned char in, int &x, int &y) { //insert input bit d_reg |= ((in & 0x1) << 7); - d_reg = d_reg >> 1; + d_reg = d_reg >> 1; - // TODO - do this with polynoms and bitcnt - //generate output G1=171(OCT) - x = ((d_reg >> 6) ^ (d_reg >> 5) ^ (d_reg >> 4) ^ \ - (d_reg >> 3) ^ d_reg) & 0x1; - //generate output G2=133(OCT) - y = ((d_reg >> 6) ^ (d_reg >> 4) ^ (d_reg >> 3) ^ \ - (d_reg >> 1) ^ d_reg) & 0x1; + x = d_lookup_171[d_reg]; + y = d_lookup_133[d_reg]; } //TODO - do this based on puncturing matrix @@ -55,7 +50,7 @@ namespace gr { * 00000c0c1c2 */ - void + inline void dvbt_inner_coder_impl::generate_punctured_code(dvb_code_rate_t coderate, unsigned char * in, unsigned char * out) { int x, y; @@ -251,6 +246,26 @@ namespace gr { return noutput_items; } + const int dvbt_inner_coder_impl::d_lookup_171[128] = + {0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, + 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, + 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1}; + + const int dvbt_inner_coder_impl::d_lookup_133[128] = + {0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, + 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, + 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, + 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, + 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, + 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, + 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, + 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1}; + } /* namespace dtv */ } /* namespace gr */ |