Mercurial > hg > aimc
changeset 586:f3dde307f4b8
some refactoring
author | Ulf.Hammarqvist@gmail.com |
---|---|
date | Thu, 11 Oct 2012 20:55:03 +0000 |
parents | b8a961149499 |
children | d59c0d65624b |
files | branches/carfac_cpp/include/AGC.h branches/carfac_cpp/include/CAR.h branches/carfac_cpp/include/CARFAC.h branches/carfac_cpp/include/Ear.h branches/carfac_cpp/include/IHC.h branches/carfac_cpp/makefile branches/carfac_cpp/src/AGC.cpp branches/carfac_cpp/src/CAR.cpp branches/carfac_cpp/src/CARFAC.cpp branches/carfac_cpp/src/Ear.cpp branches/carfac_cpp/src/IHC.cpp branches/carfac_cpp/unittest/CARFAC_unittest.cpp |
diffstat | 12 files changed, 83 insertions(+), 100 deletions(-) [+] |
line wrap: on
line diff
--- a/branches/carfac_cpp/include/AGC.h Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/include/AGC.h Thu Oct 11 20:55:03 2012 +0000 @@ -5,21 +5,7 @@ class AGC_parameters { public: - AGC_parameters(): - n_stages_(4), - time_constants_({0.002*1, 0.002*4, 0.002*16, 0.002*64}), - agc_stage_gain_(2), - decimation_({8, 2, 2, 2}), - agc1_scales_({1.0, 1.4, 2.0, 2.8}), - agc2_scales_({1.6, 2.25, 3.2, 4.5}), - detect_scale_(0.25), - agc_mix_coeff_(0.5){ - // do nothing more - } - - virtual ~AGC_parameters(){ - // do nothing - } + AGC_parameters(); int n_stages_; FloatArray time_constants_; @@ -34,7 +20,6 @@ class AGC_coefficients { public: AGC_coefficients(AGC_parameters*, float, int); - virtual ~AGC_coefficients(); int n_ch_; int n_agc_stages_; @@ -51,7 +36,6 @@ float detect_scale_; private: - AGC_coefficients(); FloatArray Build_FIR_coeffs(float, float, int*, int*); };
--- a/branches/carfac_cpp/include/CAR.h Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/include/CAR.h Thu Oct 11 20:55:03 2012 +0000 @@ -9,26 +9,7 @@ class CAR_parameters{ public: - CAR_parameters(): - velocity_scale_(0.2), - v_offset_(0.01), - v2_corner_(0.2), - v_damp_max_(0.01), - min_zeta_(0.10), - first_pole_theta_(0.085*kPi), - zero_ratio_(sqrt(2)), - high_f_damping_compression_(0.5), - erb_per_step_(0.5), - min_pole_hz_(30), - erb_break_freq_(kDefaultErbBreakFreq), - erb_q_(kDefaultErbQ) - { - // do nothing more - } - - virtual ~CAR_parameters(){ - // do nothing - } + CAR_parameters(); float velocity_scale_; float v_offset_; @@ -47,7 +28,6 @@ class CAR_coefficients{ public: CAR_coefficients(CAR_parameters*, float, FloatArray); - virtual ~CAR_coefficients(); FloatArray r1_coeffs_; FloatArray a0_coeffs_; @@ -56,8 +36,6 @@ FloatArray g0_coeffs_; FloatArray zr_coeffs_; -private: - CAR_coefficients(); }; #endif /* CAR_H_ */
--- a/branches/carfac_cpp/include/CARFAC.h Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/include/CARFAC.h Thu Oct 11 20:55:03 2012 +0000 @@ -12,7 +12,6 @@ class CARFAC{ public: CARFAC(int, CAR_parameters*, IHC_parameters*, AGC_parameters*, int); - virtual ~CARFAC(); static float ERB_Hz(float, float, float); float fs_; @@ -25,7 +24,6 @@ std::vector<Ear> ears_; private: - CARFAC(){}; };
--- a/branches/carfac_cpp/include/Ear.h Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/include/Ear.h Thu Oct 11 20:55:03 2012 +0000 @@ -24,11 +24,7 @@ IHC_coefficients* ihc_coeffs_p_; AGC_coefficients* agc_coeffs_p_; - virtual - ~Ear(); - private: - Ear(); };
--- a/branches/carfac_cpp/include/IHC.h Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/include/IHC.h Thu Oct 11 20:55:03 2012 +0000 @@ -4,18 +4,7 @@ // not sure how to best deal with the "three style" IHC - ulha class IHC_parameters{ public: - IHC_parameters() : - tau_lpf_(0.000080), - tau1_out_(0.010), - tau1_in_(0.20), - tau2_out_(0.0025), - tau2_in_(0.005){ - // do nothing more - } - - virtual ~IHC_parameters(){ - // do nothing - } + IHC_parameters(); float tau_lpf_; float tau1_out_; @@ -27,12 +16,11 @@ class IHC_coefficients{ public: IHC_coefficients(IHC_parameters*, float, int); - virtual ~IHC_coefficients(); float saturation_output_; private: - IHC_coefficients(); + }; #endif /* IHC_H_ */
--- a/branches/carfac_cpp/makefile Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/makefile Thu Oct 11 20:55:03 2012 +0000 @@ -34,7 +34,7 @@ all : libcarfac unittest libcarfac : $(SRC_DIR)/CARFAC.o $(SRC_OBJ) - $(CXX) -shared $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@.$(LIB_EXTENSION) -fPIC + $(CXX) -shared $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@$(LIB_EXTENSION) -fPIC example_program : libcarfac # likely some example executable that runs the whole thing...
--- a/branches/carfac_cpp/src/AGC.cpp Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/src/AGC.cpp Thu Oct 11 20:55:03 2012 +0000 @@ -3,6 +3,19 @@ #include <stdlib.h> #include <stdio.h> +AGC_parameters::AGC_parameters(): +n_stages_(4), +time_constants_({0.002*1, 0.002*4, 0.002*16, 0.002*64}), +agc_stage_gain_(2), +decimation_({8, 2, 2, 2}), +agc1_scales_({1.0, 1.4, 2.0, 2.8}), +agc2_scales_({1.6, 2.25, 3.2, 4.5}), +detect_scale_(0.25), +agc_mix_coeff_(0.5) +{ + // do nothing more +} + AGC_coefficients::AGC_coefficients(AGC_parameters* AGC_params_p, float fs, int n_ch){ float decim = 1.0; @@ -59,9 +72,6 @@ agc_gain_ = total_DC_gain; detect_scale_ = AGC_params_p->detect_scale_/total_DC_gain; } -AGC_coefficients::~AGC_coefficients(){ - // TODO Auto-generated destructor stub -} FloatArray AGC_coefficients::Build_FIR_coeffs(float var, float mn, int* ptr_iters, int* ptr_taps){ float a, b;
--- a/branches/carfac_cpp/src/CAR.cpp Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/src/CAR.cpp Thu Oct 11 20:55:03 2012 +0000 @@ -3,8 +3,26 @@ #include "CARFAC.h" #include <cmath> +CAR_parameters::CAR_parameters(): + velocity_scale_(0.2), + v_offset_(0.01), + v2_corner_(0.2), + v_damp_max_(0.01), + min_zeta_(0.10), + first_pole_theta_(0.085*kPi), + zero_ratio_(sqrt(2)), + high_f_damping_compression_(0.5), + erb_per_step_(0.5), + min_pole_hz_(30), + erb_break_freq_(kDefaultErbBreakFreq), + erb_q_(kDefaultErbQ) +{ + // do nothing more! +} + CAR_coefficients::CAR_coefficients(CAR_parameters* car_params_p, float fs, - FloatArray pole_freqs){ + FloatArray pole_freqs) +{ float f = pow(car_params_p->zero_ratio_, 2) + 1; @@ -48,7 +66,3 @@ } } - -CAR_coefficients::~CAR_coefficients(){ - // TODO Auto-generated destructor stub -}
--- a/branches/carfac_cpp/src/CARFAC.cpp Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/src/CARFAC.cpp Thu Oct 11 20:55:03 2012 +0000 @@ -8,11 +8,11 @@ #include "CARFAC_common.h" -CARFAC::CARFAC(int fs = kDefaultFs, - CAR_parameters* car_params = new CAR_parameters(), - IHC_parameters* ihc_params = new IHC_parameters(), - AGC_parameters* agc_params = new AGC_parameters(), - int n_ears = 1){ +CARFAC::CARFAC(int fs, + CAR_parameters* car_params, + IHC_parameters* ihc_params, + AGC_parameters* agc_params, + int n_ears){ fs_ = fs; @@ -27,14 +27,10 @@ max_channels_per_octave_ = log(2) / log(pole_freqs_[0]/pole_freqs_[1]); n_ears_ = n_ears; - Ear* ear = new Ear(car_params, ihc_params, agc_params, pole_freqs_, n_ch_, fs); - ears_.assign(n_ears_, *ear); + Ear ear = Ear(car_params, ihc_params, agc_params, pole_freqs_, n_ch_, fs); + ears_.assign(n_ears_, ear); } float CARFAC::ERB_Hz(float cf_hz, float erb_break_freq, float erb_q){ return (erb_break_freq + cf_hz) / erb_q; } - -CARFAC::~CARFAC() { - //TODO: clean up -}
--- a/branches/carfac_cpp/src/Ear.cpp Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/src/Ear.cpp Thu Oct 11 20:55:03 2012 +0000 @@ -19,7 +19,3 @@ ihc_coeffs_p_ = new IHC_coefficients(&ihc_params_, fs, n_ch); agc_coeffs_p_ = new AGC_coefficients(&agc_params_, fs, n_ch); } - -Ear::~Ear() { - // TODO Auto-generated destructor stub -}
--- a/branches/carfac_cpp/src/IHC.cpp Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/src/IHC.cpp Thu Oct 11 20:55:03 2012 +0000 @@ -1,9 +1,17 @@ #include "IHC.h" -IHC_coefficients::IHC_coefficients(IHC_parameters* IHC_params_p, float fs, int n_ch){ +IHC_parameters::IHC_parameters(): +tau_lpf_(0.000080), +tau1_out_(0.010), +tau1_in_(0.20), +tau2_out_(0.0025), +tau2_in_(0.005) +{ +// do nothing more +} + +IHC_coefficients::IHC_coefficients(IHC_parameters* IHC_params_p, float fs, int n_ch): +saturation_output_(0.0) +{ // TODO stuff! } - -IHC_coefficients::~IHC_coefficients() { - // TODO Auto-generated destructor stub -}
--- a/branches/carfac_cpp/unittest/CARFAC_unittest.cpp Thu Oct 11 19:37:10 2012 +0000 +++ b/branches/carfac_cpp/unittest/CARFAC_unittest.cpp Thu Oct 11 20:55:03 2012 +0000 @@ -6,23 +6,38 @@ * CARFACDesignTest - Test suite for constructor related tests. */ TEST(CARFACDesignTest, SampleRate) { - CAR_parameters * car_params = new CAR_parameters();; - IHC_parameters * ihc_params = new IHC_parameters(); - AGC_parameters * agc_params = new AGC_parameters(); + CAR_parameters car_params = CAR_parameters(); + IHC_parameters ihc_params = IHC_parameters(); + AGC_parameters agc_params = AGC_parameters(); int arbitrary_number = 1347; - CARFAC* fooCarfac = new CARFAC(arbitrary_number, car_params, ihc_params, agc_params, 1); - EXPECT_EQ(fooCarfac->fs_, arbitrary_number); + CARFAC fooCarfac = CARFAC(arbitrary_number, &car_params, &ihc_params, &agc_params, 1); + EXPECT_EQ(fooCarfac.fs_, arbitrary_number); } TEST(CARFACDesignTest, NumberOfEars) { - CAR_parameters * car_params = new CAR_parameters();; - IHC_parameters * ihc_params = new IHC_parameters(); - AGC_parameters * agc_params = new AGC_parameters(); + CAR_parameters car_params = CAR_parameters(); + IHC_parameters ihc_params = IHC_parameters(); + AGC_parameters agc_params = AGC_parameters(); - int arbitrary_number = 1347; + int fs = kDefaultFs; - CARFAC* fooCarfac = new CARFAC(arbitrary_number, car_params, ihc_params, agc_params, 2); - EXPECT_EQ(fooCarfac->n_ears_, fooCarfac->ears_.size()); + CARFAC fooCarfac = CARFAC(fs, &car_params, &ihc_params, &agc_params, 2); + EXPECT_EQ(fooCarfac.n_ears_, fooCarfac.ears_.size()); } + +TEST(CARFACDesignTest, MaxChannelsPerOctave) { + CAR_parameters car_params = CAR_parameters(); + IHC_parameters ihc_params = IHC_parameters(); + AGC_parameters agc_params = AGC_parameters(); + + int fs = kDefaultFs; + + car_params.erb_per_step_ = 2*0.5; //not sure if this is the best way to design this test... I'm just doing _something_ here. + float expected_max_channels_per_octave = 10.56/2; + float tolerance = 0.25; + + CARFAC fooCarfac = CARFAC(fs, &car_params, &ihc_params, &agc_params, 1); + ASSERT_NEAR(fooCarfac.max_channels_per_octave_, expected_max_channels_per_octave, tolerance); +}