Fixing output types from tap_type to o_type in gr_single_pole_iir.h. Doesn't make...
[debian/gnuradio] / gnuradio-core / src / lib / filter / gr_pfb_arb_resampler_ccf.h
index d4c886ec378b439458914ca51c15e1ab6e0cc9be..cf5a79d4eec760bea8775bb28c7e0dc181685383 100644 (file)
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2009 Free Software Foundation, Inc.
+ * Copyright 2009,2010 Free Software Foundation, Inc.
  * 
  * This file is part of GNU Radio
  * 
@@ -112,12 +112,15 @@ class gr_pfb_arb_resampler_ccf : public gr_block
                                                                      unsigned int filter_size);
 
   std::vector<gr_fir_ccf*> d_filters;
+  std::vector<gr_fir_ccf*> d_diff_filters;
   std::vector< std::vector<float> > d_taps;
+  std::vector< std::vector<float> > d_dtaps;
   unsigned int             d_int_rate;          // the number of filters (interpolation rate)
   unsigned int             d_dec_rate;          // the stride through the filters (decimation rate)
   float                    d_flt_rate;          // residual rate for the linear interpolation
   float                    d_acc;
   unsigned int             d_last_filter;
+  int                      d_start_index;
   unsigned int             d_taps_per_filter;
   bool                    d_updated;
 
@@ -133,16 +136,26 @@ class gr_pfb_arb_resampler_ccf : public gr_block
   gr_pfb_arb_resampler_ccf (float rate, 
                            const std::vector<float> &taps,
                            unsigned int filter_size);
-  
-public:
-  ~gr_pfb_arb_resampler_ccf ();
-  
+
+  void create_diff_taps(const std::vector<float> &newtaps,
+                       std::vector<float> &difftaps);
+
   /*!
    * Resets the filterbank's filter taps with the new prototype filter
-   * \param taps    (vector/list of floats) The prototype filter to populate the filterbank. The taps
-   *                                        should be generated at the interpolated sampling rate.
+   * \param newtaps    (vector of floats) The prototype filter to populate the filterbank. 
+   *                   The taps should be generated at the interpolated sampling rate.
+   * \param ourtaps    (vector of floats) Reference to our internal member of holding the taps.
+   * \param ourfilter  (vector of filters) Reference to our internal filter to set the taps for.
    */
-  void set_taps (const std::vector<float> &taps);
+  void create_taps (const std::vector<float> &newtaps,
+                   std::vector< std::vector<float> > &ourtaps,
+                   std::vector<gr_fir_ccf*> &ourfilter);
+
+  
+public:
+  ~gr_pfb_arb_resampler_ccf ();
+
+  // FIXME: See about a set_taps function during runtime.
 
   /*!
    * Print all of the filterbank taps to screen.