commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] [gnuradio] 01/01: dtv: fix segfault in DVB-T demod OFD


From: git
Subject: [Commit-gnuradio] [gnuradio] 01/01: dtv: fix segfault in DVB-T demod OFDM symbol acquisition
Date: Sun, 6 Dec 2015 01:45:02 +0000 (UTC)

This is an automated email from the git hooks/post-receive script.

jcorgan pushed a commit to branch master
in repository gnuradio.

commit d55fde354f257a1dd615a66c4ca98e3b6c6a5854
Author: Johnathan Corgan <address@hidden>
Date:   Sat Dec 5 17:27:56 2015 -0800

    dtv: fix segfault in DVB-T demod OFDM symbol acquisition
    
    * Fix indexing error in calculating bounds for correlation
    
    * Fix search range for correlation peak
---
 gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.cc | 42 ++++-------------------
 gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.h  | 16 +++------
 2 files changed, 10 insertions(+), 48 deletions(-)

diff --git a/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.cc 
b/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.cc
index 2027574..84b20f9 100644
--- a/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.cc
+++ b/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.cc
@@ -1,17 +1,17 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -119,13 +119,9 @@ namespace gr {
       volk_32fc_magnitude_squared_32f(&d_norm[low], &in[low], size);
 
       // Calculate gamma on each point
-#ifdef SEGFAULT_FIX
       low = lookup_stop - d_cp_length + 1;
-      size = lookup_start - (lookup_stop - d_cp_length + 1) + 1;
-#else
-      low = lookup_stop - d_cp_length - 1;
-      size = lookup_start - (lookup_stop - d_cp_length - 1) + 1;
-#endif
+      size = lookup_start - low + 1;
+
       volk_32fc_x2_multiply_conjugate_32fc(&d_corr[low - d_fft_length], 
&in[low], &in[low - d_fft_length], size);
 
       // Calculate time delay and frequency correction
@@ -349,10 +345,6 @@ namespace gr {
           d_initial_acquisition = ml_sync(in, 2 * d_fft_length + d_cp_length - 
1, d_fft_length + d_cp_length - 1, \
               &d_cp_start, &d_derot[0], &d_to_consume, &d_to_out);
 
-#ifdef SEGFAULT_FIX
-          d_cp_start_initial = d_cp_start;
-          d_cp_start_slip = 0;
-#endif
           // Send sync_start downstream
           send_sync_start();
         }
@@ -360,33 +352,12 @@ namespace gr {
         // This is fractional frequency correction (pre FFT)
         // It is also called coarse frequency correction
         if (d_initial_acquisition) {
-#ifdef SEGFAULT_FIX
           d_cp_found = ml_sync(in, d_cp_start + 16, d_cp_start, \
               &d_cp_start, &d_derot[0], &d_to_consume, &d_to_out);
-#else
-          d_cp_found = ml_sync(in, d_cp_start + 8, d_cp_start - 8, \
-              &d_cp_start, &d_derot[0], &d_to_consume, &d_to_out);
-#endif
 
           if (d_cp_found) {
             d_freq_correction_count = 0;
 
-#ifdef SEGFAULT_FIX
-            // detect and ignore false peaks
-            if (d_cp_start != d_cp_start_initial) {
-              d_cp_start_slip++;
-              if (d_cp_start_slip == 2) {
-                d_cp_start_slip = 0;
-              }
-              else {
-                d_cp_start = d_cp_start_initial;
-              }
-            }
-            else {
-              d_cp_start_slip = 0;
-            }
-#endif
-
             // Derotate the signal and out
             low = d_cp_start - d_fft_length + 1;
             size = d_cp_start - (d_cp_start - d_fft_length + 1) + 1;
@@ -415,4 +386,3 @@ namespace gr {
     }
   } /* namespace dtv */
 } /* namespace gr */
-
diff --git a/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.h 
b/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.h
index 2cc1017..e7b92cb 100644
--- a/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.h
+++ b/gr-dtv/lib/dvbt/dvbt_ofdm_sym_acquisition_impl.h
@@ -1,17 +1,17 @@
 /* -*- c++ -*- */
-/* 
+/*
  * Copyright 2015 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,
@@ -23,8 +23,6 @@
 
 #include <gnuradio/dtv/dvbt_ofdm_sym_acquisition.h>
 
-#undef SEGFAULT_FIX
-
 namespace gr {
   namespace dtv {
 
@@ -67,11 +65,6 @@ namespace gr {
 
       int d_cp_start;
 
-#ifdef SEGFAULT_FIX
-      int d_cp_start_initial;
-      int d_cp_start_slip;
-#endif
-
       gr_complex * d_derot;
       int d_to_consume;
       int d_to_out;
@@ -99,4 +92,3 @@ namespace gr {
 } // namespace gr
 
 #endif /* INCLUDED_DTV_DVBT_OFDM_SYM_ACQUISITION_IMPL_H */
-



reply via email to

[Prev in Thread] Current Thread [Next in Thread]