From 1a1b74dee68348803521593223dd095e1257343f Mon Sep 17 00:00:00 2001 From: cswiger Date: Fri, 27 Apr 2007 17:36:29 +0000 Subject: [PATCH] Fixed filter delay offset pointers in atsc_equalizer git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@5155 221aa14e-8319-0410-a670-987f0aec2ac5 --- gr-atsc/src/lib/atsc_equalizer.cc | 22 +++++++++++++++------- gr-atsc/src/lib/atsc_equalizer.h | 1 + 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/gr-atsc/src/lib/atsc_equalizer.cc b/gr-atsc/src/lib/atsc_equalizer.cc index f5ad6d0d..145ba836 100644 --- a/gr-atsc/src/lib/atsc_equalizer.cc +++ b/gr-atsc/src/lib/atsc_equalizer.cc @@ -59,17 +59,16 @@ atsc_equalizer::forecast (int noutput_items, gr_vector_int &ninput_items_require { int ntaps = d_equalizer->ntaps (); - int npretaps = d_equalizer->npretaps (); - - assert (ntaps >= 1); - assert (npretaps >= 0 && npretaps < ntaps); unsigned ninputs = ninput_items_required.size(); for (unsigned i = 0; i < ninputs; i++) - ninput_items_required[i] = fixed_rate_noutput_to_ninput (noutput_items); + ninput_items_required[i] = fixed_rate_noutput_to_ninput (noutput_items + ntaps); + + } + int atsc_equalizer::work (int noutput_items, gr_vector_const_void_star &input_items, @@ -82,16 +81,25 @@ atsc_equalizer::work (int noutput_items, assert(sizeof(float) == sizeof(atsc::syminfo)); + int ntaps = d_equalizer->ntaps (); + int npretaps = d_equalizer->npretaps (); + + assert (ntaps >= 1); + assert (npretaps >= 0 && npretaps < ntaps); + + int offset = ntaps - npretaps - 1; + assert (offset >= 0 && offset < ntaps); + // peform the actual equalization - d_equalizer->filter (in, in_tags, + d_equalizer->filter (in, in_tags + offset, out, noutput_items); // write the output tags for (int i = 0; i < noutput_items; i++) - out_tags[i] = in_tags[i]; + out_tags[i] = in_tags[i + offset]; return noutput_items; } diff --git a/gr-atsc/src/lib/atsc_equalizer.h b/gr-atsc/src/lib/atsc_equalizer.h index 769902bf..1c2ac7e7 100644 --- a/gr-atsc/src/lib/atsc_equalizer.h +++ b/gr-atsc/src/lib/atsc_equalizer.h @@ -45,6 +45,7 @@ class atsc_equalizer : public gr_sync_block public: void forecast (int noutput_items, gr_vector_int &ninput_items_required); + int work (int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); -- 2.30.2