GNU Radio Manual and C++ API Reference 3.7.14.0
The Free & Open Software Radio Ecosystem
equalizer_lms_impl.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2002 Free Software Foundation, Inc.
4 *
5 * This file is part of GNU Radio
6 *
7 * GNU Radio is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3, or (at your option)
10 * any later version.
11 *
12 * GNU Radio is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with GNU Radio; see the file COPYING. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street,
20 * Boston, MA 02110-1301, USA.
21 */
22
23#ifndef _ATSC_EQUALIZER_LMS_H_
24#define _ATSC_EQUALIZER_LMS_H_
25
26#include <gnuradio/atsc/api.h>
28#include <stdio.h>
29#include <vector>
30
32{
33public:
36
37 virtual void reset();
38 virtual int ntaps() const;
39 virtual int npretaps() const;
40 std::vector<double> taps() { return d_taps; }
41
42protected:
44 virtual void
45 filter_normal(const float* input_samples, float* output_samples, int nsamples);
46
47 virtual void filter_data_seg_sync(const float* input_samples,
48 float* output_samples,
49 int nsamples,
50 int offset);
51
52 virtual void filter_field_sync(const float* input_samples,
53 float* output_samples,
54 int nsamples,
55 int offset,
56 int which_field);
57
58private:
59 std::vector<double> d_taps;
60
61 void filterN(const float* input_samples, float* output_samples, int nsamples);
62
63 void adaptN(const float* input_samples,
64 const float* training_pattern,
65 float* output_samples,
66 int nsamples);
67
68 float filter1(const float input[]);
69 float adapt1(const float input[], float ideal_output);
70};
71
72
73#endif /* _ATSC_EQUALIZER_LMS_H_ */
Definition: equalizer_lms_impl.h:32
virtual void filter_field_sync(const float *input_samples, float *output_samples, int nsamples, int offset, int which_field)
FILE * trainingfile
Definition: equalizer_lms_impl.h:43
virtual void filter_data_seg_sync(const float *input_samples, float *output_samples, int nsamples, int offset)
virtual int ntaps() const
how much history the input data stream requires.
std::vector< double > taps()
Definition: equalizer_lms_impl.h:40
virtual ~atsci_equalizer_lms()
virtual void reset()
reset state (e.g., on channel change)
virtual int npretaps() const
how many taps are "in the future".
virtual void filter_normal(const float *input_samples, float *output_samples, int nsamples)
abstract base class for ATSC equalizer
Definition: equalizer_impl.h:34
#define ATSC_API
Definition: gr-atsc/include/gnuradio/atsc/api.h:30