summaryrefslogtreecommitdiff
path: root/gr-dtv/lib/dvbt2/dvbt2_p1insertion_cc_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-dtv/lib/dvbt2/dvbt2_p1insertion_cc_impl.cc')
-rw-r--r--gr-dtv/lib/dvbt2/dvbt2_p1insertion_cc_impl.cc592
1 files changed, 309 insertions, 283 deletions
diff --git a/gr-dtv/lib/dvbt2/dvbt2_p1insertion_cc_impl.cc b/gr-dtv/lib/dvbt2/dvbt2_p1insertion_cc_impl.cc
index 5c4e68c4a3..9fda59a468 100644
--- a/gr-dtv/lib/dvbt2/dvbt2_p1insertion_cc_impl.cc
+++ b/gr-dtv/lib/dvbt2/dvbt2_p1insertion_cc_impl.cc
@@ -1,17 +1,17 @@
/* -*- c++ -*- */
-/*
+/*
* Copyright 2015,2019 Free Software Foundation, Inc.
- *
+ *
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3, or (at your option)
* any later version.
- *
+ *
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street,
@@ -28,331 +28,357 @@
#include <algorithm>
namespace gr {
- namespace dtv {
+namespace dtv {
- dvbt2_p1insertion_cc::sptr
- dvbt2_p1insertion_cc::make(dvbt2_extended_carrier_t carriermode, dvbt2_fftsize_t fftsize, dvb_guardinterval_t guardinterval, int numdatasyms, dvbt2_preamble_t preamble, dvbt2_showlevels_t showlevels, float vclip)
- {
- return gnuradio::get_initial_sptr
- (new dvbt2_p1insertion_cc_impl(carriermode, fftsize, guardinterval, numdatasyms, preamble, showlevels, vclip));
- }
+dvbt2_p1insertion_cc::sptr
+dvbt2_p1insertion_cc::make(dvbt2_extended_carrier_t carriermode,
+ dvbt2_fftsize_t fftsize,
+ dvb_guardinterval_t guardinterval,
+ int numdatasyms,
+ dvbt2_preamble_t preamble,
+ dvbt2_showlevels_t showlevels,
+ float vclip)
+{
+ return gnuradio::get_initial_sptr(new dvbt2_p1insertion_cc_impl(
+ carriermode, fftsize, guardinterval, numdatasyms, preamble, showlevels, vclip));
+}
- /*
- * The private constructor
- */
- dvbt2_p1insertion_cc_impl::dvbt2_p1insertion_cc_impl(dvbt2_extended_carrier_t carriermode, dvbt2_fftsize_t fftsize, dvb_guardinterval_t guardinterval, int numdatasyms, dvbt2_preamble_t preamble, dvbt2_showlevels_t showlevels, float vclip)
- : gr::block("dvbt2_p1insertion_cc",
- gr::io_signature::make(1, 1, sizeof(gr_complex)),
- gr::io_signature::make(1, 1, sizeof(gr_complex)))
- {
- int s1, s2, index = 0;
- const gr_complex *in = (const gr_complex *) p1_freq;
- gr_complex *out = (gr_complex *) p1_time;
- s1 = preamble;
- switch (fftsize) {
- case FFTSIZE_1K:
- fft_size = 1024;
- N_P2 = 16;
- break;
- case FFTSIZE_2K:
- fft_size = 2048;
- N_P2 = 8;
- break;
- case FFTSIZE_4K:
- fft_size = 4096;
- N_P2 = 4;
- break;
- case FFTSIZE_8K:
- case FFTSIZE_8K_T2GI:
- fft_size = 8192;
- N_P2 = 2;
- break;
- case FFTSIZE_16K:
- case FFTSIZE_16K_T2GI:
- fft_size = 16384;
- N_P2 = 1;
- break;
- case FFTSIZE_32K:
- case FFTSIZE_32K_T2GI:
- fft_size = 32768;
- N_P2 = 1;
- break;
- }
- switch (guardinterval) {
- case GI_1_32:
- guard_interval = fft_size / 32;
- break;
- case GI_1_16:
- guard_interval = fft_size / 16;
- break;
- case GI_1_8:
- guard_interval = fft_size / 8;
- break;
- case GI_1_4:
- guard_interval = fft_size / 4;
- break;
- case GI_1_128:
- guard_interval = fft_size / 128;
- break;
- case GI_19_128:
- guard_interval = (fft_size * 19) / 128;
- break;
- case GI_19_256:
- guard_interval = (fft_size * 19) / 256;
- break;
- }
- init_p1_randomizer();
- s2 = (fftsize & 0x7) << 1;
- for (int i = 0; i < 8; i++) {
+/*
+ * The private constructor
+ */
+dvbt2_p1insertion_cc_impl::dvbt2_p1insertion_cc_impl(dvbt2_extended_carrier_t carriermode,
+ dvbt2_fftsize_t fftsize,
+ dvb_guardinterval_t guardinterval,
+ int numdatasyms,
+ dvbt2_preamble_t preamble,
+ dvbt2_showlevels_t showlevels,
+ float vclip)
+ : gr::block("dvbt2_p1insertion_cc",
+ gr::io_signature::make(1, 1, sizeof(gr_complex)),
+ gr::io_signature::make(1, 1, sizeof(gr_complex)))
+{
+ int s1, s2, index = 0;
+ const gr_complex* in = (const gr_complex*)p1_freq;
+ gr_complex* out = (gr_complex*)p1_time;
+ s1 = preamble;
+ switch (fftsize) {
+ case FFTSIZE_1K:
+ fft_size = 1024;
+ N_P2 = 16;
+ break;
+ case FFTSIZE_2K:
+ fft_size = 2048;
+ N_P2 = 8;
+ break;
+ case FFTSIZE_4K:
+ fft_size = 4096;
+ N_P2 = 4;
+ break;
+ case FFTSIZE_8K:
+ case FFTSIZE_8K_T2GI:
+ fft_size = 8192;
+ N_P2 = 2;
+ break;
+ case FFTSIZE_16K:
+ case FFTSIZE_16K_T2GI:
+ fft_size = 16384;
+ N_P2 = 1;
+ break;
+ case FFTSIZE_32K:
+ case FFTSIZE_32K_T2GI:
+ fft_size = 32768;
+ N_P2 = 1;
+ break;
+ }
+ switch (guardinterval) {
+ case GI_1_32:
+ guard_interval = fft_size / 32;
+ break;
+ case GI_1_16:
+ guard_interval = fft_size / 16;
+ break;
+ case GI_1_8:
+ guard_interval = fft_size / 8;
+ break;
+ case GI_1_4:
+ guard_interval = fft_size / 4;
+ break;
+ case GI_1_128:
+ guard_interval = fft_size / 128;
+ break;
+ case GI_19_128:
+ guard_interval = (fft_size * 19) / 128;
+ break;
+ case GI_19_256:
+ guard_interval = (fft_size * 19) / 256;
+ break;
+ }
+ init_p1_randomizer();
+ s2 = (fftsize & 0x7) << 1;
+ for (int i = 0; i < 8; i++) {
for (int j = 7; j >= 0; j--) {
- modulation_sequence[index++] = (s1_modulation_patterns[s1][i] >> j) & 0x1;
+ modulation_sequence[index++] = (s1_modulation_patterns[s1][i] >> j) & 0x1;
}
- }
- for (int i = 0; i < 32; i++) {
+ }
+ for (int i = 0; i < 32; i++) {
for (int j = 7; j >= 0; j--) {
- modulation_sequence[index++] = (s2_modulation_patterns[s2][i] >> j) & 0x1;
+ modulation_sequence[index++] = (s2_modulation_patterns[s2][i] >> j) & 0x1;
}
- }
- for (int i = 0; i < 8; i++) {
+ }
+ for (int i = 0; i < 8; i++) {
for (int j = 7; j >= 0; j--) {
- modulation_sequence[index++] = (s1_modulation_patterns[s1][i] >> j) & 0x1;
+ modulation_sequence[index++] = (s1_modulation_patterns[s1][i] >> j) & 0x1;
}
- }
- dbpsk_modulation_sequence[0] = 1;
- for (int i = 1; i < 385; i++) {
+ }
+ dbpsk_modulation_sequence[0] = 1;
+ for (int i = 1; i < 385; i++) {
dbpsk_modulation_sequence[i] = 0;
- }
- for (int i = 1; i < 385; i++) {
+ }
+ for (int i = 1; i < 385; i++) {
if (modulation_sequence[i - 1] == 1) {
- dbpsk_modulation_sequence[i] = -dbpsk_modulation_sequence[i - 1];
- }
- else {
- dbpsk_modulation_sequence[i] = dbpsk_modulation_sequence[i - 1];
+ dbpsk_modulation_sequence[i] = -dbpsk_modulation_sequence[i - 1];
+ } else {
+ dbpsk_modulation_sequence[i] = dbpsk_modulation_sequence[i - 1];
}
- }
- for (int i = 0; i < 384; i++) {
+ }
+ for (int i = 0; i < 384; i++) {
dbpsk_modulation_sequence[i] = dbpsk_modulation_sequence[i + 1] * p1_randomize[i];
- }
- std::fill_n(&p1_freq[0], 1024, 0);
- for (int i = 0; i < 384; i++) {
+ }
+ std::fill_n(&p1_freq[0], 1024, 0);
+ for (int i = 0; i < 384; i++) {
p1_freq[p1_active_carriers[i] + 86] = float(dbpsk_modulation_sequence[i]);
- }
- p1_fft_size = 1024;
- p1_fft = new fft::fft_complex(p1_fft_size, false, 1);
- gr_complex *dst = p1_fft->get_inbuf();
- memcpy(&dst[p1_fft_size / 2], &in[0], sizeof(gr_complex) * p1_fft_size / 2);
- memcpy(&dst[0], &in[p1_fft_size / 2], sizeof(gr_complex) * p1_fft_size / 2);
- p1_fft->execute();
- memcpy(out, p1_fft->get_outbuf(), sizeof(gr_complex) * p1_fft_size);
- for (int i = 0; i < 1024; i++) {
+ }
+ p1_fft_size = 1024;
+ p1_fft = new fft::fft_complex(p1_fft_size, false, 1);
+ gr_complex* dst = p1_fft->get_inbuf();
+ memcpy(&dst[p1_fft_size / 2], &in[0], sizeof(gr_complex) * p1_fft_size / 2);
+ memcpy(&dst[0], &in[p1_fft_size / 2], sizeof(gr_complex) * p1_fft_size / 2);
+ p1_fft->execute();
+ memcpy(out, p1_fft->get_outbuf(), sizeof(gr_complex) * p1_fft_size);
+ for (int i = 0; i < 1024; i++) {
p1_time[i] /= std::sqrt(384.0);
- }
- for (int i = 0; i < 1023; i++) {
+ }
+ for (int i = 0; i < 1023; i++) {
p1_freqshft[i + 1] = p1_freq[i];
- }
- p1_freqshft[0] = p1_freq[1023];
- in = (const gr_complex *) p1_freqshft;
- out = (gr_complex *) p1_timeshft;
- dst = p1_fft->get_inbuf();
- memcpy(&dst[p1_fft_size / 2], &in[0], sizeof(gr_complex) * p1_fft_size / 2);
- memcpy(&dst[0], &in[p1_fft_size / 2], sizeof(gr_complex) * p1_fft_size / 2);
- p1_fft->execute();
- memcpy(out, p1_fft->get_outbuf(), sizeof(gr_complex) * p1_fft_size);
- for (int i = 0; i < 1024; i++) {
+ }
+ p1_freqshft[0] = p1_freq[1023];
+ in = (const gr_complex*)p1_freqshft;
+ out = (gr_complex*)p1_timeshft;
+ dst = p1_fft->get_inbuf();
+ memcpy(&dst[p1_fft_size / 2], &in[0], sizeof(gr_complex) * p1_fft_size / 2);
+ memcpy(&dst[0], &in[p1_fft_size / 2], sizeof(gr_complex) * p1_fft_size / 2);
+ p1_fft->execute();
+ memcpy(out, p1_fft->get_outbuf(), sizeof(gr_complex) * p1_fft_size);
+ for (int i = 0; i < 1024; i++) {
p1_timeshft[i] /= std::sqrt(384.0);
- }
- frame_items = ((numdatasyms + N_P2) * fft_size) + ((numdatasyms + N_P2) * guard_interval);
- insertion_items = frame_items + 2048;
- set_output_multiple(frame_items + 2048);
- show_levels = showlevels;
- real_positive = 0.0;
- real_negative = 0.0;
- imag_positive = 0.0;
- imag_negative = 0.0;
- real_positive_threshold = vclip;
- real_negative_threshold = -vclip;
- imag_positive_threshold = vclip;
- imag_negative_threshold = -vclip;
- real_positive_threshold_count = 0;
- real_negative_threshold_count = 0;
- imag_positive_threshold_count = 0;
- imag_negative_threshold_count = 0;
}
+ frame_items =
+ ((numdatasyms + N_P2) * fft_size) + ((numdatasyms + N_P2) * guard_interval);
+ insertion_items = frame_items + 2048;
+ set_output_multiple(frame_items + 2048);
+ show_levels = showlevels;
+ real_positive = 0.0;
+ real_negative = 0.0;
+ imag_positive = 0.0;
+ imag_negative = 0.0;
+ real_positive_threshold = vclip;
+ real_negative_threshold = -vclip;
+ imag_positive_threshold = vclip;
+ imag_negative_threshold = -vclip;
+ real_positive_threshold_count = 0;
+ real_negative_threshold_count = 0;
+ imag_positive_threshold_count = 0;
+ imag_negative_threshold_count = 0;
+}
- void
- dvbt2_p1insertion_cc_impl::init_p1_randomizer(void)
- {
- int sr = 0x4e46;
- for (int i = 0; i < 384; i++) {
+void dvbt2_p1insertion_cc_impl::init_p1_randomizer(void)
+{
+ int sr = 0x4e46;
+ for (int i = 0; i < 384; i++) {
int b = ((sr) ^ (sr >> 1)) & 1;
if (b == 0) {
- p1_randomize[i] = 1;
- }
- else {
- p1_randomize[i] = -1;
+ p1_randomize[i] = 1;
+ } else {
+ p1_randomize[i] = -1;
}
sr >>= 1;
- if(b) sr |= 0x4000;
- }
+ if (b)
+ sr |= 0x4000;
}
+}
- /*
- * Our virtual destructor.
- */
- dvbt2_p1insertion_cc_impl::~dvbt2_p1insertion_cc_impl()
- {
- delete p1_fft;
- }
+/*
+ * Our virtual destructor.
+ */
+dvbt2_p1insertion_cc_impl::~dvbt2_p1insertion_cc_impl() { delete p1_fft; }
- void
- dvbt2_p1insertion_cc_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required)
- {
- ninput_items_required[0] = frame_items * (noutput_items / insertion_items);
- }
+void dvbt2_p1insertion_cc_impl::forecast(int noutput_items,
+ gr_vector_int& ninput_items_required)
+{
+ ninput_items_required[0] = frame_items * (noutput_items / insertion_items);
+}
- int
- dvbt2_p1insertion_cc_impl::general_work (int noutput_items,
- gr_vector_int &ninput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
- {
- const gr_complex *in = (const gr_complex *) input_items[0];
- gr_complex *out = (gr_complex *) output_items[0];
- gr_complex *level;
+int dvbt2_p1insertion_cc_impl::general_work(int noutput_items,
+ gr_vector_int& ninput_items,
+ gr_vector_const_void_star& input_items,
+ gr_vector_void_star& output_items)
+{
+ const gr_complex* in = (const gr_complex*)input_items[0];
+ gr_complex* out = (gr_complex*)output_items[0];
+ gr_complex* level;
- for (int i = 0; i < noutput_items; i += insertion_items) {
+ for (int i = 0; i < noutput_items; i += insertion_items) {
level = out;
for (int j = 0; j < 542; j++) {
- *out++ = p1_timeshft[j];
+ *out++ = p1_timeshft[j];
}
for (int j = 0; j < 1024; j++) {
- *out++ = p1_time[j];
+ *out++ = p1_time[j];
}
for (int j = 542; j < 1024; j++) {
- *out++ = p1_timeshft[j];
+ *out++ = p1_timeshft[j];
}
memcpy(out, in, sizeof(gr_complex) * frame_items);
if (show_levels == TRUE) {
- for (int j = 0; j < frame_items + 2048; j++) {
- if (level[j].real() > real_positive) {
- real_positive = level[j].real();
- }
- if (level[j].real() < real_negative) {
- real_negative = level[j].real();
- }
- if (level[j].imag() > imag_positive) {
- imag_positive = level[j].imag();
- }
- if (level[j].imag() < imag_negative) {
- imag_negative = level[j].imag();
+ for (int j = 0; j < frame_items + 2048; j++) {
+ if (level[j].real() > real_positive) {
+ real_positive = level[j].real();
+ }
+ if (level[j].real() < real_negative) {
+ real_negative = level[j].real();
+ }
+ if (level[j].imag() > imag_positive) {
+ imag_positive = level[j].imag();
+ }
+ if (level[j].imag() < imag_negative) {
+ imag_negative = level[j].imag();
+ }
+ if (level[j].real() > real_positive_threshold) {
+ real_positive_threshold_count++;
+ }
+ if (level[j].real() < real_negative_threshold) {
+ real_negative_threshold_count++;
+ }
+ if (level[j].imag() > imag_positive_threshold) {
+ imag_positive_threshold_count++;
+ }
+ if (level[j].imag() < imag_negative_threshold) {
+ imag_negative_threshold_count++;
+ }
}
- if (level[j].real() > real_positive_threshold) {
- real_positive_threshold_count++;
- }
- if (level[j].real() < real_negative_threshold) {
- real_negative_threshold_count++;
- }
- if (level[j].imag() > imag_positive_threshold) {
- imag_positive_threshold_count++;
- }
- if (level[j].imag() < imag_negative_threshold) {
- imag_negative_threshold_count++;
- }
- }
- printf("peak real = %+e, %+e, %d, %d\n", real_positive, real_negative, real_positive_threshold_count, real_negative_threshold_count);
- printf("peak imag = %+e, %+e, %d, %d\n", imag_positive, imag_negative, imag_positive_threshold_count, imag_negative_threshold_count);
+ printf("peak real = %+e, %+e, %d, %d\n",
+ real_positive,
+ real_negative,
+ real_positive_threshold_count,
+ real_negative_threshold_count);
+ printf("peak imag = %+e, %+e, %d, %d\n",
+ imag_positive,
+ imag_negative,
+ imag_positive_threshold_count,
+ imag_negative_threshold_count);
}
out += frame_items;
in += frame_items;
- }
+ }
- // Tell runtime system how many input items we consumed on
- // each input stream.
- consume_each (frame_items);
+ // Tell runtime system how many input items we consumed on
+ // each input stream.
+ consume_each(frame_items);
- // Tell runtime system how many output items we produced.
- return noutput_items;
- }
+ // Tell runtime system how many output items we produced.
+ return noutput_items;
+}
- const int dvbt2_p1insertion_cc_impl::p1_active_carriers[384] =
- {
- 44, 45, 47, 51, 54, 59, 62, 64, 65, 66, 70, 75, 78, 80, 81, 82, 84, 85, 87, 88, 89, 90,
- 94, 96, 97, 98, 102, 107, 110, 112, 113, 114, 116, 117, 119, 120, 121, 122, 124,
- 125, 127, 131, 132, 133, 135, 136, 137, 138, 142, 144, 145, 146, 148, 149, 151,
- 152, 153, 154, 158, 160, 161, 162, 166, 171,
+const int dvbt2_p1insertion_cc_impl::p1_active_carriers[384] = {
+ 44, 45, 47, 51, 54, 59, 62, 64, 65, 66, 70, 75, 78, 80, 81, 82,
+ 84, 85, 87, 88, 89, 90, 94, 96, 97, 98, 102, 107, 110, 112, 113, 114,
+ 116, 117, 119, 120, 121, 122, 124, 125, 127, 131, 132, 133, 135, 136, 137, 138,
+ 142, 144, 145, 146, 148, 149, 151, 152, 153, 154, 158, 160, 161, 162, 166, 171,
- 172, 173, 175, 179, 182, 187, 190, 192, 193, 194, 198, 203, 206, 208, 209, 210,
- 212, 213, 215, 216, 217, 218, 222, 224, 225, 226, 230, 235, 238, 240, 241, 242,
- 244, 245, 247, 248, 249, 250, 252, 253, 255, 259, 260, 261, 263, 264, 265, 266,
- 270, 272, 273, 274, 276, 277, 279, 280, 281, 282, 286, 288, 289, 290, 294, 299,
- 300, 301, 303, 307, 310, 315, 318, 320, 321, 322, 326, 331, 334, 336, 337, 338,
- 340, 341, 343, 344, 345, 346, 350, 352, 353, 354, 358, 363, 364, 365, 367, 371,
- 374, 379, 382, 384, 385, 386, 390, 395, 396, 397, 399, 403, 406, 411, 412, 413,
- 415, 419, 420, 421, 423, 424, 425, 426, 428, 429, 431, 435, 438, 443, 446, 448,
- 449, 450, 454, 459, 462, 464, 465, 466, 468, 469, 471, 472, 473, 474, 478, 480,
- 481, 482, 486, 491, 494, 496, 497, 498, 500, 501, 503, 504, 505, 506, 508, 509,
- 511, 515, 516, 517, 519, 520, 521, 522, 526, 528, 529, 530, 532, 533, 535, 536,
- 537, 538, 542, 544, 545, 546, 550, 555, 558, 560, 561, 562, 564, 565, 567, 568,
- 569, 570, 572, 573, 575, 579, 580, 581, 583, 584, 585, 586, 588, 589, 591, 595,
- 598, 603, 604, 605, 607, 611, 612, 613, 615, 616, 617, 618, 622, 624, 625, 626,
- 628, 629, 631, 632, 633, 634, 636, 637, 639, 643, 644, 645, 647, 648, 649, 650,
- 654, 656, 657, 658, 660, 661, 663, 664, 665, 666, 670, 672, 673, 674, 678, 683,
+ 172, 173, 175, 179, 182, 187, 190, 192, 193, 194, 198, 203, 206, 208, 209, 210,
+ 212, 213, 215, 216, 217, 218, 222, 224, 225, 226, 230, 235, 238, 240, 241, 242,
+ 244, 245, 247, 248, 249, 250, 252, 253, 255, 259, 260, 261, 263, 264, 265, 266,
+ 270, 272, 273, 274, 276, 277, 279, 280, 281, 282, 286, 288, 289, 290, 294, 299,
+ 300, 301, 303, 307, 310, 315, 318, 320, 321, 322, 326, 331, 334, 336, 337, 338,
+ 340, 341, 343, 344, 345, 346, 350, 352, 353, 354, 358, 363, 364, 365, 367, 371,
+ 374, 379, 382, 384, 385, 386, 390, 395, 396, 397, 399, 403, 406, 411, 412, 413,
+ 415, 419, 420, 421, 423, 424, 425, 426, 428, 429, 431, 435, 438, 443, 446, 448,
+ 449, 450, 454, 459, 462, 464, 465, 466, 468, 469, 471, 472, 473, 474, 478, 480,
+ 481, 482, 486, 491, 494, 496, 497, 498, 500, 501, 503, 504, 505, 506, 508, 509,
+ 511, 515, 516, 517, 519, 520, 521, 522, 526, 528, 529, 530, 532, 533, 535, 536,
+ 537, 538, 542, 544, 545, 546, 550, 555, 558, 560, 561, 562, 564, 565, 567, 568,
+ 569, 570, 572, 573, 575, 579, 580, 581, 583, 584, 585, 586, 588, 589, 591, 595,
+ 598, 603, 604, 605, 607, 611, 612, 613, 615, 616, 617, 618, 622, 624, 625, 626,
+ 628, 629, 631, 632, 633, 634, 636, 637, 639, 643, 644, 645, 647, 648, 649, 650,
+ 654, 656, 657, 658, 660, 661, 663, 664, 665, 666, 670, 672, 673, 674, 678, 683,
- 684, 689, 692, 696, 698, 699, 701, 702, 703, 704, 706, 707, 708,
- 712, 714, 715, 717, 718, 719, 720, 722, 723, 725, 726, 727, 729,
- 733, 734, 735, 736, 738, 739, 740, 744, 746, 747, 748, 753, 756,
- 760, 762, 763, 765, 766, 767, 768, 770, 771, 772, 776, 778, 779,
- 780, 785, 788, 792, 794, 795, 796, 801, 805, 806, 807, 809
- };
+ 684, 689, 692, 696, 698, 699, 701, 702, 703, 704, 706, 707, 708, 712, 714, 715,
+ 717, 718, 719, 720, 722, 723, 725, 726, 727, 729, 733, 734, 735, 736, 738, 739,
+ 740, 744, 746, 747, 748, 753, 756, 760, 762, 763, 765, 766, 767, 768, 770, 771,
+ 772, 776, 778, 779, 780, 785, 788, 792, 794, 795, 796, 801, 805, 806, 807, 809
+};
- const unsigned char dvbt2_p1insertion_cc_impl::s1_modulation_patterns[8][8] =
- {
- {0x12, 0x47, 0x21, 0x74, 0x1D, 0x48, 0x2E, 0x7B},
- {0x47, 0x12, 0x74, 0x21, 0x48, 0x1D, 0x7B, 0x2E},
- {0x21, 0x74, 0x12, 0x47, 0x2E, 0x7B, 0x1D, 0x48},
- {0x74, 0x21, 0x47, 0x12, 0x7B, 0x2E, 0x48, 0x1D},
- {0x1D, 0x48, 0x2E, 0x7B, 0x12, 0x47, 0x21, 0x74},
- {0x48, 0x1D, 0x7B, 0x2E, 0x47, 0x12, 0x74, 0x21},
- {0x2E, 0x7B, 0x1D, 0x48, 0x21, 0x74, 0x12, 0x47},
- {0x7B, 0x2E, 0x48, 0x1D, 0x74, 0x21, 0x47, 0x12}
- };
+const unsigned char dvbt2_p1insertion_cc_impl::s1_modulation_patterns[8][8] = {
+ { 0x12, 0x47, 0x21, 0x74, 0x1D, 0x48, 0x2E, 0x7B },
+ { 0x47, 0x12, 0x74, 0x21, 0x48, 0x1D, 0x7B, 0x2E },
+ { 0x21, 0x74, 0x12, 0x47, 0x2E, 0x7B, 0x1D, 0x48 },
+ { 0x74, 0x21, 0x47, 0x12, 0x7B, 0x2E, 0x48, 0x1D },
+ { 0x1D, 0x48, 0x2E, 0x7B, 0x12, 0x47, 0x21, 0x74 },
+ { 0x48, 0x1D, 0x7B, 0x2E, 0x47, 0x12, 0x74, 0x21 },
+ { 0x2E, 0x7B, 0x1D, 0x48, 0x21, 0x74, 0x12, 0x47 },
+ { 0x7B, 0x2E, 0x48, 0x1D, 0x74, 0x21, 0x47, 0x12 }
+};
- const unsigned char dvbt2_p1insertion_cc_impl::s2_modulation_patterns[16][32] =
- {
- {0x12, 0x1D, 0x47, 0x48, 0x21, 0x2E, 0x74, 0x7B, 0x1D, 0x12, 0x48, 0x47, 0x2E, 0x21, 0x7B, 0x74,
- 0x12, 0xE2, 0x47, 0xB7, 0x21, 0xD1, 0x74, 0x84, 0x1D, 0xED, 0x48, 0xB8, 0x2E, 0xDE, 0x7B, 0x8B},
- {0x47, 0x48, 0x12, 0x1D, 0x74, 0x7B, 0x21, 0x2E, 0x48, 0x47, 0x1D, 0x12, 0x7B, 0x74, 0x2E, 0x21,
- 0x47, 0xB7, 0x12, 0xE2, 0x74, 0x84, 0x21, 0xD1, 0x48, 0xB8, 0x1D, 0xED, 0x7B, 0x8B, 0x2E, 0xDE},
- {0x21, 0x2E, 0x74, 0x7B, 0x12, 0x1D, 0x47, 0x48, 0x2E, 0x21, 0x7B, 0x74, 0x1D, 0x12, 0x48, 0x47,
- 0x21, 0xD1, 0x74, 0x84, 0x12, 0xE2, 0x47, 0xB7, 0x2E, 0xDE, 0x7B, 0x8B, 0x1D, 0xED, 0x48, 0xB8},
- {0x74, 0x7B, 0x21, 0x2E, 0x47, 0x48, 0x12, 0x1D, 0x7B, 0x74, 0x2E, 0x21, 0x48, 0x47, 0x1D, 0x12,
- 0x74, 0x84, 0x21, 0xD1, 0x47, 0xB7, 0x12, 0xE2, 0x7B, 0x8B, 0x2E, 0xDE, 0x48, 0xB8, 0x1D, 0xED},
- {0x1D, 0x12, 0x48, 0x47, 0x2E, 0x21, 0x7B, 0x74, 0x12, 0x1D, 0x47, 0x48, 0x21, 0x2E, 0x74, 0x7B,
- 0x1D, 0xED, 0x48, 0xB8, 0x2E, 0xDE, 0x7B, 0x8B, 0x12, 0xE2, 0x47, 0xB7, 0x21, 0xD1, 0x74, 0x84},
- {0x48, 0x47, 0x1D, 0x12, 0x7B, 0x74, 0x2E, 0x21, 0x47, 0x48, 0x12, 0x1D, 0x74, 0x7B, 0x21, 0x2E,
- 0x48, 0xB8, 0x1D, 0xED, 0x7B, 0x8B, 0x2E, 0xDE, 0x47, 0xB7, 0x12, 0xE2, 0x74, 0x84, 0x21, 0xD1},
- {0x2E, 0x21, 0x7B, 0x74, 0x1D, 0x12, 0x48, 0x47, 0x21, 0x2E, 0x74, 0x7B, 0x12, 0x1D, 0x47, 0x48,
- 0x2E, 0xDE, 0x7B, 0x8B, 0x1D, 0xED, 0x48, 0xB8, 0x21, 0xD1, 0x74, 0x84, 0x12, 0xE2, 0x47, 0xB7},
- {0x7B, 0x74, 0x2E, 0x21, 0x48, 0x47, 0x1D, 0x12, 0x74, 0x7B, 0x21, 0x2E, 0x47, 0x48, 0x12, 0x1D,
- 0x7B, 0x8B, 0x2E, 0xDE, 0x48, 0xB8, 0x1D, 0xED, 0x74, 0x84, 0x21, 0xD1, 0x47, 0xB7, 0x12, 0xE2},
- {0x12, 0xE2, 0x47, 0xB7, 0x21, 0xD1, 0x74, 0x84, 0x1D, 0xED, 0x48, 0xB8, 0x2E, 0xDE, 0x7B, 0x8B,
- 0x12, 0x1D, 0x47, 0x48, 0x21, 0x2E, 0x74, 0x7B, 0x1D, 0x12, 0x48, 0x47, 0x2E, 0x21, 0x7B, 0x74},
- {0x47, 0xB7, 0x12, 0xE2, 0x74, 0x84, 0x21, 0xD1, 0x48, 0xB8, 0x1D, 0xED, 0x7B, 0x8B, 0x2E, 0xDE,
- 0x47, 0x48, 0x12, 0x1D, 0x74, 0x7B, 0x21, 0x2E, 0x48, 0x47, 0x1D, 0x12, 0x7B, 0x74, 0x2E, 0x21},
- {0x21, 0xD1, 0x74, 0x84, 0x12, 0xE2, 0x47, 0xB7, 0x2E, 0xDE, 0x7B, 0x8B, 0x1D, 0xED, 0x48, 0xB8,
- 0x21, 0x2E, 0x74, 0x7B, 0x12, 0x1D, 0x47, 0x48, 0x2E, 0x21, 0x7B, 0x74, 0x1D, 0x12, 0x48, 0x47},
- {0x74, 0x84, 0x21, 0xD1, 0x47, 0xB7, 0x12, 0xE2, 0x7B, 0x8B, 0x2E, 0xDE, 0x48, 0xB8, 0x1D, 0xED,
- 0x74, 0x7B, 0x21, 0x2E, 0x47, 0x48, 0x12, 0x1D, 0x7B, 0x74, 0x2E, 0x21, 0x48, 0x47, 0x1D, 0x12},
- {0x1D, 0xED, 0x48, 0xB8, 0x2E, 0xDE, 0x7B, 0x8B, 0x12, 0xE2, 0x47, 0xB7, 0x21, 0xD1, 0x74, 0x84,
- 0x1D, 0x12, 0x48, 0x47, 0x2E, 0x21, 0x7B, 0x74, 0x12, 0x1D, 0x47, 0x48, 0x21, 0x2E, 0x74, 0x7B},
- {0x48, 0xB8, 0x1D, 0xED, 0x7B, 0x8B, 0x2E, 0xDE, 0x47, 0xB7, 0x12, 0xE2, 0x74, 0x84, 0x21, 0xD1,
- 0x48, 0x47, 0x1D, 0x12, 0x7B, 0x74, 0x2E, 0x21, 0x47, 0x48, 0x12, 0x1D, 0x74, 0x7B, 0x21, 0x2E},
- {0x2E, 0xDE, 0x7B, 0x8B, 0x1D, 0xED, 0x48, 0xB8, 0x21, 0xD1, 0x74, 0x84, 0x12, 0xE2, 0x47, 0xB7,
- 0x2E, 0x21, 0x7B, 0x74, 0x1D, 0x12, 0x48, 0x47, 0x21, 0x2E, 0x74, 0x7B, 0x12, 0x1D, 0x47, 0x48},
- {0x7B, 0x8B, 0x2E, 0xDE, 0x48, 0xB8, 0x1D, 0xED, 0x74, 0x84, 0x21, 0xD1, 0x47, 0xB7, 0x12, 0xE2,
- 0x7B, 0x74, 0x2E, 0x21, 0x48, 0x47, 0x1D, 0x12, 0x74, 0x7B, 0x21, 0x2E, 0x47, 0x48, 0x12, 0x1D}
- };
+const unsigned char dvbt2_p1insertion_cc_impl::s2_modulation_patterns[16][32] = {
+ { 0x12, 0x1D, 0x47, 0x48, 0x21, 0x2E, 0x74, 0x7B, 0x1D, 0x12, 0x48,
+ 0x47, 0x2E, 0x21, 0x7B, 0x74, 0x12, 0xE2, 0x47, 0xB7, 0x21, 0xD1,
+ 0x74, 0x84, 0x1D, 0xED, 0x48, 0xB8, 0x2E, 0xDE, 0x7B, 0x8B },
+ { 0x47, 0x48, 0x12, 0x1D, 0x74, 0x7B, 0x21, 0x2E, 0x48, 0x47, 0x1D,
+ 0x12, 0x7B, 0x74, 0x2E, 0x21, 0x47, 0xB7, 0x12, 0xE2, 0x74, 0x84,
+ 0x21, 0xD1, 0x48, 0xB8, 0x1D, 0xED, 0x7B, 0x8B, 0x2E, 0xDE },
+ { 0x21, 0x2E, 0x74, 0x7B, 0x12, 0x1D, 0x47, 0x48, 0x2E, 0x21, 0x7B,
+ 0x74, 0x1D, 0x12, 0x48, 0x47, 0x21, 0xD1, 0x74, 0x84, 0x12, 0xE2,
+ 0x47, 0xB7, 0x2E, 0xDE, 0x7B, 0x8B, 0x1D, 0xED, 0x48, 0xB8 },
+ { 0x74, 0x7B, 0x21, 0x2E, 0x47, 0x48, 0x12, 0x1D, 0x7B, 0x74, 0x2E,
+ 0x21, 0x48, 0x47, 0x1D, 0x12, 0x74, 0x84, 0x21, 0xD1, 0x47, 0xB7,
+ 0x12, 0xE2, 0x7B, 0x8B, 0x2E, 0xDE, 0x48, 0xB8, 0x1D, 0xED },
+ { 0x1D, 0x12, 0x48, 0x47, 0x2E, 0x21, 0x7B, 0x74, 0x12, 0x1D, 0x47,
+ 0x48, 0x21, 0x2E, 0x74, 0x7B, 0x1D, 0xED, 0x48, 0xB8, 0x2E, 0xDE,
+ 0x7B, 0x8B, 0x12, 0xE2, 0x47, 0xB7, 0x21, 0xD1, 0x74, 0x84 },
+ { 0x48, 0x47, 0x1D, 0x12, 0x7B, 0x74, 0x2E, 0x21, 0x47, 0x48, 0x12,
+ 0x1D, 0x74, 0x7B, 0x21, 0x2E, 0x48, 0xB8, 0x1D, 0xED, 0x7B, 0x8B,
+ 0x2E, 0xDE, 0x47, 0xB7, 0x12, 0xE2, 0x74, 0x84, 0x21, 0xD1 },
+ { 0x2E, 0x21, 0x7B, 0x74, 0x1D, 0x12, 0x48, 0x47, 0x21, 0x2E, 0x74,
+ 0x7B, 0x12, 0x1D, 0x47, 0x48, 0x2E, 0xDE, 0x7B, 0x8B, 0x1D, 0xED,
+ 0x48, 0xB8, 0x21, 0xD1, 0x74, 0x84, 0x12, 0xE2, 0x47, 0xB7 },
+ { 0x7B, 0x74, 0x2E, 0x21, 0x48, 0x47, 0x1D, 0x12, 0x74, 0x7B, 0x21,
+ 0x2E, 0x47, 0x48, 0x12, 0x1D, 0x7B, 0x8B, 0x2E, 0xDE, 0x48, 0xB8,
+ 0x1D, 0xED, 0x74, 0x84, 0x21, 0xD1, 0x47, 0xB7, 0x12, 0xE2 },
+ { 0x12, 0xE2, 0x47, 0xB7, 0x21, 0xD1, 0x74, 0x84, 0x1D, 0xED, 0x48,
+ 0xB8, 0x2E, 0xDE, 0x7B, 0x8B, 0x12, 0x1D, 0x47, 0x48, 0x21, 0x2E,
+ 0x74, 0x7B, 0x1D, 0x12, 0x48, 0x47, 0x2E, 0x21, 0x7B, 0x74 },
+ { 0x47, 0xB7, 0x12, 0xE2, 0x74, 0x84, 0x21, 0xD1, 0x48, 0xB8, 0x1D,
+ 0xED, 0x7B, 0x8B, 0x2E, 0xDE, 0x47, 0x48, 0x12, 0x1D, 0x74, 0x7B,
+ 0x21, 0x2E, 0x48, 0x47, 0x1D, 0x12, 0x7B, 0x74, 0x2E, 0x21 },
+ { 0x21, 0xD1, 0x74, 0x84, 0x12, 0xE2, 0x47, 0xB7, 0x2E, 0xDE, 0x7B,
+ 0x8B, 0x1D, 0xED, 0x48, 0xB8, 0x21, 0x2E, 0x74, 0x7B, 0x12, 0x1D,
+ 0x47, 0x48, 0x2E, 0x21, 0x7B, 0x74, 0x1D, 0x12, 0x48, 0x47 },
+ { 0x74, 0x84, 0x21, 0xD1, 0x47, 0xB7, 0x12, 0xE2, 0x7B, 0x8B, 0x2E,
+ 0xDE, 0x48, 0xB8, 0x1D, 0xED, 0x74, 0x7B, 0x21, 0x2E, 0x47, 0x48,
+ 0x12, 0x1D, 0x7B, 0x74, 0x2E, 0x21, 0x48, 0x47, 0x1D, 0x12 },
+ { 0x1D, 0xED, 0x48, 0xB8, 0x2E, 0xDE, 0x7B, 0x8B, 0x12, 0xE2, 0x47,
+ 0xB7, 0x21, 0xD1, 0x74, 0x84, 0x1D, 0x12, 0x48, 0x47, 0x2E, 0x21,
+ 0x7B, 0x74, 0x12, 0x1D, 0x47, 0x48, 0x21, 0x2E, 0x74, 0x7B },
+ { 0x48, 0xB8, 0x1D, 0xED, 0x7B, 0x8B, 0x2E, 0xDE, 0x47, 0xB7, 0x12,
+ 0xE2, 0x74, 0x84, 0x21, 0xD1, 0x48, 0x47, 0x1D, 0x12, 0x7B, 0x74,
+ 0x2E, 0x21, 0x47, 0x48, 0x12, 0x1D, 0x74, 0x7B, 0x21, 0x2E },
+ { 0x2E, 0xDE, 0x7B, 0x8B, 0x1D, 0xED, 0x48, 0xB8, 0x21, 0xD1, 0x74,
+ 0x84, 0x12, 0xE2, 0x47, 0xB7, 0x2E, 0x21, 0x7B, 0x74, 0x1D, 0x12,
+ 0x48, 0x47, 0x21, 0x2E, 0x74, 0x7B, 0x12, 0x1D, 0x47, 0x48 },
+ { 0x7B, 0x8B, 0x2E, 0xDE, 0x48, 0xB8, 0x1D, 0xED, 0x74, 0x84, 0x21,
+ 0xD1, 0x47, 0xB7, 0x12, 0xE2, 0x7B, 0x74, 0x2E, 0x21, 0x48, 0x47,
+ 0x1D, 0x12, 0x74, 0x7B, 0x21, 0x2E, 0x47, 0x48, 0x12, 0x1D }
+};
- } /* namespace dtv */
+} /* namespace dtv */
} /* namespace gr */
-