summaryrefslogtreecommitdiff
path: root/gr-dtv
diff options
context:
space:
mode:
authorJohnathan Corgan <johnathan@corganlabs.com>2016-09-19 06:59:12 -0700
committerJohnathan Corgan <johnathan@corganlabs.com>2016-09-19 06:59:12 -0700
commit22924134e76d624ab59f1439a2998bc2e5882567 (patch)
tree3f15dd94e90b3712ea9f5ba67c22a41826e3e195 /gr-dtv
parentf7c8e9b5cbb49f659b14c9a6119345b7fa15507c (diff)
parent8223ae4eeec5fcbfaaa3f246595fa1b29abe4b0e (diff)
Merge branch 'master' into next
Diffstat (limited to 'gr-dtv')
-rw-r--r--gr-dtv/examples/vv003-cr23.grc6
-rw-r--r--gr-dtv/examples/vv018-miso.grc6
-rw-r--r--gr-dtv/grc/dtv_dvbt2_framemapper_cc.xml4
-rw-r--r--gr-dtv/lib/atsc/atsc_sync_impl.cc42
-rw-r--r--gr-dtv/lib/atsc/atsc_sync_impl.h10
-rw-r--r--gr-dtv/lib/dvbt2/dvbt2_interleaver_bb_impl.cc50
6 files changed, 52 insertions, 66 deletions
diff --git a/gr-dtv/examples/vv003-cr23.grc b/gr-dtv/examples/vv003-cr23.grc
index 4e3df5a968..a81551664c 100644
--- a/gr-dtv/examples/vv003-cr23.grc
+++ b/gr-dtv/examples/vv003-cr23.grc
@@ -351,7 +351,7 @@
<key>dtv_dvb_bbheader_bb</key>
<param>
<key>mode</key>
- <value>INPUTMODE_NORMAL</value>
+ <value>INPUTMODE_HIEFF</value>
</param>
<param>
<key>alias</key>
@@ -486,7 +486,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(632, 36)</value>
+ <value>(656, 36)</value>
</param>
<param>
<key>_rotation</key>
@@ -557,7 +557,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(856, 36)</value>
+ <value>(864, 36)</value>
</param>
<param>
<key>_rotation</key>
diff --git a/gr-dtv/examples/vv018-miso.grc b/gr-dtv/examples/vv018-miso.grc
index f3434a5dc9..b8d296b505 100644
--- a/gr-dtv/examples/vv018-miso.grc
+++ b/gr-dtv/examples/vv018-miso.grc
@@ -504,7 +504,7 @@
<key>dtv_dvb_bbheader_bb</key>
<param>
<key>mode</key>
- <value>INPUTMODE_NORMAL</value>
+ <value>INPUTMODE_HIEFF</value>
</param>
<param>
<key>alias</key>
@@ -639,7 +639,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(608, 20)</value>
+ <value>(640, 20)</value>
</param>
<param>
<key>_rotation</key>
@@ -710,7 +710,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(824, 20)</value>
+ <value>(848, 20)</value>
</param>
<param>
<key>_rotation</key>
diff --git a/gr-dtv/grc/dtv_dvbt2_framemapper_cc.xml b/gr-dtv/grc/dtv_dvbt2_framemapper_cc.xml
index 8cfb4908b6..e795c8a1dc 100644
--- a/gr-dtv/grc/dtv_dvbt2_framemapper_cc.xml
+++ b/gr-dtv/grc/dtv_dvbt2_framemapper_cc.xml
@@ -494,12 +494,12 @@ $inputmode.val, $reservedbiasbits.val, $l1scrambled.val, $inband.val)</make>
<hide>$version.hide_131</hide>
<option>
<name>Normal</name>
- <key>FECFRAME_NORMAL</key>
+ <key>INPUTMODE_NORMAL</key>
<opt>val:dtv.INPUTMODE_NORMAL</opt>
</option>
<option>
<name>High Efficiency</name>
- <key>FECFRAME_SHORT</key>
+ <key>INPUTMODE_HIEFF</key>
<opt>val:dtv.INPUTMODE_HIEFF</opt>
</option>
</param>
diff --git a/gr-dtv/lib/atsc/atsc_sync_impl.cc b/gr-dtv/lib/atsc/atsc_sync_impl.cc
index d83bccc5e0..7ecc33612a 100644
--- a/gr-dtv/lib/atsc/atsc_sync_impl.cc
+++ b/gr-dtv/lib/atsc/atsc_sync_impl.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2014 Free Software Foundation, Inc.
+ * Copyright 2014,2016 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -35,8 +35,8 @@ namespace gr {
static const double ADJUSTMENT_GAIN = 1.0e-5 / (10 * ATSC_DATA_SEGMENT_LENGTH);
static const int SYMBOL_INDEX_OFFSET = 3;
static const int MIN_SEG_LOCK_CORRELATION_VALUE = 5;
- static const int SSI_MIN = -16;
- static const int SSI_MAX = 15;
+ static const char SSI_MIN = -16;
+ static const char SSI_MAX = 15;
atsc_sync::sptr
atsc_sync::make(float rate)
@@ -62,9 +62,6 @@ namespace gr {
d_w = d_rx_clock_to_symbol_freq;
d_mu = 0.5;
- for (int i = 0; i < ATSC_DATA_SEGMENT_LENGTH; i++)
- sample_mem[i] = 0;
-
d_timing_adjust = 0;
d_counter = 0;
d_symbol_index = 0;
@@ -72,8 +69,9 @@ namespace gr {
d_sr = 0;
- for (int i = 0; i < ATSC_DATA_SEGMENT_LENGTH; i++)
- d_integrator[i] = SSI_MIN;
+ memset(d_sample_mem, 0, ATSC_DATA_SEGMENT_LENGTH * sizeof(*d_sample_mem)); // (float)0 = 0x00000000
+ memset(d_data_mem, 0, ATSC_DATA_SEGMENT_LENGTH * sizeof(*d_data_mem)); // (float)0 = 0x00000000
+ memset(d_integrator, SSI_MIN, ATSC_DATA_SEGMENT_LENGTH * sizeof(*d_integrator)); // signed char
}
atsc_sync_impl::~atsc_sync_impl()
@@ -103,7 +101,7 @@ namespace gr {
// amount actually consumed
d_si = 0;
- for (output_produced = 0; output_produced < noutput_items && (d_si + (int)d_interp.ntaps()) < ninput_items[0];) {
+ for (d_output_produced = 0; d_output_produced < noutput_items && (d_si + (int)d_interp.ntaps()) < ninput_items[0];) {
// First we interpolate a sample from input to work with
interp_sample = d_interp.interpolate(&in[d_si], d_mu);
@@ -119,7 +117,7 @@ namespace gr {
d_si += d_incr;
// Remember the sample at this count position
- sample_mem[d_counter] = interp_sample;
+ d_sample_mem[d_counter] = interp_sample;
// Is the sample positive or negative?
int bit = (interp_sample < 0 ? 0 : 1);
@@ -154,22 +152,22 @@ namespace gr {
d_seg_locked = best_correlation_value >= MIN_SEG_LOCK_CORRELATION_VALUE;
// the coefficients are -1,-1,+1,+1
- //d_timing_adjust = sample_mem[best_correlation_index - 3] +
- // sample_mem[best_correlation_index - 2] -
- // sample_mem[best_correlation_index - 1] -
- // sample_mem[best_correlation_index];
+ //d_timing_adjust = d_sample_mem[best_correlation_index - 3] +
+ // d_sample_mem[best_correlation_index - 2] -
+ // d_sample_mem[best_correlation_index - 1] -
+ // d_sample_mem[best_correlation_index];
//printf( "d_timing_adjust = %f\n", d_timing_adjust );
int corr_count = best_correlation_index;
- d_timing_adjust = -sample_mem[corr_count--];
+ d_timing_adjust = -d_sample_mem[corr_count--];
if( corr_count < 0 ) corr_count = ATSC_DATA_SEGMENT_LENGTH - 1;
- d_timing_adjust -= sample_mem[corr_count--];
+ d_timing_adjust -= d_sample_mem[corr_count--];
if( corr_count < 0 ) corr_count = ATSC_DATA_SEGMENT_LENGTH - 1;
- d_timing_adjust += sample_mem[corr_count--];
+ d_timing_adjust += d_sample_mem[corr_count--];
if( corr_count < 0 ) corr_count = ATSC_DATA_SEGMENT_LENGTH - 1;
- d_timing_adjust += sample_mem[corr_count--];
+ d_timing_adjust += d_sample_mem[corr_count--];
d_symbol_index = SYMBOL_INDEX_OFFSET - 1 - best_correlation_index;
if (d_symbol_index < 0)
@@ -183,19 +181,19 @@ namespace gr {
// half full, this is OK becouse the fs_checker will not let packets though
// untill a non-corrupted field packet is found
if( d_seg_locked ) {
- data_mem[d_symbol_index] = interp_sample;
+ d_data_mem[d_symbol_index] = interp_sample;
if( d_symbol_index >= (ATSC_DATA_SEGMENT_LENGTH - 1) )
{
for( int i = 0; i < ATSC_DATA_SEGMENT_LENGTH; i++ )
- soft_data_segment_out[output_produced].data[i] = data_mem[i];
- output_produced++;
+ soft_data_segment_out[d_output_produced].data[i] = d_data_mem[i];
+ d_output_produced++;
}
}
}
consume_each(d_si);
- return output_produced;
+ return d_output_produced;
}
diff --git a/gr-dtv/lib/atsc/atsc_sync_impl.h b/gr-dtv/lib/atsc/atsc_sync_impl.h
index f5e645049c..670cb311e1 100644
--- a/gr-dtv/lib/atsc/atsc_sync_impl.h
+++ b/gr-dtv/lib/atsc/atsc_sync_impl.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2014 Free Software Foundation, Inc.
+ * Copyright 2014,2016 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -44,16 +44,16 @@ namespace gr {
double d_mu; // fractional delay [0,1]
int d_incr;
- float sample_mem[ATSC_DATA_SEGMENT_LENGTH];
- float data_mem[ATSC_DATA_SEGMENT_LENGTH];
+ float d_sample_mem[ATSC_DATA_SEGMENT_LENGTH];
+ float d_data_mem[ATSC_DATA_SEGMENT_LENGTH];
double d_timing_adjust;
int d_counter; // free running mod 832 counter
int d_symbol_index;
bool d_seg_locked;
- int d_sr; // 4 bit shift register
+ unsigned char d_sr; // 4 bit shift register
signed char d_integrator[ATSC_DATA_SEGMENT_LENGTH];
- int output_produced;
+ int d_output_produced;
public:
atsc_sync_impl(float rate);
diff --git a/gr-dtv/lib/dvbt2/dvbt2_interleaver_bb_impl.cc b/gr-dtv/lib/dvbt2/dvbt2_interleaver_bb_impl.cc
index 9ebfb143ed..3e3dc430b6 100644
--- a/gr-dtv/lib/dvbt2/dvbt2_interleaver_bb_impl.cc
+++ b/gr-dtv/lib/dvbt2/dvbt2_interleaver_bb_impl.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2015 Free Software Foundation, Inc.
+ * Copyright 2015,2016 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
@@ -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 */