diff options
Diffstat (limited to 'gr-dtv/lib/dvbt2/dvbt2_framemapper_cc_impl.cc')
-rw-r--r-- | gr-dtv/lib/dvbt2/dvbt2_framemapper_cc_impl.cc | 277 |
1 files changed, 93 insertions, 184 deletions
diff --git a/gr-dtv/lib/dvbt2/dvbt2_framemapper_cc_impl.cc b/gr-dtv/lib/dvbt2/dvbt2_framemapper_cc_impl.cc index bd026297b9..c3702e0020 100644 --- a/gr-dtv/lib/dvbt2/dvbt2_framemapper_cc_impl.cc +++ b/gr-dtv/lib/dvbt2/dvbt2_framemapper_cc_impl.cc @@ -245,12 +245,9 @@ namespace gr { bch_poly_build_tables(); l1pre_ldpc_lookup_generate(); - m_bpsk[0].real() = 1.0; - m_bpsk[0].imag() = 0.0; - m_bpsk[1].real() = -1.0; - m_bpsk[1].imag() = 0.0; - unmodulated[0].real() = 0.0; - unmodulated[0].imag() = 0.0; + m_bpsk[0] = gr_complex( 1.0, 0.0); + m_bpsk[1] = gr_complex( -1.0, 0.0); + unmodulated = gr_complex( 0.0, 0.0); l1post_ldpc_lookup_generate(); switch (l1constellation) { @@ -259,182 +256,98 @@ namespace gr { break; case L1_MOD_QPSK: normalization = sqrt(2); - m_qpsk[0].real() = 1.0 / normalization; - m_qpsk[0].imag() = 1.0 / normalization; - m_qpsk[1].real() = 1.0 / normalization; - m_qpsk[1].imag() = -1.0 / normalization; - m_qpsk[2].real() = -1.0 / normalization; - m_qpsk[2].imag() = 1.0 / normalization; - m_qpsk[3].real() = -1.0 / normalization; - m_qpsk[3].imag() = -1.0 / normalization; + m_qpsk[0] = gr_complex( 1.0 / normalization, 1.0 / normalization); + m_qpsk[1] = gr_complex( 1.0 / normalization, -1.0 / normalization); + m_qpsk[2] = gr_complex(-1.0 / normalization, 1.0 / normalization); + m_qpsk[3] = gr_complex(-1.0 / normalization, -1.0 / normalization); eta_mod = 2; break; case L1_MOD_16QAM: normalization = sqrt(10); - m_16qam[0].real() = 3.0 / normalization; - m_16qam[0].imag() = 3.0 / normalization; - m_16qam[1].real() = 3.0 / normalization; - m_16qam[1].imag() = 1.0 / normalization; - m_16qam[2].real() = 1.0 / normalization; - m_16qam[2].imag() = 3.0 / normalization; - m_16qam[3].real() = 1.0 / normalization; - m_16qam[3].imag() = 1.0 / normalization; - m_16qam[4].real() = 3.0 / normalization; - m_16qam[4].imag() = -3.0 / normalization; - m_16qam[5].real() = 3.0 / normalization; - m_16qam[5].imag() = -1.0 / normalization; - m_16qam[6].real() = 1.0 / normalization; - m_16qam[6].imag() = -3.0 / normalization; - m_16qam[7].real() = 1.0 / normalization; - m_16qam[7].imag() = -1.0 / normalization; - m_16qam[8].real() = -3.0 / normalization; - m_16qam[8].imag() = 3.0 / normalization; - m_16qam[9].real() = -3.0 / normalization; - m_16qam[9].imag() = 1.0 / normalization; - m_16qam[10].real() = -1.0 / normalization; - m_16qam[10].imag() = 3.0 / normalization; - m_16qam[11].real() = -1.0 / normalization; - m_16qam[11].imag() = 1.0 / normalization; - m_16qam[12].real() = -3.0 / normalization; - m_16qam[12].imag() = -3.0 / normalization; - m_16qam[13].real() = -3.0 / normalization; - m_16qam[13].imag() = -1.0 / normalization; - m_16qam[14].real() = -1.0 / normalization; - m_16qam[14].imag() = -3.0 / normalization; - m_16qam[15].real() = -1.0 / normalization; - m_16qam[15].imag() = -1.0 / normalization; + m_16qam[0] = gr_complex( 3.0 / normalization, 3.0 / normalization); + m_16qam[1] = gr_complex( 3.0 / normalization, 1.0 / normalization); + m_16qam[2] = gr_complex( 1.0 / normalization, 3.0 / normalization); + m_16qam[3] = gr_complex( 1.0 / normalization, 1.0 / normalization); + m_16qam[4] = gr_complex( 3.0 / normalization, -3.0 / normalization); + m_16qam[5] = gr_complex( 3.0 / normalization, -1.0 / normalization); + m_16qam[6] = gr_complex( 1.0 / normalization, -3.0 / normalization); + m_16qam[7] = gr_complex( 1.0 / normalization, -1.0 / normalization); + m_16qam[8] = gr_complex(-3.0 / normalization, 3.0 / normalization); + m_16qam[9] = gr_complex(-3.0 / normalization, 1.0 / normalization); + m_16qam[10] = gr_complex(-1.0 / normalization, 3.0 / normalization); + m_16qam[11] = gr_complex(-1.0 / normalization, 1.0 / normalization); + m_16qam[12] = gr_complex(-3.0 / normalization, -3.0 / normalization); + m_16qam[13] = gr_complex(-3.0 / normalization, -1.0 / normalization); + m_16qam[14] = gr_complex(-1.0 / normalization, -3.0 / normalization); + m_16qam[15] = gr_complex(-1.0 / normalization, -1.0 / normalization); eta_mod = 4; break; case L1_MOD_64QAM: normalization = sqrt(42); - m_64qam[0].real() = 7.0 / normalization; - m_64qam[0].imag() = 7.0 / normalization; - m_64qam[1].real() = 7.0 / normalization; - m_64qam[1].imag() = 5.0 / normalization; - m_64qam[2].real() = 5.0 / normalization; - m_64qam[2].imag() = 7.0 / normalization; - m_64qam[3].real() = 5.0 / normalization; - m_64qam[3].imag() = 5.0 / normalization; - m_64qam[4].real() = 7.0 / normalization; - m_64qam[4].imag() = 1.0 / normalization; - m_64qam[5].real() = 7.0 / normalization; - m_64qam[5].imag() = 3.0 / normalization; - m_64qam[6].real() = 5.0 / normalization; - m_64qam[6].imag() = 1.0 / normalization; - m_64qam[7].real() = 5.0 / normalization; - m_64qam[7].imag() = 3.0 / normalization; - m_64qam[8].real() = 1.0 / normalization; - m_64qam[8].imag() = 7.0 / normalization; - m_64qam[9].real() = 1.0 / normalization; - m_64qam[9].imag() = 5.0 / normalization; - m_64qam[10].real() = 3.0 / normalization; - m_64qam[10].imag() = 7.0 / normalization; - m_64qam[11].real() = 3.0 / normalization; - m_64qam[11].imag() = 5.0 / normalization; - m_64qam[12].real() = 1.0 / normalization; - m_64qam[12].imag() = 1.0 / normalization; - m_64qam[13].real() = 1.0 / normalization; - m_64qam[13].imag() = 3.0 / normalization; - m_64qam[14].real() = 3.0 / normalization; - m_64qam[14].imag() = 1.0 / normalization; - m_64qam[15].real() = 3.0 / normalization; - m_64qam[15].imag() = 3.0 / normalization; - m_64qam[16].real() = 7.0 / normalization; - m_64qam[16].imag() = -7.0 / normalization; - m_64qam[17].real() = 7.0 / normalization; - m_64qam[17].imag() = -5.0 / normalization; - m_64qam[18].real() = 5.0 / normalization; - m_64qam[18].imag() = -7.0 / normalization; - m_64qam[19].real() = 5.0 / normalization; - m_64qam[19].imag() = -5.0 / normalization; - m_64qam[20].real() = 7.0 / normalization; - m_64qam[20].imag() = -1.0 / normalization; - m_64qam[21].real() = 7.0 / normalization; - m_64qam[21].imag() = -3.0 / normalization; - m_64qam[22].real() = 5.0 / normalization; - m_64qam[22].imag() = -1.0 / normalization; - m_64qam[23].real() = 5.0 / normalization; - m_64qam[23].imag() = -3.0 / normalization; - m_64qam[24].real() = 1.0 / normalization; - m_64qam[24].imag() = -7.0 / normalization; - m_64qam[25].real() = 1.0 / normalization; - m_64qam[25].imag() = -5.0 / normalization; - m_64qam[26].real() = 3.0 / normalization; - m_64qam[26].imag() = -7.0 / normalization; - m_64qam[27].real() = 3.0 / normalization; - m_64qam[27].imag() = -5.0 / normalization; - m_64qam[28].real() = 1.0 / normalization; - m_64qam[28].imag() = -1.0 / normalization; - m_64qam[29].real() = 1.0 / normalization; - m_64qam[29].imag() = -3.0 / normalization; - m_64qam[30].real() = 3.0 / normalization; - m_64qam[30].imag() = -1.0 / normalization; - m_64qam[31].real() = 3.0 / normalization; - m_64qam[31].imag() = -3.0 / normalization; - m_64qam[32].real() = -7.0 / normalization; - m_64qam[32].imag() = 7.0 / normalization; - m_64qam[33].real() = -7.0 / normalization; - m_64qam[33].imag() = 5.0 / normalization; - m_64qam[34].real() = -5.0 / normalization; - m_64qam[34].imag() = 7.0 / normalization; - m_64qam[35].real() = -5.0 / normalization; - m_64qam[35].imag() = 5.0 / normalization; - m_64qam[36].real() = -7.0 / normalization; - m_64qam[36].imag() = 1.0 / normalization; - m_64qam[37].real() = -7.0 / normalization; - m_64qam[37].imag() = 3.0 / normalization; - m_64qam[38].real() = -5.0 / normalization; - m_64qam[38].imag() = 1.0 / normalization; - m_64qam[39].real() = -5.0 / normalization; - m_64qam[39].imag() = 3.0 / normalization; - m_64qam[40].real() = -1.0 / normalization; - m_64qam[40].imag() = 7.0 / normalization; - m_64qam[41].real() = -1.0 / normalization; - m_64qam[41].imag() = 5.0 / normalization; - m_64qam[42].real() = -3.0 / normalization; - m_64qam[42].imag() = 7.0 / normalization; - m_64qam[43].real() = -3.0 / normalization; - m_64qam[43].imag() = 5.0 / normalization; - m_64qam[44].real() = -1.0 / normalization; - m_64qam[44].imag() = 1.0 / normalization; - m_64qam[45].real() = -1.0 / normalization; - m_64qam[45].imag() = 3.0 / normalization; - m_64qam[46].real() = -3.0 / normalization; - m_64qam[46].imag() = 1.0 / normalization; - m_64qam[47].real() = -3.0 / normalization; - m_64qam[47].imag() = 3.0 / normalization; - m_64qam[48].real() = -7.0 / normalization; - m_64qam[48].imag() = -7.0 / normalization; - m_64qam[49].real() = -7.0 / normalization; - m_64qam[49].imag() = -5.0 / normalization; - m_64qam[50].real() = -5.0 / normalization; - m_64qam[50].imag() = -7.0 / normalization; - m_64qam[51].real() = -5.0 / normalization; - m_64qam[51].imag() = -5.0 / normalization; - m_64qam[52].real() = -7.0 / normalization; - m_64qam[52].imag() = -1.0 / normalization; - m_64qam[53].real() = -7.0 / normalization; - m_64qam[53].imag() = -3.0 / normalization; - m_64qam[54].real() = -5.0 / normalization; - m_64qam[54].imag() = -1.0 / normalization; - m_64qam[55].real() = -5.0 / normalization; - m_64qam[55].imag() = -3.0 / normalization; - m_64qam[56].real() = -1.0 / normalization; - m_64qam[56].imag() = -7.0 / normalization; - m_64qam[57].real() = -1.0 / normalization; - m_64qam[57].imag() = -5.0 / normalization; - m_64qam[58].real() = -3.0 / normalization; - m_64qam[58].imag() = -7.0 / normalization; - m_64qam[59].real() = -3.0 / normalization; - m_64qam[59].imag() = -5.0 / normalization; - m_64qam[60].real() = -1.0 / normalization; - m_64qam[60].imag() = -1.0 / normalization; - m_64qam[61].real() = -1.0 / normalization; - m_64qam[61].imag() = -3.0 / normalization; - m_64qam[62].real() = -3.0 / normalization; - m_64qam[62].imag() = -1.0 / normalization; - m_64qam[63].real() = -3.0 / normalization; - m_64qam[63].imag() = -3.0 / normalization; + m_64qam[0] = gr_complex( 7.0 / normalization, 7.0 / normalization); + m_64qam[1] = gr_complex( 7.0 / normalization, 5.0 / normalization); + m_64qam[2] = gr_complex( 5.0 / normalization, 7.0 / normalization); + m_64qam[3] = gr_complex( 5.0 / normalization, 5.0 / normalization); + m_64qam[4] = gr_complex( 7.0 / normalization, 1.0 / normalization); + m_64qam[5] = gr_complex( 7.0 / normalization, 3.0 / normalization); + m_64qam[6] = gr_complex( 5.0 / normalization, 1.0 / normalization); + m_64qam[7] = gr_complex( 5.0 / normalization, 3.0 / normalization); + m_64qam[8] = gr_complex( 1.0 / normalization, 7.0 / normalization); + m_64qam[9] = gr_complex( 1.0 / normalization, 5.0 / normalization); + m_64qam[10] = gr_complex( 3.0 / normalization, 7.0 / normalization); + m_64qam[11] = gr_complex( 3.0 / normalization, 5.0 / normalization); + m_64qam[12] = gr_complex( 1.0 / normalization, 1.0 / normalization); + m_64qam[13] = gr_complex( 1.0 / normalization, 3.0 / normalization); + m_64qam[14] = gr_complex( 3.0 / normalization, 1.0 / normalization); + m_64qam[15] = gr_complex( 3.0 / normalization, 3.0 / normalization); + m_64qam[16] = gr_complex( 7.0 / normalization, -7.0 / normalization); + m_64qam[17] = gr_complex( 7.0 / normalization, -5.0 / normalization); + m_64qam[18] = gr_complex( 5.0 / normalization, -7.0 / normalization); + m_64qam[19] = gr_complex( 5.0 / normalization, -5.0 / normalization); + m_64qam[20] = gr_complex( 7.0 / normalization, -1.0 / normalization); + m_64qam[21] = gr_complex( 7.0 / normalization, -3.0 / normalization); + m_64qam[22] = gr_complex( 5.0 / normalization, -1.0 / normalization); + m_64qam[23] = gr_complex( 5.0 / normalization, -3.0 / normalization); + m_64qam[24] = gr_complex( 1.0 / normalization, -7.0 / normalization); + m_64qam[25] = gr_complex( 1.0 / normalization, -5.0 / normalization); + m_64qam[26] = gr_complex( 3.0 / normalization, -7.0 / normalization); + m_64qam[27] = gr_complex( 3.0 / normalization, -5.0 / normalization); + m_64qam[28] = gr_complex( 1.0 / normalization, -1.0 / normalization); + m_64qam[29] = gr_complex( 1.0 / normalization, -3.0 / normalization); + m_64qam[30] = gr_complex( 3.0 / normalization, -1.0 / normalization); + m_64qam[31] = gr_complex( 3.0 / normalization, -3.0 / normalization); + m_64qam[32] = gr_complex(-7.0 / normalization, 7.0 / normalization); + m_64qam[33] = gr_complex(-7.0 / normalization, 5.0 / normalization); + m_64qam[34] = gr_complex(-5.0 / normalization, 7.0 / normalization); + m_64qam[35] = gr_complex(-5.0 / normalization, 5.0 / normalization); + m_64qam[36] = gr_complex(-7.0 / normalization, 1.0 / normalization); + m_64qam[37] = gr_complex(-7.0 / normalization, 3.0 / normalization); + m_64qam[38] = gr_complex(-5.0 / normalization, 1.0 / normalization); + m_64qam[39] = gr_complex(-5.0 / normalization, 3.0 / normalization); + m_64qam[40] = gr_complex(-1.0 / normalization, 7.0 / normalization); + m_64qam[41] = gr_complex(-1.0 / normalization, 5.0 / normalization); + m_64qam[42] = gr_complex(-3.0 / normalization, 7.0 / normalization); + m_64qam[43] = gr_complex(-3.0 / normalization, 5.0 / normalization); + m_64qam[44] = gr_complex(-1.0 / normalization, 1.0 / normalization); + m_64qam[45] = gr_complex(-1.0 / normalization, 3.0 / normalization); + m_64qam[46] = gr_complex(-3.0 / normalization, 1.0 / normalization); + m_64qam[47] = gr_complex(-3.0 / normalization, 3.0 / normalization); + m_64qam[48] = gr_complex(-7.0 / normalization, -7.0 / normalization); + m_64qam[49] = gr_complex(-7.0 / normalization, -5.0 / normalization); + m_64qam[50] = gr_complex(-5.0 / normalization, -7.0 / normalization); + m_64qam[51] = gr_complex(-5.0 / normalization, -5.0 / normalization); + m_64qam[52] = gr_complex(-7.0 / normalization, -1.0 / normalization); + m_64qam[53] = gr_complex(-7.0 / normalization, -3.0 / normalization); + m_64qam[54] = gr_complex(-5.0 / normalization, -1.0 / normalization); + m_64qam[55] = gr_complex(-5.0 / normalization, -3.0 / normalization); + m_64qam[56] = gr_complex(-1.0 / normalization, -7.0 / normalization); + m_64qam[57] = gr_complex(-1.0 / normalization, -5.0 / normalization); + m_64qam[58] = gr_complex(-3.0 / normalization, -7.0 / normalization); + m_64qam[59] = gr_complex(-3.0 / normalization, -5.0 / normalization); + m_64qam[60] = gr_complex(-1.0 / normalization, -1.0 / normalization); + m_64qam[61] = gr_complex(-1.0 / normalization, -3.0 / normalization); + m_64qam[62] = gr_complex(-3.0 / normalization, -1.0 / normalization); + m_64qam[63] = gr_complex(-3.0 / normalization, -3.0 / normalization); eta_mod = 6; break; } @@ -1796,15 +1709,11 @@ namespace gr { dvbt2_framemapper_cc_impl::init_dummy_randomizer(void) { int sr = 0x4A80; - for (int i = 0; i < mapped_items - stream_items - 1840 - (N_post / eta_mod) - (N_FC - C_FC); i++) { + int num = mapped_items - stream_items - 1840 - (N_post / eta_mod) - (N_FC - C_FC); + memset(&dummy_randomize[0], 0, sizeof(gr_complex) * num); + for (int i = 0; i < num; i++) { int b = ((sr) ^ (sr >> 1)) & 1; - if (b) { - dummy_randomize[i].real() = -1.0; - } - else { - dummy_randomize[i].real() = 1.0; - } - dummy_randomize[i].imag() = 0; + dummy_randomize[i] = (b ? -1.0 : 1.0); sr >>= 1; if(b) { sr |= 0x4000; @@ -1854,7 +1763,7 @@ namespace gr { *out++ = dummy_randomize[index++]; } for (int j = 0; j < N_FC - C_FC; j++) { - *out++ = unmodulated[0]; + *out++ = unmodulated; } } else { @@ -1872,7 +1781,7 @@ namespace gr { *interleave++ = dummy_randomize[index++]; } for (int j = 0; j < N_FC - C_FC; j++) { - *interleave++ = unmodulated[0]; + *interleave++ = unmodulated; } interleave = zigzag_interleave; read = 0; |