[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