00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
#ifndef _ATSC_EQUALIZER_H_
00024
#define _ATSC_EQUALIZER_H_
00025
00026
#include <atsc_syminfo.h>
00027
00031 class atsc_equalizer {
00032
00033
private:
00034
00035
00036
00037
00038 bool d_locked_p;
00039
00040
00041
00042
00043
00044
00045 int d_offset_from_last_field_sync;
00046
00047 int d_current_field;
00048
00049
00050
public:
00051
00052
00053
atsc_equalizer ();
00054
virtual ~atsc_equalizer ();
00055
00056
00057
00063
virtual void reset ();
00064
00080
virtual void filter (
const float *input_samples,
00081
const atsc::syminfo *input_tags,
00082
float *output_samples,
00083
int nsamples);
00084
00085
00086
00093
virtual int ntaps () const = 0;
00094
00108 virtual
int npretaps () const = 0;
00109
00110
00111 protected:
00112
00123 virtual
void filter_normal (const
float *input_samples,
00124
float *output_samples,
00125
int nsamples) = 0;
00126
00137 virtual
void filter_data_seg_sync (const
float *input_samples,
00138
float *output_samples,
00139
int nsamples,
00140
int offset) = 0;
00141
00155 virtual
void filter_field_sync (const
float *input_samples,
00156
float *output_samples,
00157
int nsamples,
00158
int offset,
00159
int which_field) = 0;
00160 };
00161
00162
00163 #endif