diff options
Diffstat (limited to 'gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.h')
-rw-r--r-- | gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.h | 164 |
1 files changed, 88 insertions, 76 deletions
diff --git a/gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.h b/gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.h index 22b040cd3f..607e5bda8f 100644 --- a/gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.h +++ b/gr-dtv/lib/dvbt/dvbt_viterbi_decoder_impl.h @@ -1,17 +1,17 @@ /* -*- c++ -*- */ -/* +/* * Copyright 2015 Free Software Foundation, Inc. - * + * * This 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. - * + * * This software 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 this software; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, @@ -40,112 +40,124 @@ #ifdef DTV_SSE2 union branchtab27 { - unsigned char c[32]; - __m128i v[2]; + unsigned char c[32]; + __m128i v[2]; }; #else struct branchtab27 { - unsigned char c[32]; + unsigned char c[32]; }; #endif namespace gr { - namespace dtv { +namespace dtv { - class dvbt_viterbi_decoder_impl : public dvbt_viterbi_decoder - { - private: - dvbt_configure config; +class dvbt_viterbi_decoder_impl : public dvbt_viterbi_decoder +{ +private: + dvbt_configure config; - // Puncturing vectors - static const unsigned char d_puncture_1_2[]; - static const unsigned char d_puncture_2_3[]; - static const unsigned char d_puncture_3_4[]; - static const unsigned char d_puncture_5_6[]; - static const unsigned char d_puncture_7_8[]; - static const unsigned char d_Partab[]; + // Puncturing vectors + static const unsigned char d_puncture_1_2[]; + static const unsigned char d_puncture_2_3[]; + static const unsigned char d_puncture_3_4[]; + static const unsigned char d_puncture_5_6[]; + static const unsigned char d_puncture_7_8[]; + static const unsigned char d_Partab[]; #ifdef DTV_SSE2 - static __m128i d_metric0[4]; - static __m128i d_metric1[4]; - static __m128i d_path0[4]; - static __m128i d_path1[4]; + static __m128i d_metric0[4]; + static __m128i d_metric1[4]; + static __m128i d_path0[4]; + static __m128i d_path1[4]; #else - static unsigned char d_metric0_generic[64]; - static unsigned char d_metric1_generic[64]; - static unsigned char d_path0_generic[64]; - static unsigned char d_path1_generic[64]; + static unsigned char d_metric0_generic[64]; + static unsigned char d_metric1_generic[64]; + static unsigned char d_path0_generic[64]; + static unsigned char d_path1_generic[64]; #endif #ifdef DTV_SSE2 - static branchtab27 Branchtab27_sse2[2]; + static branchtab27 Branchtab27_sse2[2]; #else - static branchtab27 Branchtab27_generic[2]; + static branchtab27 Branchtab27_generic[2]; #endif - // Metrics for each state - static unsigned char mmresult[64]; - // Paths for each state - static unsigned char ppresult[TRACEBACK_MAX][64]; + // Metrics for each state + static unsigned char mmresult[64]; + // Paths for each state + static unsigned char ppresult[TRACEBACK_MAX][64]; - // Current puncturing vector - const unsigned char * d_puncture; + // Current puncturing vector + const unsigned char* d_puncture; - // Code rate k/n - int d_k; - int d_n; - // Constellation with m - int d_m; + // Code rate k/n + int d_k; + int d_n; + // Constellation with m + int d_m; - // Block size - int d_bsize; - // Symbols to consume on decoding from one block - int d_nsymbols; - // Number of bits after depuncturing a block - int d_nbits; - // Number of full packed out bytes - int d_nout; + // Block size + int d_bsize; + // Symbols to consume on decoding from one block + int d_nsymbols; + // Number of bits after depuncturing a block + int d_nbits; + // Number of full packed out bytes + int d_nout; - // Traceback (in bytes) - int d_ntraceback; + // Traceback (in bytes) + int d_ntraceback; - // Viterbi tables - int mettab[2][256]; + // Viterbi tables + int mettab[2][256]; - // Buffer to keep the input bits - unsigned char * d_inbits; + // Buffer to keep the input bits + unsigned char* d_inbits; - // This is used to get rid of traceback on the first frame - int d_init; + // This is used to get rid of traceback on the first frame + int d_init; - // Position in circular buffer where the current decoded byte is stored - int store_pos; + // Position in circular buffer where the current decoded byte is stored + int store_pos; #ifdef DTV_SSE2 - void dvbt_viterbi_chunks_init_sse2(__m128i *mm0, __m128i *pp0); - void dvbt_viterbi_butterfly2_sse2(unsigned char *symbols, __m128i m0[], __m128i m1[], __m128i p0[], __m128i p1[]); - unsigned char dvbt_viterbi_get_output_sse2(__m128i *mm0, __m128i *pp0, int ntraceback, unsigned char *outbuf); + void dvbt_viterbi_chunks_init_sse2(__m128i* mm0, __m128i* pp0); + void dvbt_viterbi_butterfly2_sse2( + unsigned char* symbols, __m128i m0[], __m128i m1[], __m128i p0[], __m128i p1[]); + unsigned char dvbt_viterbi_get_output_sse2(__m128i* mm0, + __m128i* pp0, + int ntraceback, + unsigned char* outbuf); #else - void dvbt_viterbi_chunks_init_generic(unsigned char *mm0, unsigned char *pp0); - void dvbt_viterbi_butterfly2_generic(unsigned char *symbols, unsigned char m0[], unsigned char m1[], unsigned char p0[], unsigned char p1[]); - unsigned char dvbt_viterbi_get_output_generic(unsigned char *mm0, unsigned char *pp0, int ntraceback, unsigned char *outbuf); + void dvbt_viterbi_chunks_init_generic(unsigned char* mm0, unsigned char* pp0); + void dvbt_viterbi_butterfly2_generic(unsigned char* symbols, + unsigned char m0[], + unsigned char m1[], + unsigned char p0[], + unsigned char p1[]); + unsigned char dvbt_viterbi_get_output_generic(unsigned char* mm0, + unsigned char* pp0, + int ntraceback, + unsigned char* outbuf); #endif - public: - dvbt_viterbi_decoder_impl(dvb_constellation_t constellation, \ - dvbt_hierarchy_t hierarchy, dvb_code_rate_t coderate, int bsize); - ~dvbt_viterbi_decoder_impl(); +public: + dvbt_viterbi_decoder_impl(dvb_constellation_t constellation, + dvbt_hierarchy_t hierarchy, + dvb_code_rate_t coderate, + int bsize); + ~dvbt_viterbi_decoder_impl(); - void forecast (int noutput_items, gr_vector_int &ninput_items_required); + 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 general_work(int noutput_items, + gr_vector_int& ninput_items, + gr_vector_const_void_star& input_items, + gr_vector_void_star& output_items); +}; - } // namespace dtv +} // namespace dtv } // namespace gr #endif /* INCLUDED_DTV_DVBT_VITERBI_DECODER_IMPL_H */ - |