summaryrefslogtreecommitdiff
path: root/gr-dtv/lib/dvbt2/dvbt2_framemapper_cc_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-dtv/lib/dvbt2/dvbt2_framemapper_cc_impl.cc')
-rw-r--r--gr-dtv/lib/dvbt2/dvbt2_framemapper_cc_impl.cc277
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;