[hamradio-commits] [gnss-sdr] 11/44: Adding a resampler for cbytes and cshorts

Carles Fernandez carles_fernandez-guest at moszumanska.debian.org
Sun Feb 15 15:32:19 UTC 2015


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

carles_fernandez-guest pushed a commit to branch next
in repository gnss-sdr.

commit 25ac8088c1802f8170ae2f5550878cd9b6658589
Author: Carles Fernandez <carles.fernandez at gmail.com>
Date:   Wed Feb 4 00:29:54 2015 +0100

    Adding a resampler for cbytes and cshorts
---
 src/algorithms/resampler/adapters/CMakeLists.txt   |  1 +
 .../adapters/direct_resampler_conditioner.cc       | 26 +++++++++++++-----
 .../resampler/gnuradio_blocks/CMakeLists.txt       |  2 ++
 ...er_ss.cc => direct_resampler_conditioner_bb.cc} | 31 +++++++++++-----------
 ...oner_ss.h => direct_resampler_conditioner_bb.h} | 30 ++++++++++-----------
 .../direct_resampler_conditioner_ss.cc             |  9 ++++---
 .../direct_resampler_conditioner_ss.h              |  4 +--
 7 files changed, 60 insertions(+), 43 deletions(-)

diff --git a/src/algorithms/resampler/adapters/CMakeLists.txt b/src/algorithms/resampler/adapters/CMakeLists.txt
index ccfec89..709d516 100644
--- a/src/algorithms/resampler/adapters/CMakeLists.txt
+++ b/src/algorithms/resampler/adapters/CMakeLists.txt
@@ -25,6 +25,7 @@ include_directories(
      ${GLOG_INCLUDE_DIRS}
      ${GFlags_INCLUDE_DIRS}
      ${GNURADIO_RUNTIME_INCLUDE_DIRS}
+     ${VOLK_INCLUDE_DIRS}
 )
 
 file(GLOB RESAMPLER_ADAPTER_HEADERS "*.h")
diff --git a/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc b/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc
index ebe6bbe..867a7ce 100644
--- a/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc
+++ b/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc
@@ -32,8 +32,10 @@
 #include "direct_resampler_conditioner.h"
 #include <glog/logging.h>
 #include <gnuradio/blocks/file_sink.h>
+#include <volk/volk.h>
 #include "direct_resampler_conditioner_cc.h"
 #include "direct_resampler_conditioner_ss.h"
+#include "direct_resampler_conditioner_bb.h"
 #include "configuration_interface.h"
 
 
@@ -56,19 +58,29 @@ DirectResamplerConditioner::DirectResamplerConditioner(
     if (item_type_.compare("gr_complex") == 0)
         {
             item_size_ = sizeof(gr_complex);
-            resampler_ = direct_resampler_make_conditioner_cc(sample_freq_in_,
-                    sample_freq_out_);
+            resampler_ = direct_resampler_make_conditioner_cc(sample_freq_in_, sample_freq_out_);
             DLOG(INFO) << "sample_freq_in " << sample_freq_in_;
             DLOG(INFO) << "sample_freq_out" << sample_freq_out_;
             DLOG(INFO) << "Item size " << item_size_;
             DLOG(INFO) << "resampler(" << resampler_->unique_id() << ")";
-
         }
-    else if (item_type_.compare("short") == 0)
+    else if (item_type_.compare("cshort") == 0)
         {
-            item_size_ = sizeof(short);
-            resampler_ = direct_resampler_make_conditioner_ss(sample_freq_in_,
-                    sample_freq_out_);
+            item_size_ = sizeof(lv_16sc_t);
+            resampler_ = direct_resampler_make_conditioner_ss(sample_freq_in_, sample_freq_out_);
+            DLOG(INFO) << "sample_freq_in " << sample_freq_in_;
+            DLOG(INFO) << "sample_freq_out" << sample_freq_out_;
+            DLOG(INFO) << "Item size " << item_size_;
+            DLOG(INFO) << "resampler(" << resampler_->unique_id() << ")";
+        }
+    else if (item_type_.compare("cbyte") == 0)
+        {
+            item_size_ = sizeof(lv_8sc_t);
+            resampler_ = direct_resampler_make_conditioner_bb(sample_freq_in_, sample_freq_out_);
+            DLOG(INFO) << "sample_freq_in " << sample_freq_in_;
+            DLOG(INFO) << "sample_freq_out" << sample_freq_out_;
+            DLOG(INFO) << "Item size " << item_size_;
+            DLOG(INFO) << "resampler(" << resampler_->unique_id() << ")";
         }
     else
         {
diff --git a/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt b/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt
index 2cab403..1ff2212 100644
--- a/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt
+++ b/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt
@@ -20,6 +20,7 @@
 set(RESAMPLER_GR_BLOCKS_SOURCES 
      direct_resampler_conditioner_cc.cc
      direct_resampler_conditioner_ss.cc
+     direct_resampler_conditioner_bb.cc
 )
 
 include_directories(
@@ -27,6 +28,7 @@ include_directories(
      ${GLOG_INCLUDE_DIRS}
      ${GFlags_INCLUDE_DIRS}
      ${GNURADIO_RUNTIME_INCLUDE_DIRS}
+     ${VOLK_INCLUDE_DIRS}
 )
 
 file(GLOB RESAMPLER_GR_BLOCKS_HEADERS "*.h")
diff --git a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.cc b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_bb.cc
similarity index 78%
copy from src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.cc
copy to src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_bb.cc
index 4bfd213..d3561a0 100644
--- a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.cc
+++ b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_bb.cc
@@ -1,7 +1,7 @@
 /*!
- * \file direct_resampler_conditioner_ss.cc
- * \brief Nearest neighborhood resampler with
- *        short input and short output
+ * \file direct_resampler_conditioner_bb.cc
+ * \brief Nearest neighborhood resampler with std::complex<signed char>
+ * input and std::complex<signed char> output
  * \author Luis Esteve, 2011. luis(at)epsilon-formacion.com
  *
  * Detailed description of the file here if needed.
@@ -32,27 +32,28 @@
  */
 
 
-#include "direct_resampler_conditioner_ss.h"
+#include "direct_resampler_conditioner_bb.h"
 #include <algorithm>
 #include <iostream>
 #include <gnuradio/io_signature.h>
 #include <glog/logging.h>
+#include <volk/volk.h>
 
 using google::LogMessage;
 
-direct_resampler_conditioner_ss_sptr direct_resampler_make_conditioner_ss(
+direct_resampler_conditioner_bb_sptr direct_resampler_make_conditioner_bb(
         double sample_freq_in, double sample_freq_out)
 {
 
-    return direct_resampler_conditioner_ss_sptr(
-            new direct_resampler_conditioner_ss(sample_freq_in,
+    return direct_resampler_conditioner_bb_sptr(
+            new direct_resampler_conditioner_bb(sample_freq_in,
                     sample_freq_out));
 }
 
-direct_resampler_conditioner_ss::direct_resampler_conditioner_ss(
+direct_resampler_conditioner_bb::direct_resampler_conditioner_bb(
         double sample_freq_in, double sample_freq_out) :
-    gr::block("direct_resampler_make_conditioner_ss", gr::io_signature::make(1,
-            1, sizeof(short)), gr::io_signature::make(1, 1, sizeof(short))),
+    gr::block("direct_resampler_make_conditioner_bb", gr::io_signature::make(1,
+            1, sizeof(lv_8sc_t)), gr::io_signature::make(1, 1, sizeof(lv_8sc_t))),
             d_sample_freq_in(sample_freq_in), d_sample_freq_out(
                     sample_freq_out), d_phase(0), d_lphase(0), d_history(1)
 {
@@ -71,12 +72,12 @@ direct_resampler_conditioner_ss::direct_resampler_conditioner_ss(
     set_output_multiple(1);
 }
 
-direct_resampler_conditioner_ss::~direct_resampler_conditioner_ss()
+direct_resampler_conditioner_bb::~direct_resampler_conditioner_bb()
 {
 
 }
 
-void direct_resampler_conditioner_ss::forecast(int noutput_items,
+void direct_resampler_conditioner_bb::forecast(int noutput_items,
         gr_vector_int &ninput_items_required)
 {
 
@@ -90,13 +91,13 @@ void direct_resampler_conditioner_ss::forecast(int noutput_items,
     }
 }
 
-int direct_resampler_conditioner_ss::general_work(int noutput_items,
+int direct_resampler_conditioner_bb::general_work(int noutput_items,
         gr_vector_int &ninput_items, gr_vector_const_void_star &input_items,
         gr_vector_void_star &output_items)
 {
 
-    const signed short *in = (const signed short *)input_items[0];
-    signed short *out = (signed short *)output_items[0];
+    const lv_8sc_t *in = (const lv_8sc_t *)input_items[0];
+    lv_8sc_t *out = (lv_8sc_t *)output_items[0];
 
     int lcv = 0;
     int count = 0;
diff --git a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.h b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_bb.h
similarity index 72%
copy from src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.h
copy to src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_bb.h
index 5607ec3..03b10cf 100644
--- a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.h
+++ b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_bb.h
@@ -1,7 +1,7 @@
 /*!
- * \file direct_resampler_conditioner_ss.h
+ * \file direct_resampler_conditioner_bb.h
  * \brief Nearest neighborhood resampler with
- *        short input and short output
+ *        std::complex<signed char> input and std::complex<signed char> output
  * \author Luis Esteve, 2011. luis(at)epsilon-formacion.com
  *
  * -------------------------------------------------------------------------
@@ -29,30 +29,30 @@
  * -------------------------------------------------------------------------
  */
 
-#ifndef GNSS_SDR_DIRECT_RESAMPLER_CONDITIONER_SS_H
-#define	GNSS_SDR_DIRECT_RESAMPLER_CONDITIONER_SS_H
+#ifndef GNSS_SDR_DIRECT_RESAMPLER_CONDITIONER_BB_H
+#define GNSS_SDR_DIRECT_RESAMPLER_CONDITIONER_BB_H
 
 #include <gnuradio/block.h>
 
-class direct_resampler_conditioner_ss;
-typedef boost::shared_ptr<direct_resampler_conditioner_ss>
-        direct_resampler_conditioner_ss_sptr;
+class direct_resampler_conditioner_bb;
+typedef boost::shared_ptr<direct_resampler_conditioner_bb>
+        direct_resampler_conditioner_bb_sptr;
 
-direct_resampler_conditioner_ss_sptr
-direct_resampler_make_conditioner_ss(double sample_freq_in,
+direct_resampler_conditioner_bb_sptr
+direct_resampler_make_conditioner_bb(double sample_freq_in,
         double sample_freq_out);
 /*!
- * \brief This class implements a direct resampler conditioner for shorts
+ * \brief This class implements a direct resampler conditioner for std::complex<signed char>
  *
  * Direct resampling without interpolation
  */
-class direct_resampler_conditioner_ss: public gr::block
+class direct_resampler_conditioner_bb: public gr::block
 {
 
 private:
 
-    friend direct_resampler_conditioner_ss_sptr
-    direct_resampler_make_conditioner_ss(double sample_freq_in,
+    friend direct_resampler_conditioner_bb_sptr
+    direct_resampler_make_conditioner_bb(double sample_freq_in,
             double sample_freq_out);
 
     double d_sample_freq_in;
@@ -62,12 +62,12 @@ private:
     unsigned int d_phase_step;
     unsigned int d_history;
 
-    direct_resampler_conditioner_ss(double sample_freq_in,
+    direct_resampler_conditioner_bb(double sample_freq_in,
             double sample_freq_out);
 
 public:
 
-    ~direct_resampler_conditioner_ss();
+    ~direct_resampler_conditioner_bb();
 
     unsigned int sample_freq_in() const
     {
diff --git a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.cc b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.cc
index 4bfd213..af1f300 100644
--- a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.cc
+++ b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.cc
@@ -1,7 +1,7 @@
 /*!
  * \file direct_resampler_conditioner_ss.cc
  * \brief Nearest neighborhood resampler with
- *        short input and short output
+ *        complex short input and complex short output
  * \author Luis Esteve, 2011. luis(at)epsilon-formacion.com
  *
  * Detailed description of the file here if needed.
@@ -37,6 +37,7 @@
 #include <iostream>
 #include <gnuradio/io_signature.h>
 #include <glog/logging.h>
+#include <volk/volk.h>
 
 using google::LogMessage;
 
@@ -52,7 +53,7 @@ direct_resampler_conditioner_ss_sptr direct_resampler_make_conditioner_ss(
 direct_resampler_conditioner_ss::direct_resampler_conditioner_ss(
         double sample_freq_in, double sample_freq_out) :
     gr::block("direct_resampler_make_conditioner_ss", gr::io_signature::make(1,
-            1, sizeof(short)), gr::io_signature::make(1, 1, sizeof(short))),
+            1, sizeof(lv_16sc_t)), gr::io_signature::make(1, 1, sizeof(lv_16sc_t))),
             d_sample_freq_in(sample_freq_in), d_sample_freq_out(
                     sample_freq_out), d_phase(0), d_lphase(0), d_history(1)
 {
@@ -95,8 +96,8 @@ int direct_resampler_conditioner_ss::general_work(int noutput_items,
         gr_vector_void_star &output_items)
 {
 
-    const signed short *in = (const signed short *)input_items[0];
-    signed short *out = (signed short *)output_items[0];
+    const lv_16sc_t *in = (const lv_16sc_t *)input_items[0];
+    lv_16sc_t *out = (lv_16sc_t *)output_items[0];
 
     int lcv = 0;
     int count = 0;
diff --git a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.h b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.h
index 5607ec3..7903728 100644
--- a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.h
+++ b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_ss.h
@@ -1,7 +1,7 @@
 /*!
  * \file direct_resampler_conditioner_ss.h
  * \brief Nearest neighborhood resampler with
- *        short input and short output
+ *        std::complex<short> input and std::complex<short> output
  * \author Luis Esteve, 2011. luis(at)epsilon-formacion.com
  *
  * -------------------------------------------------------------------------
@@ -42,7 +42,7 @@ direct_resampler_conditioner_ss_sptr
 direct_resampler_make_conditioner_ss(double sample_freq_in,
         double sample_freq_out);
 /*!
- * \brief This class implements a direct resampler conditioner for shorts
+ * \brief This class implements a direct resampler conditioner for std::complex<short>
  *
  * Direct resampling without interpolation
  */

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git



More information about the pkg-hamradio-commits mailing list