diff options
Diffstat (limited to 'gr-atsc/include')
50 files changed, 0 insertions, 3599 deletions
diff --git a/gr-atsc/include/gnuradio/atsc/CMakeLists.txt b/gr-atsc/include/gnuradio/atsc/CMakeLists.txt deleted file mode 100644 index 342f55c03d..0000000000 --- a/gr-atsc/include/gnuradio/atsc/CMakeLists.txt +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright 2013 Free Software Foundation, Inc. -# -# This file is part of GNU Radio -# -# GNU Radio is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. -# -# GNU Radio is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Radio; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, -# Boston, MA 02110-1301, USA. - -######################################################################## -# Install header files -######################################################################## -install(FILES - api.h - basic_trellis_encoder_impl.h - bit_timing_loop.h - consts.h - convolutional_interleaver.h - create_atsci_equalizer.h - create_atsci_fs_checker.h - create_atsci_fs_correlator.h - data_interleaver_impl.h - deinterleaver.h - depad.h - derandomizer.h - diag_output_impl.h - ds_to_softds.h - equalizer.h - equalizer_impl.h - equalizer_lms2_impl.h - equalizer_lms_impl.h - equalizer_nop_impl.h - fake_single_viterbi_impl.h - field_sync_demux.h - field_sync_mux.h - fpll.h - fs_checker.h - fs_checker_impl.h - fs_checker_naive_impl.h - fs_correlator_impl.h - fs_correlator_naive_impl.h - GrAtscSegSymSyncImpl_export.h - interleaver_fifo.h - interleaver.h - pad.h - pnXXX_impl.h - randomizer.h - randomizer_impl.h - reed_solomon_impl.h - rs_decoder.h - rs_encoder.h - single_viterbi_impl.h - slicer_agc_impl.h - sliding_correlator_impl.h - sssr_impl.h - syminfo_impl.h - sync_tag_impl.h - trellis_encoder.h - trellis_encoder_impl.h - types.h - viterbi_decoder.h - viterbi_decoder_impl.h - DESTINATION ${GR_INCLUDE_DIR}/gnuradio/atsc - COMPONENT "atsc_devel" -) - diff --git a/gr-atsc/include/gnuradio/atsc/GrAtscSegSymSyncImpl_export.h b/gr-atsc/include/gnuradio/atsc/GrAtscSegSymSyncImpl_export.h deleted file mode 100644 index 187f1a0395..0000000000 --- a/gr-atsc/include/gnuradio/atsc/GrAtscSegSymSyncImpl_export.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -class GrAtscSegSymSync; - -GrAtscSegSymSync *create_GrAtscSegSymSyncImpl ( - double nominal_ratio_of_rx_clock_to_symbol_freq); diff --git a/gr-atsc/include/gnuradio/atsc/api.h b/gr-atsc/include/gnuradio/atsc/api.h deleted file mode 100644 index 1c1f257059..0000000000 --- a/gr-atsc/include/gnuradio/atsc/api.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2011 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_API_H -#define INCLUDED_ATSC_API_H - -#include <gnuradio/attributes.h> - -#ifdef gnuradio_atsc_EXPORTS -# define ATSC_API __GR_ATTR_EXPORT -#else -# define ATSC_API __GR_ATTR_IMPORT -#endif - -#endif /* INCLUDED_ATSC_API_H */ diff --git a/gr-atsc/include/gnuradio/atsc/basic_trellis_encoder_impl.h b/gr-atsc/include/gnuradio/atsc/basic_trellis_encoder_impl.h deleted file mode 100644 index 665a0f9ebf..0000000000 --- a/gr-atsc/include/gnuradio/atsc/basic_trellis_encoder_impl.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_BASIC_TRELLIS_ENCODER_H_ -#define _ATSC_BASIC_TRELLIS_ENCODER_H_ - -#include <gnuradio/atsc/api.h> -#include <assert.h> - -/*! - * \brief ATSC trellis encoder building block. - * - * Note this is NOT the 12x interleaved interface. - * - * This implements a single instance of the ATSC trellis encoder. - * This is a rate 2/3 encoder (really a constraint length 3, rate 1/2 - * encoder with the top bit passed through unencoded. This does not - * implement the "precoding" of the top bit, because the NTSC rejection - * filter is not supported. - */ - -class ATSC_API atsci_basic_trellis_encoder { - -private: - int state; // two bit state; - -public: - atsci_basic_trellis_encoder () : state (0) {} - - /*! - * Encode two bit INPUT into 3 bit return value. Domain is [0,3], - * Range is [0,7]. The mapping to bipolar levels is not done. - */ - int encode (unsigned int input); - - //! reset encoder state - void reset () { state = 0; } - - static const unsigned char next_state[32]; - static const unsigned char out_symbol[32]; -}; - -#endif /* _ATSC_BASIC_TRELLIS_ENCODER_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/bit_timing_loop.h b/gr-atsc/include/gnuradio/atsc/bit_timing_loop.h deleted file mode 100644 index 9965ade81d..0000000000 --- a/gr-atsc/include/gnuradio/atsc/bit_timing_loop.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_BIT_TIMING_LOOP_H -#define INCLUDED_ATSC_BIT_TIMING_LOOP_H - -#include <gnuradio/atsc/api.h> -#include <cstdio> -#include <gnuradio/block.h> -#include <gnuradio/atsc/diag_output_impl.h> -#include <gnuradio/atsc/sssr_impl.h> -#include <gnuradio/atsc/syminfo_impl.h> - -class atsc_bit_timing_loop; -typedef boost::shared_ptr<atsc_bit_timing_loop> atsc_bit_timing_loop_sptr; - -ATSC_API atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop(); - -/*! - * \brief ATSC BitTimingLoop3 - * \ingroup atsc - * - * This class accepts a single real input and produces two outputs, - * the raw symbol (float) and the tag (atsc_syminfo) - */ -class ATSC_API atsc_bit_timing_loop : public gr::block -{ - friend ATSC_API atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop(); - - atsc_bit_timing_loop(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } - - ~atsc_bit_timing_loop () { }; - - void forecast (int noutput_items, gr_vector_int &ninput_items_required); - - int general_work (int noutput_items, - gr_vector_int &ninput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - - // debug (NOPs) - void set_mu (double a_mu) { } - void set_no_update (bool a_no_update) { } - void set_loop_filter_tap (double tap) { } - void set_timing_rate (double rate) { } - - - protected: - - atsci_sssr d_sssr; - atsci_interpolator d_interp; - unsigned long long d_next_input; - double d_rx_clock_to_symbol_freq; - int d_si; - - -}; - -#endif /* INCLUDED_ATSC_BIT_TIMING_LOOP_H */ - - - diff --git a/gr-atsc/include/gnuradio/atsc/consts.h b/gr-atsc/include/gnuradio/atsc/consts.h deleted file mode 100644 index bbe2ec69aa..0000000000 --- a/gr-atsc/include/gnuradio/atsc/consts.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_CONSTS_H_ -#define _ATSC_CONSTS_H_ - -static const double ATSC_SYMBOL_RATE = 4.5e6 / 286 * 684; // ~10.76 MHz -static const double ATSC_DATA_SEGMENT_RATE = ATSC_SYMBOL_RATE / 832; // ~12.935 kHz - - -static const int ATSC_MPEG_DATA_LENGTH = 187; -static const int ATSC_MPEG_PKT_LENGTH = 188; // sync + data -static const int ATSC_MPEG_RS_ENCODED_LENGTH = 207; -static const int ATSC_DATA_SEGMENT_LENGTH = 832; // includes 4 sync symbols at beginning -static const int ATSC_DSEGS_PER_FIELD = 312; // regular data segs / field - - -static const int MPEG_SYNC_BYTE = 0x47; - -static const int MPEG_TRANSPORT_ERROR_BIT = 0x80; // top bit of byte after SYNC - - -#endif // _ATSC_CONSTS_H_ diff --git a/gr-atsc/include/gnuradio/atsc/convolutional_interleaver.h b/gr-atsc/include/gnuradio/atsc/convolutional_interleaver.h deleted file mode 100644 index 02c0c4dc44..0000000000 --- a/gr-atsc/include/gnuradio/atsc/convolutional_interleaver.h +++ /dev/null @@ -1,126 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _CONVOLUTIONAL_INTERLEAVER_H_ -#define _CONVOLUTIONAL_INTERLEAVER_H_ - -#include <vector> -#include <gnuradio/atsc/interleaver_fifo.h> -#include <assert.h> - -/*! - * \brief template class for generic convolutional interleaver - */ - -template<class symbol_type> -class convolutional_interleaver { - public: - - convolutional_interleaver (bool interleave_p, int nbanks, int fifo_size_incr); - virtual ~convolutional_interleaver (); - - //! reset interleaver (flushes contents and resets commutator) - void reset (); - - //! sync interleaver (resets commutator, but doesn't flush fifos) - void sync () { m_commutator = 0; } - - //! return end to end delay in symbols (delay through concatenated interleaver / deinterleaver) - int end_to_end_delay (); - - //! transform a single symbol - symbol_type transform (symbol_type input){ - symbol_type retval = m_fifo[m_commutator]->stuff (input); - m_commutator++; - if (m_commutator >= m_nbanks) - m_commutator = 0; - return retval; - } - - //! transform a bunch of symbols - void transform (symbol_type *out, const symbol_type *in, int nsymbols); - -protected: - int m_commutator; - int m_nbanks; - int m_fifo_size_incr; - std::vector<interleaver_fifo<symbol_type> *> m_fifo; -}; - -template<class symbol_type> -convolutional_interleaver<symbol_type>::convolutional_interleaver ( - bool interleave_p, - int nbanks, - int fifo_size_incr) -{ - assert (nbanks >= 1); - assert (fifo_size_incr >= 1); - - m_nbanks = nbanks; - m_fifo_size_incr = fifo_size_incr; - - m_fifo.resize (nbanks); - - if (interleave_p){ // configure as interleaver - for (int i = 0; i < nbanks; i++) - m_fifo[i] = new interleaver_fifo<symbol_type>(i * fifo_size_incr); - } - else { // configure as de-interleaver - for (int i = 0; i < nbanks; i++) - m_fifo[nbanks - 1 - i] = new interleaver_fifo<symbol_type>(i * fifo_size_incr); - } - sync (); -} - -template<class symbol_type> -convolutional_interleaver<symbol_type>::~convolutional_interleaver () -{ - for (int i = 0; i < m_nbanks; i++) - delete m_fifo[i]; -} - -template<class symbol_type> void -convolutional_interleaver<symbol_type>::reset () -{ - sync (); - for (int i = 0; i < m_nbanks; i++) - m_fifo[i]->reset (); -} - -template<class symbol_type> int -convolutional_interleaver<symbol_type>::end_to_end_delay () -{ - int m = m_nbanks * m_fifo_size_incr; - return m * (m_nbanks - 1); -} - -template<class symbol_type> void -convolutional_interleaver<symbol_type>::transform (symbol_type *out, - const symbol_type *in, - int nsymbols) -{ - // we may want to unroll this a couple of times... - for (int i = 0; i < nsymbols; i++) - out[i] = transform (in[i]); -} - -#endif /* _CONVOLUTIONAL_INTERLEAVER_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/create_atsci_equalizer.h b/gr-atsc/include/gnuradio/atsc/create_atsci_equalizer.h deleted file mode 100644 index 63773a80bb..0000000000 --- a/gr-atsc/include/gnuradio/atsc/create_atsci_equalizer.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _CREATE_ATSC_EQUALIZER_H_ -#define _CREATE_ATSC_EQUALIZER_H_ - -#include <gnuradio/atsc/api.h> - -class atsci_equalizer; - -ATSC_API atsci_equalizer *create_atsci_equalizer_nop (); -ATSC_API atsci_equalizer *create_atsci_equalizer_lms (); -ATSC_API atsci_equalizer *create_atsci_equalizer_lms2 (); - -#endif /* _CREATE_ATSC_EQUALIZER_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/create_atsci_fs_checker.h b/gr-atsc/include/gnuradio/atsc/create_atsci_fs_checker.h deleted file mode 100644 index 73b0c7443f..0000000000 --- a/gr-atsc/include/gnuradio/atsc/create_atsci_fs_checker.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _CREATE_ATSC_FS_CHECKER_H_ -#define _CREATE_ATSC_FS_CHECKER_H_ - -#include <gnuradio/atsc/api.h> - -class atsci_fs_checker; - -/*! - * Factory that creates appropriate atsci_fs_checker - */ -ATSC_API atsci_fs_checker *create_atsci_fs_checker (); - - -#endif /* _CREATE_ATSC_FS_CHECKER_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/create_atsci_fs_correlator.h b/gr-atsc/include/gnuradio/atsc/create_atsci_fs_correlator.h deleted file mode 100644 index dc6d81499f..0000000000 --- a/gr-atsc/include/gnuradio/atsc/create_atsci_fs_correlator.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _CREATE_ATSC_FS_CORRELATOR_H_ -#define _CREATE_ATSC_FS_CORRELATOR_H_ - -#include <gnuradio/atsc/api.h> - -class atsci_fs_correlator; - -/*! - * Factory that creates appropriate atsci_fs_correlator - */ -ATSC_API atsci_fs_correlator *create_atsci_fs_correlator (); - - -#endif /* _CREATE_ATSC_FS_CORRELATOR_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/data_interleaver_impl.h b/gr-atsc/include/gnuradio/atsc/data_interleaver_impl.h deleted file mode 100644 index e44125864b..0000000000 --- a/gr-atsc/include/gnuradio/atsc/data_interleaver_impl.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_DATA_INTERLEAVER_H_ -#define _ATSC_DATA_INTERLEAVER_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/types.h> -#include <gnuradio/atsc/convolutional_interleaver.h> - -/*! - * \brief atsc convolutional data interleaver - */ -class ATSC_API atsci_data_interleaver : public convolutional_interleaver<unsigned char> { - public: - atsci_data_interleaver () : convolutional_interleaver<unsigned char>(true, 52, 4) {} - - void interleave (atsc_mpeg_packet_rs_encoded &out, - const atsc_mpeg_packet_rs_encoded &in); -}; - -/*! - * \brief atsc convolutional data deinterleaver - */ -class ATSC_API atsci_data_deinterleaver : public convolutional_interleaver<unsigned char> { - public: - atsci_data_deinterleaver () : - convolutional_interleaver<unsigned char>(false, 52, 4), alignment_fifo (156) {} - - void deinterleave (atsc_mpeg_packet_rs_encoded &out, - const atsc_mpeg_packet_rs_encoded &in); - -private: - /*! - * Note: The use of the alignment_fifo keeps the encoder and decoder - * aligned if both are synced to a field boundary. There may be other - * ways to implement this function. This is a best guess as to how - * this should behave, as we have no test vectors for either the - * interleaver or deinterleaver. - */ - interleaver_fifo<unsigned char> alignment_fifo; - - static void remap_pli (plinfo &out, const plinfo &in); -}; - -#endif /* _ATSC_DATA_INTERLEAVER_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/deinterleaver.h b/gr-atsc/include/gnuradio/atsc/deinterleaver.h deleted file mode 100644 index 22b5461aaf..0000000000 --- a/gr-atsc/include/gnuradio/atsc/deinterleaver.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_DEINTERLEAVER_H -#define INCLUDED_ATSC_DEINTERLEAVER_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/atsc/data_interleaver_impl.h> - -class atsc_deinterleaver; -typedef boost::shared_ptr<atsc_deinterleaver> atsc_deinterleaver_sptr; - -ATSC_API atsc_deinterleaver_sptr atsc_make_deinterleaver(); - -/*! - * \brief Deinterleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded) - * \ingroup atsc - * - * input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded - */ -class ATSC_API atsc_deinterleaver : public gr::sync_block -{ - friend ATSC_API atsc_deinterleaver_sptr atsc_make_deinterleaver(); - - atsci_data_deinterleaver d_deinterleaver; - - atsc_deinterleaver(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } -}; - - -#endif /* INCLUDED_ATSC_DEINTERLEAVER_H */ diff --git a/gr-atsc/include/gnuradio/atsc/depad.h b/gr-atsc/include/gnuradio/atsc/depad.h deleted file mode 100644 index 3a638c46fe..0000000000 --- a/gr-atsc/include/gnuradio/atsc/depad.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ -#ifndef INCLUDED_ATSC_DEPAD_H -#define INCLUDED_ATSC_DEPAD_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_interpolator.h> - -class atsc_depad; -typedef boost::shared_ptr<atsc_depad> atsc_depad_sptr; - -ATSC_API atsc_depad_sptr atsc_make_depad(); - -/*! - * \brief depad mpeg ts packets from 256 byte atsc_mpeg_packet to 188 byte char - * \ingroup atsc - * - * input: atsc_mpeg_packet; output: unsigned char - */ -class ATSC_API atsc_depad : public gr::sync_interpolator -{ - friend ATSC_API atsc_depad_sptr atsc_make_depad(); - - atsc_depad(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } -}; - - -#endif /* INCLUDED_ATSC_DEPAD_H */ diff --git a/gr-atsc/include/gnuradio/atsc/derandomizer.h b/gr-atsc/include/gnuradio/atsc/derandomizer.h deleted file mode 100644 index 86eaca427c..0000000000 --- a/gr-atsc/include/gnuradio/atsc/derandomizer.h +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ -#ifndef INCLUDED_ATSC_DERANDOMIZER_H -#define INCLUDED_ATSC_DERANDOMIZER_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/atsc/randomizer_impl.h> - -class atsc_derandomizer; -typedef boost::shared_ptr<atsc_derandomizer> atsc_derandomizer_sptr; - -ATSC_API atsc_derandomizer_sptr atsc_make_derandomizer(); - -/*! - * \brief "dewhiten" incoming mpeg transport stream packets - * \ingroup atsc - * - * input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet; - */ -class ATSC_API atsc_derandomizer : public gr::sync_block -{ - friend ATSC_API atsc_derandomizer_sptr atsc_make_derandomizer(); - - atsci_randomizer d_rand; - - atsc_derandomizer(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset(); -}; - - -#endif /* INCLUDED_ATSC_DERANDOMIZER_H */ diff --git a/gr-atsc/include/gnuradio/atsc/diag_output_impl.h b/gr-atsc/include/gnuradio/atsc/diag_output_impl.h deleted file mode 100644 index 09fd763d6a..0000000000 --- a/gr-atsc/include/gnuradio/atsc/diag_output_impl.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -/* - * single place to control all compile time diagnostic output options - */ - -#define _BT_DIAG_OUTPUT_ 0 -#define _FPLL_DIAG_OUTPUT_ 0 -#define _SSSR_DIAG_OUTPUT_ 0 diff --git a/gr-atsc/include/gnuradio/atsc/ds_to_softds.h b/gr-atsc/include/gnuradio/atsc/ds_to_softds.h deleted file mode 100644 index 197aafb7ad..0000000000 --- a/gr-atsc/include/gnuradio/atsc/ds_to_softds.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_DS_TO_SOFTDS_H -#define INCLUDED_ATSC_DS_TO_SOFTDS_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/atsc/types.h> - -class atsc_ds_to_softds; -typedef boost::shared_ptr<atsc_ds_to_softds> atsc_ds_to_softds_sptr; - -ATSC_API atsc_ds_to_softds_sptr atsc_make_ds_to_softds(); - -/*! - * \brief Debug glue routine (atsc_data_segment --> atsc_soft_data_segment) - * \ingroup atsc - * - * input: atsc_data_segment; output: atsc_soft_data_segment - */ -class ATSC_API atsc_ds_to_softds : public gr::sync_block -{ - friend ATSC_API atsc_ds_to_softds_sptr atsc_make_ds_to_softds(); - - atsc_ds_to_softds(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void map_to_soft_symbols (atsc_soft_data_segment &out, - const atsc_data_segment &in); - - - void reset() { /* nop */ } -}; - - -#endif /* INCLUDED_ATSC_DS_TO_SOFTDS_H */ diff --git a/gr-atsc/include/gnuradio/atsc/equalizer.h b/gr-atsc/include/gnuradio/atsc/equalizer.h deleted file mode 100644 index 4e9103fb12..0000000000 --- a/gr-atsc/include/gnuradio/atsc/equalizer.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_EQUALIZER_H -#define INCLUDED_ATSC_EQUALIZER_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/atsc/equalizer_impl.h> -#include <vector> - -class atsc_equalizer; -typedef boost::shared_ptr<atsc_equalizer> atsc_equalizer_sptr; - -atsc_equalizer_sptr ATSC_API atsc_make_equalizer(); - -/*! - * \brief ATSC equalizer (float,syminfo --> float,syminfo) - * \ingroup atsc - * - * first inputs are data samples, second inputs are tags. - * first outputs are equalized data samples, second outputs are tags. - */ -class ATSC_API atsc_equalizer : public gr::sync_block -{ - friend ATSC_API atsc_equalizer_sptr atsc_make_equalizer(); - - atsc_equalizer(); - -public: - void forecast (int noutput_items, gr_vector_int &ninput_items_required); - - std::vector<double> taps() { - return d_equalizer->taps(); - } - - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } - - ~atsc_equalizer (); - - -protected: - atsci_equalizer *d_equalizer; - -}; - - -#endif /* INCLUDED_ATSC_EQUALIZER_H */ diff --git a/gr-atsc/include/gnuradio/atsc/equalizer_impl.h b/gr-atsc/include/gnuradio/atsc/equalizer_impl.h deleted file mode 100644 index a6d849b00f..0000000000 --- a/gr-atsc/include/gnuradio/atsc/equalizer_impl.h +++ /dev/null @@ -1,169 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_EQUALIZER_H_ -#define _ATSC_EQUALIZER_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/syminfo_impl.h> -#include <vector> - -/*! - * \brief abstract base class for ATSC equalizer - */ -class ATSC_API atsci_equalizer { - -private: - - /* - * have we seen a field sync since the last reset or problem? - */ - bool d_locked_p; - - /* - * sample offset from the beginning of the last field sync we saw - * to the beginning of our current input stream. When we're locked - * this will be in [0, 313*832] i.e., [0, 260416] - */ - int d_offset_from_last_field_sync; - - int d_current_field; // [0,1] - - -public: - - // CREATORS - atsci_equalizer (); - virtual ~atsci_equalizer (); - - virtual std::vector<double> taps () { - return std::vector<double>(); - } - - // MANIPULATORS - - /*! - * \brief reset state (e.g., on channel change) - * - * Note, subclasses must invoke the superclass's method too! - */ - virtual void reset (); - - /*! - * \brief produce \p nsamples of output from given inputs and tags - * - * This is the main entry point. It examines the input_tags - * and local state and invokes the appropriate virtual function - * to handle each sub-segment of the input data. - * - * \p input_samples must have (nsamples + ntaps() - 1) valid entries. - * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] are - * referenced to compute the output values. - * - * \p input_tags must have nsamples valid entries. - * input_tags[0] .. input_tags[nsamples - 1] are referenced to - * compute the output values. - */ - virtual void filter (const float *input_samples, - const atsc::syminfo *input_tags, - float *output_samples, - int nsamples); - - // ACCESSORS - - /*! - * \brief how much history the input data stream requires. - * - * This must return a value >= 1. Think of this as the number - * of samples you need to look at to compute a single output sample. - */ - virtual int ntaps () const = 0; - - /*! - * \brief how many taps are "in the future". - * - * This allows us to handle what the ATSC folks call "pre-ghosts". - * What it really does is allow the caller to jack with the offset - * between the tags and the data so that everything magically works out. - * - * npretaps () must return a value between 0 and ntaps() - 1. - * - * If npretaps () returns 0, this means that the equalizer will only handle - * multipath "in the past." I suspect that a good value would be something - * like 15% - 20% of ntaps (). - */ - virtual int npretaps () const = 0; - - -protected: - - /*! - * Input range is known NOT TO CONTAIN data segment syncs - * or field syncs. This should be the fast path. In the - * non decicion directed case, this just runs the input - * through the filter without adapting it. - * - * \p input_samples has (nsamples + ntaps() - 1) valid entries. - * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be - * referenced to compute the output values. - */ - virtual void filter_normal (const float *input_samples, - float *output_samples, - int nsamples) = 0; - - /*! - * Input range is known to consist of only a data segment sync or a - * portion of a data segment sync. \p nsamples will be in [1,4]. - * \p offset will be in [0,3]. \p offset is the offset of the input - * from the beginning of the data segment sync pattern. - * - * \p input_samples has (nsamples + ntaps() - 1) valid entries. - * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be - * referenced to compute the output values. - */ - virtual void filter_data_seg_sync (const float *input_samples, - float *output_samples, - int nsamples, - int offset) = 0; - - /*! - * Input range is known to consist of only a field sync segment or a - * portion of a field sync segment. \p nsamples will be in [1,832]. - * \p offset will be in [0,831]. \p offset is the offset of the input - * from the beginning of the data segment sync pattern. We consider the - * 4 symbols of the immediately preceding data segment sync to be the - * first symbols of the field sync segment. \p which_field is in [0,1] - * and specifies which field (duh). - * - * \p input_samples has (nsamples + ntaps() - 1) valid entries. - * input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be - * referenced to compute the output values. - */ - virtual void filter_field_sync (const float *input_samples, - float *output_samples, - int nsamples, - int offset, - int which_field) = 0; -}; - - -#endif /* _ATSC_EQUALIZER_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/equalizer_lms2_impl.h b/gr-atsc/include/gnuradio/atsc/equalizer_lms2_impl.h deleted file mode 100644 index 5f4ab66c96..0000000000 --- a/gr-atsc/include/gnuradio/atsc/equalizer_lms2_impl.h +++ /dev/null @@ -1,80 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_EQUALIZER_LMS2_H_ -#define _ATSC_EQUALIZER_LMS2_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/equalizer_impl.h> -#include <vector> -#include <stdio.h> - -class ATSC_API atsci_equalizer_lms2 : public atsci_equalizer -{ -public: - atsci_equalizer_lms2 (); - virtual ~atsci_equalizer_lms2 (); - - virtual void reset (); - virtual int ntaps () const; - virtual int npretaps () const; - -protected: - FILE *trainingfile; - virtual void filter_normal (const float *input_samples, - float *output_samples, - int nsamples); - - virtual void filter_data_seg_sync (const float *input_samples, - float *output_samples, - int nsamples, - int offset); - - virtual void filter_field_sync (const float *input_samples, - float *output_samples, - int nsamples, - int offset, - int which_field); - -private: - std::vector<double> d_taps_ff; - std::vector<double> d_taps_fb; - std::vector<float> d_old_output; - - int d_output_ptr; - - void filterN (const float *input_samples, - float *output_samples, - int nsamples); - - void adaptN (const float *input_samples, - const float *training_pattern, - float *output_samples, - int nsamples); - - float filter1 (const float input[]); - float adapt1 (const float input[], float ideal_output); - -}; - - -#endif /* _ATSC_EQUALIZER_LMS2_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/equalizer_lms_impl.h b/gr-atsc/include/gnuradio/atsc/equalizer_lms_impl.h deleted file mode 100644 index 0daa00e67c..0000000000 --- a/gr-atsc/include/gnuradio/atsc/equalizer_lms_impl.h +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_EQUALIZER_LMS_H_ -#define _ATSC_EQUALIZER_LMS_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/equalizer_impl.h> -#include <vector> -#include <stdio.h> - -class ATSC_API atsci_equalizer_lms : public atsci_equalizer -{ -public: - atsci_equalizer_lms (); - virtual ~atsci_equalizer_lms (); - - virtual void reset (); - virtual int ntaps () const; - virtual int npretaps () const; - std::vector<double> taps () { - return d_taps; - } - -protected: - FILE *trainingfile; - virtual void filter_normal (const float *input_samples, - float *output_samples, - int nsamples); - - virtual void filter_data_seg_sync (const float *input_samples, - float *output_samples, - int nsamples, - int offset); - - virtual void filter_field_sync (const float *input_samples, - float *output_samples, - int nsamples, - int offset, - int which_field); - -private: - std::vector<double> d_taps; - - void filterN (const float *input_samples, - float *output_samples, - int nsamples); - - void adaptN (const float *input_samples, - const float *training_pattern, - float *output_samples, - int nsamples); - - float filter1 (const float input[]); - float adapt1 (const float input[], float ideal_output); - -}; - - -#endif /* _ATSC_EQUALIZER_LMS_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/equalizer_nop_impl.h b/gr-atsc/include/gnuradio/atsc/equalizer_nop_impl.h deleted file mode 100644 index 1c075c5220..0000000000 --- a/gr-atsc/include/gnuradio/atsc/equalizer_nop_impl.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_EQUALIZER_NOP_H_ -#define _ATSC_EQUALIZER_NOP_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/equalizer_impl.h> - -class ATSC_API atsci_equalizer_nop : public atsci_equalizer -{ -private: - float scale (float input) { return input; } - - float scale_and_train (float input); - - -public: - atsci_equalizer_nop (); - virtual ~atsci_equalizer_nop (); - - virtual void reset (); - virtual int ntaps () const; - virtual int npretaps () const; - -protected: - virtual void filter_normal (const float *input_samples, - float *output_samples, - int nsamples); - - virtual void filter_data_seg_sync (const float *input_samples, - float *output_samples, - int nsamples, - int offset); - - virtual void filter_field_sync (const float *input_samples, - float *output_samples, - int nsamples, - int offset, - int which_field); -}; - - -#endif /* _ATSC_EQUALIZER_NOP_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/fake_single_viterbi_impl.h b/gr-atsc/include/gnuradio/atsc/fake_single_viterbi_impl.h deleted file mode 100644 index ae671832b4..0000000000 --- a/gr-atsc/include/gnuradio/atsc/fake_single_viterbi_impl.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSCFAKESINGLEVITERBI_H_ -#define _ATSCFAKESINGLEVITERBI_H_ - -#include <gnuradio/atsc/api.h> - -/*! - * \brief single channel viterbi decoder - */ -class ATSC_API atsci_fake_single_viterbi -{ - -public: - atsci_fake_single_viterbi (); - - /*! - * \p INPUT ideally takes on the values +/- 1,3,5,7 - * return is decoded dibit in the range [0, 3] - */ - char decode (float input); - - void reset (); - - //! internal delay of decoder - int delay () { return 0; } - -protected: - int post_coder_state; -}; - -#endif diff --git a/gr-atsc/include/gnuradio/atsc/field_sync_demux.h b/gr-atsc/include/gnuradio/atsc/field_sync_demux.h deleted file mode 100644 index 1c31a5b98f..0000000000 --- a/gr-atsc/include/gnuradio/atsc/field_sync_demux.h +++ /dev/null @@ -1,76 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ -#ifndef INCLUDED_ATSC_FIELD_SYNC_DEMUX_H -#define INCLUDED_ATSC_FIELD_SYNC_DEMUX_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/block.h> -#include <gnuradio/atsc/types.h> - -class atsc_field_sync_demux; -typedef boost::shared_ptr<atsc_field_sync_demux> atsc_field_sync_demux_sptr; - -ATSC_API atsc_field_sync_demux_sptr atsc_make_field_sync_demux(); - -/*! - * \brief ATSC Field Sync Demux - * - * This class accepts 1 stream of floats (data), and 1 stream of tags (syminfo). * It outputs one stream of atsc_soft_data_segment packets - * \ingroup atsc - * - */ -class ATSC_API atsc_field_sync_demux : public gr::block -{ - friend ATSC_API atsc_field_sync_demux_sptr atsc_make_field_sync_demux(); - - atsc_field_sync_demux(); - -public: - void forecast (int noutput_items, gr_vector_int &ninput_items_required); - - int general_work (int noutput_items, - gr_vector_int &ninput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } - -protected: - bool d_locked; - bool d_in_field2; - int d_segment_number; - uint64_t d_next_input; - uint64_t d_lost_index; // diagnostic fluff - - unsigned long long d_inputs0_index; // for inputs[0].index - unsigned long d_inputs0_size; // for inputs[0].size - int d_consume; - -}; - - -#endif /* INCLUDED_ATSC_FIELD_SYNC_DEMUX_H */ diff --git a/gr-atsc/include/gnuradio/atsc/field_sync_mux.h b/gr-atsc/include/gnuradio/atsc/field_sync_mux.h deleted file mode 100644 index 2cccb52aec..0000000000 --- a/gr-atsc/include/gnuradio/atsc/field_sync_mux.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_FIELD_SYNC_MUX_H -#define INCLUDED_ATSC_FIELD_SYNC_MUX_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/atsc/types.h> - -class atsc_field_sync_mux; -typedef boost::shared_ptr<atsc_field_sync_mux> atsc_field_sync_mux_sptr; - -ATSC_API atsc_field_sync_mux_sptr atsc_make_field_sync_mux(); - -/*! - * \brief Insert ATSC Field Syncs as required (atsc_data_segment --> atsc_data_segment) - * \ingroup atsc - * - * input: atsc_data_segment; output: atsc_data_segment - */ -class ATSC_API atsc_field_sync_mux : public gr::block -{ - friend ATSC_API atsc_field_sync_mux_sptr atsc_make_field_sync_mux(); - - atsc_field_sync_mux(); - -public: - void forecast (int noutput_items, gr_vector_int &ninput_items_required); - int general_work (int noutput_items, - gr_vector_int &ninput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - - static const int N_SAVED_SYMBOLS = 12; - - void reset() - { - d_already_output_field_sync = false; - } - -protected: - bool d_already_output_field_sync; - unsigned char d_saved_symbols[N_SAVED_SYMBOLS]; -}; - - -#endif /* INCLUDED_ATSC_FIELD_SYNC_MUX_H */ diff --git a/gr-atsc/include/gnuradio/atsc/fpll.h b/gr-atsc/include/gnuradio/atsc/fpll.h deleted file mode 100644 index 9c565ed2eb..0000000000 --- a/gr-atsc/include/gnuradio/atsc/fpll.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_FPLL_H -#define INCLUDED_ATSC_FPLL_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/nco.h> -#include <gnuradio/filter/single_pole_iir.h> -#include <gnuradio/analog/agc.h> -#include <stdio.h> -#include <gnuradio/atsc/diag_output_impl.h> - -using namespace gr; - -class atsc_fpll; -typedef boost::shared_ptr<atsc_fpll> atsc_fpll_sptr; - -ATSC_API atsc_fpll_sptr atsc_make_fpll(); - -/*! - * \brief ATSC FPLL (2nd Version) - * \ingroup atsc - * - * A/D --> GrFIRfilterFFF ----> GrAtscFPLL ----> - * - * We use GrFIRfilterFFF to bandpass filter the signal of interest. - * - * This class accepts a single real input and produces a single real output - */ - -class ATSC_API atsc_fpll : public gr::sync_block -{ - friend ATSC_API atsc_fpll_sptr atsc_make_fpll(); - - atsc_fpll(); - -public: - - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } - - void initialize () ; - - protected: - - double initial_freq; - double initial_phase; - bool debug_no_update; - gr::nco<float,float> nco; - analog::kernel::agc_ff agc; // automatic gain control - filter::single_pole_iir<float,float,float> afci; - filter::single_pole_iir<float,float,float> afcq; - - -}; - - -#endif /* INCLUDED_ATSC_FPLL_H */ diff --git a/gr-atsc/include/gnuradio/atsc/fs_checker.h b/gr-atsc/include/gnuradio/atsc/fs_checker.h deleted file mode 100644 index 7a7d73852a..0000000000 --- a/gr-atsc/include/gnuradio/atsc/fs_checker.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_FS_CHECKER_H -#define INCLUDED_ATSC_FS_CHECKER_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/fs_checker_impl.h> -#include <gnuradio/sync_block.h> - -class atsc_fs_checker; -typedef boost::shared_ptr<atsc_fs_checker> atsc_fs_checker_sptr; - -ATSC_API atsc_fs_checker_sptr atsc_make_fs_checker(); - -/*! - * \brief ATSC field sync checker (float,syminfo --> float,syminfo) - * \ingroup atsc - * - * first output is delayed version of input. - * second output is set of tags, one-for-one with first output. - */ - -class ATSC_API atsc_fs_checker : public gr::sync_block -{ - friend ATSC_API atsc_fs_checker_sptr atsc_make_fs_checker(); - - atsc_fs_checker(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } - - ~atsc_fs_checker (); - -protected: - atsci_fs_checker *d_fsc; - -}; - - -#endif /* INCLUDED_ATSC_FS_CHECKER_H */ diff --git a/gr-atsc/include/gnuradio/atsc/fs_checker_impl.h b/gr-atsc/include/gnuradio/atsc/fs_checker_impl.h deleted file mode 100644 index 3ac1b8d913..0000000000 --- a/gr-atsc/include/gnuradio/atsc/fs_checker_impl.h +++ /dev/null @@ -1,70 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ -#ifndef _ATSC_FS_CHECKER_H_ -#define _ATSC_FS_CHECKER_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/syminfo_impl.h> - -/*! - * \brief abstract base class for ATSC field sync checker - * - * Processes input samples one at a time looking for - * an occurence of either the field sync 1 or field sync 2 pattern. - * - * Note that unlike atsci_fs_correlator, this class uses the symbol_num in - * input_tag to avoid having to test each symbol position. - * - * For each sample processed, an output sample and an output tag are produced. - * The output samples are identical to the input samples but are delayed by - * a number of samples given by \p delay(). The output tag associated with - * the the given output sample indicates whether this sample is the beginning - * of one of the field syncs or is an ordinary sample. The tags are defined in - * atsci_sync_tag.h. - * - * For ease of use, the field sync patterns are defined to begin with the - * first symbol of the 4 symbol data segment sync pattern that immediately - * proceeds the actual PN 511 code. This makes it easier for downstream code - * to determine the location of data segment syncs merely by counting. They'll - * occur every 832 samples assuming everything is working. - */ - -class ATSC_API atsci_fs_checker { - -public: - - // CREATORS - atsci_fs_checker (); - virtual ~atsci_fs_checker () = 0; - - // MANIPULATORS - virtual void reset () = 0; - virtual void filter (float input_sample, atsc::syminfo input_tag, - float *output_sample, atsc::syminfo *output_tag) = 0; - - // ACCESSORS - - //! return delay in samples from input to output - virtual int delay () const = 0; -}; - -#endif /* _ATSC_FS_CHECKER_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/fs_checker_naive_impl.h b/gr-atsc/include/gnuradio/atsc/fs_checker_naive_impl.h deleted file mode 100644 index 002af5c645..0000000000 --- a/gr-atsc/include/gnuradio/atsc/fs_checker_naive_impl.h +++ /dev/null @@ -1,74 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_FS_CHECKER_NAIVE_H_ -#define _ATSC_FS_CHECKER_NAIVE_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/fs_checker_impl.h> - -/*! - * \brief Naive concrete implementation of field sync checker - */ -class ATSC_API atsci_fs_checker_naive : public atsci_fs_checker { - - private: - static const int SRSIZE = 1024; // must be power of two - int d_index; // points at oldest sample - float d_sample_sr[SRSIZE]; // sample shift register - atsc::syminfo d_tag_sr[SRSIZE]; // tag shift register - unsigned char d_bit_sr[SRSIZE]; // binary decision shift register - int d_field_num; - int d_segment_num; - - static const int OFFSET_511 = 0; // offset to PN 511 pattern - static const int LENGTH_511 = 511 + 4; // length of PN 511 pattern (+ 4 seg sync) - static const int OFFSET_2ND_63 = 578; // offset to second PN 63 pattern - static const int LENGTH_2ND_63 = 63; // length of PN 63 pattern - - static unsigned char s_511[LENGTH_511]; // PN 511 pattern - static unsigned char s_63[LENGTH_2ND_63]; // PN 63 pattern - - inline static int wrap (int index){ return index & (SRSIZE - 1); } - inline static int incr (int index){ return wrap (index + 1); } - inline static int decr (int index){ return wrap (index - 1); } - - public: - - // CREATORS - atsci_fs_checker_naive (); - ~atsci_fs_checker_naive (); - - // MANIPULATORS - virtual void reset (); - void filter (float input_sample, atsc::syminfo input_tag, - float *output_sample, atsc::syminfo *output_tag); - - // ACCESSORS - - //! return delay in samples from input to output - int delay () const; - -}; - - -#endif /* _ATSC_FS_CHECKER_NAIVE_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/fs_correlator_impl.h b/gr-atsc/include/gnuradio/atsc/fs_correlator_impl.h deleted file mode 100644 index 2517877666..0000000000 --- a/gr-atsc/include/gnuradio/atsc/fs_correlator_impl.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_FS_CORRELATOR_H_ -#define _ATSC_FS_CORRELATOR_H_ - -#include <gnuradio/atsc/api.h> - -/*! - * \brief abstract base class for ATSC field sync correlator - * - * Processes input samples one at a time looking for - * an occurence of either the field sync 1 or field sync 2 pattern. - * - * For each sample processed, an output sample and an output tag are produced. - * The output samples are identical to the input samples but are delayed by - * a number of samples given by \p delay(). The output tag associated with - * the the given output sample indicates whether this sample is the beginning - * of one of the field syncs or is an ordinary sample. The tags are defined in - * atsci_sync_tag.h. - * - * For ease of use, the field sync patterns are defined to begin with the - * first symbol of the 4 symbol data segment sync pattern that immediately - * proceeds the actual PN 511 code. This makes it easier for downstream code - * to determine the location of data segment syncs merely by counting. They'll - * occur every 832 samples assuming everything is working. - */ - -class ATSC_API atsci_fs_correlator { - -public: - - // CREATORS - atsci_fs_correlator (); - virtual ~atsci_fs_correlator () = 0; - - // MANIPULATORS - virtual void reset () = 0; - virtual void filter (float input_sample, float *output_sample, float *output_tag) = 0; - - // ACCESSORS - - //! return delay in samples from input to output - virtual int delay () const = 0; -}; - -#endif /* _ATSC_FS_CORRELATOR_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/fs_correlator_naive_impl.h b/gr-atsc/include/gnuradio/atsc/fs_correlator_naive_impl.h deleted file mode 100644 index 4f8b5a8d76..0000000000 --- a/gr-atsc/include/gnuradio/atsc/fs_correlator_naive_impl.h +++ /dev/null @@ -1,70 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_FS_CORRELATOR_NAIVE_H_ -#define _ATSC_FS_CORRELATOR_NAIVE_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/fs_correlator_impl.h> - -/*! - * \brief Naive concrete implementation of field sync correlator - */ -class ATSC_API atsci_fs_correlator_naive : public atsci_fs_correlator { - - private: - static const int SRSIZE = 1024; // must be power of two - int d_index; // points at oldest sample - float d_sample_sr[SRSIZE]; // sample shift register - unsigned char d_bit_sr[SRSIZE]; // binary decision shift register - - static const int OFFSET_511 = 0; // offset to PN 511 pattern - static const int LENGTH_511 = 511 + 4; // length of PN 511 pattern (+ 4 seg sync) - static const int OFFSET_2ND_63 = 578; // offset to second PN 63 pattern - static const int LENGTH_2ND_63 = 63; // length of PN 63 pattern - - static unsigned char s_511[LENGTH_511]; // PN 511 pattern - static unsigned char s_63[LENGTH_2ND_63]; // PN 63 pattern - - inline static int wrap (int index){ return index & (SRSIZE - 1); } - inline static int incr (int index){ return wrap (index + 1); } - inline static int decr (int index){ return wrap (index - 1); } - - public: - - // CREATORS - atsci_fs_correlator_naive (); - ~atsci_fs_correlator_naive (); - - // MANIPULATORS - virtual void reset (); - void filter (float input_sample, float *output_sample, float *output_tag); - - // ACCESSORS - - //! return delay in samples from input to output - int delay () const; - -}; - - -#endif /* _ATSC_FS_CORRELATOR_NAIVE_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/interleaver.h b/gr-atsc/include/gnuradio/atsc/interleaver.h deleted file mode 100644 index 1f245bbbe0..0000000000 --- a/gr-atsc/include/gnuradio/atsc/interleaver.h +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_INTERLEAVER_H -#define INCLUDED_ATSC_INTERLEAVER_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/atsc/data_interleaver_impl.h> - -class atsc_interleaver; -typedef boost::shared_ptr<atsc_interleaver> atsc_interleaver_sptr; - -ATSC_API atsc_interleaver_sptr atsc_make_interleaver(); - -/*! \brief Interleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded)* - * \ingroup atsc - * - * input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded - */ -class ATSC_API atsc_interleaver : public gr::sync_block -{ - friend ATSC_API atsc_interleaver_sptr atsc_make_interleaver(); - - atsci_data_interleaver d_interleaver; - - atsc_interleaver(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } -}; - - -#endif /* INCLUDED_ATSC_INTERLEAVER_H */ diff --git a/gr-atsc/include/gnuradio/atsc/interleaver_fifo.h b/gr-atsc/include/gnuradio/atsc/interleaver_fifo.h deleted file mode 100644 index aee42104e7..0000000000 --- a/gr-atsc/include/gnuradio/atsc/interleaver_fifo.h +++ /dev/null @@ -1,86 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _INTERLEAVER_FIFO_H_ -#define _INTERLEAVER_FIFO_H_ - - -#include <gnuradio/atsc/interleaver_fifo.h> -#include <string.h> - -/*! - * \brief template class for interleaver fifo - */ - -template<class symbol_type> -class interleaver_fifo { - public: - - interleaver_fifo (unsigned int size); - ~interleaver_fifo (); - - //! reset interleaver (flushes contents and resets commutator) - void reset (); - - //! stuff a symbol into the fifo and return the oldest - symbol_type stuff (symbol_type input){ - if (m_size == 0) - return input; - - symbol_type retval = m_fifo[m_position]; - m_fifo[m_position] = input; - m_position++; - if (m_position >= m_size) - m_position = 0; - - return retval; - } - -protected: - unsigned int m_size; - unsigned int m_position; - symbol_type *m_fifo; -}; - -template<class symbol_type> -interleaver_fifo<symbol_type>::interleaver_fifo (unsigned int size) -{ - m_size = size; - m_position = 0; - m_fifo = new symbol_type[size]; - memset (m_fifo, 0, m_size * sizeof (symbol_type)); -} - -template<class symbol_type> -interleaver_fifo<symbol_type>::~interleaver_fifo () -{ - delete [] m_fifo; -} - -template<class symbol_type> void -interleaver_fifo<symbol_type>::reset () -{ - m_position = 0; - memset (m_fifo, 0, m_size * sizeof (symbol_type)); -} - -#endif /* _INTERLEAVER_FIFO_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/pad.h b/gr-atsc/include/gnuradio/atsc/pad.h deleted file mode 100644 index cbe5b11e5d..0000000000 --- a/gr-atsc/include/gnuradio/atsc/pad.h +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_PAD_H -#define INCLUDED_ATSC_PAD_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_decimator.h> - -class atsc_pad; -typedef boost::shared_ptr<atsc_pad> atsc_pad_sptr; - -ATSC_API atsc_pad_sptr atsc_make_pad(); - -/*! - * \brief pad mpeg ts packets from 188 byte char to - * to 256 byte atsc_mpeg_packet - * \ingroup atsc - * - * input: unsigned char; output: atsc_mpeg_packet - */ -class ATSC_API atsc_pad : public gr::sync_decimator -{ - friend ATSC_API atsc_pad_sptr atsc_make_pad(); - - atsc_pad(); - -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); - - void reset() { /* nop */ } -}; - - -#endif /* INCLUDED_ATSC_PAD_H */ diff --git a/gr-atsc/include/gnuradio/atsc/pnXXX_impl.h b/gr-atsc/include/gnuradio/atsc/pnXXX_impl.h deleted file mode 100644 index b33d82cec6..0000000000 --- a/gr-atsc/include/gnuradio/atsc/pnXXX_impl.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#include <gnuradio/atsc/api.h> - -ATSC_API extern const unsigned char atsc_pn511[]; -ATSC_API extern const unsigned char atsc_pn63[]; diff --git a/gr-atsc/include/gnuradio/atsc/randomizer.h b/gr-atsc/include/gnuradio/atsc/randomizer.h deleted file mode 100644 index dfda95d032..0000000000 --- a/gr-atsc/include/gnuradio/atsc/randomizer.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_RANDOMIZER_H -#define INCLUDED_ATSC_RANDOMIZER_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/atsc/randomizer_impl.h> - -class atsc_randomizer; -typedef boost::shared_ptr<atsc_randomizer> atsc_randomizer_sptr; - -ATSC_API atsc_randomizer_sptr atsc_make_randomizer(); - -/*! - * \brief "Whiten" incoming mpeg transport stream packets - * \ingroup atsc - * - * input: atsc_mpeg_packet; output: atsc_mpeg_packet_no_sync - */ -class ATSC_API atsc_randomizer : public gr::sync_block -{ - friend ATSC_API atsc_randomizer_sptr atsc_make_randomizer(); - - atsci_randomizer d_rand; - bool d_field2; // user to init plinfo in output - int d_segno; // likewise - - atsc_randomizer(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset(); -}; - - -#endif /* INCLUDED_ATSC_RANDOMIZER_H */ diff --git a/gr-atsc/include/gnuradio/atsc/randomizer_impl.h b/gr-atsc/include/gnuradio/atsc/randomizer_impl.h deleted file mode 100644 index d798629de2..0000000000 --- a/gr-atsc/include/gnuradio/atsc/randomizer_impl.h +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2001 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_RANDOMIZER_H_ -#define _ATSC_RANDOMIZER_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/types.h> - -/*! - * \brief ATSC data "whitener" - * - * The data randomizer described in ATSC standard A/53B. - * See figure D4 on page 54. - */ - -class ATSC_API atsci_randomizer { - friend class qa_atsci_randomizer; - - public: - atsci_randomizer(); - - /*! \brief reset randomizer LFSR - * - * must be called during the Data Segment Sync interval prior to the - * first data segment. I.e., the LFSR is reset prior to the first - * field of each VSB data frame. - */ - void reset (); - - //! randomize (whiten) mpeg packet and remove leading MPEG-2 sync byte - void randomize (atsc_mpeg_packet_no_sync &out, const atsc_mpeg_packet &in); - - //! derandomize (de-whiten) mpeg packet and add leading MPEG-2 sync byte - void derandomize (atsc_mpeg_packet &out, const atsc_mpeg_packet_no_sync &in); - - unsigned int state() const { return d_state; } - - private: - static void initialize_output_map (); - static unsigned char slow_output_map (int st); - - static unsigned char fast_output_map (int st){ - return s_output_map[(st & 0xb23c) >> 2]; // Magic const with 8 bits set improves cache - // utilization. The bits correspond to the taps - // used in output calculation. Others may be - // safely ignored. - } - - //! return current output value - unsigned char output (){ - return fast_output_map (d_state); - } - - //! clock LFSR; advance to next state. - void clk (){ - if (d_state & 0x1) - d_state = ((d_state ^ MASK) >> 1) | 0x8000; - else - d_state = d_state >> 1; - } - - //! return current output value and advance to next state - unsigned char output_and_clk (){ - unsigned char r = output (); - clk (); - return r; - } - - unsigned int d_state; - - static const unsigned int PRELOAD_VALUE = 0x018f; /* 0xf180 bit reversed */ - static const unsigned int MASK = 0xa638; - static unsigned char s_output_map[1 << 14]; - static bool s_output_map_initialized_p; -}; - -#endif /* _ATSC_RANDOMIZER_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/reed_solomon_impl.h b/gr-atsc/include/gnuradio/atsc/reed_solomon_impl.h deleted file mode 100644 index 53584b4dbf..0000000000 --- a/gr-atsc/include/gnuradio/atsc/reed_solomon_impl.h +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_REED_SOLOMON_H_ -#define _ATSC_REED_SOLOMON_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/types.h> - -/*! - * \brief ATSC Reed-Solomon encoder / decoder - * - * The t=10 (207,187) code described in ATSC standard A/53B. - * See figure D5 on page 55. - */ - -class ATSC_API atsci_reed_solomon { - - public: - atsci_reed_solomon(); - ~atsci_reed_solomon(); - - /*! - * \brief Add RS error correction encoding - */ - void encode (atsc_mpeg_packet_rs_encoded &out, const atsc_mpeg_packet_no_sync &in); - - /*! - * Decode RS encoded packet. - * \returns a count of corrected symbols, or -1 if the block was uncorrectible. - */ - int decode (atsc_mpeg_packet_no_sync &out, const atsc_mpeg_packet_rs_encoded &in); - - private: - void *d_rs; -}; - -#endif /* _ATSC_REED_SOLOMON_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/rs_decoder.h b/gr-atsc/include/gnuradio/atsc/rs_decoder.h deleted file mode 100644 index 99ab875869..0000000000 --- a/gr-atsc/include/gnuradio/atsc/rs_decoder.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_RS_DECODER_H -#define INCLUDED_ATSC_RS_DECODER_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/atsc/reed_solomon_impl.h> - -class atsc_rs_decoder; -typedef boost::shared_ptr<atsc_rs_decoder> atsc_rs_decoder_sptr; - -ATSC_API atsc_rs_decoder_sptr atsc_make_rs_decoder(); - -/*! - * \brief Reed-Solomon decoder for ATSC - * \ingroup atsc - * - * input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_no_sync - */ -class ATSC_API atsc_rs_decoder : public gr::sync_block -{ - friend ATSC_API atsc_rs_decoder_sptr atsc_make_rs_decoder(); - - atsci_reed_solomon d_rs_decoder; - - atsc_rs_decoder(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } -}; - - -#endif /* INCLUDED_ATSC_RS_DECODER_H */ diff --git a/gr-atsc/include/gnuradio/atsc/rs_encoder.h b/gr-atsc/include/gnuradio/atsc/rs_encoder.h deleted file mode 100644 index 49f67d2762..0000000000 --- a/gr-atsc/include/gnuradio/atsc/rs_encoder.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_RS_ENCODER_H -#define INCLUDED_ATSC_RS_ENCODER_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/atsc/reed_solomon_impl.h> - -class atsc_rs_encoder; -typedef boost::shared_ptr<atsc_rs_encoder> atsc_rs_encoder_sptr; - -ATSC_API atsc_rs_encoder_sptr atsc_make_rs_encoder(); - -/*! - * \brief Reed-Solomon encoder for ATSC - * \ingroup atsc - * - * input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet_rs_encoded - */ -class ATSC_API atsc_rs_encoder : public gr::sync_block -{ - friend ATSC_API atsc_rs_encoder_sptr atsc_make_rs_encoder(); - - atsci_reed_solomon d_rs_encoder; - - atsc_rs_encoder(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } -}; - - -#endif /* INCLUDED_ATSC_RS_ENCODER_H */ diff --git a/gr-atsc/include/gnuradio/atsc/single_viterbi_impl.h b/gr-atsc/include/gnuradio/atsc/single_viterbi_impl.h deleted file mode 100644 index d6578ce259..0000000000 --- a/gr-atsc/include/gnuradio/atsc/single_viterbi_impl.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSCSINGLEVITERBI_H_ -#define _ATSCSINGLEVITERBI_H_ - -#include <gnuradio/atsc/api.h> - -/*! - * \brief single channel viterbi decoder - */ -class ATSC_API atsci_single_viterbi -{ - -public: - atsci_single_viterbi (); - - static const unsigned int TB_LEN = 32; - - /*! - * \p INPUT ideally takes on the values +/- 1,3,5,7 - * return is decoded dibit in the range [0, 3] - */ - char decode (float input); - - void reset (); - - //! internal delay of decoder - int delay () { return TB_LEN - 1; } - -protected: - static const int transition_table[32]; - static const float was_sent[32]; - float path_metrics [2][8]; - unsigned long long traceback [2][8]; - unsigned char phase; -}; - -#endif diff --git a/gr-atsc/include/gnuradio/atsc/slicer_agc_impl.h b/gr-atsc/include/gnuradio/atsc/slicer_agc_impl.h deleted file mode 100644 index d55e744fea..0000000000 --- a/gr-atsc/include/gnuradio/atsc/slicer_agc_impl.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_SLICER_AGC_H_ -#define _ATSC_SLICER_AGC_H_ - -#include <gnuradio/atsc/api.h> -#include <math.h> -#include <gnuradio/filter/single_pole_iir.h> - -/*! - * \brief Automatic Gain Control class for atsc slicer - * - * Given perfect data, output values will be +/- {7, 5, 3, 1} - */ - -class ATSC_API atsci_slicer_agc { - - public: - atsci_slicer_agc () : _gain(1), dc(0.0025) {}; - - - float gain () { return _gain; } - -#if 1 - float scale (float input){ - float t = input * _gain; - float output = t - REFERENCE; - float error = REFERENCE - dc.filter (t); - _gain += error * RATE; - return output; - } -#else - float scale(float input){ - float avg = dc.filter(input); - if(fabs(avg)<.1)avg=.1; - _gain += _gain*.99 + .01* REFERENCE/avg; - return input*_gain - REFERENCE; - } -#endif - - protected: - - static const float REFERENCE = 1.25; // pilot reference value - static const float RATE = 1.0e-5; // adjustment rate - float _gain; // current gain - gr_single_pole_iir<float,float,float> dc; -}; - -#endif /* _ATSC_SLICER_AGC_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/sliding_correlator_impl.h b/gr-atsc/include/gnuradio/atsc/sliding_correlator_impl.h deleted file mode 100644 index eca63df609..0000000000 --- a/gr-atsc/include/gnuradio/atsc/sliding_correlator_impl.h +++ /dev/null @@ -1,86 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_SLIDING_CORRELATOR_H_ -#define _ATSC_SLIDING_CORRELATOR_H_ - -#include <gnuradio/atsc/api.h> -#include <string.h> - -#include <gnuradio/atsc/pnXXX_impl.h> -//extern const unsigned char atsc_pn511[511]; -//extern const unsigned char atsc_pn63[63]; - -/*! - * \brief look for the PN 511 field sync pattern - */ -class ATSC_API atsci_sliding_correlator { - public: - - atsci_sliding_correlator (); - ~atsci_sliding_correlator (){}; - - //! input hard decision bit, return correlation (0,511) - // Result is the number of wrong bits. - // E.g., 0 -> perfect match; 511 -> all bits are wrong - - int input_bit (int bit); - - //! input sample, return correlation (0,511) - // Result is the number of wrong bits. - // E.g., 0 -> perfect match; 511 -> all bits are wrong - - int input_int (int sample){ - return input_bit (sample < 0 ? 0 : 1); - } - - //! input sample, return correlation (0,511) - // Result is the number of wrong bits. - // E.g., 0 -> perfect match; 511 -> all bits are wrong - - int input_float (float sample){ - return input_bit (sample < 0 ? 0 : 1); - } - - void reset () { input.reset (); } - - private: - - typedef unsigned long srblock; - static const int bits_per_char = 8; - static const int srblock_bitsize = sizeof (srblock) * bits_per_char; - static const int NSRBLOCKS = (511 + srblock_bitsize - 1) / srblock_bitsize; - - class shift_reg { - public: - shift_reg () { reset (); } - void reset () { memset (d, 0, sizeof (d)); } - void shift_in (int bit); - srblock d[NSRBLOCKS]; - }; - - shift_reg mask; // pattern we're looking for - shift_reg input; // current input window - shift_reg and_mask; // bits to consider -}; - -#endif /* _ATSC_SLIDING_CORRELATOR_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/sssr_impl.h b/gr-atsc/include/gnuradio/atsc/sssr_impl.h deleted file mode 100644 index f61d0f340f..0000000000 --- a/gr-atsc/include/gnuradio/atsc/sssr_impl.h +++ /dev/null @@ -1,241 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -/* - * --- ATSC Segment and Symbol Sync Recovery --- - */ - -#ifndef _ATSC_SSSR_H_ -#define _ATSC_SSSR_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/consts.h> -#include <gnuradio/filter/mmse_fir_interpolator_ff.h> -#include <gnuradio/filter/single_pole_iir.h> -#include <cstdio> - -/* - * --- support classes for atsci_sssr --- - */ - -namespace sssr { - - typedef float sample_t; - - // ---------------------------------------------------------------- - //! digital correlator for 1001 and 0110 patterns - - class ATSC_API digital_correlator { - int d_sr; // 4 bit shift register - - public: - - // Constructor - digital_correlator () { reset (); } - - // Manipulators - - //! called on channel change - void reset () { d_sr = 0; } - - //! clock bit in and return true if we've seen 1001 - - bool update (int bit) { - d_sr = ((bit & 1) << 3) | (d_sr >> 1); - - return (d_sr == 0x9); // 1001 - } - - }; - - - // ---------------------------------------------------------------- - //! segment sync integrator - - class ATSC_API seg_sync_integrator { - signed char d_integrator[ATSC_DATA_SEGMENT_LENGTH]; - - public: - - // Constructor - seg_sync_integrator () { reset (); } - - // Manipulators - - //! called on channel change - void reset (); - - //! update current tap with weight and return integrated correlation value - int update (int weight, int index); - - //! return index of maximum correlation value - int find_max (int *value); - - }; - - // ---------------------------------------------------------------- - //! quad filter (used to compute timing error) - - class ATSC_API quad_filter { - sample_t d_delay[4]; - - public: - // Constructor - quad_filter () { reset (); } - - // Manipulators - - //! called on channel change - void reset () { d_delay[0] = d_delay[1] = d_delay[2] = d_delay[3] = 0; } - - double update (sample_t sample){ - d_delay[3] = d_delay[2]; - d_delay[2] = d_delay[1]; - d_delay[1] = d_delay[0]; - d_delay[0] = sample; - - // the coefficients are -1,-1,+1,+1 - return d_delay[3] + d_delay[2] - d_delay[1] - d_delay[0]; - } - }; -} - -// ---------------------------------------------------------------- - -/*! - * \brief ATSC Segment and Symbol Sync Recovery - * - * This class implements data segment sync tracking and symbol timing - * using the method described in "ATSC/VSB Tutorial - Receiver Technology" - * by Wayne E. Bretl of Zenith, pgs 41-45. - */ - -class ATSC_API atsci_sssr { - sssr::digital_correlator d_correlator; - sssr::seg_sync_integrator d_integrator; - sssr::quad_filter d_quad_filter; - double d_quad_output[ATSC_DATA_SEGMENT_LENGTH]; - double d_timing_adjust; - int d_counter; // free running mod 832 counter - int d_symbol_index; - bool d_seg_locked; - FILE *d_debug_fp; - - - bool incr_counter () { - d_counter++; - if (d_counter >= ATSC_DATA_SEGMENT_LENGTH){ - d_counter = 0; - return true; - } - return false; - } - - void incr_symbol_index () { - d_symbol_index++; - if (d_symbol_index >= ATSC_DATA_SEGMENT_LENGTH) - d_symbol_index = 0; - } - -public: - - // Constructor - atsci_sssr (); - ~atsci_sssr (); - - // Manipulators - - //! call on channel change - void reset (); - - - /*! - * \brief process a single sample at the ATSC symbol rate (~10.76 MSPS) - * - * This block computes an indication of our timing error and keeps - * track of where the segment sync's occur. \p timing_adjust is - * returned to indicate how the interpolator timing needs to be - * adjusted to track the transmitter's symbol timing. If \p seg_locked - * is true, then \p symbol_index is the index of this sample in - * the current segment. The symbols are numbered from 0 to 831, where - * symbols 0, 1, 2 and 3 correspond to the data segment sync pattern, - * nominally +5, -5, -5, +5. - */ - - void update (sssr::sample_t sample_in, // input - bool *seg_locked, // are we seeing segment syncs? - int *symbol_index, // 0..831 - double *timing_adjust); // how much to adjust timing - -}; - -// ---------------------------------------------------------------- - -/*! - * \brief interpolator control for segment and symbol sync recovery - */ - -class ATSC_API atsci_interpolator { - gr::filter::mmse_fir_interpolator_ff d_interp; - gr::filter::single_pole_iir<float,float,float> d_loop; // ``VCO'' loop filter - double d_nominal_ratio_of_rx_clock_to_symbol_freq; // FREQ - double d_w; // ratio of PERIOD of Tx to Rx clocks - double d_mu; // fractional delay [0,1] - int d_incr; // diagnostic only - FILE *d_debug_fp; // diagnostic only - -public: - //! \p nominal_ratio_of_rx_clock_to_symbol_freq must be >= 1.8 - atsci_interpolator (double nominal_ratio_of_rx_clock_to_symbol_freq); - ~atsci_interpolator (); - - // Manipulators - - //! call on channel change - void reset (); - - /*! - * \brief produce next sample referenced to Tx clock - * - * If there aren't enough input_samples left to produce - * an output, return false, else true. - */ - - bool update (const sssr::sample_t input_samples[], // I: vector of samples - int nsamples, // I: total number of samples - int *index, // I/O: current input index - double timing_adjustment, // I: how much to bump timing - sssr::sample_t *output_sample); // O: the output sample - - // Accessors - - // how much history we require on our input - unsigned ntaps () const { return d_interp.ntaps (); } - - // diagnostic accessors - double mu () const { return d_mu; } - double w () const { return d_w; } - int incr () const { return d_incr; } - -}; - -#endif /* _ATSC_SSSR_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/syminfo_impl.h b/gr-atsc/include/gnuradio/atsc/syminfo_impl.h deleted file mode 100644 index 9f25e4902a..0000000000 --- a/gr-atsc/include/gnuradio/atsc/syminfo_impl.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ -#ifndef _ATSC_SYMINFO_H_ -#define _ATSC_SYMINFO_H_ - -namespace atsc { - - static const unsigned int SI_SEGMENT_NUM_MASK = 0x1ff; - static const unsigned int SI_FIELD_SYNC_SEGMENT_NUM = SI_SEGMENT_NUM_MASK; // conceptually -1 - - struct syminfo { - unsigned int symbol_num : 10; // 0..831 - unsigned int segment_num : 9; // 0..311 and SI_FIELD_SYNC_SEGMENT_NUM - unsigned int field_num : 1; // 0..1 - unsigned int valid : 1; // contents are valid - }; - - - static inline bool - tag_is_start_field_sync (syminfo tag) - { - return tag.symbol_num == 0 && tag.segment_num == SI_FIELD_SYNC_SEGMENT_NUM && tag.valid; - } - - static inline bool - tag_is_start_field_sync_1 (syminfo tag) - { - return tag_is_start_field_sync (tag) && tag.field_num == 0; - } - - static inline bool - tag_is_start_field_sync_2 (syminfo tag) - { - return tag_is_start_field_sync (tag) && tag.field_num == 1; - } - -} - -#endif /* _ATSC_SYMINFO_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/sync_tag_impl.h b/gr-atsc/include/gnuradio/atsc/sync_tag_impl.h deleted file mode 100644 index bdb64c5d3d..0000000000 --- a/gr-atsc/include/gnuradio/atsc/sync_tag_impl.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ -#ifndef _ATSC_SYNC_TAG_H_ -#define _ATSC_SYNC_TAG_H_ - -/* - * Constants used to communicate in the second stream passed between - * GrAtscFSCorrelator, GrAtscEqualizer and GrAtscFieldSyncMux. The - * second stream is sample-for-sample parallel with the streaming - * floating point in the first stream. The second stream provides - * information about alignment boundaries. - * - * These are in floating point because the current implementation - * requires that for a given module, all input streams share the same - * type and all output streams share the same type. We'd use unsigned - * char otherwise. - */ - -namespace atsc_sync_tag { - - // Nothing special - static const float NORMAL = 0.0; - - // The corresponding symbol is the first symbol of the - // data segment sync sequence { +5, -5, -5, +5 } - static const float START_SEG_SYNC = 1.0; - - // The corresponding symbol is the first symbol of the - // field sync 1 PN511 pattern. - static const float START_FIELD_SYNC_1 = 2.0; - - // The corresponding symbol is the first symbol of the - // field sync 2 PN511 pattern. - static const float START_FIELD_SYNC_2 = 3.0; -}; - -#endif /* _ATSC_SYNC_TAG_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/trellis_encoder.h b/gr-atsc/include/gnuradio/atsc/trellis_encoder.h deleted file mode 100644 index 6eb424650f..0000000000 --- a/gr-atsc/include/gnuradio/atsc/trellis_encoder.h +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ -#ifndef INCLUDED_ATSC_TRELLIS_ENCODER_H -#define INCLUDED_ATSC_TRELLIS_ENCODER_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/atsc/trellis_encoder_impl.h> - -class atsc_trellis_encoder; -typedef boost::shared_ptr<atsc_trellis_encoder> atsc_trellis_encoder_sptr; - -ATSC_API atsc_trellis_encoder_sptr atsc_make_trellis_encoder(); - -/*! - * \brief ATSC 12-way interleaved trellis encoder (atsc_mpeg_packet_rs_encoded --> atsc_data_segment) - * \ingroup atsc - * - * input: atsc_mpeg_packet_rs_encoded; output: atsc_data_segment - */ -class ATSC_API atsc_trellis_encoder : public gr::sync_block -{ - friend ATSC_API atsc_trellis_encoder_sptr atsc_make_trellis_encoder(); - - atsci_trellis_encoder d_trellis_encoder; - - atsc_trellis_encoder(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } -}; - - -#endif /* INCLUDED_ATSC_TRELLIS_ENCODER_H */ diff --git a/gr-atsc/include/gnuradio/atsc/trellis_encoder_impl.h b/gr-atsc/include/gnuradio/atsc/trellis_encoder_impl.h deleted file mode 100644 index 93aab1b190..0000000000 --- a/gr-atsc/include/gnuradio/atsc/trellis_encoder_impl.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_TRELLIS_ENCODER_H_ -#define _ATSC_TRELLIS_ENCODER_H_ - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/basic_trellis_encoder_impl.h> -#include <gnuradio/atsc/types.h> - -/*! - * \brief fancy, schmancy 12-way interleaved trellis encoder for ATSC - */ - -class ATSC_API atsci_trellis_encoder { - public: - static const int NCODERS = 12; - - atsci_trellis_encoder (); - ~atsci_trellis_encoder (); - - //! reset all encoder states - void reset (); - - /*! - * Take 12 RS encoded, convolutionally interleaved segments and - * produce 12 trellis coded data segments. We work in groups of 12 - * because that's the smallest number of segments that composes a - * single full cycle of the encoder mux. - */ - void encode (atsc_data_segment out[NCODERS], - const atsc_mpeg_packet_rs_encoded in[NCODERS]); - - - protected: - static const int SEGMENT_SIZE = ATSC_MPEG_RS_ENCODED_LENGTH; // 207 - static const int INPUT_SIZE = (SEGMENT_SIZE * 12); - static const int OUTPUT_SIZE = (ATSC_DATA_SEGMENT_LENGTH * 12); - - void encode_helper (unsigned char out[OUTPUT_SIZE], - const unsigned char in[INPUT_SIZE]); - - atsci_basic_trellis_encoder enc[NCODERS]; - bool debug; -}; - - -#endif /* _ATSC_TRELLIS_ENCODER_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/types.h b/gr-atsc/include/gnuradio/atsc/types.h deleted file mode 100644 index 1d93bb0d6a..0000000000 --- a/gr-atsc/include/gnuradio/atsc/types.h +++ /dev/null @@ -1,238 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2001,2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_TYPES_H_ -#define _ATSC_TYPES_H_ - -#include <gnuradio/atsc/consts.h> -#include <cstring> -#include <cassert> - - -/*! - * \brief pipeline info that flows with data - * - * Not all modules need all the info - */ -class plinfo { -public: - plinfo () : _flags (0), _segno (0) { } - - // accessors - - bool field_sync1_p () const { return (_flags & fl_field_sync1) != 0; } - bool field_sync2_p () const { return (_flags & fl_field_sync2) != 0; } - bool field_sync_p () const { return field_sync1_p () || field_sync2_p (); } - - bool regular_seg_p () const { return (_flags & fl_regular_seg) != 0; } - - bool in_field1_p () const { return (_flags & fl_field2) == 0; } - bool in_field2_p () const { return (_flags & fl_field2) != 0; } - - bool first_regular_seg_p () const { return (_flags & fl_first_regular_seg) != 0; } - - bool transport_error_p () const { return (_flags & fl_transport_error) != 0; } - - unsigned int segno () const { return _segno; } - unsigned int flags () const { return _flags; } - - // setters - - void set_field_sync1 () - { - _segno = 0; - _flags = fl_field_sync1; - } - - void set_field_sync2 () - { - _segno = 0; - _flags = fl_field_sync2 | fl_field2; - } - - void set_regular_seg (bool field2, int segno) - { - assert (0 <= segno && segno < ATSC_DSEGS_PER_FIELD); - _segno = segno; - _flags = fl_regular_seg; - if (segno == 0) - _flags |= fl_first_regular_seg; - if (segno >= ATSC_DSEGS_PER_FIELD) - _flags |= fl_transport_error; - if (field2) - _flags |= fl_field2; - } - - void set_transport_error (bool error){ - if (error) - _flags |= fl_transport_error; - else - _flags &= ~fl_transport_error; - } - - // overload equality operator - bool operator== (const plinfo &other) const { - return (_flags == other._flags && _segno == other._segno); - } - - bool operator!= (const plinfo &other) const { - return !(_flags == other._flags && _segno == other._segno); - } - - /*! - * Set \p OUT such that it reflects a \p NSEGS_OF_DELAY - * pipeline delay from \p IN. - */ - static void delay (plinfo &out, const plinfo &in, int nsegs_of_delay); - - /*! - * confirm that \p X is plausible - */ - static void sanity_check (const plinfo &in); - - -protected: - unsigned short _flags; // bitmask - unsigned short _segno; // segment number [0,311] - - // these three are mutually exclusive - // This is a regular data segment. - static const int fl_regular_seg = 0x0001; - // This is a field sync segment, for 1st half of a field. - static const int fl_field_sync1 = 0x0002; - // This is a field sync segment, for 2nd half of a field. - static const int fl_field_sync2 = 0x0004; - - // This bit is on ONLY when fl_regular_seg is set AND when this is - // the first regular data segment AFTER a field sync segment. This - // segment causes various processing modules to reset. - static const int fl_first_regular_seg = 0x0008; - - // which field are we in? - static const int fl_field2 = 0x0010; // else field 1 - - // This bit is set when Reed-Solomon decoding detects an error that it - // can't correct. Note that other error detection (e.g. Viterbi) do not - // set it, since Reed-Solomon will correct many of those. This bit is - // then copied into the final Transport Stream packet so that MPEG - // software can see that the 188-byte data segment has been corrupted. - static const int fl_transport_error = 0x0020; -}; - - - - -class atsc_mpeg_packet { - public: - static const int NPAD = 68; - unsigned char data[ATSC_MPEG_DATA_LENGTH + 1]; // first byte is sync - unsigned char _pad_[NPAD]; // pad to power of 2 (256) - - // overload equality operator - bool operator== (const atsc_mpeg_packet &other) const { - return std::memcmp (data, other.data, sizeof (data)) == 0; - }; - - bool operator!= (const atsc_mpeg_packet &other) const { - return !(std::memcmp (data, other.data, sizeof (data)) == 0); - }; -}; - -class atsc_mpeg_packet_no_sync { - public: - static const int NPAD = 65; - plinfo pli; - unsigned char data[ATSC_MPEG_DATA_LENGTH]; - unsigned char _pad_[NPAD]; // pad to power of 2 (256) - - // overload equality operator - bool operator== (const atsc_mpeg_packet_no_sync &other) const { - return std::memcmp (data, other.data, sizeof (data)) == 0; - } - - bool operator!= (const atsc_mpeg_packet_no_sync &other) const { - return !(std::memcmp (data, other.data, sizeof (data)) == 0); - } -}; - -class atsc_mpeg_packet_rs_encoded { - public: - static const int NPAD = 45; - plinfo pli; - unsigned char data[ATSC_MPEG_RS_ENCODED_LENGTH]; - unsigned char _pad_[NPAD]; // pad to power of 2 (256) - - // overload equality operator - bool operator== (const atsc_mpeg_packet_rs_encoded &other) const { - return std::memcmp (data, other.data, sizeof (data)) == 0; - } - - bool operator!= (const atsc_mpeg_packet_rs_encoded &other) const { - return !(std::memcmp (data, other.data, sizeof (data)) == 0); - } -}; - - -//! contains 832 3 bit symbols. The low 3 bits in the byte hold the symbol. - -class atsc_data_segment { - public: - static const int NPAD = 188; - plinfo pli; - unsigned char data[ATSC_DATA_SEGMENT_LENGTH]; - unsigned char _pad_[NPAD]; // pad to power of 2 (1024) - - // overload equality operator - bool operator== (const atsc_data_segment &other) const { - return std::memcmp (data, other.data, sizeof (data)) == 0; - } - - bool operator!= (const atsc_data_segment &other) const { - return !(std::memcmp (data, other.data, sizeof (data)) == 0); - } -}; - -/*! - * Contains 832 bipolar floating point symbols. - * Nominal values are +/- {1, 3, 5, 7}. - * This data type represents the input to the viterbi decoder. - */ - -class atsc_soft_data_segment { - public: - static const int NPAD = 764; - plinfo pli; - float data[ATSC_DATA_SEGMENT_LENGTH]; - unsigned char _pad_[NPAD]; // pad to power of 2 (4096) - - // overload equality operator - bool operator== (const atsc_data_segment &other) const { - return std::memcmp (data, other.data, sizeof (data)) == 0; - } - - bool operator!= (const atsc_data_segment &other) const { - return !(std::memcmp (data, other.data, sizeof (data)) == 0); - } -}; - - -#endif /* _ATSC_TYPES_H_ */ diff --git a/gr-atsc/include/gnuradio/atsc/viterbi_decoder.h b/gr-atsc/include/gnuradio/atsc/viterbi_decoder.h deleted file mode 100644 index a529c18d3b..0000000000 --- a/gr-atsc/include/gnuradio/atsc/viterbi_decoder.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_ATSC_VITERBI_DECODER_H -#define INCLUDED_ATSC_VITERBI_DECODER_H - -#include <gnuradio/atsc/api.h> -#include <gnuradio/sync_block.h> -#include <gnuradio/atsc/viterbi_decoder_impl.h> - -class atsc_viterbi_decoder; -typedef boost::shared_ptr<atsc_viterbi_decoder> atsc_viterbi_decoder_sptr; - -ATSC_API atsc_viterbi_decoder_sptr atsc_make_viterbi_decoder(); - -/*! - * \brief ATSC 12-way interleaved viterbi decoder (atsc_soft_data_segment --> atsc_mpeg_packet_rs_encoded) - * \ingroup atsc - * - * input: atsc_soft_data_segment; output: atsc_mpeg_packet_rs_encoded - */ -class ATSC_API atsc_viterbi_decoder : public gr::sync_block -{ - friend ATSC_API atsc_viterbi_decoder_sptr atsc_make_viterbi_decoder(); - - atsci_viterbi_decoder d_viterbi_decoder; - - atsc_viterbi_decoder(); - -public: - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - - void reset() { /* nop */ } - -protected: - int last_start; - -}; - - -#endif /* INCLUDED_ATSC_VITERBI_DECODER_H */ diff --git a/gr-atsc/include/gnuradio/atsc/viterbi_decoder_impl.h b/gr-atsc/include/gnuradio/atsc/viterbi_decoder_impl.h deleted file mode 100644 index 447d43911d..0000000000 --- a/gr-atsc/include/gnuradio/atsc/viterbi_decoder_impl.h +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2002 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _ATSC_VITERBI_DECODER_H_ -#define _ATSC_VITERBI_DECODER_H_ - -#define USE_SIMPLE_SLICER 0 - -#include <gnuradio/atsc/api.h> -#include <gnuradio/atsc/types.h> -#include <gnuradio/atsc/interleaver_fifo.h> - -#if (USE_SIMPLE_SLICER) -#include <gnuradio/atsc/fake_single_viterbi_impl.h> -typedef atsci_fake_single_viterbi single_viterbi_t; -#else -#include <gnuradio/atsc/single_viterbi_impl.h> -typedef atsci_single_viterbi single_viterbi_t; -#endif - -/*! - * \brief fancy, schmancy 12-way interleaved viterbi decoder for ATSC - */ - -class ATSC_API atsci_viterbi_decoder { -public: - static const int NCODERS = 12; - - atsci_viterbi_decoder (); - ~atsci_viterbi_decoder (); - - //! reset all decoder states - void reset (); - - /*! - * Take 12 data segments of soft decisions (floats) and - * produce 12 RS encoded data segments. We work in groups of 12 - * because that's the smallest number of segments that composes a - * single full cycle of the decoder mux. - */ - void decode (atsc_mpeg_packet_rs_encoded out[NCODERS], - const atsc_soft_data_segment in[NCODERS]); - - - - protected: - typedef interleaver_fifo<unsigned char> fifo_t; - - static const int SEGMENT_SIZE = ATSC_MPEG_RS_ENCODED_LENGTH; // 207 - static const int OUTPUT_SIZE = (SEGMENT_SIZE * 12); - static const int INPUT_SIZE = (ATSC_DATA_SEGMENT_LENGTH * 12); - - void decode_helper (unsigned char out[OUTPUT_SIZE], - const float in[INPUT_SIZE]); - - - single_viterbi_t viterbi[NCODERS]; - fifo_t *fifo[NCODERS]; - bool debug; - -}; - - - -#endif /* _ATSC_VITERBI_DECODER_H_ */ |